Escaneamento de Portas com Masscan

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a utilizar o Masscan, um scanner de portas TCP de alto desempenho, para realizar o reconhecimento de rede de forma eficiente. Você terá uma experiência prática instalando o Masscan a partir de seu código-fonte, configurando parâmetros de varredura, executando escaneamentos em intervalos de redes privadas e analisando os resultados obtidos.

Ao final deste laboratório, você estará apto a definir alvos, executar varreduras de alta velocidade, interpretar a saída para identificar portas abertas e exportar suas descobertas para formatos comuns, facilitando a elaboração de relatórios e análises posteriores.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Ele recebeu uma taxa de avaliação positiva de 98% dos alunos.

Instalar o Masscan a partir do Código-Fonte

Nesta primeira etapa, você irá compilar e instalar o Masscan. O Masscan é um scanner de portas incrivelmente rápido, capaz de varrer toda a internet em questão de minutos. Vamos instalá-lo a partir do código-fonte para garantir que estamos utilizando a versão mais recente. As ferramentas de compilação e bibliotecas necessárias já foram pré-instaladas em seu ambiente.

Primeiro, certifique-se de que você está no diretório ~/project, que é o espaço de trabalho designado para este laboratório.

cd ~/project

Em seguida, baixe o código-fonte do Masscan de seu repositório oficial no GitHub usando o comando git.

git clone https://github.com/robertdavidgraham/masscan --depth 1

Este comando cria um novo diretório chamado masscan contendo o código-fonte. Navegue para dentro deste diretório.

cd masscan

Agora, compile o código-fonte usando o comando make. Este comando lê o arquivo Makefile no diretório e constrói o binário executável.

make

Após o término da compilação, você encontrará o executável masscan dentro do diretório bin. Você pode verificar se a compilação foi bem-sucedida checando a versão.

./bin/masscan --version

Você deverá ver uma saída semelhante a esta:

Masscan version 1.3.9-integration ( https://github.com/robertdavidgraham/masscan )
Compiled on: Aug 29 2025 11:15:09
Compiler: gcc 11.4.0
OS: Linux
CPU: x86 (64 bits)
GIT version: unknown

Finalmente, para tornar o comando masscan disponível em todo o sistema, instale-o em um local padrão como /usr/local/bin. O Makefile fornecido inclui um alvo install que cuida disso para você.

sudo make install

Este comando copia o binário masscan para /usr/local/bin/, que está no PATH do seu sistema. Agora você pode executar o Masscan a partir de qualquer diretório.

Verifique a instalação:

masscan --version

Se você visualizar o número da versão, o Masscan foi instalado corretamente.

Definir um Intervalo de Alvos

Antes de iniciar uma varredura, você deve definir quais endereços IP deseja atingir. Para esta demonstração de laboratório, focaremos em um pequeno subconjunto de intervalos de endereços IP privados para garantir uma execução rápida. Escanear esses intervalos internos limitados é uma prática segura e eficiente para fins de aprendizado.

Criaremos um arquivo para listar nossos intervalos de alvos. Primeiro, certifique-se de estar no diretório principal do projeto.

cd ~/project

Agora, use o editor de texto nano para criar um arquivo chamado targets.txt.

nano targets.txt

Dentro do editor nano, adicione os seguintes pequenos intervalos de IP para fins de demonstração, cada um em uma nova linha. Esses intervalos são escritos na notação CIDR (Classless Inter-Domain Routing), que é uma forma compacta de representar um bloco de endereços IP.

192.168.1.0/24
172.17.0.0/24
10.0.0.0/24

Para salvar o arquivo no nano, pressione Ctrl+O e, em seguida, Enter para confirmar o nome do arquivo. Para sair do nano, pressione Ctrl+X.

Após salvar o arquivo, você pode verificar seu conteúdo usando o comando cat.

cat targets.txt

A saída deve exibir os três pequenos intervalos CIDR que você acabou de inserir.

192.168.1.0/24
172.17.0.0/24
10.0.0.0/24

Este arquivo servirá agora como entrada para o Masscan, indicando quais redes devem ser varridas na próxima etapa. Esses intervalos menores (cada um contendo apenas 256 endereços IP) farão com que a varredura seja concluída muito mais rápido, geralmente em menos de um minuto.

Executar um Escaneamento de Portas em Alta Velocidade

Com o Masscan instalado e seus alvos definidos, você está pronto para realizar uma varredura de portas. Nesta etapa, você executará um escaneamento de demonstração em portas comuns usando os intervalos de IP reduzidos que definimos, garantindo que o processo seja rápido para fins didáticos.

Certifique-se de estar no diretório ~/project onde o arquivo targets.txt está localizado.

cd ~/project

Agora, execute o seguinte comando masscan. Este comando requer sudo porque o Masscan utiliza sockets brutos (raw sockets) para enviar pacotes, o que exige privilégios elevados.

sudo masscan -p22,80,443,8080 -iL targets.txt --rate 1000 -oG scan_results.gnmap

Vamos detalhar as opções do comando:

  • -p22,80,443,8080: Especifica as portas comuns a serem varridas (SSH, HTTP, HTTPS e HTTP alternativo). Essa abordagem focada garante uma conclusão mais rápida.
  • -iL targets.txt: Instrui o Masscan a ler os intervalos de IP de destino a partir do arquivo targets.txt.
  • --rate 1000: Define a taxa de transmissão de pacotes para 1000 pacotes por segundo. Esta é uma taxa segura para um ambiente de laboratório.
  • -oG scan_results.gnmap: Salva a saída no formato "grepable" (fácil de filtrar) em um arquivo chamado scan_results.gnmap. Este formato é simples de processar com ferramentas de linha de comando.

Enquanto a varredura estiver em execução, o Masscan exibirá seu progresso. Com nossos intervalos de alvos pequenos, a varredura deve terminar em menos de um minuto.

Starting masscan 1.3.9-integration (http://bit.ly/14GZzcT) at 2025-08-29 03:20:16 GMT
Initiating SYN Stealth Scan
Scanning 768 hosts [4 ports/host]

Assim que a varredura for concluída, um novo arquivo chamado scan_results.gnmap estará em seu diretório. Você pode visualizar seu conteúdo com o comando cat.

cat scan_results.gnmap

A saída listará todos os hosts encontrados com portas abertas. Como estamos escaneando intervalos privados pequenos dentro de um ambiente de contêiner, você pode encontrar algumas portas abertas na rede bridge do Docker. Quaisquer portas abertas descobertas aparecerão em um formato semelhante a este:

## Masscan 1.3.9-integration scan initiated Fri Aug 29 03:20:16 2025
## Ports scanned: TCP(4;22-22,80-80,443-443,8080-8080) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Timestamp: 1756437619   Host: 172.17.0.1 ()     Ports: 22/open/tcp//ssh//
## Masscan done at Fri Aug 29 03:20:31 2025

Os resultados mostram que varremos 768 hosts em 4 portas específicas (22, 80, 443, 8080) e concluímos a varredura em cerca de 15 segundos. Neste exemplo, o Masscan encontrou uma porta aberta - SSH (porta 22) no gateway da bridge do Docker em 172.17.0.1. Isso demonstra a capacidade do Masscan de descobrir rapidamente serviços ativos em intervalos de rede.

Pontos-chave sobre o formato de saída:

  • O timestamp mostra quando cada descoberta foi feita.
  • O formato Host: IP () Ports: porta/status/protocolo//serviço// fornece uma identificação clara do serviço.
  • O Masscan encontrou o serviço SSH rodando na bridge do Docker, o que é um achado comum em ambientes conteinerizados.

Revisar Portas Abertas

Após executar uma varredura, o próximo passo é analisar os resultados para identificar as portas abertas. O arquivo scan_results.gnmap contém todas as informações, mas pode ser processado com outras ferramentas para extrair os dados mais relevantes.

Primeiro, certifique-se de estar no diretório ~/project.

cd ~/project

O formato .gnmap foi projetado para ser facilmente processado por scripts. Para encontrar rapidamente todas as linhas correspondentes a portas abertas, você pode usar o comando grep.

grep "open" scan_results.gnmap

Este comando filtra o arquivo e exibe apenas as linhas que contêm a palavra "open". A saída será algo parecido com isto, listando cada host e suas respectivas portas abertas.

Timestamp: 1756437619   Host: 172.17.0.1 ()     Ports: 22/open/tcp//ssh//

Para obter um resumo rápido de quais portas são mais comumente encontradas abertas nas redes varridas, você pode criar um pipeline de comandos. O comando a seguir extrai apenas os números das portas, ordena-os e conta as ocorrências únicas.

grep -oP '\d+/open' scan_results.gnmap | sort | uniq -c

Vamos detalhar este comando poderoso:

  • grep -oP '\d+/open': Extrai apenas as partes correspondentes (-o) das linhas que se encaixam na expressão regular compatível com Perl (-P), que procura por dígitos seguidos de /open.
  • sort: Ordena a lista de portas abertas alfabeticamente, agrupando portas idênticas.
  • uniq -c: Agrupa linhas idênticas adjacentes e adiciona um contador (-c) de quantas vezes cada linha ocorreu.

Um exemplo de saída pode ser assim, indicando que um host possui a porta 22 (SSH) aberta.

      1 22/open

Esta técnica é muito útil para obter uma visão geral de alto nível dos serviços expostos em uma rede. Neste caso, podemos ver que o SSH é o único serviço descoberto em nossa varredura, o que é típico para redes bridge do Docker onde o gateway fornece acesso SSH.

Exportar Resultados da Varredura

Para fins de relatório ou processamento posterior, muitas vezes é necessário exportar os resultados da varredura para um formato mais estruturado. Nesta etapa, você converterá seus resultados em um arquivo CSV (Valores Separados por Vírgula), que pode ser facilmente importado para planilhas.

Certifique-se de estar no diretório ~/project.

cd ~/project

Usaremos uma combinação de grep e sed para analisar o arquivo .gnmap e criar um arquivo CSV limpo. O sed é um poderoso editor de fluxo que pode extrair e reformatar dados usando expressões regulares.

Execute o seguinte comando para criar o arquivo scan_results.csv.

grep "open" scan_results.gnmap | sed 's/.*Host: \([^ ]*\) .*Ports: \([0-9]*\)\/open\/\([^/]*\).*/\1,\2,\3/' > scan_results.csv

Veja como este comando funciona:

  • grep "open" scan_results.gnmap: Primeiro, filtra as linhas que contêm portas abertas.
  • sed 's/.*Host: \([^ ]*\) .*Ports: \([0-9]*\)\/open\/\([^/]*\).*/\1,\2,\3/': Utiliza uma expressão regular para extrair o endereço IP, o número da porta e o protocolo do formato de saída do Masscan e os reformata como CSV.
  • > scan_results.csv: Redireciona a saída final para um novo arquivo chamado scan_results.csv.

Agora você pode visualizar o arquivo CSV recém-criado.

cat scan_results.csv

A saída será uma lista limpa, separada por vírgulas, de hosts e suas portas abertas.

172.17.0.1,22,tcp

Este formato estruturado é ideal para compartilhar com membros da equipe, importar em bancos de dados ou usar como entrada para outras ferramentas de segurança. O formato CSV mostra o endereço IP, o número da porta e o protocolo de forma legível e organizada.

Resumo

Neste laboratório, você aprendeu com sucesso os fundamentos do uso do Masscan para escaneamento de rede em alta velocidade. Você praticou todo o fluxo de trabalho, desde a instalação da ferramenta a partir do código-fonte até a análise e exportação dos resultados.

Você adquiriu experiência prática em:

  • Compilar e instalar software a partir do código-fonte no Linux.
  • Definir alvos de varredura usando a notação CIDR.
  • Executar escaneamentos de portas com parâmetros específicos de portas, taxa de pacotes e formato de saída.
  • Analisar resultados de varredura usando ferramentas de linha de comando como grep, sort e uniq.
  • Exportar dados para um formato CSV estruturado para relatórios.

Essas habilidades fornecem uma base sólida para realizar o reconhecimento de rede de maneira rápida, eficiente e responsável.