Aprenda a Varredura de Portas de Rede com Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá os fundamentos da varredura de portas de rede usando o Nmap, uma poderosa ferramenta de varredura de rede de código aberto, favorecida por profissionais de segurança cibernética. A varredura de portas (port scanning) é uma técnica crucial para administradores de rede e analistas de segurança para descobrir portas e serviços abertos em um sistema alvo.

Você aprenderá a realizar uma varredura TCP Connect básica, um método de varredura comum e confiável. Essa abordagem estabelece uma conexão TCP completa com a porta alvo para verificar seu status. Ao final deste laboratório, você será capaz de identificar serviços abertos em uma rede, um primeiro passo fundamental na avaliação de segurança de rede e no fortalecimento do sistema (system hardening).

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar 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 93%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

Entendendo Portas e Serviços de Rede

Antes de começarmos a aprender sobre varredura (scanning), é crucial entender o que são portas de rede e por que elas são significativas no campo da segurança cibernética. As portas de rede desempenham um papel vital ao permitir que diferentes serviços se comuniquem através de uma rede. Elas são como portas pelas quais os dados podem entrar e sair de um computador.

O que são Portas de Rede?

Portas de rede são pontos finais virtuais para comunicação em uma rede de computadores. Pense nelas como endereços específicos dentro de um computador onde diferentes serviços podem receber e enviar dados. Cada porta é identificada por um número que varia de 0 a 65535. Diferentes serviços normalmente usam portas específicas. Por exemplo, servidores web frequentemente usam a porta 80 para HTTP (Hypertext Transfer Protocol) e a porta 443 para HTTPS (HTTP Secure), que é uma versão mais segura do HTTP. Serviços SSH (Secure Shell), que são usados para acesso remoto seguro a um computador, usam a porta 22.

Quando um serviço é executado em um computador, ele "escuta" em uma ou mais portas por conexões de entrada. Isso significa que ele espera que os dados cheguem a uma porta específica para que possa processá-los. A varredura de portas (port scanning) é o processo de verificar quais portas em um computador estão "abertas" (têm um serviço escutando nelas) ou "fechadas" (não aceitam conexões). Ao varrer as portas, podemos identificar quais serviços estão sendo executados em um computador e potencialmente encontrar vulnerabilidades de segurança.

Configurando um Serviço para Varredura

Agora, vamos configurar um serviço simples em sua máquina local que podemos varrer. Usaremos o servidor HTTP embutido do Python, que é uma maneira conveniente de criar um servidor web básico. Este servidor irá escutar na porta 8080.

Primeiro, certifique-se de estar no diretório do projeto. O diretório do projeto é onde todos os arquivos relacionados a este experimento serão armazenados. Você pode navegar até ele usando o seguinte comando:

cd /home/labex/project

Agora, vamos criar um arquivo HTML simples que nosso servidor irá hospedar. HTML (Hypertext Markup Language) é a linguagem padrão para criar páginas web. O seguinte comando criará um arquivo index.html com uma simples mensagem de boas-vindas:

echo "<html><body><h1>Welcome to Port Scanning Lab</h1></body></html>" > index.html

Em seguida, iniciaremos um servidor HTTP Python na porta 8080. Vamos executá-lo em segundo plano para que você possa continuar com o laboratório enquanto o servidor está em execução. O símbolo & no final do comando diz ao sistema para executar o comando em segundo plano.

python3 -m http.server 8080 &

Você deve ver uma saída semelhante a:

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

Isso significa que um servidor web agora está sendo executado em sua máquina e escutando na porta 8080. Para verificar se o servidor está funcionando corretamente, você pode abrir um novo terminal e usar o comando curl. curl é uma ferramenta usada para transferir dados de ou para um servidor. O seguinte comando enviará uma solicitação ao servidor em execução em sua máquina local na porta 8080:

curl http://localhost:8080

Você deve ver o conteúdo HTML que criamos anteriormente. Isso confirma que nosso serviço está em execução e pronto para ser varrido.

Introdução ao Nmap e Varredura TCP Connect

Agora que temos um serviço em execução, é hora de explorar o Nmap e entender como usá-lo para varredura de portas. A varredura de portas é uma técnica crucial em segurança de rede, pois nos ajuda a identificar portas abertas em um sistema alvo. Portas abertas podem ser potenciais pontos de entrada para invasores, então saber quais portas estão abertas e quais serviços estão sendo executados nelas é essencial para proteger uma rede.

O que é Nmap?

Nmap, abreviação de Network Mapper, é uma das ferramentas mais conhecidas e poderosas no campo da descoberta de rede e auditoria de segurança. Ele oferece uma ampla gama de recursos que são extremamente úteis para administradores de rede e profissionais de segurança.

  • Descobrir hosts e serviços em uma rede: Nmap pode ajudá-lo a descobrir quais dispositivos estão conectados a uma rede e quais serviços eles estão oferecendo. Por exemplo, ele pode detectar se há servidores web, servidores de arquivos ou servidores de e-mail em uma rede local.
  • Identificar portas abertas em sistemas alvo: Ao enviar pacotes para diferentes portas em um sistema alvo, o Nmap pode determinar quais portas estão abertas e prontas para aceitar conexões.
  • Determinar quais serviços estão sendo executados nessas portas: Uma vez que uma porta aberta é identificada, o Nmap pode tentar descobrir qual serviço está sendo executado nessa porta. Por exemplo, se a porta 80 estiver aberta, é provável que um servidor web esteja em execução.
  • Detectar sistemas operacionais e versões de serviços: Nmap pode analisar as respostas de um sistema alvo para adivinhar o sistema operacional que está sendo executado e as versões dos serviços. Essas informações podem ser usadas para identificar potenciais vulnerabilidades.
  • Realizar vários tipos de varreduras para diferentes cenários: Dependendo de suas necessidades, o Nmap pode realizar diferentes tipos de varreduras, como varreduras TCP Connect, varreduras SYN, varreduras UDP, etc.

Compreendendo a Varredura TCP Connect

A varredura TCP Connect é a forma mais fundamental de varredura TCP. Para entender como ela funciona, primeiro precisamos saber sobre o handshake de três vias TCP (TCP three-way handshake). O handshake de três vias TCP é um processo que dois dispositivos usam para estabelecer uma conexão confiável. Ele envolve três etapas: o cliente envia um pacote SYN (synchronize) para o servidor, o servidor responde com um pacote SYN-ACK (synchronize-acknowledgment), e então o cliente envia um pacote ACK (acknowledgment) para completar a conexão.

Aqui está como a varredura TCP Connect opera:

  1. Nmap tenta estabelecer um handshake TCP de três vias completo com a porta alvo. Ele age como um cliente normal tentando se conectar a um serviço no sistema alvo.
  2. Se a conexão for bem-sucedida, o que significa que todas as três etapas do handshake são concluídas, a porta é marcada como "aberta". Isso indica que há um serviço escutando nessa porta e pronto para aceitar conexões.
  3. Se a conexão for recusada, por exemplo, se o sistema alvo enviar um pacote RST (reset), a porta é marcada como "fechada". Isso significa que não há nenhum serviço escutando nessa porta.
  4. Se não houver resposta do sistema alvo, a porta é marcada como "filtrada". Isso geralmente significa que a porta pode estar bloqueada por um firewall ou algum outro mecanismo de segurança.

É importante notar que a varredura TCP Connect é confiável porque estabelece totalmente uma conexão. No entanto, ela não é muito furtiva. Como ela cria uma conexão real, ela deixa logs de conexão no sistema alvo, o que pode alertar o administrador do sistema.

Realizando Sua Primeira Varredura TCP Connect Nmap

Vamos varrer o serviço que configuramos na etapa anterior. Para fazer isso, abriremos um novo terminal. O terminal é uma interface de linha de comando onde podemos inserir comandos para interagir com o sistema operacional.

Depois que o terminal estiver aberto, execute o seguinte comando:

nmap -sT localhost -p 8080

Vamos detalhar este comando para entender o que cada parte faz:

  • nmap: Este é o nome da ferramenta que estamos usando. Ele diz ao sistema que queremos executar o programa Nmap.
  • -sT: Esta é uma flag que especifica uma varredura TCP Connect. Quando o Nmap vê esta flag, ele realizará uma varredura TCP Connect no alvo.
  • localhost: Este é o alvo que estamos varrendo. Neste caso, localhost se refere à nossa própria máquina. É uma maneira de testar o processo de varredura no sistema local.
  • -p 8080: Esta opção especifica a porta que queremos varrer. Aqui, estamos varrendo a porta 8080.

Após executar o comando, você deve ver uma saída semelhante a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-20 12:34 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

A saída mostra os detalhes da varredura. Ela nos diz que o Nmap foi iniciado, o alvo que ele varreu, se o host está ativo e o estado da porta que varremos. Neste caso, a porta 8080 está marcada como "aberta" e o serviço em execução nela é identificado como "http-proxy".

Agora, vamos salvar esta saída em um arquivo para referência posterior. Salvar a saída é útil porque podemos revisá-la mais tarde ou compartilhá-la com outras pessoas. Para fazer isso, execute o seguinte comando:

nmap -sT localhost -p 8080 > /home/labex/project/nmap_scan_output.txt

Este comando executa a mesma varredura TCP Connect que antes. O símbolo > é usado para redirecionar a saída do comando. Em vez de exibir a saída na tela do terminal, ela será escrita em um arquivo chamado nmap_scan_output.txt localizado no diretório /home/labex/project.

Vamos visualizar o conteúdo do arquivo para confirmar se a saída foi salva corretamente. Execute o seguinte comando:

cat /home/labex/project/nmap_scan_output.txt

O comando cat é usado para exibir o conteúdo de um arquivo. Após executar este comando, você deve ver a mesma saída do Nmap que antes, agora salva no arquivo.

Analisando Resultados da Varredura e Entendendo os Estados das Portas

Agora que realizamos com sucesso nossa primeira varredura, é hora de nos aprofundarmos nos resultados e entender o que cada informação significa. Esta etapa é crucial, pois nos ajuda a dar sentido aos dados que coletamos e tirar conclusões significativas sobre o sistema alvo.

Compreendendo os Estados das Portas no Nmap

Nmap, uma poderosa ferramenta de varredura de rede, classifica as portas em seis estados diferentes. Cada estado fornece informações valiosas sobre o status de uma porta no sistema alvo.

  1. open - Quando uma porta é relatada como "open" (aberta), significa que um aplicativo está ativamente escutando por conexões de entrada nessa porta. Isso indica que há um serviço em execução e pronto para aceitar solicitações.
  2. closed - Uma porta "closed" (fechada) significa que nenhum aplicativo está atualmente escutando nela. No entanto, a porta ainda é acessível, o que significa que ela pode potencialmente ser usada por um serviço no futuro.
  3. filtered - Se o Nmap relatar uma porta como "filtered" (filtrada), significa que ele não pode determinar se a porta está aberta ou não. Isso geralmente ocorre porque um firewall ou alguma outra medida de segurança está bloqueando o acesso à porta.
  4. unfiltered - Uma porta "unfiltered" (não filtrada) significa que o Nmap pode acessar a porta, mas não pode determinar se ela está aberta ou fechada. Isso pode ser devido a vários fatores, como a configuração do sistema alvo ou as condições da rede.
  5. open|filtered - Quando o Nmap relata uma porta como "open|filtered" (aberta|filtrada), significa que ele não pode determinar se a porta está aberta ou filtrada. Este é um resultado comum ao varrer através de um firewall ou outro dispositivo de segurança.
  6. closed|filtered - Uma porta "closed|filtered" (fechada|filtrada) significa que o Nmap não pode determinar se a porta está fechada ou filtrada. Semelhante ao estado "open|filtered", isso geralmente se deve a medidas de segurança que bloqueiam o acesso à porta.

Em nossos resultados da varredura, a porta 8080 foi relatada como "open". Isso nos diz que nosso servidor HTTP Python está escutando com sucesso nessa porta e pronto para aceitar conexões de entrada.

Compreendendo a Detecção de Serviços

Você pode ter notado que o Nmap identificou o serviço na porta 8080 como "http-proxy". O Nmap usa um banco de dados de atribuições de portas comuns para fazer uma suposição informada sobre qual serviço pode estar sendo executado em uma porta. A porta 8080 é comumente usada para serviços de proxy HTTP, então o Nmap fez essa suposição com base em seu banco de dados.

No entanto, essa suposição nem sempre pode ser precisa. Para obter informações mais precisas sobre o serviço em execução em uma porta, você pode usar a flag de detecção de serviço (-sV). Essa flag diz ao Nmap para realizar verificações adicionais para determinar o serviço exato e sua versão.

Vamos tentar usar a flag de detecção de serviço:

nmap -sT -sV localhost -p 8080 > /home/labex/project/nmap_service_output.txt

Neste comando, -sT especifica uma varredura TCP connect, -sV habilita a detecção de serviço, localhost é o alvo que estamos varrendo, -p 8080 especifica que estamos varrendo apenas a porta 8080, e > /home/labex/project/nmap_service_output.txt redireciona a saída para um arquivo.

Agora, vamos visualizar a saída:

cat /home/labex/project/nmap_service_output.txt

Após executar este comando, você deve ver informações adicionais sobre o serviço em execução na porta 8080. Ele pode identificar o serviço como "Python http.server" ou algo semelhante, dando a você uma compreensão mais precisa do que está sendo executado nessa porta.

Explorando Mais Informações com o Modo Verboso

Se você deseja uma compreensão mais detalhada do que o Nmap está fazendo durante a varredura, pode usar o modo verboso com a flag -v. O modo verboso fornece informações adicionais sobre o processo de varredura, incluindo detalhes sobre os pacotes enviados e recebidos, informações de tempo e as etapas exatas que o Nmap tomou para determinar o estado da porta.

Vamos tentar usar o modo verboso:

nmap -sT -v localhost -p 8080 > /home/labex/project/nmap_verbose_output.txt

Neste comando, -sT é para a varredura TCP connect, -v habilita o modo verboso, localhost é o alvo, -p 8080 especifica a porta a ser varrida, e > /home/labex/project/nmap_verbose_output.txt redireciona a saída para um arquivo.

Vamos verificar a saída:

cat /home/labex/project/nmap_verbose_output.txt

A saída verbosa fornecerá uma visão mais aprofundada do processo de varredura, ajudando você a entender como o Nmap chega às suas conclusões sobre o estado da porta e os serviços em execução no sistema alvo.

Expandindo Seu Conhecimento em Varredura

Agora que você compreendeu os conceitos básicos da varredura TCP Connect, é hora de levar seu conhecimento para o próximo nível. Nesta seção, aprenderemos como varrer várias portas e entender como interpretar os resultados. Isso o ajudará a obter uma visão mais abrangente dos serviços de rede em execução em um sistema alvo.

Varrendo Portas Comuns

Vamos começar varrendo as portas mais comuns em sua máquina local, também conhecida como localhost. Essas portas comuns são frequentemente usadas por serviços de rede bem conhecidos.

nmap -sT localhost --top-ports 10 > /home/labex/project/common_ports_scan.txt

Neste comando, a opção -sT diz ao Nmap para realizar uma varredura TCP Connect. O localhost especifica o alvo, que é sua própria máquina. A opção --top-ports 10 instrui o Nmap a varrer as 10 portas mais comumente usadas. O símbolo > redireciona a saída da varredura para um arquivo chamado common_ports_scan.txt no diretório /home/labex/project.

Agora, vamos ver os resultados desta varredura:

cat /home/labex/project/common_ports_scan.txt

O comando cat é usado para exibir o conteúdo de um arquivo. Ao executar este comando, você verá uma lista de portas. Por exemplo, a porta 21 é usada para FTP (File Transfer Protocol), a porta 22 para SSH (Secure Shell), a porta 23 para Telnet, a porta 25 para SMTP (Simple Mail Transfer Protocol) e a porta 80 para HTTP (Hypertext Transfer Protocol). Em seu sistema, a maioria dessas portas provavelmente estará fechada, a menos que você tenha serviços específicos em execução. Por exemplo, se nosso servidor HTTP na porta 8080 estiver entre as 10 principais portas, ele aparecerá como aberto.

Varrendo uma Faixa de Portas

Além de varrer portas comuns, você também pode varrer uma faixa específica de portas. Vamos varrer as portas de 8000 a 8100 em seu localhost.

nmap -sT localhost -p 8000-8100 > /home/labex/project/port_range_scan.txt

Aqui, a opção -p 8000-8100 diz ao Nmap para varrer as portas na faixa de 8000 a 8100. A saída desta varredura é redirecionada para um arquivo chamado port_range_scan.txt no diretório /home/labex/project.

Para visualizar os resultados desta varredura:

cat /home/labex/project/port_range_scan.txt

Na saída, você deve ver que a porta 8080 (se estiver dentro da faixa varrida) está aberta, enquanto as outras portas na faixa provavelmente estarão fechadas.

Combinando Técnicas

Vamos combinar as técnicas que aprendemos até agora. Realizaremos uma varredura TCP Connect e também tentaremos detectar os serviços em execução nas portas na faixa de 8000 a 8100.

nmap -sT -sV localhost -p 8000-8100 > /home/labex/project/combined_scan.txt

A opção -sV é usada para habilitar a detecção de serviço. Isso significa que o Nmap não apenas informará se uma porta está aberta ou fechada, mas também tentará identificar o serviço em execução nas portas abertas. A saída desta varredura combinada é salva no arquivo combined_scan.txt no diretório /home/labex/project.

Para verificar os resultados:

cat /home/labex/project/combined_scan.txt

Esta varredura fornece as informações mais detalhadas até agora. Ele mostra o estado de cada porta na faixa especificada e tenta identificar os serviços em execução nas portas abertas.

Limpando

Antes de terminarmos este laboratório, precisamos limpar parando o servidor HTTP Python que estamos usando. Primeiro, precisamos encontrar o ID do processo (PID) do servidor.

ps aux | grep "python3 -m http.server 8080"

O comando ps aux lista todos os processos em execução em seu sistema. O símbolo | é um pipe, que pega a saída do comando ps aux e a passa para o comando grep. O comando grep então procura a linha que contém o texto "python3 -m http.server 8080", que é o comando usado para iniciar o servidor HTTP Python.

Procure a linha que mostra o processo do servidor HTTP Python. A segunda coluna desta linha contém o ID do processo (PID). Depois de anotar o PID, você pode usar o comando kill para parar o processo.

kill <PID>

Substitua <PID> pelo ID do processo real que você encontrou. Por exemplo, se o PID for 1234, você executaria:

kill 1234

Resumo

Neste laboratório, você aprendeu os fundamentos da varredura de portas de rede usando o Nmap. Você praticou a configuração de um serviço para varredura, a realização de varreduras TCP Connect básicas e a análise dos resultados da varredura.

As principais habilidades adquiridas incluem a compreensão de portas de rede e a importância de varrê-las, a configuração de um servidor HTTP simples, o uso do Nmap para varreduras TCP Connect, a interpretação dos estados das portas, o uso de opções do Nmap para obter informações detalhadas, a varredura de várias portas e faixas, e a identificação de serviços em portas abertas. Essas habilidades são a base da reconhecimento de rede, vital para a administração de rede e avaliação de segurança. À medida que você progride em segurança cibernética, você pode construir sobre esses fundamentos para explorar técnicas avançadas e práticas de segurança.