Scanning com Nmap: descobrindo portas e serviços
Guia prático de Nmap para mapear redes, descobrir portas abertas, detectar serviços e versões, usar o NSE e enumerar alvos durante um pentest com responsabilidade.

O Nmap (Network Mapper) é a ferramenta mais usada do mundo para descoberta de redes e auditoria de segurança. Com ele, você descobre quais máquinas estão vivas, quais portas estão abertas e quais serviços rodam por trás delas. Dominar o Nmap é praticamente um pré-requisito para qualquer pentester.
Neste guia, vamos do básico — o que é uma porta e um scan — até técnicas de detecção de versão, scripts NSE, evasão de firewall e otimização de tempo. O scanning é a continuação natural da fase de coleta descrita em Reconhecimento (recon): a fase mais importante do pentest e se encaixa na Metodologia de pentest: as fases de um teste de invasão.
O que o Nmap faz
O Nmap envia pacotes cuidadosamente construídos para os alvos e interpreta as respostas. A partir disso, ele consegue inferir:
A obra de referência do projeto descreve o Nmap como uma ferramenta de descoberta de rede flexível, capaz de escalar de um único host a redes inteiras (Lyon, 2009).
Como o Nmap "vê" a rede
O Nmap não tem visão mágica: ele deduz estados a partir do comportamento do protocolo TCP/IP. Quando você envia um SYN a uma porta e recebe um SYN/ACK, a porta está aberta; se recebe um RST, está fechada; se nada volta, provavelmente um firewall está descartando o pacote. Entender essa lógica é o que separa quem decora flags de quem interpreta resultados — e é o que permite distinguir um host realmente protegido de um falso negativo causado por timing agressivo demais.
Entendendo portas e estados
Cada serviço de rede escuta em uma porta TCP ou UDP. O Nmap classifica cada porta em um destes estados:
Entender esses estados é essencial: uma porta filtered indica filtragem, o que já é informação sobre a defesa do alvo. Um alvo que devolve closed para a maioria das portas e filtered para algumas específicas está, sem querer, denunciando onde estão suas regras de firewall.
Instalação e primeiro contato
O Nmap está disponível em praticamente todos os sistemas. Em distribuições baseadas em Debian/Ubuntu:
sudo apt update && sudo apt install nmap
nmap --versionO scan mais simples possível é apontar para um alvo sem nenhuma flag. Ele varre as 1000 portas TCP mais comuns:
nmap scanme.nmap.orgO domínio scanme.nmap.org é mantido pelo próprio projeto Nmap justamente para que você possa praticar de forma legal. Não abuse: poucos scans, sem sobrecarregar.
Descoberta de hosts
Antes de varrer portas, descubra quais hosts existem. Esse passo é chamado de ping scan e economiza tempo ao evitar varrer IPs mortos.
# Descobre hosts ativos na sub-rede, sem varrer portas
nmap -sn 192.168.1.0/24A flag -sn desativa a varredura de portas e faz apenas a descoberta. Em redes onde o ICMP é bloqueado, o Nmap usa outras sondas (TCP SYN para portas comuns, ARP em rede local).
Você também pode definir alvos de várias formas: um IP único, uma lista separada por vírgula, um intervalo (192.168.1.1-50), uma notação CIDR (/24) ou um arquivo com -iL alvos.txt. Em redes grandes, descobrir os hosts vivos primeiro e só depois varrer portas neles economiza horas.
Tipos de varredura de porta
O Nmap oferece vários métodos de varredura. Os mais importantes:
SYN scan (-sS)
O SYN scan é o padrão quando você roda o Nmap como root. Ele envia um pacote SYN e analisa a resposta sem completar o handshake TCP — por isso é chamado de "half-open". É rápido e relativamente discreto.
sudo nmap -sS alvo.exemplo.comTCP connect scan (-sT)
Quando você não tem privilégios de root, o Nmap completa o handshake TCP completo. É mais detectável e mais lento, mas funciona sem permissões especiais.
nmap -sT alvo.exemplo.comUDP scan (-sU)
Muitos serviços críticos (DNS, SNMP, DHCP) usam UDP. A varredura UDP é lenta e propensa a falsos positivos, mas não pode ser ignorada.
sudo nmap -sU --top-ports 20 alvo.exemplo.comScans especiais e evasivos
Para situações específicas, o Nmap oferece varreduras que exploram detalhes do protocolo. O FIN scan (-sF), Null scan (-sN) e Xmas scan (-sX) enviam pacotes com flags incomuns para tentar passar despercebidos por firewalls antigos e stateless. O ACK scan (-sA) não descobre portas abertas, mas mapeia regras de firewall — é ótimo para entender o que está filtrado:
# Mapeia regras de firewall sem identificar serviços
sudo nmap -sA alvo.exemplo.comEsses scans dependem de comportamentos da pilha TCP que nem todo sistema operacional segue à risca, então use-os com discernimento e confirme achados com um SYN scan.
Selecionando portas
Por padrão, o Nmap varre as 1000 portas mais comuns. Você pode controlar isso:
# Porta específica
nmap -p 443 alvo.exemplo.com
# Intervalo
nmap -p 1-1000 alvo.exemplo.com
# Todas as 65535 portas
nmap -p- alvo.exemplo.com
# Portas mais comuns
nmap --top-ports 100 alvo.exemplo.com
# Combinando TCP e UDP por número
sudo nmap -sS -sU -p T:80,443,U:53,161 alvo.exemplo.comVarrer todas as portas (-p-) é mais demorado, mas encontra serviços escondidos em portas altas e incomuns — exatamente onde administradores às vezes "escondem" painéis. Uma estratégia comum em alvos grandes é fazer primeiro um scan rápido das portas comuns para ter resultados imediatos e, em paralelo, um -p- em segundo plano para não deixar nada passar.
Detecção de serviço e versão
Saber que a porta 8080 está aberta diz pouco. Saber que ela roda um servidor de aplicação específico, em determinada versão, é o que abre caminho para a exploração. A flag -sV faz essa detecção:
nmap -sV -p- alvo.exemplo.comA detecção de versão envia sondas e compara os banners de resposta com uma base de assinaturas. É um dos recursos mais valiosos do Nmap para a enumeração (Lyon, 2009). O resultado típico mostra serviço, produto e versão:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1
80/tcp open http nginx 1.18.0
3306/tcp open mysql MySQL 5.7.38Esses dados alimentam diretamente a análise de vulnerabilidades, base do guia Exploração de vulnerabilidades: do CVE ao exploit.
Você pode ajustar a intensidade da detecção com --version-intensity (de 0 a 9). Intensidade alta envia mais sondas e identifica serviços obscuros, mas é mais lenta e ruidosa. Quando o Nmap não consegue identificar um serviço, ele às vezes imprime o "fingerprint" bruto e sugere que você o envie ao projeto — útil para serviços muito específicos.
Por que a detecção de versão muda o jogo
Considere a diferença prática. Um scan sem -sV diz apenas "porta 80 aberta, serviço http". Não há o que fazer com isso a não ser abrir o navegador. Com -sV, você descobre "nginx 1.18.0" — e agora pode consultar imediatamente se aquela versão tem CVEs conhecidos, qual módulo costuma vir habilitado e que comportamento esperar. A detecção de versão é o que transforma uma lista de portas em um conjunto de alvos com contexto. Por isso, em qualquer scan que vá além de um simples levantamento, -sV é praticamente obrigatório.
Há um custo: a detecção de versão envia sondas adicionais e demora mais. Em redes muito grandes, uma estratégia eficiente é primeiro descobrir rapidamente quais portas estão abertas e só então rodar -sV direcionado àquelas portas específicas, em vez de pedir detecção em todas as 65535.
Detecção de sistema operacional e scripts
A flag -O tenta identificar o sistema operacional pela "impressão digital" da pilha TCP/IP. Já o Nmap Scripting Engine (NSE) executa scripts para tarefas avançadas: detecção de vulnerabilidades conhecidas, enumeração de SMB, coleta de banners e muito mais.
# Detecção de SO e scripts padrão, com versão
sudo nmap -A alvo.exemplo.com
# Categoria específica de scripts
nmap --script vuln alvo.exemplo.comA flag -A ativa de uma vez: detecção de versão, detecção de SO, scripts padrão e traceroute. É conveniente para reconhecimento, mas barulhenta.
Mergulhando no NSE
O Nmap Scripting Engine é o que transforma o Nmap de um scanner de portas em uma plataforma de enumeração e exploração leve. Os scripts vêm organizados em categorias:
Você pode chamar scripts individuais, categorias inteiras ou usar curingas:
# Enumera compartilhamentos e usuários SMB
nmap --script smb-enum-shares,smb-enum-users -p 445 alvo.exemplo.com
# Todos os scripts http
nmap --script "http-*" -p 80,443 alvo.exemplo.com
# Passa argumentos a um script
nmap --script http-title --script-args http.useragent="Mozilla/5.0" alvo.exemplo.comCuidado com brute e vuln: scripts dessas categorias podem disparar bloqueios de conta, gerar muito tráfego ou até derrubar serviços frágeis. Em ambiente de produção do cliente, use-os com cautela e somente quando o escopo permitir.
Scripts NSE mais úteis no dia a dia
Alguns scripts aparecem repetidamente em engajamentos reais e vale conhecê-los de cor:
# Avalia a configuração TLS de um serviço HTTPS
nmap --script ssl-cert,ssl-enum-ciphers -p 443 alvo.exemplo.comO resultado de ssl-cert frequentemente revela nomes de host adicionais no campo Subject Alternative Name, alimentando de volta a fase de reconhecimento. Esse vai-e-vem entre scanning e recon é constante em testes reais.
Controlando velocidade e ruído
Varreduras agressivas são detectadas por IDS/IPS e podem derrubar serviços frágeis. O Nmap oferece timing templates de -T0 (paranoico, lentíssimo) a -T5 (insano, rapidíssimo):
# Equilíbrio comum em pentest
nmap -sS -sV -T3 alvo.exemplo.com
# Discreto, para evitar disparar alarmes
nmap -sS -T1 alvo.exemplo.comEm testes furtivos, prefira velocidades baixas. Em laboratórios e redes controladas, -T4 agiliza o trabalho. Lembre-se: cada pacote pode ser registrado, então ajuste o ruído ao objetivo do teste.
Além dos templates, você pode controlar parâmetros finos: --min-rate e --max-rate definem pacotes por segundo; --max-retries limita reenvios; --host-timeout abandona hosts lentos. Em redes instáveis, reduzir a taxa evita falsos filtered causados por perda de pacotes.
Evasão de firewall e IDS
Quando há filtragem agressiva, algumas técnicas ajudam a obter resultados:
# Combina fragmentação e porta de origem falsa
sudo nmap -sS -f --source-port 53 alvo.exemplo.comEssas técnicas raramente vencem defesas modernas sozinhas, mas ajudam a entender o comportamento do filtro e, às vezes, a contornar configurações descuidadas.
Equilibrando furtividade e completude
Existe uma tensão constante no scanning: quanto mais completo e rápido o scan, mais ruidoso e detectável ele é. Não há resposta única; o ajuste depende do objetivo do engajamento. Em um teste de red team, onde evitar a detecção é parte do exercício, você usa -T1 ou -T2, evita -A, fragmenta pacotes e aceita que o scan levará horas. Em uma auditoria autorizada de configuração, onde a empresa sabe que você está testando, -T4 com -A entrega resultados ricos em minutos.
A pergunta-chave a se fazer antes de cada scan é: "o defensor deveria me ver agora?". Se a resposta for não, reduza o ruído mesmo ao custo da velocidade. Se for indiferente, otimize para completude. Essa consciência situacional é o que separa rodar o Nmap de conduzir um scan.
Salvando resultados
Documentar é parte do trabalho. O Nmap exporta em vários formatos:
# Salva em todos os formatos (normal, XML e grepável)
nmap -sV -oA resultados/scan_alvo alvo.exemplo.comO formato XML (-oX) é especialmente útil porque pode ser importado por outras ferramentas e proxies, como o Burp Suite: o canivete suíço do pentester web, integrando a varredura ao teste de aplicações web. O formato grepável (-oG) facilita extrair rapidamente, por exemplo, todos os hosts com a porta 22 aberta:
grep "22/open" resultados/scan_alvo.gnmap | cut -d' ' -f2Erros comuns ao usar o Nmap
Perguntas frequentes
O Nmap é detectável? Sim. Qualquer scan ativo deixa rastros nos logs e pode disparar alertas de IDS/IPS. As técnicas de timing e evasão reduzem, mas não eliminam, a detecção.
Qual a diferença entre -sS e -sT? O -sS (SYN scan) não completa o handshake TCP e exige privilégios de root; é mais rápido e discreto. O -sT (connect scan) completa a conexão, funciona sem root, mas é mais lento e mais visível nos logs.
Posso varrer qualquer site da internet? Não. Varrer sistemas sem autorização é ilegal em muitos países. Use apenas em alvos próprios, autorizados por escrito ou em ambientes de treino como scanme.nmap.org.
O Nmap explora vulnerabilidades? Por si só, não — ele as descobre e enumera. Alguns scripts NSE da categoria vuln chegam a confirmar falhas, mas a exploração efetiva costuma ser feita por outras ferramentas.
Um fluxo de trabalho completo, do começo ao fim
Na prática, raramente você roda um único comando. Um fluxo profissional costuma seguir uma escada de scans, cada um refinando o anterior:
# Passo 1 e 2 encadeados: descobre vivos e varre portas comuns
sudo nmap -sn 192.168.1.0/24 -oG vivos.gnmap
grep "Up" vivos.gnmap | cut -d' ' -f2 > ips.txt
sudo nmap -sS --top-ports 1000 -iL ips.txt -oA scan-rapidoEssa abordagem em camadas equilibra velocidade e profundidade: você não fica horas esperando um -p- em centenas de hosts mortos, mas também não deixa portas altas escaparem nos alvos que importam.
Interpretando os resultados como um analista
A saída do Nmap é só o começo. O valor está em ler entre as linhas. Uma porta 3389 (RDP) aberta na internet pública é um alerta de segurança imediato. Um conjunto de portas filtered agrupadas sugere um firewall com regras específicas. Versões antigas de serviços (OpenSSH 7.2, Apache 2.2) apontam para sistemas sem manutenção, candidatos prováveis a CVEs conhecidos. Treine o olhar para transformar a tabela de portas em hipóteses de ataque priorizadas.
Usando o Nmap com responsabilidade
Varrer sistemas sem autorização é ilegal em muitos países e antiético em todos. Use o Nmap apenas:
A potência do Nmap exige maturidade: a mesma varredura que mapeia uma rede para defendê-la pode ser usada para atacá-la.
Conclusão
O Nmap transforma uma rede opaca em um mapa detalhado de hosts, portas, serviços e versões. Comece com descoberta de hosts, escolha o tipo de varredura conforme seus privilégios e objetivos, ative a detecção de versão para enriquecer os achados, explore o NSE para enumerar a fundo e ajuste o timing ao nível de discrição necessário. Com a saída salva e organizada nos formatos certos, você terá a base sólida que as fases seguintes do pentest exigem.