Como usar nmap para auditar superfície de ataque em servidores

1. Introdução ao nmap e auditoria de superfície de ataque

O nmap (Network Mapper) é uma ferramenta de código aberto amplamente utilizada para descoberta de redes e auditoria de segurança. Desenvolvido por Gordon Lyon, tornou-se referência essencial tanto para profissionais de segurança ofensiva quanto defensiva. Sua capacidade de mapear portas abertas, identificar serviços em execução e detectar sistemas operacionais o torna indispensável na análise de superfície de ataque.

O conceito de superfície de ataque refere-se ao conjunto total de pontos vulneráveis em um sistema — portas abertas, serviços expostos, versões de software desatualizadas e sistemas operacionais identificáveis. Cada um desses elementos representa uma potencial porta de entrada para um invasor.

Importante: Antes de qualquer varredura, obtenha autorização por escrito do proprietário do sistema. Escanear servidores sem permissão é ilegal em diversos países e viola leis como o Computer Fraud and Abuse Act (CFAA) nos EUA e o Marco Civil da Internet no Brasil.

2. Instalação e configuração inicial do nmap

No Linux, a instalação é simples:

# Ubuntu/Debian
sudo apt update && sudo apt install nmap -y

# CentOS/RHEL/Fedora
sudo yum install nmap -y
# ou
sudo dnf install nmap -y

Verifique a instalação:

nmap --version

Para comandos básicos de ajuda:

nmap -h
man nmap

Muitas varreduras avançadas exigem privilégios de root. Use sudo para executar scans SYN (-sS), detecção de SO (-O) e scans UDP (-sU):

sudo nmap -sS 192.168.1.1

3. Descoberta de hosts e varredura de portas

O primeiro passo em uma auditoria é identificar quais hosts estão ativos na rede. O ping sweep com -sn é eficiente para isso:

# Descobrir hosts ativos em uma sub-rede
nmap -sn 192.168.1.0/24

# Listar alvos sem escanear
nmap -sL 192.168.1.0/24

Para varredura de portas, os principais tipos de scan são:

# TCP SYN scan (padrão, rápido, requer sudo)
sudo nmap -sS 192.168.1.100

# TCP Connect scan (não requer sudo, mais lento)
nmap -sT 192.168.1.100

# UDP scan (lento, requer sudo)
sudo nmap -sU 192.168.1.100

Exemplo prático — escanear portas específicas em um intervalo de IPs:

# Escanear portas 22, 80, 443 e 8080 nos IPs 192.168.1.1 a 192.168.1.10
sudo nmap -sS -p 22,80,443,8080 192.168.1.1-10

4. Detecção de versões de serviços e sistemas operacionais

Identificar versões de serviços é crucial para encontrar vulnerabilidades conhecidas:

# Detecção de versão com -sV
sudo nmap -sV 192.168.1.100

# Detecção de sistema operacional com -O
sudo nmap -O 192.168.1.100

# Varredura agressiva completa com -A (combina -O, -sV, traceroute e scripts)
sudo nmap -A 192.168.1.100

Exemplo de saída com versões:

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2
80/tcp   open  http    Apache httpd 2.4.38
443/tcp  open  ssl     OpenSSL 1.1.1d

O fingerprint de SO usa características únicas de pilhas TCP/IP. A precisão é alta, mas pode ser enganada por sistemas que modificam parâmetros de rede.

5. Scripts NSE (Nmap Scripting Engine) para auditoria aprofundada

O NSE permite automatizar tarefas de auditoria com scripts categorizados:

# Listar scripts disponíveis
ls /usr/share/nmap/scripts/

# Escanear vulnerabilidades conhecidas
sudo nmap --script vuln 192.168.1.100

# Descobrir título de servidor web
sudo nmap --script http-title 192.168.1.100

# Categoria discovery para informações adicionais
sudo nmap --script discovery 192.168.1.100

Exemplo prático combinando vários scripts:

sudo nmap -sV --script vuln,http-enum,ssl-enum-ciphers 192.168.1.100

Para evitar falsos positivos, sempre valide manualmente as vulnerabilidades encontradas. Scripts como http-sql-injection e http-fileupload-exploiter podem gerar alertas que exigem confirmação.

6. Varredura de rede interna e externa em servidores

A abordagem difere entre escaneamento local e remoto:

Rede interna (LAN):

# Escaneamento local com alta velocidade
sudo nmap -T4 -sS -p- 10.0.0.0/24

Rede externa (WAN) com evasão de firewall:

# Fragmentação de pacotes para evitar detecção
sudo nmap -f 192.168.1.100

# Uso de decoys para mascarar origem
sudo nmap -D decoy1,decoy2,ME 192.168.1.100

# Atraso entre pacotes para evitar rate limiting
sudo nmap --scan-delay 1s 192.168.1.100

Exemplo prático — auditar servidor web público:

sudo nmap -sS -sV -p 80,443 --script http-title,ssl-cert,http-headers example.com

7. Interpretação de resultados e geração de relatórios

A saída padrão pode ser complementada com verbosidade:

# Aumentar verbosidade
sudo nmap -v 192.168.1.100

# Verbosidade máxima
sudo nmap -vv 192.168.1.100

Exportação para diferentes formatos:

# XML (útil para ferramentas de análise)
sudo nmap -oX relatorio.xml 192.168.1.100

# Greppable (para processamento com grep/awk)
sudo nmap -oG relatorio.gnmap 192.168.1.100

# JSON (para integração com APIs)
sudo nmap -oJ relatorio.json 192.168.1.100

Para criar um relatório resumido:

# Extrair portas abertas do formato greppable
grep "Ports:" relatorio.gnmap | awk '{print $2, $3}'

8. Boas práticas e limitações do nmap em auditoria

Throttling para evitar sobrecarga:

# Taxa mínima e máxima de pacotes
sudo nmap --min-rate 100 --max-rate 500 192.168.1.100

# Atraso entre probes
sudo nmap --host-timeout 30s 192.168.1.100

Limitações importantes:
- Falsos negativos em serviços atrás de balanceadores de carga
- WAF (Web Application Firewalls) podem bloquear ou distorcer resultados
- Serviços que escutam apenas em IPv6 podem não ser detectados em varreduras IPv4
- Firewalls stateful podem ocultar portas abertas

Próximos passos após auditoria:
- Correlacione resultados com ferramentas como Nessus ou OpenVAS para validação
- Utilize o Metasploit para exploração controlada em ambiente autorizado
- Documente todas as descobertas em um relatório formal de segurança

Referências