Pular para o conteúdo
Categoria: Pentest & Hacking Ético14 min de leitura

Scanning com Nmap: descobrindo portas e serviços

Por Lucas Andrade ·

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.

Scanning com Nmap: descobrindo portas e serviços

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:

  • Hosts ativos em uma rede (host discovery).
  • Portas abertas, fechadas ou filtradas.
  • Serviços e versões atendendo cada porta.
  • Sistema operacional provável do alvo.
  • Informações adicionais via scripts NSE (Nmap Scripting Engine).

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:

  • open: há um serviço aceitando conexões.
  • closed: a porta responde, mas nenhum serviço escuta.
  • filtered: um firewall bloqueia a sonda; o Nmap não sabe se está aberta.
  • unfiltered: acessível, mas o estado não pôde ser determinado.
  • open|filtered / closed|filtered: ambiguidade comum em UDP.

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 --version

O scan mais simples possível é apontar para um alvo sem nenhuma flag. Ele varre as 1000 portas TCP mais comuns:

nmap scanme.nmap.org

O 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/24

A 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.com

TCP 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.com

UDP 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.com

Scans 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.com

Esses 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.com

Varrer 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.com

A 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.38

Esses 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.com

A 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:

  • default (ou -sC): scripts seguros, executados com -A.
  • safe: não alteram o alvo nem o derrubam.
  • vuln: detectam vulnerabilidades conhecidas.
  • auth: lidam com autenticação e credenciais.
  • brute: tentam força bruta de credenciais.
  • discovery: aprofundam a enumeração de serviços.

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.com

Cuidado 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:

  • http-title e http-headers: identificam rapidamente o que cada serviço web é, sem abrir o navegador.
  • http-enum: enumera diretórios e arquivos comuns em servidores web.
  • ssl-cert e ssl-enum-ciphers: extraem informações do certificado (nomes de host adicionais!) e avaliam a força das cifras TLS.
  • smb-os-discovery e smb-enum-shares: enumeram sistema operacional e compartilhamentos via SMB.
  • dns-brute: força bruta de subdomínios diretamente pelo Nmap.
  • banner: captura banners de serviços de texto que não falam HTTP.
# Avalia a configuração TLS de um serviço HTTPS
nmap --script ssl-cert,ssl-enum-ciphers -p 443 alvo.exemplo.com

O 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.com

Em 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:

  • Fragmentação (-f): quebra os pacotes em fragmentos menores para confundir inspeções simples.
  • Porta de origem falsa (--source-port 53): alguns firewalls confiam em tráfego que parece vir do DNS.
  • Decoys (-D): mistura seu IP a IPs falsos para dificultar a atribuição.
  • MTU customizado (--mtu): ajusta o tamanho dos fragmentos.
# Combina fragmentação e porta de origem falsa
sudo nmap -sS -f --source-port 53 alvo.exemplo.com

Essas 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.com

O 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' ' -f2

Erros comuns ao usar o Nmap

  • Esquecer o sudo: sem root, o Nmap cai para -sT, que é mais lento e mais detectável.
  • Confiar no scan padrão: as 1000 portas comuns não cobrem tudo; serviços escondidos exigem -p-.
  • Ignorar UDP: muitos achados críticos (SNMP, DNS, serviços de banco) só aparecem em UDP.
  • Usar -T5 em produção: a velocidade insana derruba serviços e gera falsos negativos por timeout.
  • Não combinar com detecção de versão: uma porta aberta sem -sV rende pouca inteligência acionável.

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:

  1. Descoberta de hosts: nmap -sn na faixa para saber o que está vivo. Salve a lista de IPs ativos.
  2. Scan rápido de portas comuns: nmap -sS --top-ports 1000 nos hosts vivos, para ter resultados imediatos e priorizar alvos.
  3. Scan completo em segundo plano: nmap -sS -p- nos alvos prioritários, porque serviços interessantes vivem em portas altas.
  4. Detecção de versão e SO nas portas que abriram: nmap -sV -O -p .
  5. Enumeração com NSE dirigida a cada serviço encontrado.
  6. Exportação em -oA para alimentar o relatório e outras ferramentas.
# 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-rapido

Essa 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:

  • Em redes e hosts que você possui.
  • Em alvos com autorização escrita e escopo definido.
  • Em ambientes de treino, como laboratórios de O que é um CTF? Aprenda hacking jogando.

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.

Referências

  • Gordon Fyodor Lyon (2009). Nmap Network Scanning: The Official Nmap Project Guide. Insecure.Com LLC.
  • PTES Team (2014). Penetration Testing Execution Standard. PTES.
  • OWASP Foundation (2020). OWASP Web Security Testing Guide v4.2. OWASP.

Leituras relacionadas

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly