Realizar varreduras SYN com Nmap para segurança de rede

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre a varredura SYN do Nmap, uma técnica fundamental em segurança de rede para reconhecimento furtivo de portas. A varredura SYN identifica eficientemente portas abertas em um sistema de destino sem estabelecer totalmente uma conexão TCP, tornando-a menos detectável do que os métodos tradicionais. Isso é crucial para que profissionais de segurança avaliem vulnerabilidades de rede e aprimorem as defesas.

Ao final deste laboratório, você entenderá como conduzir varreduras SYN, interpretar seus resultados e reconhecer sua importância em avaliações de segurança de rede.

Criando um serviço de destino para varredura

Nesta etapa, criaremos um ambiente controlado onde você poderá praticar a varredura SYN com o Nmap. Antes de começar a escanear qualquer rede ou sistema, é crucial entender que a varredura ética exige autorização adequada. Para evitar problemas legais, configuraremos nosso próprio serviço que podemos escanear com segurança.

  1. Primeiro, você precisa abrir um terminal. Um terminal é uma interface baseada em texto que permite interagir com o sistema operacional do seu computador digitando comandos. Depois de abrir o terminal, você navegará até o diretório do seu projeto. O diretório do projeto é onde todos os arquivos relacionados a este experimento serão armazenados. Use o seguinte comando para alterar o diretório atual para o diretório do projeto:

    cd /home/labex/project
    
  2. Agora, usaremos o Python, uma linguagem de programação popular, para criar um servidor HTTP simples. Um servidor HTTP é um software que pode fornecer páginas da web para clientes, como navegadores. O Python possui recursos integrados que facilitam a configuração de tal servidor. Usaremos este servidor como destino para nossa varredura SYN do Nmap. Execute o seguinte comando no terminal:

    python -m http.server --bind 127.0.0.1 8080 &
    

    Este comando inicia um servidor web simples na porta 8080 e o vincula ao endereço de loopback IPv4 127.0.0.1. Uma porta é um ponto de extremidade de comunicação na rede de um computador. Serviços diferentes usam portas diferentes para se comunicar. Usar um endereço IPv4 explícito mantém o servidor e a varredura Nmap posterior na mesma interface de loopback. O & no final do comando executa o servidor em segundo plano. Isso significa que o servidor continuará sendo executado e você poderá continuar usando a mesma janela do terminal para executar outros comandos.

  3. Após iniciar o servidor, precisamos verificar se ele está realmente em execução. Podemos fazer isso verificando as conexões de rede abertas em nosso sistema. O comando ss é uma ferramenta que pode exibir estatísticas de soquete, o que inclui informações sobre conexões de rede abertas. Nós o usaremos para verificar se nosso servidor está escutando na porta 8080. Execute o seguinte comando:

    ss -tulwn | grep 8080
    

    O | é um operador de pipe que pega a saída do comando ss e a usa como entrada para o comando grep. O comando grep procura pela string 8080 na saída do comando ss. Se o servidor estiver em execução, você deverá ver uma saída semelhante a esta:

    tcp   LISTEN 0      5          127.0.0.1:8080       0.0.0.0:*
    

    Esta saída indica que o servidor está escutando na porta 8080, o que significa que ele está sendo executado com sucesso e pronto para ser escaneado.

Entendendo e realizando uma varredura SYN com Nmap

Agora que temos um serviço de destino em execução, é hora de mergulhar nas varreduras SYN. As varreduras SYN são uma parte crucial dos testes de segurança de rede, permitindo-nos descobrir portas abertas em um sistema de destino. Nesta seção, aprenderemos como as varreduras SYN funcionam e, em seguida, usaremos o Nmap, uma poderosa ferramenta de varredura de rede, para realizar uma varredura SYN em nosso servidor HTTP.

O que é uma varredura SYN?

Antes de iniciarmos a varredura propriamente dita, é essencial entender o mecanismo subjacente de uma varredura SYN. Para fazer isso, vamos primeiro observar como uma conexão TCP normal é estabelecida.

Conexão TCP normal

Em uma conexão TCP normal, ocorre um handshake de três vias (three-way handshake). Este é um processo fundamental para estabelecer uma conexão confiável entre um cliente e um servidor:

  • Etapa 1: Pacote SYN do cliente O cliente inicia a conexão enviando um pacote SYN (synchronize) para o servidor. Este pacote é como uma solicitação para iniciar uma conversa, perguntando ao servidor se ele está pronto para se comunicar.
  • Etapa 2: Pacote SYN-ACK do servidor Ao receber o pacote SYN, se o servidor estiver disponível e disposto a se comunicar, ele responde com um pacote SYN-ACK (synchronize-acknowledge). Este pacote reconhece a solicitação do cliente e também indica que o servidor está pronto para iniciar a conexão.
  • Etapa 3: Pacote ACK do cliente Finalmente, o cliente envia um pacote ACK (acknowledge) para completar o handshake de três vias. Após esta etapa, a conexão TCP é totalmente estabelecida e os dados podem ser trocados entre o cliente e o servidor.

Processo de varredura SYN

Uma varredura SYN, por outro lado, tem uma abordagem diferente:

  • Etapa 1: Pacote SYN do Nmap O Nmap, nossa ferramenta de varredura, envia o pacote SYN inicial para a porta de destino. Isso é semelhante à primeira etapa de uma conexão TCP normal.
  • Etapa 2: Resposta SYN-ACK do destino Se a porta de destino estiver aberta, ela responderá com um pacote SYN-ACK, exatamente como em uma conexão TCP normal.
  • Etapa 3: Encerramento da conexão pelo Nmap Em vez de enviar o pacote ACK final para completar o handshake, o Nmap encerra a conexão. Isso torna a varredura menos detectável porque a conexão completa nunca é estabelecida. Além disso, é mais rápida do que uma varredura de conexão completa, que completa todo o handshake de três vias para cada porta sendo escaneada.

Realizando a varredura SYN

Etapa 1: Navegar para o diretório do projeto

Primeiro, precisamos garantir que estamos no diretório de projeto correto. Isso é importante porque salvaremos os resultados da varredura em um arquivo dentro deste diretório. Para navegar até o diretório do projeto, execute o seguinte comando no seu terminal:

cd /home/labex/project

Etapa 2: Executar a varredura SYN

Agora, estamos prontos para realizar a varredura SYN usando o Nmap. Execute o seguinte comando no seu terminal:

sudo nmap -sS 127.0.0.1 -p 8080 > /home/labex/project/nmap-syn-scan-results.txt

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

  • sudo: Este comando é usado para executar o comando subsequente com privilégios elevados. As varreduras SYN exigem privilégios de root porque envolvem o envio de pacotes de rede brutos, por isso precisamos usar sudo para executar o comando nmap.
  • nmap: Esta é a ferramenta de varredura de rede que estamos usando. O Nmap é amplamente utilizado para exploração de rede e auditoria de segurança.
  • -sS: Esta opção especifica que queremos realizar uma varredura SYN.
  • 127.0.0.1: Este é o endereço de loopback IPv4 da nossa própria máquina. Usar o endereço IPv4 explícito mantém a varredura alinhada com o servidor HTTP que iniciamos na Etapa 1.
  • -p 8080: Esta opção diz ao Nmap para escanear apenas a porta 8080. Estamos interessados em verificar se esta porta específica está aberta em nossa máquina local.
  • > /home/labex/project/nmap-syn-scan-results.txt: Esta parte do comando redireciona a saída da varredura nmap para um arquivo chamado nmap-syn-scan-results.txt no diretório do projeto. Dessa forma, podemos revisar os resultados mais tarde.

Etapa 3: Visualizar os resultados da varredura

Após a conclusão da varredura, podemos visualizar os resultados. Execute o seguinte comando no seu terminal:

cat /home/labex/project/nmap-syn-scan-results.txt

Você deve ver uma saída semelhante à seguinte:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-18 12:00 UTC
Nmap scan report for 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.03 seconds

Esta saída fornece informações valiosas. Ela confirma que a porta 8080 está aberta em sua máquina local e que ela está executando um serviço HTTP. Essas informações podem ser usadas para análises de segurança adicionais ou solução de problemas de rede.

Analisando resultados de varredura e implicações de segurança

Após realizar uma varredura SYN, é crucial entender como interpretar os resultados e suas implicações de segurança. Esta etapa é essencial porque ajuda a identificar riscos potenciais em sua rede. Vamos mergulhar nos detalhes.

Interpretando os resultados da varredura

  1. Primeiro, vamos dar uma olhada mais detalhada nos resultados da varredura. Usaremos o comando cat para visualizar o conteúdo do arquivo que armazena os resultados da varredura SYN do Nmap. O comando cat é uma maneira simples de exibir o conteúdo de um arquivo no terminal.

    cat /home/labex/project/nmap-syn-scan-results.txt
    

    Ao executar este comando, você verá uma saída. Aqui está o que as diferentes partes da saída significam:

    • Host is up: Esta mensagem indica que o host de destino está acessível pela rede. Se o host estiver ativo, significa que sua varredura conseguiu se comunicar com o destino.
    • O valor de latência: Isso mostra a rapidez com que o destino respondeu à sua varredura. Uma latência menor significa que o destino respondeu mais rapidamente.
    • 8080/tcp open: Isso indica que a porta 8080 no host de destino está aberta e pronta para aceitar conexões de entrada. Uma porta aberta pode ser um ponto de entrada potencial para invasores.
    • http-proxy: Este é o palpite do Nmap sobre qual serviço está sendo executado na porta 8080. O Nmap tenta identificar o serviço com base nas respostas que recebe durante a varredura.
  2. Em uma avaliação de segurança do mundo real, cada porta aberta em um host de destino representa várias coisas:

    • Um ponto de entrada potencial para invasores: Os invasores podem usar portas abertas para obter acesso ao sistema de destino. Por exemplo, se um servidor web estiver sendo executado em uma porta aberta, os invasores podem tentar explorar vulnerabilidades na aplicação web.
    • Um serviço que pode ter vulnerabilidades: Todo serviço em execução em uma porta aberta tem o potencial de ter falhas de segurança. Essas vulnerabilidades podem ser exploradas por invasores para comprometer o sistema.
    • Parte da superfície de ataque que precisa ser protegida: A superfície de ataque é a soma de todos os pontos onde um invasor pode tentar entrar em um sistema. Portas abertas fazem parte dessa superfície de ataque e precisam ser protegidas adequadamente.

Melhores práticas de segurança

Ao proteger uma rede, você deve seguir estas melhores práticas:

  1. Apenas as portas necessárias devem estar abertas: Abrir portas desnecessárias aumenta a superfície de ataque da sua rede. Ao fechar portas não utilizadas, você reduz o número de pontos de entrada potenciais para invasores.
  2. Cada porta aberta deve servir a um propósito comercial legítimo: Se uma porta estiver aberta, deve haver um motivo válido para isso, como executar um servidor web ou um serviço de banco de dados. Isso ajuda a garantir que sua rede seja usada de forma eficiente e segura.
  3. Todos os serviços devem ser mantidos atualizados para evitar exploração: Os fornecedores de software lançam atualizações regularmente para corrigir vulnerabilidades de segurança. Ao manter seus serviços atualizados, você pode proteger sua rede contra ameaças conhecidas.
  4. As regras de firewall devem restringir o acesso a portas sensíveis: Firewalls podem ser usados para controlar quem pode acessar portas específicas em sua rede. Ao configurar regras de firewall apropriadas, você pode limitar o acesso a portas sensíveis apenas a usuários ou sistemas autorizados.

Limpando nosso ambiente

  1. Agora, precisamos limpar nosso ambiente interrompendo o servidor HTTP que iniciamos anteriormente. Primeiro, precisamos identificar o ID do processo (PID) do servidor HTTP. O PID é um número exclusivo atribuído a cada processo em execução no sistema. Usaremos o comando ps aux para listar todos os processos em execução e, em seguida, filtrar os resultados para encontrar o processo do servidor HTTP.

    ps aux | grep "http.server" | grep -v grep
    

    Ao executar este comando, você verá uma saída semelhante à seguinte:

    labex      1234  0.0  0.1  31116  3164 pts/0    S    12:00   0:00 python -m http.server --bind 127.0.0.1 8080
    

    A segunda coluna na saída mostra o PID do processo do servidor HTTP.

  2. Em seguida, usaremos o PID para parar o servidor. Usaremos o comando kill, que envia um sinal de terminação para o processo. O comando a seguir encontra e encerra automaticamente o processo do servidor HTTP:

    kill $(ps aux | grep "http.server" | grep -v grep | awk '{print $2}')
    

    Este comando primeiro encontra o PID do processo do servidor HTTP usando o mesmo método de filtragem de antes e, em seguida, passa o PID para o comando kill.

  3. Finalmente, precisamos verificar se o servidor parou. Usaremos o comando ss, que é usado para exibir estatísticas de soquete. Ao filtrar a saída para mostrar apenas informações sobre a porta 8080, podemos verificar se o servidor ainda está em execução.

    ss -tulwn | grep 8080
    

    Se o servidor tiver parado com sucesso, não deverá haver saída deste comando, indicando que o servidor não está mais escutando na porta 8080.

Resumo

Neste laboratório, você aprendeu como realizar e entender a varredura SYN do Nmap, uma técnica fundamental no reconhecimento de segurança de rede. Você configurou um ambiente controlado usando um servidor HTTP Python, realizou uma varredura SYN para encontrar portas abertas, analisou os resultados e limpou o ambiente de teste. Essas habilidades são essenciais para a varredura ética de rede e avaliação de vulnerabilidades.

Entender as varreduras SYN permite que os profissionais de segurança detectem vulnerabilidades de rede potenciais de forma eficiente, reduzindo o risco de detecção. À medida que você avança em sua jornada de segurança cibernética, certifique-se sempre de ter permissão para escanear redes antes de aplicar essas técnicas.