NMAP: Mapeamento de portas TCP e UDP

Vamos apresentar a ferramenta de mapeamento NMAP. Muito utilizada para verificar máquinas na rede e seus serviços mapeados em portas TCP e UDP.

English version: click HERE

Além disso, é uma ferramenta muito útil em Pentest e investigações de problemas dentro de uma rede. 

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

Neste vídeo apresentamos alguns conceitos sobre o NMAP e aplicações da ferramenta na detecção de portas TCP e UDP. 

 Instalação do NMAP 

Em relação a instalação do nmap, essa pode ser feita baixando no site do nmap ou por gerenciadores de pacotes.

Existem versões disponíveis para Linux, Windows, MAC etc. Caso opte por utilizar no Linux, pode usar o comando abaixo para instalação: 

sudo apt-get install nmap 

NMAP primeiros passos  

Para esse tutorial vamos utilizar o nmap que já está instalado. Dessa forma, para verificar as opções disponíveis na ferramenta nmap, podemos usar o comando abaixo: 

nmap 
nmap help
nmap help

Mapeando as máquinas da rede com NMAP

Agora, vamos iniciar um mapeamento da rede. Dessa forma, vamos usar o nmap para buscar as máquinas na rede e verificar os serviços disponíveis.

Além disso, vale ressaltar que o nmap pode buscar por serviços que operam em portas UDP e TCP.

Como exemplo vamos usar o comando abaixo para pesquisar hosts na rede 192.168.0.0/24. 

nmap 192.168.0.0/24 
nmap 192.168.0.0/24 
nmap 192.168.0.0/24 

Analisando o NMAP no Wireshark 

Também vamos investigar a forma como o nmap descobre máquinas na rede. Para isso, vamos usar o wireshark.

O Wireshark possibilita a investigação de pacotes coletados a partir do tráfego que está sendo coletado da rede ou de um host específico.

Existem outras funcionalidades disponíveis no wireshark, mas vamos falar disso em outro momento.  

nmap wireshark
nmap wireshark

NMAP descobrindo portas TCP abertas 

O nmap usa pacotes SYN para a descoberta das portas TCP abertas, nessa modalidade que estamos usando. 

Dessa forma, são enviados SYN e aguarda-se a resposta SYN+ ACK e depois é enviado um ACK. Essa modalidade padrão de escaneamento do nmap faz a conexão inteira utilizado as 3 fazes da conexão de 3 vias.  

Quando o nmap envia um SYN e obtém uma resposta que dá continuidade a conexão, a ferramenta interpreta que a porta está aberta. No entanto, quando recebe um RST, o nmap interpreta que a porta está fechada.

Isso porque, em ambientes normais um host vai responder com RST quando houver uma solicitação a uma porta que está fechada. 

No entanto, vale ressaltar que podemos ter um equipamento ou um software filtrando as respostas de um determinado host.

Dessa forma, ao invés de responder com um RST o host pode apenas descartar o pedido de conexão. Nesse caso, a porta pode aparecer como filtrada. 

Utilizaremos o WIreshark para investigar comportamentos relacionados ao NMAP em mapeamento de portas TCP e UDP.

Observando os pacotes SYN, SYN+ACK e RST 

Podemos observar no Wireshark os pacotes SYN, SYN+ACK, ACK e RST. 

Aqui podemos ver o comportamento da ferramenta ao tentar verificar os serviços que são executados nas portas investigadas.

Escaneando um host coma opção -sT 

Essa opção segue o escaneamento padrão do nmap, executando as 3 vias do TCP para detectar se uma porta está aberta. 

nmap -sT 192.168.0.1
nmap -sT
nmap -sT

 NMAP: scan com a opção -sS

Outra forma de escaneamento de portas TCP é com a opção -sS. Nessa opção, o nmap envia um SYN e aguarda por um SYN+ACK.

Depois disso, o nmap fecha a conexão enviando um RST para o alvo. Dessa forma, o nmap não completa as 3 vias da conexão TCP.

O Objetivo é fazer um scan mais rápido e até mais silencioso do que o utilizando a opção -sT. 

sudo nmap -sS 192.168.0.1
nmap -sS
wireshark nmap -sS
wireshark nmap -sS

NMAP direcionado a uma porta –p 

O nmap também permite que seja especificado uma porta para ser investigada. Para isso, usamos a opção -p e a porta que desejamos verificar.

Essa opção é interessante quando desejamos verificar um serviço específico em um host.  Nesse exemplo vamos escanear a porta 21 relacionada ao protocolo FTP.

sudo nmap -sS 192.168.0.1 -p 21
nmap -p
nmap -p
wireshark nmap -p 21
wireshark nmap -p 21

Escanear uma lista de portas 

Outra opção interessante é especificar uma lista de portas como por exemplo da porta 20 até a 30.

Para isso usamos a opção -p seguida da primeira porta e “-” seguido da última porta. 

sudo nmap -sS 192.168.0.1 -p 21-23
nmap list
nmap list

Opção do Fast NMAP – F 

Para varredura de portas mais rápidas, podemos usar a opção “-F”.  Esta opção “-F”, verifica as 100 portas comumente usadas ao invés das 1000 portas usadas na varredura padrão do nmap.  

sudo nmap -F 192.168.0.1
nmap -F
nmap -F

Scan de portas UDP –sU 

O nmap também escaneia portas UDP. Para isso, o nmap envia pacotes para as portas UDP do host e aguarda uma mensagem ICMP de destino inalcançado.   

sudo nmap -sU 192.168.0.1

Como saber se a porta UDP está aberta? 

O nmap vai supor que uma porta está aberta ou filtrada quando não houver resposta icmp de destino inalcançada.

O motivo de supor que uma porta está aberta ou filtrada é porque uma porta aberta pode não retornar nenhuma resposta o que sugere que esteja aberta.

No entanto, as respostas icmp podem estar sendo filtradas no host destino ou em um firewall intermediário. Dessa forma, o nmap não tem como ter certeza se a porta está aberta ou filtrada.  

nmap -sU 192.168.0.1 -p 631-635
nmap udp scan
nmap udp scan from port 631 to port 635

Por que escaneamento de portas UDP demora? 

Porque alguns sistemas operacionais, como é o caso do Linux a partir do kernel 2.4.20, limitam o envio de ICMP de destino inalcançável em 1 por segundo. Dessa forma, isso faz com que escanear 65.536 portas leve mais de 18 horas. 

No entanto existem técnicas para escanear portas populares, vários hosts em paralelo, dentre outras que podemos falar em outro momento. 

Análise de scan UDP no Wireshark 

wireshark nmap udp scan
wireshark nmap udp scan

Por que o scan UDP repete o envio? 

Porque o envio de pacotes UDP podem se perder e a resposta de ICMP mostrando que está inalcançável também pode se perder. Dessa forma, o nmap repete o envio para garantir que não tenha havido perdas. 

Você completou a primeira aula sobre NMAP Mapeamento de portas TCP e UDP

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

Comente se gostaria de ver mais posts sobre o NMAP. Existem várias possibilidades de usar o NMAP para mapeamento de portas TCP e UDP.

Veja mais:

Juliana Mascarenhas

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