O Nmap é o canivete suíço da descoberta de redes. Se és sysadmin, DevOps, ou segurança, vais usá-lo mais vezes do que qualquer outra ferramenta de network. E com a NSE (Nmap Scripting Engine), as possibilidades são infinitas.

Quando comecei a trabalhar com redes, o Nmap era "aquele comando que faz scan a portas". Usava nmap -sT 192.168.1.1 e pronto. Mal sabia que estava a usar um dos modos mais ruidosos e lentos possíveis.

Com o tempo, aprendi a diferença entre -sS e -sT, descobri os scripts NSE que automatizam a deteção de vulnerabilidades, e aprendi a contornar firewalls sem fazer barulho. O Nmap não é uma ferramenta: é um ecossistema.

Este artigo serve como guia de referência rápido. Vou direto ao que interessa: tipos de scan, exemplos práticos, NSE, evasão e performance.

Nmap scan em tempo real

⬆ Scan Nmap com deteção de SO, versões de serviço e scripts NSE


Tipos de scan: tabela de referência

ScanFlagDescriçãoPrósContras
SYN scan-sSEnvia SYN, recebe SYN/ACK, envia RST. Não completa o handshakeRápido, furtivo (não cria log de conexão completa)Precisa de root
TCP connect-sTCompleta o handshake TCP (SYN → SYN/ACK → ACK)Não precisa de root, funciona em qualquer sistemaMais lento, mais ruidoso, registado nos logs
UDP scan-sUEnvia pacote UDP vazio. Porta fechada → ICMP unreachableÚnico scan UDP do NmapMuito lento, resultados pouco fiáveis
Version detection-sVDeteta versão do serviço a correr na portaIdentifica software e versão exataAdiciona latência ao scan
OS detection-ODeteta sistema operativo com base em fingerprint TCP/IPSurpreendentemente precisoPrecisa de root, mais lento
Ping sweep-snDescobre hosts ativos sem fazer scan de portasRápido, útil para mapear redeSó diz quais hosts estão up
FIN scan-sFEnvia pacote FIN. Porta fechada → RST. Aberta → silêncioFurtivo, passa em alguns firewallsNão funciona em Windows
Xmas tree-sXEnvia pacote com flags FIN + PSH + URG ligadasMuito furtivoIgual ao FIN: bloqueado por firewalls modernos
Null scan-sNEnvia pacote TCP sem flagsFurtivoIgual ao FIN
ACK scan-sAEnvia ACK para mapear regras de firewallÚtil para perceber o que o firewall filtraNão descobre portas abertas
Window scan-sWSimilar ao ACK mas usa o TCP Window sizePode detetar portas abertas em alguns casosPouco fiável

Dica: 90% dos meus scans usam -sS (SYN). É rápido, furtivo e fiável. Apenas mudo para -sT quando não tenho privilégios de root ou quando quero ser propositadamente detetado (testes de IDS).


Scans básicos no dia-a-dia

# Scan básico de portas (1000 portas mais comuns)
nmap 192.168.1.1

# SYN scan + versões + SO + scripts default (o pacote completo)
sudo nmap -sS -sV -O -sC 192.168.1.1

# Varrimento de uma rede inteira (/24) só a descobrir hosts
nmap -sn 192.168.1.0/24

# Portas específicas
nmap -p 22,80,443,8080 192.168.1.1

# Range de portas
nmap -p 1-1000 192.168.1.1

# Todas as portas (65535) — muito lento, mas completo
nmap -p- 192.168.1.1
Copy

Output formats: -on, -ox, -og, -oa

Guardar o resultado de um scan é essencial para auditoria e automação:

FlagFormatoUso
-oN resultado.txtNormal (legível por humanos)Relatórios, documentação
-oX resultado.xmlXML (parseável)Integração com ferramentas (Metasploit, Dradis)
-oG resultado.gnmapGrepable (uma linha por host)Parsing com grep/awk/sed
-oA resultadoAll formats (normal + XML + grepable)Quando queres os três de uma vez
# Guardar nos três formatos de uma vez
sudo nmap -sS -sV -O -oA scan_servidor 192.168.1.1

# Extrair IPs com portas abertas do grepable
grep "/open/" scan_servidor.gnmap | awk '{print $2}'
Copy

NSE scripts: o poder do Nmap

A Nmap Scripting Engine (NSE) é o que separa o Nmap de qualquer outra ferramenta. São scripts em Lua que automatizam tarefas de deteção, exploração e pós-exploração.

Categorias principais
CategoriaDescriçãoExemplos
safeScripts que não causam dano. Informação passivabanner, http-title, ssh-hostkey
intrusivePotencialmente perigosos. Podem crashar serviçoshttp-enum, mysql-brute, smb-enum-shares
vulnDeteção de vulnerabilidades conhecidassmb-vuln-ms17-010, ssl-heartbleed
exploitExploração ativa de vulnerabilidadeshttp-shellshock
authTestes de autenticação e brute forceftp-brute, http-brute
broadcastDescoberta de hosts via broadcastdhcp-discover, wsd-discover
dosTestes de negação de serviço (muito cuidado!)http-slowloris
# Correr scripts safe automaticamente (-sC é atalho para --script=default)
nmap -sC 192.168.1.1

# Script específico
nmap --script http-headers 192.168.1.1

# Múltiplos scripts
nmap --script http-title,http-headers,ssl-enum-ciphers 192.168.1.1

# Scripts de vulnerabilidade para SMB (EternalBlue)
nmap -p 445 --script smb-vuln-* 192.168.1.1

# Correr scripts com argumentos
nmap --script http-brute --script-args userdb=users.txt,passdb=pass.txt 192.168.1.1

# Listar todos os scripts instalados
ls /usr/share/nmap/scripts/ | head -20
Copy

NSE Scripts a correr

⬆ NSE a detetar vulnerabilidades: do Heartbleed ao EternalBlue


Evasão de firewall

Quando o alvo tem firewall, o Nmap tem truques na manga:

# Fragmentação — parte os pacotes para evitar deteção
sudo nmap -sS -f 192.168.1.1

# MTU personalizado (tem de ser múltiplo de 8)
sudo nmap -sS --mtu 32 192.168.1.1

# Decoy — esconde o teu IP entre IPs falsos
sudo nmap -sS -D decoy1.com,decoy2.com,ME 192.168.1.1

# Spoof de porta de origem
sudo nmap -sS -g 53 192.168.1.1

# Timing — mais lento = menos detetável
sudo nmap -sS -T paranoid 192.168.1.1

# Scan através de um proxy SOCKS
nmap --proxies socks4://127.0.0.1:9050 192.168.1.1
Copy

Atenção: O decoy -D só funciona com -sS (SYN scan) e com -sT (TCP connect). Não funciona com -sV, -O ou --traceroute. O scan demora mais porque cada IP falso também gera tráfego.


Performance: acelera os teus scans

ParâmetroO que fazExemplo
--min-rate 1000Força mínimo de 1000 pacotes/segundoScans rápidos em redes grandes
--max-retries 2Não insiste em pacotes perdidosRedes instáveis, acelera muito
--min-parallelism 50Mínimo de 50 probes em paraleloEscala o scan em redes grandes
-T insaneTiming template mais agressivoRedes locais, baixa latência
--host-timeout 5mMáximo 5 minutos por hostEvita ficar preso em hosts lentos
# Scan agressivo para rede local (cuidado com IDS/IPS)
sudo nmap -sS --min-rate 5000 --max-retries 2 -T insane 192.168.1.0/24

# Scan equilibrado para servidor remoto
sudo nmap -sS -sV --min-rate 500 --max-retries 3 -T normal servidor.exemplo.pt

# Scan completo com timeout por host
sudo nmap -sS -p- --host-timeout 10m servidor.exemplo.pt
Copy

Comandos úteis do dia-a-dia

# Detetar servidores com porta 22 aberta na rede local
nmap -p 22 --open 192.168.1.0/24

# Detetar servidores web (porta 80 ou 443)
nmap -p 80,443 --open -oG - 192.168.1.0/24 | grep "/open/"

# Scan + exportar para XML (para importar no Metasploit)
sudo nmap -sS -sV -O -oX scan.xml 192.168.1.1

# Comparar dois scans (ver o que mudou)
nmap --resume scan_anterior.gnmap

# Scan de IPv6
nmap -6 -sS 2001:db8::1
Copy

Timing templates (-t)

NívelNomeQuando usar
-T 0ParanoidEvasão de IDS. Muito lento (5 min entre probes)
-T 1SneakyEvasão, um pouco mais rápido (15s entre probes)
-T 2PoliteMenos largura de banda. Educado para o servidor alvo
-T 3NormalDefault. Equilíbrio entre velocidade e discrição
-T 4AgressiveRede local confiável. Assume boa latência
-T 5InsaneRede local muito rápida. Pode perder portas

Recapitulando

  • -sS para 90% dos scans: SYN scan, rápido e furtivo
  • -sV + -O para deteção de versões e SO
  • -oA para guardar resultados nos 3 formatos
  • NSE scripts com --script: do safe ao vuln
  • Evasão: -f, -D, -g, -T0
  • Performance: --min-rate, --max-retries

O Nmap é uma ferramenta que quanto mais usas, mais descobres. Começa com o básico, explora os scripts NSE, e com o tempo vais construir o teu próprio repertório de scans para cada situação.

Experimenta correr nmap --script-updatedb para teres a base de dados de scripts mais recente, e depois explora a categoria vuln nos teus servidores.

Recursos adicionais

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Deixar comentário