NMAP: Scan avançado

Vamos falar de como utilizar scan avançado no NMAP. A ideia aqui é apresentar outras formas de escaneamentos diferentes dos tradicionais apontados no post: NMAP: Mapeamento de portas TCP e UDP.

English version: click HERE

Dessa forma, vamos apresentar formas de escaneamento que podem identificar serviços utilizando uma abordagem heterodoxa.

Veja mais posts do nosso tutorial: NMAP

Artigo 01 – NMAP: Mapeamento de portas TCP e UDP

Artigo 02 – NMAP: Scan avançado

Artigo 03 – NMAP : Identificar a versão de um serviço

Se essa é sua primeira vez no nmap, sugerimos que volte no post anterior sobre nmap

Escaneamento TCP NULL

O primeiro tipo de scan que vamos ver é o TCP NULL. Nessa modalidade de escaneamento, vamos usar um cabeçalho de flag do TCP nulo.

Ou seja, o campo referente as flags vai estar como zero. Para isso, vamos usar a opção -sN. Como no comando abaixo: 

sudo nmap -sN -p 80 192.168.0.1
Escaneamento TCP NULL para a porta 80 do host 192.168.0.1
Escaneamento TCP NULL para a porta 80 do host 192.168.0.1 
Escaneamento TCP NULL para as portas 20 a 25  do host 192.168.0.1
Escaneamento TCP NULL para as portas 20 a 25  do host 192.168.0.1 

Podemos observar no Wireshark que o campo flag dos segmentos TCP enviados para o alvo estão nulos.

Nesse tipo de escaneamento a falta de resposta do alvo Indica que a porta está aberta ou filtrada por algum firewall. 

Wireshark: TCP flags = NULL
Wireshark: TCP flags = NULL 

Escaneamento TCP FIN 

Esse escaneamento envia segmentos TCP com a flag FIN. Dessa forma, ao receber um flag FIN para uma porta que não está aberta o sistema tende a responder com um RST. 

Assim, se um alvo não responde a uma determinada porta, essa será considerada como aberta ou filtrada.

A princípio o nmap não tem como saber se a porta está aberta ou se existe algum mecanismo de segurança impedindo a resposta.  

O comando abaixo utiliza a opção -sF para indicar que deverá ser enviado um segmento com a flag FIN. 

sudo -sF -p 20-25 192.168.0.1
Escaneamento usando TCP FIN para as portas 20 a 25. 
Escaneamento usando TCP FIN para as portas 20 a 25. 
Wireshark: verificação da flag FIN do escaneamento TCP FIN
Wireshark: verificação da flag FIN do escaneamento TCP FIN 

Escaneamento TCP ACK 

Apresentamos agora um escaneamento diferente no seu funcionamento e no seu objetivo. Vamos falar do objetivo, nesse caso o scan deseja obter informação se o firewall é stateful.

Dessa forma, não desejamos saber se as portas estão abertas ou não. O que desejamos é verificar se existe uma resposta RST a nossa consulta.  

Caso o alvo responda com um RST poderemos presumir que não temos uma regra de firewall stateful antes do serviço analisado. Isso é interessante para verificar se você configurou corretamente o firewall. 

Exemplo de um scan utilizando ACK para um host no endereço 192.168.0.1 e portas 20 a 25:

sudo nmap -sA -p 20-25 192.168.0.1
nmap scan tcp ack
nmap scan tcp ack

Podemos observar que a resposta foi de que as portas não estavam filtradas. Dessa forma, podemos deduzir que não temos um firewall stateful entre origem e destino.

Além disso, podemos verificar no Wireshark os segmentos TCP com ACK e as respectivas respostas com RST. Isso comprova a tese de que o sistema está respondendo a ACK de forma indiscriminada. 

Wireshark nmap scan tcp ack
Wireshark nmap scan tcp ack

Escaneamento TCP Window

Agora vamos ver uma varredura semelhante à do TCP ACK que verifica se a resposta RST utiliza um tamanho de janela positivo.

Esse comportamento é comum em alguns sistemas e pode ser usado para verificar se uma porta está aberta. Dessa forma, em alguns sistemas temos um RST com tamanho de janela positivo enquanto que para as portas fechadas temos um RST com tamanho 0. 

Portanto, trata-se de uma forma incomum de obter informações sobre serviços utilizando um Scan avançado no NMAP. 

Exemplo de um scan utilizando TCP WINDOW para um host no endereço 192.168.0.1 e portas 20 a 25:

sudo nmap -sW -p 20-25 192.168.0.1
nmap RST Window
nmap RST Window. Podemos verificar que esse sistema não responde com tamanho de janela diferente.
nmap RST Window. Podemos verificar que esse sistema não responde com tamanho de janela diferente.

NMAP Scan avançado com várias flags 

Outra opção de escaneamento é enviar um segmento TCP com todos os flags marcados ou a combinação de mais de um flag.

Dessa forma, verifica-se como o sistema destino responderá a esse tipo de segmento. Vale ressaltar que não importa a ordem em que as flags são informadas no comando.

Isso porque, o comando apenas marca quais serão as flags que estarão marcadas no segmento TCP.

Exemplo de um scan utilizando várias flags TCP para um host no endereço 192.168.0.1 e portas 20 a 25:

sudo nmap -scanflags URGACKPSHRSTSYNFIN -p 20-25 192.168.0.1
NMAP Escaneamento com várias flags
NMAP Escaneamento com várias flags 
Wireshark Escaneamento com várias flags  
Wireshark Escaneamento com várias flags  

Veja mais posts do nosso tutorial: NMAP

Artigo 01 – NMAP: Mapeamento de portas TCP e UDP

Artigo 02 – NMAP: Scan avançado

Artigo 03 – NMAP : Identificar a versão de um serviço

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer