Avançado Pentest e Ofensiva

Scanning com nmap e masscan — portas, serviços, OS fingerprinting, stealth

Scanning é o primeiro contato ativo com o alvo. O objetivo é mapear o que está exposto: portas, protocolos, versões e sistema operacional. Toda atividade deve ser feita dentro do escopo autorizado.

nmap — fundamentos

# Scan básico TCP (top 1000 portas)
nmap 192.168.1.10

# Todas as 65535 portas
nmap -p- 192.168.1.10

# Faixa de IPs (subnet)
nmap 192.168.1.0/24

# Portas específicas
nmap -p 22,80,443,3306,5432 192.168.1.10

Detecção de versão e OS fingerprinting

# Detecção de versão dos serviços (-sV) + OS (-O)
nmap -sV -O 192.168.1.10

# Agressivo: versão + OS + scripts + traceroute
nmap -A 192.168.1.10

Saída típica:
  22/tcp  open  ssh     OpenSSH 8.9p1 Ubuntu
  80/tcp  open  http    Apache httpd 2.4.52
  3306/tcp open  mysql  MySQL 8.0.32
  OS: Linux 5.15

Tipos de scan TCP

SYN scan (-sS) — padrão, stealth:
  → envia SYN, recebe SYN-ACK (porta aberta) ou RST (fechada)
  → não completa o handshake → menos logs no alvo
  → requer root/sudo

Connect scan (-sT):
  → handshake TCP completo
  → mais detectável, não requer root

UDP scan (-sU):
  → muito mais lento (sem confirmação de recebimento)
  → portas importantes: 53 (DNS), 161 (SNMP), 500 (IPSec)
  nmap -sU -p 53,161,500 192.168.1.10

NULL / FIN / Xmas scan:
  → técnicas para evadir firewalls antigos
  → comportamento definido pela RFC 793; firewalls modernos ignoram

Scripts NSE (Nmap Scripting Engine)

# Listar scripts disponíveis por categoria
nmap --script-help "vuln"

# Detectar vulnerabilidades conhecidas
nmap --script vuln 192.168.1.10

# Scripts específicos
nmap --script http-title,http-server-header 192.168.1.10
nmap --script smb-vuln-ms17-010 192.168.1.10   # EternalBlue
nmap --script ssh-auth-methods 192.168.1.10

# Banner grabbing via NSE
nmap --script banner 192.168.1.10

Evasão de firewall e IDS

# Fragmentação de pacotes
nmap -f 192.168.1.10

# Decoy scan — disfarça origem com IPs fictícios
nmap -D 10.0.0.1,10.0.0.2,ME 192.168.1.10

# Timing paranóico (T0 = mais lento, T5 = mais rápido)
nmap -T0 192.168.1.10   # muito lento, difícil de detectar
nmap -T4 192.168.1.10   # padrão agressivo para pentest

# Porta de origem customizada (parece tráfego legítimo)
nmap --source-port 53 192.168.1.10

# Scan sem ping (alvo pode bloquear ICMP)
nmap -Pn 192.168.1.10

masscan — velocidade em redes grandes

masscan varre a internet inteira em minutos. Para redes internas, é útil para escaneamento rápido de subnets grandes:

# Scan rápido de toda a subnet
masscan 192.168.1.0/24 -p 1-65535 --rate=10000

# Saída em formato nmap para importar depois
masscan 192.168.1.0/24 -p 80,443,22 --rate=5000 -oX resultado.xml

# Fluxo recomendado: masscan para portas, nmap para versões
masscan 192.168.1.0/24 -p- --rate=10000 | grep open | awk '{print $6}' \
  | sort -u > hosts_ativos.txt
nmap -sV -iL hosts_ativos.txt

Saída e análise

# Salvar em múltiplos formatos
nmap -oA scan_resultado 192.168.1.0/24

# Arquivos gerados:
#   scan_resultado.nmap  (legível)
#   scan_resultado.xml   (para importar no Metasploit/Nessus)
#   scan_resultado.gnmap (greppable)

# Grep rápido por portas abertas
grep "open" scan_resultado.gnmap

Interpretação dos resultados

Estado da porta:
  open       → serviço aceitando conexões
  closed     → porta acessível mas sem serviço
  filtered   → firewall bloqueia a resposta (não sabe se aberta ou fechada)
  open|filtered → não foi possível determinar (comum em UDP)

Ações por porta:
  22 open  → tentar credenciais fracas, versão vulnerável?
  80/443   → enumerar web (diretórios, tecnologias, CVEs)
  3306     → banco acessível externamente? autenticação?
  445      → SMB: verificar shares, EternalBlue (MS17-010)
  161 UDP  → SNMP: community string "public"? dump de config

Scanning é ciência e arte: configurar bem os parâmetros evita alarmar o alvo e garante cobertura completa.