Esta é a porta MIPS que está presente nos dispositivos fabricados, roteadores e gateways domésticos SerComm (Linksys, Netgear, Cisco) usado para atualizações de firmware.
Isso é gerenciado pelo processo scfgmgr
, que está escutando na porta 32764.
Quando acessado via telnet, os dados prefixados por ScMM
ou MMcS
(dependendo da condição do usuário) parecem ser retornados.
É um protocolo binário muito simples com cabeçalho (0xC bytes) seguido por uma carga útil.
Estrutura do cabeçalho:
typedef struct scfgmgr_header_s {
unsigned long magic;
int cmd;
unsigned long len;
} scfgmgr_header;
Isso é baseado em fontes Cisco GPL (por exemplo, wap4410n_v2.0.1.0_gpl.tgz no ftp-eng.cisco.com desativado).
Para informações reais, consulte a descrição do elvanderb e o código Python de amostra .
Atualmente ele é famoso pelo estouro de buffer baseado em heap que pode fornecer acesso total ao dispositivo ( backdoor ). Isso foi descoberto por Eloi Vanderbeken no Natal de 2013, no entanto, provavelmente foi conhecido pelos hackers chineses em 2008 ( Eloi Vanderbeken "http://hi.baidu.com/cygnusnow/item/3fd853ade9f08f9e151073a1"> arquivo cgi ).
Veja como funciona.
Estouro de buffer com base em heap:
Mensagens:
Portanto, o uso de mensagens simples de transbordamento pode fornecer muitos detalhes interessantes:
Noentanto,issopodefazercomqueaconfiguraçãosejaredefinida,porisso,nãofaçaissoemcasa.
Aquiestãoalgunscomandosreversosexecutadospeloroteadorexecutadopormeiodessaporta.
nvram
-Configuraçãodedespejo.
getvar
-obterconfiguraçãovar
possívelestourodebufferbaseadoempilha(seavariávelforcontroladapelousuário)
setvar
-Definirconfiguraçãovar
estourodebufferbaseadoempilha,bufferdesaída(tamanho≈0x10000)estánapilha.
commitnvram
-Leianvram/dev/mtdblock/3apartirde/tmp/nvrameverifiqueoCRC
definenvram(/dev/mtdblock/3)apartirde/tmp/nvram;verifiqueoCRC
Ativaromododeponte(nãotenhocerteza,nãotivetempoparatestá-lo)
nvram_set(“wan_mode”,bridgedonly)nvram_set(“wan_encap”,0)nvram_set(“wan_vpi”,8)nvram_set(“wan_vci”,81)system(“/usr/bin/killallbr2684ctl”)system(“/usr/bin/killalludhcpd”)system(“/usr/bin/killall-9atm_monitor”)system(“/usr/sbin/rcwanstop>/dev/null2>&1”)system(“/usr/sbin/atm_monitor&”)
Mostrarvelocidadedeinternetmedida(download/upload)
cmd(sim,éumshell…)
comandosespeciais:
- exit,bye,quit->sair...(vivo=0)
- cd:alteraodiretório(umpoucodeWTF)
outroscomandos:
- sobrecargadenúmerointeironoprocessamentodestdout(?)nãoexplorávelmasaindaassim...
- estourodebuffernasaídadocmd(mesmobuffernovamente)…
escreverarquivo
- nomedoarquivonacargaútil
- rootdir=/tmp
O- cruzamentodediretóriopodeserpossível(nãotestado,maséaberto(sprintf(“/tmp/%s”,cargaútil))…)
retornaraversão
retorneoroteadordomodemip
restaurarasconfiguraçõespadrão
- nvram_set(“restore_default”,1)
- nvram_commit
leia/dev/mtdblock/0[-4:-2]
- nãoseioqueé,eunãotivetempoparatestá-lo
despejenvramnodisco(/tmp/nvram)econfirme
Fonte: (apresentação de slides) Como a Linksys salvou meu Natal!
Normalmente, esse tipo de porta deve ser oficialmente IANA .
Isto é o que unSpawn respondeu no LinuxQuestions em 2007 relacionado a esta porta:
If it's an officially IANA-assigned port (with a number between 0 and roughly 30000) then its number should correspond with a service in /etc/services ('getent services portnumber'), the services file of a scanner like Nmap or an online database like Sans' ISC.
Note that ephemeral port usage can be configured locally using the /proc/sys/net/ipv4/ip_local_port_range
sysctl
. An old default was 1024-5000, for servers a value of 32768-61000 is used and some applications want something like 1025-65535.
Also note these are static number-to-service mappings and while for instance /etc/services will say TCP/22
matches SSH that doesn't have to be the case in a particular situation,
Else if it's a port of which you don't know which process did bind to it then if you have access to the host you can interrogate it using netstat -anp
, lsof -w -n -i protocol:portnumber
or fuser -n protocol portnumber
. This is the most accurate method,
Else if you do not have access to the host you could interrogate it by for instance telnet'ting to it. This is not an accurate method and in the case of a compromised host you may alert the intruder you're on her case.
Veja também: