
Ferramenta
Nmap na prática: guia completo de varredura de rede para pentest
Resumo: Nmap (Network Mapper — mapeador de redes) é o scanner de redes de referência em pentest: descobre hosts ativos, varre portas TCP e UDP, identifica versões de serviços e sistemas operacionais e automatiza enumeração com scripts. Neste guia completo você aprende cada tipo de scan (SYN, connect, UDP, FIN/NULL/Xmas, idle), descoberta de hosts, detecção de versão e SO, scripts NSE, timing e evasão, formatos de saída e um workflow completo de engajamento — sempre com a contraparte de defesa.
O que é
Nmap é a ferramenta de código aberto mais usada no mundo para descoberta de hosts, varredura de portas e fingerprinting (identificação precisa de serviços e sistemas operacionais) em redes TCP/IP. Criado por Gordon Lyon, conhecido como Fyodor, e publicado em setembro de 1997 na revista Phrack, o projeto nasceu junto com a própria indústria de segurança ofensiva e segue ativo: a versão estável mais recente, a 7.95, foi lançada em abril de 2024 com mais de 6 mil assinaturas de detecção de sistema operacional. É praticamente onipresente em distribuições focadas em segurança, como o Kali Linux (distribuição Linux voltada a testes de segurança), e aparece até em filmes de Hollywood como Matrix Reloaded e O Ultimato Bourne.
Diferente de utilitários simples de conectividade, o Nmap monta e envia os próprios pacotes IP em estado bruto (raw packets — pacotes montados diretamente, sem passar pelas chamadas de rede comuns do sistema operacional), o que exige privilégios de administrador (root) para a maioria dos modos. Com isso ele consegue sondar portas TCP e UDP, deduzir o sistema operacional pelo comportamento da pilha TCP, detectar a presença de firewalls e executar centenas de scripts de enumeração e verificação de vulnerabilidades. Além do binário de linha de comando, a suíte oficial inclui Zenmap (interface gráfica e visualizador de resultados), Ncat (a reescrita moderna do Netcat), Ndiff (comparador de resultados entre varreduras) e Nping (gerador e analisador de pacotes).
Para quem trabalha com segurança, o Nmap é normalmente o primeiro passo de qualquer engajamento: sem saber quais hosts estão vivos, quais portas respondem e quais serviços rodam, não há superfície de ataque para explorar. O projeto mantém ainda um alvo oficial de testes, o scanme.nmap.org, com autorização explícita para varreduras — o lugar certo para praticar sem risco legal.
Principais características
| Característica | Descrição |
|---|---|
| Descoberta de hosts | Varredura de redes inteiras com ping sweep (-sn), listando quais máquinas estão ativas sem escanear portas |
| Scan de portas TCP | Mais de dez técnicas: connect (-sT), SYN (-sS), FIN/NULL/Xmas (-sF/-sN/-sX), ACK (-sA), window (-sW), idle (-sI), entre outras |
| Scan UDP | Varredura de portas UDP (-sU), combinável com um scan TCP na mesma execução |
| Detecção de versão | Identifica o serviço e a versão exata por porta aberta (-sV), com intensidade configurável |
| Detecção de SO | Deduz o sistema operacional e a versão (-O) pela análise da pilha TCP/IP |
| Scripts NSE | Motor de scripts em Lua (Nmap Scripting Engine) com centenas de scripts prontos (-sC, --script) |
| Timing e evasão | Perfis de velocidade de -T0 a -T5, fragmentação de pacotes, decoys e spoofing de origem |
| Múltiplos formatos de saída | Saída normal, XML, greppable e binária (-oN/-oX/-oG/-oB) para integrar com outras ferramentas |
| Portabilidade | Binários oficiais para Linux, Windows, macOS e BSD, além de código aberto |
As opções que você vai usar todo dia
| Opção | Função |
|---|---|
| -sn | Descoberta de hosts sem scan de portas (ping sweep) |
| -sS / -sT | Scan TCP SYN (meia conexão, exige root) / scan TCP connect (sem privilégios) |
| -sU | Scan UDP |
| -sF / -sN / -sX | Scans FIN, NULL e Xmas (flags TCP atípicas) |
| -sA | Scan ACK, usado para mapear regras de firewall |
| -sI (host zumbi) | Idle scan — varredura cega via host zumbi |
| -p / -p- | Especifica portas ou faixas; -p- varre as 65.535 portas TCP |
| -sV | Detecção de versão de serviços |
| -O | Detecção de sistema operacional |
| -sC / --script | Scripts padrão / scripts NSE específicos ou por categoria |
| -A | Modo agressivo: -O + -sV + -sC + traceroute em um comando |
| -T0 a -T5 | Perfis de timing, de paranoid a insane |
| -Pn | Pula a descoberta de hosts e assume todos ativos |
| -f / -D / -S | Fragmentação, decoys e spoofing de endereço de origem (evasão) |
| -oN/-oX/-oG/-oA | Saída normal, XML, greppable e todos os formatos juntos |
Casos de uso práticos
Descoberta de hosts: o ping sweep
Antes de escanear portas, é preciso saber quais máquinas da faixa autorizada estão vivas. O ping sweep com -sn envia sondas ICMP echo, um SYN para a porta 443, um ACK para a porta 80 e uma requisição de timestamp ICMP; na rede local, o Nmap usa ainda ARP (Address Resolution Protocol — o protocolo que descobre o endereço físico de uma máquina na mesma rede), o que torna a detecção praticamente instantânea:
nmap -sn 192.168.1.0/24
nmap -sn 10.10.10.10O primeiro comando varre toda a faixa /24; o segundo testa um host único. A saída lista cada endereço com o nome DNS reverso e o estado "up" ou "down". Para escopos grandes, os alvos podem vir de um arquivo com a opção -iL (lista de alvos, um por linha), muito usada quando o cliente entrega uma planilha com centenas de IPs:
nmap -sn -iL alvos.txtUma observação importante: -sn não toca em portas, então é relativamente silencioso e raramente gera alertas em firewalls — mas ainda assim é detectável e deve ser feito apenas dentro do escopo autorizado.
Scan TCP: connect e SYN
A varredura TCP é o coração do Nmap. O funcionamento básico depende do handshake de três vias do protocolo: o scanner envia um SYN (pacote de sincronização que inicia a conexão), e a resposta revela o estado da porta — SYN/ACK significa porta aberta, RST (reset — pacote que encerra/rejeita a conexão) significa fechada, e silêncio total indica filtrada por firewall. O Nmap reporta também combinações como aberta ou filtrada quando não consegue diferenciar.
O scan connect (-sT) usa a chamada de sistema connect do próprio sistema operacional, a mesma que navegadores e aplicativos usam para abrir conexões — por isso não exige root, mas completa as conexões de verdade, é mais lento e deixa rastro em logs do alvo. O scan SYN (-sS) envia os pacotes na mão, nunca completa o handshake (por isso é chamado de meia conexão ou half-open), é muito mais rápido — milhares de portas por segundo em redes rápidas — e é o método padrão quando o usuário tem privilégios:
nmap -sT 10.10.10.10
sudo nmap -sS 10.10.10.10
sudo nmap -sS -p 22,80,443,445,3389 10.10.10.10
sudo nmap -sS -p- --min-rate 5000 10.10.10.10O terceiro comando mira apenas portas de serviços comuns; o quarto varre todas as 65.535 portas com taxa mínima de 5 mil pacotes por segundo, o padrão de ouro para um reconhecimento rápido em engajamentos autorizados. Depois de encontrar portas abertas com um scan amplo, o pentester refina com varreduras direcionadas — nunca o contrário, para não desperdiçar horas num alvo que não tem o serviço que se procura.
Varredura UDP: lenta, mas indispensável
Serviços críticos rodam sobre UDP (User Datagram Protocol — o protocolo sem conexão, usado por DNS, SNMP e DHCP): DNS na porta 53, SNMP na 161/162, DHCP na 67/68. Muitos auditores pulam o UDP por preguiça — e é exatamente aí que serviços exploráveis ficam esquecidos. O scan UDP (-sU) envia um pacote UDP para cada porta: uma resposta UDP revela porta aberta, um erro ICMP "porta inalcançável" indica fechada, e silêncio vira "aberta ou filtrada", que o -sV ajuda a desambiguar.
O problema é a velocidade: portas abertas e filtradas não respondem, forçando timeouts e retransmissões, e muitos sistemas limitam a taxa de mensagens ICMP de erro — o Linux chega a aceitar apenas uma por segundo, o que tornaria a varredura completa de 65.535 portas uma tarefa de mais de 18 horas. A saída prática é escanear apenas as portas UDP mais comuns:
sudo nmap -sU --top-ports 100 10.10.10.10
sudo nmap -sU -p 53,67,68,123,137,161,162,500,1434,1900 10.10.10.10A primeira forma varre as 100 portas UDP mais populares; a segunda mira serviços que valem a pena (DNS, DHCP, NTP, NetBIOS, SNMP, ISAKMP, MSSQL). O UDP pode ser combinado com um scan TCP na mesma execução (sudo nmap -sS -sU --top-ports 200 10.10.10.10) para ter as duas visões num relatório só.
Scans exóticos: FIN, NULL, Xmas e idle
O RFC 793 do TCP descreve um comportamento que os scans "invisíveis" exploram: um pacote sem as flags SYN, RST ou ACK enviado a uma porta fechada deve receber um RST de volta, enquanto uma porta aberta simplesmente o ignora. O Nmap usa esse detalhe em três variações — NULL (-sN, nenhuma flag), FIN (-sF, só a flag FIN) e Xmas (-sX, as flags FIN, PSH e URG juntas, "iluminando" o pacote como uma árvore de Natal):
sudo nmap -sF 10.10.10.10
sudo nmap -sN 10.10.10.10
sudo nmap -sX 10.10.10.10A vantagem teórica é atravessar firewalls não-estaduais e filtros simples que só observam conexões SYN; a limitação prática é que nem todo sistema segue o RFC à risca — Windows, muitos roteadores Cisco, BSDI e OS/400 respondem RST para qualquer porta, fazendo tudo parecer fechado. O resultado em sistemas compatíveis é "fechada" com RST ou "aberta ou filtrada" com silêncio.
Dois scans relacionados merecem destaque. O scan ACK (-sA) não revela portas abertas — ele mapeia as regras do firewall: portas que respondem RST são "não filtradas" (alcançáveis) e as que se calam são "filtradas", revelando se o firewall é estadual (que conhece o estado das conexões) ou não. E o idle scan (-sI) faz uma varredura cega usando um host zumbi: em vez de enviar pacotes ao alvo com o seu IP real, o Nmap usa um efeito colateral do protocolo — o campo de identificação de fragmentação IP (IP ID) do zumbi — para deduzir as portas abertas. O alvo enxerga a varredura vinda do zumbi, nunca do atacante:
sudo nmap -sA 10.10.10.10
sudo nmap -sI 10.0.0.5 10.10.10.10No exemplo, 10.0.0.5 é o zumbi (que precisa estar ativo, com tráfego baixo e IP ID previsível) e 10.10.10.10 o alvo. A técnica é fascinante, mas frágil e demorada — na prática de engajamentos modernos, o SYN scan segue sendo a escolha padrão.
Detecção de versão e sistema operacional
Descobrir que a porta 80 está aberta é pouco: o pentester precisa saber que ali roda um Apache 2.4.58 ou um nginx 1.25. A detecção de versão (-sV) sonda o serviço com uma série de payloads (dados de teste enviados ao serviço para provocar uma resposta identificável) e cruza as respostas com uma base de milhares de assinaturas, retornando o nome do aplicativo, a versão e às vezes até detalhes como o sistema operacional do host:
nmap -sV -p 22,80,443 10.10.10.10A detecção de sistema operacional (-O) usa outra técnica: envia pacotes especialmente montados e compara o comportamento da pilha TCP/IP do alvo (tamanhos de janela, sequências, respostas a flags atípicas) com assinaturas conhecidas — um fingerprinting que deduz se é um Linux 6.1, um Windows Server 2022 ou um roteador:
sudo nmap -O 10.10.10.10
sudo nmap -A 10.10.10.10O modo agressivo -A junta -O, -sV, os scripts padrão -sC e um traceroute (ferramenta que mostra o caminho dos pacotes até o destino) numa passada só — o atalho mais usado para um reconhecimento completo e rápido, equivalente ao exemplo clássico nmap -v -A scanme.nmap.org da documentação oficial. A detecção de SO pode ser enganada por hosts que adulteram respostas, então trate o resultado como hipótese, não como certeza.
Scripts NSE: de enumeração a verificação de vulnerabilidades
O NSE (Nmap Scripting Engine — o motor de scripts do Nmap, escrito em Lua) transforma o scanner em uma plataforma de automação: são centenas de scripts prontos, organizados em categorias como default, discovery (descoberta e enumeração), vuln (verificação de vulnerabilidades conhecidas), brute (força bruta de credenciais), exploit (exploração), dos (negação de serviço), auth e malware. A opção -sC roda o conjunto padrão (rápido e seguro o bastante para o dia a dia), e --script escolhe scripts específicos ou categorias inteiras:
nmap -sC -sV 10.10.10.10
nmap --script vuln 10.10.10.10
nmap --script http-enum -p 80 10.10.10.10
nmap --script smb-enum-shares -p 445 10.10.10.10O primeiro comando é o reconhecimento padrão com scripts default. O segundo roda a categoria vuln, que testa o alvo contra vulnerabilidades conhecidas — como o EternalBlue (MS17-010) em SMB ou Shellshock em HTTP — e é a primeira triagem antes de partir para a exploração. O terceiro enumera diretórios e aplicações web comuns na porta 80, revelando painéis de administração e arquivos sensíveis; o quarto lista os compartilhamentos SMB (Server Message Block — o protocolo de compartilhamento de arquivos do Windows) de uma máquina Windows, mostrando pastas expostas sem autenticação. Uma ressalva importante da documentação oficial: scripts NSE não rodam em sandbox — scripts de terceiros podem danificar o sistema ou vazar informações, então só execute scripts de fontes confiáveis e audite antes.
Timing, desempenho e evasão
O Nmap tem seis perfis de temporização (-T0 a -T5): paranoid, sneaky, polite, normal (o padrão), aggressive e insane. O perfil controla o intervalo entre pacotes e o tempo de espera por respostas — -T0 envia um pacote por vez com longos atrasos (pensado para atravessar IDS antigos sem levantar alertas, à custa de horas de duração), enquanto -T4 acelera tudo e é o padrão de engajamentos, e -T5 prioriza velocidade máxima a risco de perder respostas:
sudo nmap -sS -T4 -p- 10.10.10.10
sudo nmap -sS -T2 --host-timeout 30m 10.10.10.10O segundo comando combina um ritmo lento com um limite de 30 minutos por host, útil para alvos com firewalls chatos que derrubam conexões. Para evasão, o Nmap oferece fragmentação de pacotes (-f, que quebra os pacotes em pedaços menores para atravessar filtros simples), decoys (-D, que forja endereços de origem aleatórios para a varredura parecer vir de vários IPs) e a escolha de porta de origem (-g, fazendo o scan "sair" pela porta 53 para enganar firewalls que só liberam DNS):
sudo nmap -sS -f -D RND:10 10.10.10.10
sudo nmap -sS -g 53 10.10.10.10
nmap -Pn -sV 10.10.10.10O -Pn pula a descoberta de hosts e assume todos os alvos ativos — essencial quando o alvo bloqueia ICMP e não responde a ping. Seja claro: essas técnicas desaceleram IDS ingênuos, mas não tornam a varredura invisível — sistemas de detecção modernos reconhecem fragmentação, decoys e scans de porta de origem, e o uso dessas opções fora de um teste autorizado tem implicações legais sérias.
Saída para outras ferramentas
Um engajamento profissional gera centenas de resultados que precisam virar relatório e alimentar as próximas etapas. O Nmap oferece quatro formatos principais, ativados juntos com -oA (todos os formatos ao mesmo tempo): normal (-oN, legível para humanos), XML (-oX, parseável por máquinas e ferramentas de automação), greppable (-oG, uma linha por host, ideal para grep e pipelines) e binário (-oB, para retomar scans com --resume):
nmap -sV -sC -oA pentest-alvo 10.10.10.10
nmap -sV -oX resultados.xml 10.10.10.10O primeiro comando salva três arquivos — pentest-alvo.nmap, pentest-alvo.xml e pentest-alvo.gnmap — com todo o reconhecimento do alvo. O XML é o formato que ferramentas como Metasploit (framework de exploração de vulnerabilidades) importam para correlacionar portas abertas com módulos de ataque, e o greppable permite extrair rapidamente só os hosts com portas abertas para a próxima fase:
grep -E "open" pentest-alvo.gnmapRegistrar os comandos e a saída desde o início é boa prática: o relatório final de um pentest precisa mostrar exatamente o que foi feito, quando e com que resultado — e o -oA garante que nada se perca.
Workflow completo: do escopo ao relatório
Para amarrar tudo, um engajamento típico contra um alvo autorizado — digamos, o laboratório interno 10.10.10.10, ou o scanme.nmap.org do próprio projeto Nmap, que libera varreduras explícitas — segue estas fases com o Nmap:
| Fase | Comando | Objetivo |
|---|---|---|
| Escopo e autorização | Contrato/ordem de serviço | Definir faixas permitidas, janela de teste e regras do engajamento |
| Descoberta de hosts | sudo nmap -sn 10.10.0.0/16 | Listar os hosts vivos da faixa autorizada |
| Scan amplo de portas | sudo nmap -sS -p- --min-rate 5000 10.10.10.10 | Encontrar todas as portas TCP abertas |
| Enumeração direcionada | nmap -sC -sV -p 22,80,443,445 10.10.10.10 | Identificar serviços, versões e aplicar scripts default |
| Verificação de vulnerabilidades | nmap --script vuln 10.10.10.10 | Triagem inicial de CVEs conhecidas |
| Documentação | nmap -sV -sC -oA relatorio 10.10.10.10 | Salvar resultados em todos os formatos |
O primeiro passo é sempre o escopo: sem autorização por escrito do proprietário, nenhum byte deve ser enviado — varredura sem autorização é crime. Em seguida vem a descoberta de hosts com -sn sobre a faixa inteira, para mapear o que existe. O terceiro passo é o scan SYN amplo de todas as portas, que revela a superfície de ataque. Na sequência, cada porta aberta é alvo da enumeração com -sC -sV, que diz o serviço, a versão e roda os scripts default — é aqui que versões antigas de Apache, OpenSSH ou SMB começam a gritar "explore-me". A quinta fase roda a categoria vuln para confirmar vulnerabilidades conhecidas e priorizar; a última documenta tudo com -oA para o relatório e para a próxima ferramenta da cadeia.
Antes de qualquer exploração, os resultados do Nmap se somam a outras fontes de reconhecimento: a coleta de e-mails e subdomínios com theHarvester (ferramenta de OSINT que agrega e-mails, subdomínios e hosts de fontes públicas), a visão externa de dispositivos expostos do Shodan (mecanismo de busca de dispositivos conectados à internet), e a validação manual de serviços. A exploração em si fica para frameworks como Metasploit e o Impacket — este último já coberto no nosso guia — que consomem o XML gerado pelo Nmap. E para força bruta de serviços descobertos, ferramentas como Hydra (ferramenta de ataque de força bruta a serviços de rede) entram em cena depois que o Nmap já apontou o que existe.
Como se defender dos riscos
Autorização é pré-requisito, não detalhe. O Nmap é uma ferramenta legítima e dual — o mesmo comando que um pentester usa com autorização é o que um invasor usa para mapear sua rede. Varreduras sem autorização prévia do proprietário podem configurar o crime de invasão de dispositivo informático previsto no art. 154-A do Código Penal, incluído pela Lei Carolina Dieckmann (a lei brasileira que tipifica a invasão de dispositivos informáticos). Na sua organização, todo teste deve ter escopo, janela e contrato definidos por escrito — e o time de defesa deve ser avisado para não tratar o próprio teste como incidente.
Varredura é detectável — assuma isso. SYN scan, ping sweeps e varreduras de faixas inteiras têm assinaturas conhecidas: rajadas de pacotes SYN para várias portas em sequência, pacotes com flags atípicas, fragmentação incomum e conexões que nunca completam o handshake. Sistemas de detecção de intrusão como Snort, Suricata e Zeek (plataformas de monitoramento que analisam o tráfego em tempo real e geram alertas) trazem regras prontas para esses padrões. Coloque a detecção na borda e no segmento crítico, e alerte sobre qualquer varredura vinda de fora do escopo.
Monitore logs de conexão e o tráfego de saída. Mesmo sem IDS, os logs de firewalls e servidores contam a história: uma rajada de conexões vindas de um único IP em portas sequenciais é a assinatura clássica de scan connect. Centralize esses logs num SIEM como o Wazuh (plataforma de segurança open source que coleta, correlaciona e alerta sobre eventos de endpoints e rede) e crie regras de correlação para varredura de portas, varreduras UDP em serviços de gerenciamento e acessos repetidos a portas fechadas.
Reduza a superfície que o scanner vai encontrar. O Nmap só revela o que está exposto: cada serviço desnecessário aberto na rede é um achado a mais no relatório do atacante. Feche portas não usadas no firewall, desabilite serviços legados (SMBv1 é o exemplo clássico), segmente a rede para que servidores críticos não respondam a varreduras de estações de trabalho, e mantenha tudo atualizado — a triagem --script vuln de um atacante só acha o que a sua gestão de patches deixou passar.
Evasão não é invisibilidade. Fragmentação, decoys e portas de origem forjadas enganam firewalls antigos e filtros simples, mas as plataformas de detecção modernas reconhecem esses padrões — inclusive correlacionando decoys pela resposta dos hosts falsos. Confie em defesa em profundidade (firewall + IDS/IPS + monitoramento de endpoints + SIEM), não em esperar que o tráfego suspeito seja sutil.
Scripts NSE de terceiros são um risco à parte. Como a própria documentação do Nmap alerta, os scripts não rodam em ambiente isolado: um script malicioso pode executar comandos na sua máquina, vazar o IP do alvo para terceiros ou derrubar serviços. Execute apenas scripts de fontes confiáveis (o conjunto oficial do projeto), audite scripts customizados antes de rodar e desconfie de "cheatsheets" que mandam colar scripts de repositórios desconhecidos.
Conclusão
Quase três décadas depois do lançamento, o Nmap continua sendo a primeira ferramenta que um pentester abre e a primeira que um defensor precisa conhecer: é o mapa do terreno em qualquer engajamento. Dominar os tipos de scan — do SYN scan padrão ao UDP lento, dos scans de flags exóticas ao idle scan cego —, saber quando usar detecção de versão e SO, explorar o poder dos scripts NSE e documentar tudo com os formatos de saída corretos é o que separa um reconhecimento profissional de um "rodar nmap e rezar". E, como toda ferramenta ofensiva, o Nmap exige o outro lado da moeda: autorização clara, detecção ativa na rede e a disciplina de tratar os resultados como um checklist de hardening — porque o mesmo scanner que revela vulnerabilidades para você é o que o atacante vai rodar minutos depois.
Fontes e leituras adicionais
- Nmap Project — Nmap: the Network Mapper (site oficial) — 04/09/2026
- Nmap Project — Guia de Referência do Nmap (página do manual em português) — 04/09/2026
- Gordon Lyon (Fyodor) — Nmap Network Scanning: The Official Nmap Project Guide — 2009
- Nmap Project — Port Scanning Techniques (capítulo do livro oficial) — 2009
- Nmap Project — NSE: Usage and Examples (capítulo do livro oficial) — 2009
- Fyodor — An Introduction to Nmap (Phrack #51, artigo original) — 01/09/1997
- Nmap Project — Nmap Change Log (notas da versão 7.95) — 23/04/2024