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

Scanning com Nmap: descobrindo portas e serviços

Por Schematize Blog ·

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

        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:

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

            # 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

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

                  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

                    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