-sS
(TCP SYN scan)
SYN scan é a opção de scan padrão e mais popular para goodreasons. Ele pode ser executado rapidamente, escaneando milhares de portas por segundo em uma rede rápida não prejudicada por firewalls restritivos. Ele também é discreto e discreto, pois nunca completa as conexões TCP. A varredura SYN funciona contra qualquer pilha TCP compatível e não depende de idiossincrasias de plataformas específicas como as varreduras Nmap’sFIN/NULL/Xmas, Maimon e ociosas. Ele também permite uma diferenciação clara e confiável entre open
,closed
, e filtered
states.
Esta técnica é frequentemente referida como varredura semi-aberta, porque você não abre uma conexão TCP completa. Você envia um pacote SYN, como se você fosse abrir uma conexão real e depois espera por aresponse. Um SYN/ACK indica que a porta está ouvindo (aberta), enquanto aRST (reset) é indicativo de um não ouvinte. Se nenhuma resposta for recebida após várias retransmissões, a porta é marcada como asfiltrada. A porta também é marcada filtrada se um ICMP não alcançável (tipo 3, código 0, 1, 2, 3, 9, 10, ou 13) for recebido. A porta também é considerada aberta se um pacote SYN (sem a bandeira ACK) for recebido em resposta. Isto pode ser devido a um recurso TCP extremamente raro conhecido como uma conexão de handshake simultânea aberta ou dividida (veja https://nmap.org/misc/split-handshake.pdf).
-sT
(TCP connect scan)
TCP connect scan é o tipo padrão de scan TCP quando scan SYN não é uma opção. Este é o caso quando um usuário não tem privilégios de pacotes brutos. Ao invés de escrever pacotes brutos como a maioria dos outros tipos de scan, o Nmap pede ao sistema operacional subjacente para estabelecer uma conexão com a máquina e porta de destino, emitindo a chamada de sistema connect
. Esta é a mesma chamada de sistema de alto nível que os navegadores web, clientes P2P e a maioria das outras aplicações habilitadas para rede usam para estabelecer uma conexão. Ao invés de ler respostas de pacotes brutos fora do fio, o Nmap usa esta API para obter informações de status em cada tentativa de conexão.
Quando a varredura SYN está disponível, geralmente é uma escolha melhor. O Nmaphas tem menos controle sobre o alto nível connect
callthan com pacotes brutos, tornando-o menos eficiente. O sistema completa as conexões com portas de destino abertas ao invés de executar o reset semiaberto que a varredura SYN faz. Isso não só leva mais tempo e requer mais pacotes para obter a mesma informação, mas as máquinas de destino têm mais probabilidade de registrar a conexão. Um IDS decente também não será capturado, mas a maioria das máquinas não possui tal sistema de alarme. Manyservices em seu sistema Unix médio adicionará uma nota ao syslog, e algumas vezes uma mensagem de erro críptico, quando o Nmap se conecta e depois se aproxima da conexão sem enviar dados. Verdadeiramente patética falha de serviços quando isso acontece, embora isso seja incomum. Uma administradora que seesa um monte de tentativas de conexão em seus logs a partir de um único sistema deve saber que ela foi escaneada.
-sU
(UDP scans)
Embora a maioria dos serviços populares na Internet sejam executados através do protocolo TCP, os serviços UDP são amplamente implantados. DNS, SNMP, e DHCP(portas registadas 53, 161/162, e 67/68) são três das mais comuns. Como o scan UDP é geralmente mais lento e mais difícil do que o TCP, alguns auditores de segurança ignoram estas portas. Isto é um erro, serviços UDP assexploráveis são bastante comuns e os atacantes certamente não ignoram todo o protocolo. Felizmente, o Nmap pode ajudar as portas do inventárioUDP.
UDP scan é ativado com a opção -sU
. Itcan be combined with a TCP scan type such as SYN scan(-sS
) to check both protocols during the samerun.
UDP scan works by sending a UDP packet to everytargeted port. Para algumas portas comuns, como 53 e 161, a carga útil específica do protocolo é enviada para aumentar a taxa de resposta, mas para a maioria das portas o pacote está vazio, a menos que as opções --data
,--data-string
, ou --data-length
sejam especificadas. Se um erro não alcançável da porta ICMP (tipo 3, código 3) for retornado, a porta é closed
. Outros erros ICMP inalcançáveis (tipo 3, códigos 0, 1, 2, 9, 10, ou 13) marcam a porta como filtered
. Ocasionalmente, o aservice responderá com um pacote UDP, provando que ele é open
. Se nenhuma resposta for recebida após a retransmissão, a porta é classificada como open|filtered
. Isto significa que a porta pode estar aberta, ou filtros perhapspacket estão bloqueando a comunicação. A detecção de versão(-sV
) pode ser usada para ajudar a diferenciar as portas verdadeiramente abertas das filtradas.
Um grande desafio com o scan UDP é fazê-lo rapidamente. Portas abertas e filtradas raramente enviam qualquer resposta, deixando o Nmap com timeout e então conduzindo retransmissões caso a sonda orresponse seja perdida. Portas fechadas são muitas vezes um problema ainda maior. Elas geralmente enviam de volta uma porta ICMP de erro inalcançável. Mas ao contrário dos pacotesRST enviados por portas TCP fechadas em resposta a um SYN ou ao connectscan, muitas máquinas limitam a taxa de portasICMP mensagens não alcançáveis por padrão.Linux e Solaris são particularmente rígidos sobre isso. Por exemplo, o kernelLinux 2.4.20 limita as mensagens de destino inalcançáveis a um persecond (em net/ipv4/icmp.c
).
Nmap detecta o limite de velocidade e diminui a velocidade de acordo para evitar a inundação da rede com pacotes inúteis que a máquina alvo irá descer. Infelizmente, um limite ao estilo Linux de um pacote por segundo faz com que um scan de 65.536 portas demore mais de 18 horas. As ideias para acelerar os seus scans UDP incluem scan de mais hosts em paralelo, fazer aquick scan apenas das portas populares primeiro, scan por trás dofirewall, e usar --host-timeout
para saltar slowhosts.
-sY
(SCTP INIT scan)
SCTP é uma alternativa relativamente nova aos protocolos TCP e UDP, combinando a maioria das características do TCP e UDP, e também adicionando novas características como multi-homing e multi-streaming. O SCTP INIT scan é o equivalente SCTP de um scan TCP SYN, podendo ser executado rapidamente, varrendo milhares de portas por segundo em uma rede rápida e não prejudicada por firewalls restritivos. Ele também permite uma diferenciação clara e confiável entre open
,closed
, e filtered
estados.
Esta técnica é muitas vezes referida como meio-aberto, porque você não abre uma associação SCTP completa. Você envia um INITchunk, como se você fosse abrir uma associação real e depois espera por uma resposta. Um pedaço de INIT-ACK indica que a porta está ouvindo (aberta), enquanto um pedaço de ABORT é indicativo de um não ouvinte. Se a resposta é recebida após várias retransmissões, a porta é assinalada como filtrada. A porta também é marcada como filtrada se um erro ICMPunreachable (tipo 3, código 0, 1, 2, 3, 9, 10, ou 13) for recebido.
-sN
;-sF
;-sX
(TCP NULL, FIN, e Xmas scans)
Estes três tipos de scan (ainda mais são possíveis com a opção--scanflags
descrita na próxima seção)exploram uma subtil lacuna na RFC TCP todifferentiate entre open
e closed
portas. A página 65 da RFC 793 diz que “se o estado da porta estiver FECHADO …. um segmento de entrada que não contenha um RST faz com que um RST seja enviado em resposta”. Então a próxima página discute pacotes enviados para portas abertas sem o conjunto SYN, RST, ou ACKbits, declarando isso: “é improvável que você chegue aqui, mas se chegar, largue este segmento e retorne”
Quando escaneando sistemas compatíveis com este texto RFC, qualquer pacote que não contenha SYN, RST, ou bits ACK resultará em um RST retornado se a porta estiver fechada e nenhuma resposta se a porta estiver aberta. Enquanto nenhum desses três bits estiver incluído, qualquer combinação dos outros três (FIN, PSH, e URG) está OK. O Nmap explora isto com três tipos:
-sN
)
Não define nenhum bit (o cabeçalho da bandeira TCP é 0)
Varredura FIN (-sF
)
Define apenas o bit TCP FIN.
Scan de Natal (-sX
)
Configura as bandeiras FIN, PSH e URG, iluminando o pacote como uma árvore de Natal.
Estes três tipos de scan são exactamente os mesmos no comportamento excepto para as bandeiras TCP definidas nos pacotes de probe. Se um pacote RST é recebido, a porta é considerada closed
, enquanto que nenhum responsável é open|filtered
. A porta é marcadafiltered
se um erro ICMP inalcançável (tipo 3, code0, 1, 2, 3, 9, 10, ou 13) for recebido.
A principal vantagem desses tipos de scan é que eles podem passar furtivamente por certas firewalls não estatais e roteadores de filtragem de pacotes. Outra vantagem é que esses tipos de varredura são um pouco mais saudáveis do que uma varredura SYN. Não conte com isso, embora os produtos IDS mais modernos possam ser configurados para detectá-los. O lado bom é que nem todos os sistemas seguem à risca o RFC 793. Um número de sistemas envia respostas RST para as sondas, independentemente de a porta estar aberta ou não. Isto faz com que todas as portas sejam rotuladas como closed
. Os principais sistemas operacionais que são Microsoft Windows, muitos dispositivos Cisco, BSDI, e IBM OS/400. Outro lado negativo destes scans é que eles não conseguem distinguir open
portas decertain filtered
portas, deixando você com a respostaopen|filtered
.
-sA
(TCP ACK scan)
Este scan é diferente dos outros discutidos até agora em thatit nunca determina open
(ou mesmoopen|filtered
) portas. Ele é usado para mapear conjuntos de regras outfirewall, determinando se elas são stateful ou não e quais portas são filtradas.
O pacote ACK scan probe tem apenas o conjunto de flags ACK (a menos que você use --scanflags
). Ao varrer sistemas não filtrados,open
e closed
as portas retornarão um pacote RST. O Nmap então os etiqueta comounfiltered
, significando que eles são alcançáveis pelo pacote ACK, mas se eles sãoopen
ouclosed
é indeterminado. Portas que não respondem, ou enviam certas mensagens de erro ICMP de volta (tipo 3, código 0, 1, 2, 3, 9, 10,ou 13), são rotuladas como filtered
.
-sW
(TCP Window scan)
Window scan é exatamente o mesmo que ACK scan exceto que itexplora um detalhe de implementação de certos sistemas para diferenciar portas abertas das fechadas, ao invés de sempre imprimirunfiltered
quando um RST é retornado. Isto é feito examinando o campo TCP Window dos pacotes RST retornados. Em alguns sistemas, portas abertas usam um tamanho de janela positivo (mesmo para pacotes RST) enquanto as fechadas têm uma janela zero. Então ao invés de sempre listar o aport como unfiltered
quando ele recebe um RST de volta, Window scan lista a porta como open
ou closed
se o valor da TCP Window naquele reset for positivo ou zero, respectivamente.
Este scan depende de um detalhe de implementação de uma minoria de sistemas na Internet, então você nem sempre pode confiar nele. Os sistemas que não suportam este tipo de sistema normalmente retornarão todas as portasclosed
. Claro, é possível que a máquina não tenha portas abertas. Se a maioria das portas escaneadas sãoclosed
mas alguns números comuns de portas (como 22,25, 53) são filtered
, o sistema é mais similáticamente perceptível. Ocasionalmente, os sistemas mostrarão até mesmo o comportamento exatamente oposto. Se o seu scan mostra 1.000 portas abertas e três portas fechadas ou filtradas, então essas três podem muito bem ser as verdadeiramente abertas.
-sM
(TCP Maimon scan)
O scan Maimon tem o nome do seu descobridor,Uriel Maimon. Ele descreveu a técnica na edição #49 (Novembro de 1996) da revistaPhrack Magazine.Nmap, que incluía esta técnica, foi lançada duas edições mais tarde.Esta técnica é exactamente a mesma que os scans NULL, FIN e Xmas, excepto que a sonda é FIN/ACK. De acordo com a RFC 793 (TCP), um pacote RST deve ser gerado em resposta a tal sonda, quer a porta esteja aberta ou fechada. No entanto, Uriel notou que muitos sistemas derivados do BSD largam o pacote se a porta estiver aberta.
--scanflags
(Scan TCP personalizado)
Usuários do Nmap verdadeiramente avançados não precisam se limitar aos tipos de scan digitalizados oferecidos. A opção --scanflags
permite que você projete sua própria varredura especificando bandeirasTCP arbitrárias.Deixe seus sucos criativos fluir, enquanto evita sistemas de detecção de intrusão, cujos fornecedores simplesmente paginaram através da página de manual do Nmap adicionando regras específicas!
O argumento --scanflags
pode ser um valor de bandeira numérica, como 9 (PSH e FIN), mas usando nomes simbólicos é mais fácil. Apenas amassar juntos qualquer combinação de URG
,ACK
, PSH
,RST
, SYN
, e FIN
. Por exemplo, --scanflagsURGACKPSHRSTSYNFIN
define tudo, embora não seja muito útil para a digitalização. A ordem em que estes são especificados em isirrelevant.
Além de especificar as bandeiras desejadas, você pode especificar o tipo de scan aTCP (como -sA
ou -sF
). Forexample, uma varredura SYN considera sem resposta para indicar uma portafiltered
, enquanto uma varredura FIN trata da mesma forma queopen|filtered
. O Nmap se comportará da mesma forma que o tipo de scan base, exceto que ele usará as bandeiras TCP que você especificar no lugar. Se você não especificar um tipo de base, SYN scan é usado.
-sZ
(SCTP COOKIE ECHO scan)
SCTP COOKIE ECHO scan é um scan SCTP mais avançado. Ele tem a vantagem de que as implementações do SCTP devem largar silenciosamente pacotes contendo pedaços de COOKIE ECHO em portas abertas, mas envia um ABORT se a porta estiver fechada. Além disso, pode haver conjuntos de regras não estatais bloqueando partes do INIT, mas não partes do COOKIE ECHO. Não se engane pensando que isso tornará o aport scan invisível; um bom IDS será capaz de detectar SCTPCOOOKIE ECHO scans também. O lado negativo é que SCTP COOKIE ECHO scans não consegue diferenciar entre open
e filtered
ports, deixando você com o estado open|filtered
em ambos os casos.
-sI
(verificação ociosa)<zombie host>
Este método avançado de verificação permite uma verificação verdadeiramente cega da porta TCP do alvo (o que significa que nenhum pacote é enviado para o alvo a partir do seu endereço IP real). Ao invés disso, um ataque único de canal lateral explora a geração de seqüência de ID de fragmentação de IP previsível no host zumbi para coletar informações sobre as portas abertas no alvo. Os sistemas IDS irão exibir o scan como vindo da máquina zumbi que você especificar (que deve estar em cima e satisfazer certos critérios). Detalhes completos deste tipo de scan fascinante estão na seção chamada “TCP Idle Scan (-sI
)”.
Besidesides sendo extraordinariamente furtivo (devido à sua natureza cega), este tipo de scan permite mapear relações de confiança baseadas em IP entre máquinas. A lista de portas mostra portas abertas da perspectiva do hospedeiro zumbi. Então você pode tentar escanear um alvo usando vários zumbis que você acha que podem ser confiáveis (via regras de roteador/filtro de pacotes).
Você pode adicionar dois pontos seguidos por um número de porta ao host do zumbi se você desejar sondar uma porta em particular no zumbi para alterações de IP ID. Caso contrário o Nmap usará a porta que ele usa por padrão para TCP pings (80).
-sO
(IP protocol scan)
IP protocol scan permite determinar quais protocolos IP (TCP, ICMP, IGMP, etc.) são suportados pelas máquinas alvo. Isto não é tecnicamente uma varredura de porta, uma vez que ela cicla através de números de protocolo IP em vez de números de porta TCP ou UDP. Mesmo assim ele ainda usa a opção-p
para selecionar números de protocolo escaneados, relata os resultados dentro do formato normal de tabela de portas e até mesmo usa o mesmo mecanismo de escaneamento como o verdadeiro método de escaneamento de portas. Assim, ele é anexado o suficiente a uma varredura de porta que ele pertence aqui.
Além de ser útil por direito próprio, o scandem protocol demonstra o poder do software de código aberto. Embora a validade fundamental seja bastante simples, eu não tinha pensado em adicioná-la nem recebido nenhum pedido por tal funcionalidade. Então, no verão de 2000, Gerhard Rieger concebeu a idéia, escreveu um excelente patch implementando-o e o enviou para a lista de discussãoannounce (então chamada de nmap-hackers). Eu incorporei esse patch na árvore do Nmap e lancei uma nova versão no dia seguinte. Poucas peças de software comercial têm usuários entusiasmados o suficiente para projetar e contribuir com seus próprios melhoramentos!
Protocol scan funciona de forma similar ao scan UDP. Em vez de iterar através do campo de número de porta de um pacote UDP, ele envia cabeçalhos de pacoteIP e itera através do campo de protocolo IP de oito bits. Os cabeçalhos estão normalmente vazios, não contendo dados e nem mesmo o cabeçalho do protocolo reclamado. As exceções são TCP, UDP, ICMP, SCTP, e IGMP. Um cabeçalho de protocolo apropriado para esses é incluído, os sistemas sincesome não os enviarão de outra forma e porque o Nmap já tem funções para criá-los. Em vez de observar as mensagens ICMP que podem ser alcançadas, o scan de protocolo está atento às mensagens não alcançáveis do ICMPprotocolo. Se o Nmap receber qualquer resposta em qualquer protocolo do host alvo, o Nmap marca esse protocolo como open
. Um protocolo ICMP unreachableerror (tipo 3, código 2) faz com que o protocolo seja marcado comoclosed
enquanto a porta unreachable (tipo 3, código 3) marca o protocolo como open
. Outros erros do ICMP inalcançável (tipo 3, código 0, 1, 9, 10 ou 13) fazem com que o protocolo seja marcado comofiltered
(embora eles provem que o ICMP éopen
ao mesmo tempo). Se nenhuma resposta for recebida após retransmissões, o protocolo é marcadoopen|filtered
-b
(FTP bounce scan)<FTP relay host>
Uma característica interessante do protocolo FTP (RFC 959) é o suporte para as chamadas conexões proxy FTP. Isso permite que um usuário se conecte a um servidor FTP e depois peça que os arquivos sejam enviados para um servidor de terceiros. Tal recurso está maduro para abusos em muitos níveis, então a maioria dos servidores deixaram de suportar isso. Um dos abusos que este recurso permite é fazer com que o servidor FTP faça um scan de porta a outros hosts. Basta pedir ao servidor FTP para enviar um arquivo para cada porta interessante do host alvo, por sua vez. A mensagem de erro irá descrever se o portis está aberto ou não. Esta é uma boa maneira de contornar firewalls porque os servidores FTP organizacionais são frequentemente colocados onde eles têm mais acesso a outros hosts internos do que qualquer outro host de Internet antigo. O Nmap suporta FTPbounce scan com a opção -b
. É necessário um argumentof o formato<username>
:<password>
@<server>
:<port>
.<Server>
é o nome ou endereço IP do servidor FTP avulnerável. Como com uma URL normal, você pode omitir<username>
:<password>
,neste caso são usadas credenciais de login anônimas (usuário:anonymous
senha:-wwwuser@
). O número da porta (e os dois pontos anteriores) pode ser omitido, neste caso a porta FTP padrão (21) em<server>
é usada.
Esta vulnerabilidade foi generalizada em 1997 quando o Nmap foi liberado, mas foi em grande parte corrigida. Servidores vulneráveis ainda estão em volta, então vale a pena tentar quando tudo o resto falhar. Se contornar afirewall é o seu objetivo, faça um scan na rede de destino para a porta 21 (oreven para qualquer serviço FTP se você fizer um scan em todas as portas com detecção de versão) e use o scriptftp-bounce
NSE. O Nmap lhe dirá se o host é vulnerável ou não. Se você está apenas tentando passar os seus rastros, você não precisa (e, na verdade, não deveria) se limitar aos hosts da rede de destino. Antes de fazer scanningrandom Internet address para servidores FTP vulneráveis, considere que osysadmins podem não gostar que você abuse dos servidores deles neste caminho.