Guia Completo de Nmap: Mapeamento e Enumeração de Redes
1. O que é o Nmap e como ele funciona?
Quando você quer auditar ou invadir um sistema, o primeiro passo é responder a três perguntas básicas:
- O host está ligado e acessível? (Host Discovery)
- Quais portas estão abertas? (Port Scanning)
- Quais programas e versões estão rodando nessas portas? (Service & OS Detection)
O Nmap faz exatamente isso: ele envia pacotes de rede brutos (TCP, UDP, ICMP) especialmente formatados para o alvo e analisa as respostas (ou a falta delas) para determinar o estado exato da máquina.
Esse handout é um informativo de como a ferramenta funciona:
Instalação no Linux
No Kali Linux ou Parrot OS, o Nmap já vem instalado por padrão. Em outras distribuições Debian/Ubuntu:
2. Estrutura Básica do Comando
A sintaxe geral do Nmap é:
[Alvos]
- Host ou IP único:
- Múltiplos IPs:
- Faixa de IPs (Range):
- Sub-rede completa (Notação CIDR):
- Lista de alvos a partir de um arquivo de texto:
3. Os Estados das Portas no Nmap
Ao escanear um alvo, o Nmap classifica cada porta em um dos seguintes estados:
| Estado | Significado Técnico | O que indica para o invasor |
|---|---|---|
open |
O serviço aceitou a conexão (respondeu com SYN/ACK no TCP). |
Alvo pronto para enumeração e ataque. |
closed |
A máquina recebeu o pacote, mas não há aplicativo escutando (respondeu com RST). |
O host está vivo, mas aquela porta não tem serviço ativo. |
filtered |
Os pacotes foram bloqueados/dropados sem resposta ou com ICMP inacessível. | Há um firewall, filtro de pacotes ou regras de NAT no caminho. |
unfiltered |
A porta está acessível, mas o Nmap não consegue dizer se está aberta ou fechada (típico de scans -sA). |
Usado para mapear regras de firewall. |
open\|filtered |
O Nmap não obteve resposta (comum em varreduras UDP) e não sabe se a porta está aberta ou filtrada. | Exige testes adicionais com probes específicos. |
4. Tipos de Varredura (Scan Techniques)
-sS — TCP SYN Scan (Stealth / Half-Open)
É o scan padrão e o mais utilizado quando executado com privilégios de root/sudo.
* Como funciona: Envia um pacote SYN. Se o servidor responder SYN/ACK, a porta está aberta. O Nmap imediatamente responde com um RST para derrubar a conexão sem completar o 3-Way Handshake.
* Vantagens: É rápido, eficiente e muitas aplicações antigas não registravam a conexão em logs de aplicação porque o handshake nunca terminou.
-sT — TCP Connect Scan
É o scan padrão quando você não tem privilégios de administrador (root).
* Como funciona: Realiza o Three-Way Handshake completo (SYN $\rightarrow$ SYN/ACK $\rightarrow$ ACK) utilizando as chamadas de sistema do sistema operacional (connect()).
* Desvantagem: É mais lento e muito mais barulhento nos logs do alvo.
-sU — UDP Scan
Muitos serviços vitais rodam em UDP (DNS na porta 53, DHCP na 67, SNMP na 161).
* Como funciona: Envia pacotes UDP vazios. Se receber um erro ICMP Port Unreachable, a porta está fechada. Se não houver resposta, o Nmap marca como open|filtered.
* Dica: O scan UDP é lento por natureza; limite as portas para acelerar.
-sA — TCP ACK Scan
Não descobre se as portas estão abertas, mas serve para mapear firewalls.
* Como funciona: Envia pacotes com a flag ACK. Se o firewall for stateless e deixar passar, o alvo responde com RST (unfiltered). Se for bloqueado, fica filtered.
5. Seleção e Controle de Portas
Por padrão, o Nmap não escaneia todas as 65.535 portas; ele escaneia apenas as 1.000 portas mais comuns. Para alterar isso:
| Argumento | Descrição | Exemplo |
|---|---|---|
-p <portas> |
Escaneia portas específicas ou intervalos | nmap -p 22,80,443,8080 10.10.10.1 |
-p- |
Escaneia todas as 65.535 portas (essencial em CTF/Pentest) | nmap -p- 10.10.10.1 |
-p U:53,T:80,443 |
Escaneia UDP e TCP no mesmo comando | sudo nmap -sS -sU -p U:53,T:80 10.10.10.1 |
-F |
Fast Scan: escaneia apenas as 100 portas mais comuns | nmap -F 10.10.10.1 |
--top-ports <N> |
Escaneia as N portas mais frequentes da internet |
nmap --top-ports 500 10.10.10.1 |
6. Descoberta de Hosts (Host Discovery)
Antes de perder tempo testando milhares de portas, você pode querer apenas saber quais máquinas estão ligadas na rede.
-sn — Ping Scan (Sem escanear portas)
Apenas verifica se os hosts estão ativos.
(Em rede local Ethernet, ele envia requisições ARP; em redes externas, envia ICMP Echo + TCP SYN na 443 + TCP ACK na 80).-Pn — Pular a Descoberta de Host (Tratar todos como online)
Muitos servidores de empresas e firewalls modernos bloqueiam pacotes de ping (ICMP). Se você rodar o Nmap comum neles, ele pode achar que a máquina está desligada e abortar o scan.
O -Pn força o Nmap a tentar escanear as portas diretamente:
7. Detecção de Versão, Sistema Operacional e Modo Agressivo
Saber que a porta 80 está aberta é bom; saber que nela roda um Apache 2.4.49 (que tem falha de Remote Code Execution) é muito melhor.
-sV — Detecção de Versão dos Serviços
O Nmap se conecta a cada porta aberta e troca mensagens (banner grabbing e probes) para descobrir o software e versão exatos:
-O — Detecção de Sistema Operacional (OS Detection)
O Nmap analisa pequenas nuances nas respostas TCP/IP da pilha de rede do alvo (fingerprinting) para inferir se ele roda Linux, Windows, FreeBSD, etc.:
-A — Modo Agressivo (All-in-One)
Ativa tudo de uma vez:
- Detecção de Sistema Operacional (-O)
- Detecção de Versão (-sV)
- Varredura de Scripts Padrão (-sC)
- Rastreamento de rota (--traceroute)
8. Nmap Scripting Engine (NSE)
O NSE é uma das funcionalidades mais poderosas do Nmap. São scripts escritos em Lua que automatizam tarefas complexas, desde capturar metadados até explorar vulnerabilidades.
Os scripts ficam divididos em categorias: default, safe, discovery, vuln, auth, exploit, brute.
-sC — Executar os scripts padrão
Executa a categoria default de scripts (não intrusivos e seguros):
--script <script_ou_categoria>
Executa scripts específicos:
- Buscar vulnerabilidades conhecidas:
- Pegar cabeçalhos e título de servidor HTTP:
- Verificar vulnerabilidade SMB (como o famoso EternalBlue - MS17-010):
- Pesquisar scripts instalados na sua máquina:
9. Velocidade, Timing e Evasão
Timing Templates (-T0 a -T5)
Controla o tempo de espera entre pacotes para ajustar a velocidade do scan:
| Flag | Nome | Uso recomendado |
|---|---|---|
-T0 |
Paranoid | Evasão extrema de IDS/IPS (extremamente lento) |
-T1 |
Sneaky | Muito lento, para redes monitoradas |
-T2 |
Polite | Reduz consumo de banda e carga na rede |
-T3 |
Normal | Comportamento padrão |
-T4 |
Aggressive | O mais usado em pentests e CTFs (rápido e confiável em redes modernas) |
-T5 |
Insane | Velocidade máxima (pode perder pacotes e dar falsos negativos) |
Exemplo clássico:
--min-rate <pacotes/s>
Se você não quer esperar o Nmap se ajustar sozinho e sua rede aguenta velocidade, você pode fixar uma taxa mínima de pacotes por segundo:
10. Salvando Resultados
Durante um teste de intrusão, você nunca deve perder o resultado de um scan longo. O Nmap permite exportar nos seguintes formatos:
-oN <arquivo>: Saída padrão legível por humanos.-oX <arquivo>: Formato XML (ótimo para importar no Metasploit comdb_import).-oG <arquivo>: Formato grepable (fácil de filtrar comgrep,awkecut).-oA <nome>: (Recomendado) Salva os 3 formatos de uma vez com o mesmo prefixo.
scan_completo_alvo.nmap, scan_completo_alvo.xml e scan_completo_alvo.gnmap).
11. Casos de Uso Reais
Caso 1: Varredura de Descoberta de Rede Interna
Cenário: Você conectou seu Kali na rede da empresa e precisa saber quem está online.
Caso 2: O Scan Inicial Padrão em CTF ou Pentest
Cenário: Você recebeu o IP do alvo e quer uma visão rápida e completa dos serviços padrão.
Caso 3: Varredura Completa de Todas as Portas (Full Port Scan)
Cenário: Administradores costumam esconder painéis administrativos e portas SSH em portas altas (ex: 2222, 8080, 50000). Um scan padrão não vai achar.
Caso 4: Alvo que não responde a Ping (Atrás de Firewall)
Cenário: O alvo não responde
ping 10.10.10.100, mas você sabe que há servidores rodando lá.
Caso 5: Auditoria de Vulnerabilidades Específicas
Cenário: Você encontrou uma porta 445 (SMB) aberta no Windows e quer checar se ela está vulnerável sem derrubar o servidor.
12. Resumo das Flags Essenciais
| Flag | Função |
|---|---|
-sS |
SYN scan stealth (padrão com root) |
-sT |
Connect scan completo (padrão sem root) |
-sU |
UDP scan |
-p <portas> |
Especifica portas (-p 80, -p-, -p 1-1024) |
-sV |
Detecta versões dos serviços |
-O |
Detecta Sistema Operacional |
-sC |
Roda scripts NSE padrão |
-A |
Modo agressivo (-sV, -O, -sC, --traceroute) |
-Pn |
Pula ping e escaneia direto |
-sn |
Apenas ping scan (sem portas) |
-T[0-5] |
Define a velocidade/agressividade temporal |
-oA <nome> |
Salva a saída em todos os formatos |
-v / -vv |
Aumenta o nível de verbosidade na tela em tempo real |
Prática Recomendada
Para treinar sem violar termos de uso ou leis:
* Host oficial para testes: scanme.nmap.org (mantido pela equipe do Nmap expressamente para testes).
* Laboratórios locais: Máquinas virtuais como o Metasploitable 2 ou caixas do Hack The Box / TryHackMe.