Se existe uma única ferramenta que todo profissional de segurança do planeta conhece e usa, é o Nmap (Network Mapper). Criado por Gordon Lyon há mais de duas décadas, ele é o padrão absoluto para varredura de redes — tão icônico que já apareceu em filmes. O Nmap implementa, de forma robusta e refinada, exatamente essa teoria: ele envia os pacotes, interpreta as respostas e te entrega o inventário do alvo. Nesta aula você aprende o Nmap essencial, sempre contra as máquinas do seu laboratório (a Metasploitable da aula Alvos vulneráveis: conhecendo o campo de batalha é o alvo ideal para praticar tudo isto). Rode cada comando; a fluência vem do uso.

O primeiro comando

O uso mais básico é apontar o Nmap para um alvo:

nmap 192.168.1.10              # scan padrão das 1000 portas mais comuns
nmap 192.168.1.0/24           # scan de toda uma faixa de rede (host discovery + portas)
nmap exemplo.com               # aceita nomes, resolvendo o DNS antes

Sem opções, o Nmap já faz muito: descobre se o host está vivo e escaneia as 1000 portas TCP mais comuns, reportando quais estão abertas, fechadas ou filtradas. Só isso já te dá o esqueleto do alvo. Mas o poder está nas opções, que ajustam o que e como escanear.

Descobrir quem está vivo antes de bater na porta

Comece pelo host discovery — descobrir o que está vivo numa faixa antes de escanear portas. O -sn faz só isso, um "ping sweep" (a versão profissional daquele seu script Bash da aula Bash scripting: automatizando o trabalho sujo):

nmap -sn 192.168.1.0/24        # apenas descobre hosts vivos, sem escanear portas

Isso te dá rapidamente o mapa de máquinas ativas na rede, para então focar o scan de portas só no que existe. Para a seleção de portas, você controla o alcance:

nmap -p 80,443 192.168.1.10           # apenas as portas 80 e 443
nmap -p 1-1000 192.168.1.10           # o intervalo 1 a 1000
nmap -p- 192.168.1.10                  # TODAS as 65535 portas (completo, mais lento)
nmap -F 192.168.1.10                   # "fast": só as 100 portas mais comuns

O -p- é importante: o scan padrão só vê as 1000 portas mais comuns, mas serviços interessantes às vezes se escondem em portas altas e incomuns justamente para passar despercebidos. Um scan completo (-p-) demora mais, mas não deixa esse ponto cego — e encontrar um serviço numa porta atípica é frequentemente o achado que abre o alvo.

De lista de portas a inteligência acionável

Agora as duas opções que transformam uma lista de portas em inteligência acionável, e que você usará quase sempre: detecção de serviço/versão (-sV) e detecção de sistema operacional (-O):

nmap -sV 192.168.1.10          # identifica o serviço E a versão em cada porta aberta
nmap -O 192.168.1.10           # tenta identificar o sistema operacional
nmap -sV -O 192.168.1.10       # ambos

O -sV é decisivo. Sem ele, você sabe que a porta 21 está aberta; com ele, você descobre que ali roda "vsftpd 2.3.4" — e essa versão específica tem uma vulnerabilidade notória (aliás, presente na Metasploitable). É a ponte direta entre scanning e exploração: a versão é o que você cruza com bases de vulnerabilidades (aula CVE, CVSS e CWE: a linguagem das vulnerabilidades) para saber se há um exploit conhecido. O -sV faz, de forma sistemática, o banner grabbing que você programou manualmente na aula Python para pentest I: construindo seu próprio scanner de portas.

O atalho -A e o que ele esconde

Há uma opção "atalho" muito usada, o -A, que agrega detecção de versão, de SO, scripts padrão e traceroute num só comando — conveniente, porém barulhento, então use com consciência do rastro. E controle de velocidade com os templates de timing (-T0 a -T5): -T4 é o equilíbrio comum para redes rápidas, -T5 é agressivo e ruidoso, e -T0/-T1 são lentíssimos e discretos, para quando evadir detecção importa. E sempre salve a saída — evidência para o relatório:

nmap -sV -A 192.168.1.10       # scan abrangente (versão, SO, scripts, traceroute)
nmap -sV -oN scan.txt 192.168.1.10        # salva a saída em texto
nmap -sV -oA resultado 192.168.1.10       # salva em todos os formatos (inclui XML)

O -oA salvar em múltiplos formatos não é detalhe: o formato XML pode ser importado por outras ferramentas (inclusive o Metasploit do Bloco VIII), encadeando seu fluxo de trabalho.

Rode agora contra a sua Metasploitable

Um exercício que consolida tudo e que eu recomendo fazer agora: rode nmap -sV -p- <sua Metasploitable>, e leia a saída com atenção — cada linha é uma porta aberta, um serviço e uma versão. Essa lista é o seu inventário de superfície de ataque, e cada entrada é uma hipótese a investigar na enumeração. Do lado defensivo, entender o Nmap é entender o que o atacante vê da sua rede: administradores usam o próprio Nmap para auditar suas superfícies (o que está exposto que não deveria?), e o Blue Team aprende a reconhecer a assinatura de um scan nos logs — rajadas de conexões a muitas portas de uma mesma origem — para detectar reconhecimento ativo em curso.

Fontes e leituras recomendadas

  • Nmap Network Scanning — Fyodor (o livro oficial, com referência completa de opções)
  • nmap.org — documentação, cheat sheets e a página de referência de comandos
  • TryHackMe e HackTheBox — salas dedicadas ao Nmap para prática guiada
  • Metasploitable — o alvo ideal para experimentar todas as opções desta aula

Exercícios

  1. O que o Nmap faz por padrão quando você o executa sem opções contra um alvo?

    ✓ Resposta:

    Ele verifica se o host está vivo e escaneia as 1000 portas TCP mais comuns, reportando quais estão abertas, fechadas ou filtradas — entregando o esqueleto do alvo.

  2. Qual a diferença entre -sn, -F, -p- e -p 80,443, e quando usar cada um?

    ✓ Resposta:

    -sn faz apenas host discovery (sem escanear portas); -F escaneia só as 100 portas mais comuns (rápido); -p- escaneia todas as 65535 portas (completo, lento); -p 80,443 escaneia apenas portas específicas. Usa-se -sn para mapear hosts vivos, -F para uma visão rápida, -p- para não ter pontos cegos, e -p quando se quer mirar portas conhecidas.

  3. Por que a opção -sV é considerada a ponte entre scanning e exploração? A que técnica manual da aula Python para pentest I: construindo seu próprio scanner de portas ela corresponde?

    ✓ Resposta:

    Porque -sV identifica a versão exata do serviço em cada porta, e a versão é o que se cruza com bases de vulnerabilidades para localizar exploits conhecidos. Corresponde ao banner grabbing programado manualmente na aula Python para pentest I: construindo seu próprio scanner de portas.

  4. Explique o que os templates de timing (-T0 a -T5) controlam e como eles se relacionam com a tensão discrição vs. velocidade.

    ✓ Resposta:

    Controlam a velocidade/agressividade do scan. Timings altos (-T4, -T5) são rápidos, mas ruidosos e mais detectáveis; timings baixos (-T0, -T1) são lentos, porém discretos. Refletem diretamente o trade-off entre ser minucioso/rápido e ser invisível.

  5. Por que salvar a saída com -oA (múltiplos formatos) é útil além de servir como evidência?

    ✓ Resposta:

    Porque o formato XML gerado pode ser importado por outras ferramentas (como o Metasploit), encadeando o fluxo de trabalho e permitindo reaproveitar os resultados do scan nas fases seguintes.