Efetuar Varreduras de Rede Furtivas com o Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá a realizar varreduras de rede furtivas usando o Nmap, uma poderosa ferramenta de código aberto para descoberta de rede e auditoria de segurança. A varredura furtiva é crucial na segurança cibernética, permitindo que os profissionais de segurança identifiquem vulnerabilidades de rede, reduzindo o risco de detecção.

Explorará diferentes técnicas de varredura do Nmap, começando com varreduras furtivas básicas e avançando para métodos mais ocultos. Estas competências são essenciais para os profissionais de segurança que realizam auditorias de rede sem disparar sistemas de segurança existentes ou alertar potenciais ameaças na rede. No final do laboratório, terá experiência prática com a varredura furtiva do Nmap e saberá como aplicar estas técnicas em avaliações de segurança do mundo real.

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 98% dos estudantes.

Configurando o Seu Ambiente de Teste

Neste passo, vamos preparar o seu ambiente para a auditoria de rede furtiva. Vamos configurar um servidor web simples que funcionará como alvo para as nossas varreduras. Ter um alvo controlado como este é crucial, pois permite praticar técnicas de varredura furtiva sem afetar sistemas do mundo real.

Primeiro, precisamos abrir um terminal. O terminal é como uma interface de linha de comandos onde pode digitar comandos para interagir com o seu computador. Depois de abrir o terminal, irá navegar até ao seu espaço de trabalho. O seu espaço de trabalho é um diretório específico onde manterá todos os seus ficheiros relacionados com o projeto. Para fazer isto, utilize o seguinte comando:

cd /home/labex/project

O comando cd significa "mudar de diretório". Indica ao sistema para o mover da sua localização atual para o diretório especificado, que neste caso é /home/labex/project.

Agora que está no seu espaço de trabalho, vamos criar um novo diretório chamado stealth. Os diretórios são como pastas no seu computador, e criar um diretório dedicado ajuda a organizar o seu trabalho. Utilize o seguinte comando para criar o diretório:

mkdir -p /home/labex/project/stealth

O comando mkdir é usado para criar um novo diretório. A opção -p garante que, se quaisquer diretórios intermédios no caminho não existirem, eles também serão criados.

Depois de criar o diretório, precisa navegar para dentro dele. Desta forma, quaisquer ficheiros que criar serão armazenados dentro do diretório stealth. Utilize novamente o comando cd:

cd /home/labex/project/stealth

Em seguida, vamos criar um ficheiro HTML simples. HTML (Hypertext Markup Language) é a linguagem padrão para criar páginas web. Este ficheiro será servido pelo nosso servidor web, simulando um serviço web do mundo real. Utilize o seguinte comando para criar o ficheiro:

echo "Servidor de robótica em execução..." > index.html

O comando echo imprime o texto "Servidor de robótica em execução..." no terminal. O símbolo > redireciona essa saída e escreve-a num novo ficheiro chamado index.html.

Agora, precisamos configurar um resolvedor DNS. DNS (Domain Name System) é como uma lista telefónica para a internet. Traduz nomes de domínio (como google.com) em endereços IP. Ao configurar um resolvedor DNS, garantimos que o nosso sistema pode conectar-se corretamente a outras redes. Utilize o seguinte comando:

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

O comando sudo concede privilégios administrativos para executar ações que requerem permissões especiais. O sh -c é usado para executar um comando de shell. Estamos a escrever a linha "nameserver 8.8.8.8" no ficheiro /etc/resolv.conf, onde o sistema armazena a configuração DNS.

Finalmente, vamos iniciar um servidor web simples usando o comando nc (netcat). Netcat é uma ferramenta de rede versátil que pode ser usada para várias tarefas, incluindo a configuração de um servidor simples. Este servidor irá escutar na porta 8080 e servir o ficheiro HTML que criámos anteriormente. Utilize o seguinte comando:

nc -lvp 8080 < index.html &

Vamos decompor este comando:

  • nc é a utilidade netcat para conexões de rede. Permite criar conexões entre diferentes pontos finais de rede.
  • -l indica ao netcat para escutar conexões de entrada. Em vez de tentar conectar-se a outro servidor, irá esperar que outros se conectem a ele.
  • -v ativa a saída detalhada. Isto significa que o netcat fornecerá informações mais detalhadas sobre o que está a fazer.
  • -p 8080 especifica a porta para escutar. As portas são como portas num computador, e neste caso, estamos a abrir a porta 8080 para conexões de entrada.
  • < index.html alimenta o conteúdo de index.html a qualquer conexão. Quando um cliente se conecta ao nosso servidor, receberá o conteúdo do ficheiro index.html.
  • & executa o processo em segundo plano. Desta forma, pode continuar a usar o terminal para executar outros comandos enquanto o servidor estiver a funcionar.

Após executar o comando, deverá ver uma saída que indica que o servidor está a escutar na porta 8080:

Ouvindo em 0.0.0.0 8080

Agora tem um servidor web a funcionar na porta 8080 que funcionará como o seu alvo para os exercícios de varredura furtiva.

Executando Varreduras Furtivas Básicas com o Nmap

Neste passo, vamos aprender a executar uma varredura furtiva básica usando o Nmap. Mas primeiro, vamos entender o que é uma varredura furtiva. A varredura furtiva, também conhecida como varredura SYN, é uma técnica muito útil no mundo da segurança de redes. Quando tenta descobrir quais as portas abertas num sistema alvo, uma varredura furtiva pode ajudá-lo a fazer isso enquanto reduz as chances de ser detetado pelo alvo. Isto é importante porque, se o sistema alvo detectar a sua varredura, poderá tomar medidas defensivas ou registar a sua atividade.

Agora, antes de iniciar a varredura, precisamos garantir que estamos no local correto. Vamos navegar de volta para o nosso espaço de trabalho principal. Isto é como voltar à sua base, onde todos os seus ficheiros relacionados com o projeto são armazenados. Para fazer isto, usaremos o seguinte comando:

cd /home/labex/project

Compreendendo a Varredura Furtiva

Para compreender completamente como funciona uma varredura furtiva, precisamos primeiro saber sobre as conexões TCP tradicionais. Uma conexão TCP tradicional segue um processo de três vias. Este é um conjunto de etapas que o cliente e o servidor percorrem para estabelecer uma conexão.

  1. O cliente envia um pacote SYN (sincronizar) para o servidor. Isto é como o cliente dizer "Olá, quero iniciar uma conversa."
  2. Se o servidor estiver pronto para falar, responde com um pacote SYN-ACK (sincronizar-confirmar). É como o servidor dizer "Claro, estou pronto para falar."
  3. Finalmente, o cliente envia um pacote ACK (confirmar) para completar a conexão. Isto é o cliente a dizer "Ótimo, vamos iniciar a conversa."

No entanto, uma varredura furtiva não segue este processo completo. Em vez disso:

  1. O cliente envia um pacote SYN para o servidor, tal como numa conexão normal.
  2. Se a porta no servidor estiver aberta, o servidor responde com um pacote SYN-ACK.
  3. Mas aqui está a diferença. Em vez de enviar um pacote ACK para completar a conexão, o cliente envia um pacote RST (reiniciar). Isto interrompe a conexão de ser totalmente estabelecida.

A razão pela qual isto é útil é que o sistema alvo é menos provável que registre este tipo de interação, porque a conexão nunca é totalmente estabelecida. Portanto, é uma forma discreta de descobrir quais as portas abertas sem deixar uma grande pegada.

Executando uma Varredura Furtiva

Agora que entendemos como funciona uma varredura furtiva, vamos executá-la contra o nosso servidor web local. Usaremos o seguinte comando Nmap:

sudo nmap -sS -p 8080 localhost > /home/labex/project/stealth_scan.txt

Vamos decompor este comando para que saiba exatamente o que cada parte faz:

  • sudo é usado porque as varreduras furtivas requerem acesso a soquetes brutos. O acesso a soquetes brutos é uma forma de baixo nível de interação com a rede, e precisa de permissões especiais. Portanto, usamos sudo para executar o comando com privilégios administrativos.
  • nmap é a ferramenta de varredura que estamos a usar. É uma ferramenta muito popular e poderosa para exploração de rede e auditoria de segurança.
  • -sS especifica que queremos executar uma varredura furtiva SYN. Isto indica ao Nmap para usar a técnica de varredura furtiva que acabámos de aprender.
  • -p 8080 indica ao Nmap para apenas varrer a porta 8080. Às vezes, pode querer varrer várias portas, mas neste caso, só estamos interessados na porta 8080.
  • localhost é o alvo da nossa varredura. Uma vez que estamos a executar isto na nossa máquina local, localhost refere-se ao nosso próprio computador.
  • > /home/labex/project/stealth_scan.txt redireciona a saída da varredura para um ficheiro de texto. Desta forma, podemos guardar os resultados e analisá-los mais tarde.

Depois de executar a varredura, queremos ver os resultados. Para isso, usaremos o seguinte comando:

cat /home/labex/project/stealth_scan.txt

Ao executar este comando, deverá ver uma saída semelhante a esta:

Iniciando o Nmap 7.80 ( https://nmap.org ) em 2023-10-25 12:00 UTC
Relatório de varredura Nmap para localhost (127.0.0.1)
O host está ativo (latência de 0,000097s).

PORTA ESTADO SERVIÇO
8080/tcp aberto proxy HTTP

Nmap concluído: 1 endereço IP (1 host ativo) varrido em 0,07 segundos

Note que o Nmap identificou corretamente que a porta 8080 está aberta. Isto significa que a nossa varredura furtiva teve sucesso na deteção do servidor web que configuramos no Passo 1.

Compreendendo os Estados das Portas

Ao analisar os resultados da varredura, notará que o Nmap reporta portas em diferentes estados:

  1. aberto - Um serviço está a aceitar ativamente conexões nesta porta
  2. fechado - A porta é acessível, mas nenhum serviço está a escutar
  3. filtrado - Um firewall ou obstáculo de rede está a bloquear a porta
  4. não filtrado - A porta é acessível, mas o Nmap não consegue determinar se está aberta ou fechada
  5. aberto|filtrado - O Nmap não consegue determinar se a porta está aberta ou filtrada

Na nossa varredura, a porta 8080 é reportada como aberto, indicando que o nosso servidor web está a aceitar ativamente conexões.

A vantagem de usar varreduras furtivas é que nos fornece resultados precisos, sendo menos intrusivas do que uma varredura de conexão TCP completa. Uma varredura de conexão TCP completa percorre todo o processo de três vias, o que é mais provável que seja notado pelo sistema alvo e provoque alertas em sistemas monitorizados.

Técnicas Avançadas de Varredura Coberta

Neste passo, vamos explorar técnicas de varredura mais avançadas que oferecem um nível ainda maior de furtividade. Estas técnicas são cruciais em segurança cibernética, pois permitem recolher informações sobre uma rede alvo sem serem facilmente detetadas. Uma técnica poderosa é a Varredura Ociosa, também conhecida como Varredura Zumbi. Este método permite varrer um alvo enquanto mascara a sua identidade por detrás de outro host.

Antes de começarmos, é importante garantir que se encontra no seu espaço de trabalho. Este é o local onde todos os seus ficheiros e comandos relacionados com o projeto serão executados. Para navegar para o seu espaço de trabalho, execute o seguinte comando no seu terminal:

cd /home/labex/project

Compreendendo a Varredura Ociosa

A Varredura Ociosa é uma das técnicas de varredura mais furtivas disponíveis no Nmap. Mas como funciona? Bem, utiliza um host de terceiros, que chamamos de "zumbi", para executar a varredura. Isto faz com que a varredura pareça estar a ser executada pelo host zumbi, e não por si.

Vamos decompor o processo de uma Varredura Ociosa passo a passo:

  1. Primeiro, o scanner envia uma sonda para o host zumbi. Esta sonda ajuda o scanner a determinar a sequência atual de ID de IP do zumbi. A sequência de ID de IP é um número único que o host atribui a cada pacote IP que envia.
  2. Em seguida, o scanner envia um pacote SYN para o alvo. No entanto, define o endereço IP de origem deste pacote como o endereço IP do zumbi. Um pacote SYN é usado para iniciar uma conexão TCP.
  3. Se a porta no alvo estiver aberta, o alvo responderá com um pacote SYN-ACK. Este pacote é enviado para o zumbi, porque esse é o endereço IP de origem que viu no pacote SYN.
  4. O zumbi, que não esperava este pacote SYN-ACK, enviará um pacote RST de volta ao alvo. Um pacote RST é usado para reiniciar uma conexão TCP.
  5. O scanner, em seguida, sonda novamente o zumbi. Verifica se a sequência de ID de IP do zumbi aumentou.
  6. Se a sequência de ID de IP tiver aumentado, indica que a porta no alvo está aberta. Isto porque o zumbi enviou um pacote RST em resposta ao SYN-ACK do alvo.

A beleza desta técnica é a sua furtividade. O alvo apenas vê a comunicação proveniente do zumbi, não do scanner real. Portanto, é muito difícil para o alvo detectar que está a ser varrido.

Executando uma Varredura Ociosa

Agora, vamos executar uma varredura ociosa usando o Nmap. Numa situação do mundo real, utilizaria um host zumbi externo. Mas, para este laboratório, vamos simular o processo usando a sua máquina local.

Execute o seguinte comando no seu terminal:

sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt

Vamos entender cada parte deste comando:

  • sudo é usado porque o Nmap precisa de acesso a soquetes brutos para executar a varredura ociosa. O acesso a soquetes brutos permite ao Nmap criar e enviar pacotes IP personalizados, o que é necessário para este tipo de varredura.
  • nmap é a conhecida ferramenta de varredura que estamos a usar para esta tarefa.
  • -sI 127.0.0.1 especifica que estamos a executar uma varredura ociosa e a usar 127.0.0.1 (que é o localhost) como o host zumbi.
  • localhost é o alvo que queremos varrer.
  • -p 8080 indica ao Nmap para apenas varrer a porta 8080 no alvo.
  • > /home/labex/project/idle_scan.txt redireciona a saída da varredura para um ficheiro de texto. Desta forma, podemos rever facilmente os resultados mais tarde.

Depois de executar a varredura, vamos examinar os resultados. Utilize o seguinte comando para visualizar o conteúdo do ficheiro de saída:

cat /home/labex/project/idle_scan.txt

Poderá ver uma saída semelhante a esta:

Iniciando o Nmap 7.80 ( https://nmap.org ) em 2023-10-25 12:10 UTC
Varredura ociosa usando zumbi 127.0.0.1 (127.0.0.1:80); Classe: Incremental
Pular Varredura Ociosa contra localhost (127.0.0.1) -- não pode executar varredura ociosa na sua própria máquina (localhost).
Relatório de varredura Nmap para localhost (127.0.0.1)
O host está ativo.

PORTA ESTADO SERVIÇO
8080/tcp desconhecido proxy HTTP

Nmap concluído: 1 endereço IP (1 host ativo) varrido em 2.03 segundos

Note que o Nmap reporta que está a pular a varredura ociosa. Isto porque está a tentar usar a sua própria máquina como zumbi e alvo. Numa situação do mundo real com hosts separados, esta técnica seria muito eficaz para varreduras ocultas.

Embora tenhamos esta limitação no nosso ambiente de laboratório, este exercício ainda lhe mostra como usar o comando de varredura ociosa. Na prática, escolheria um host diferente como zumbi, e a varredura seria executada sem esta mensagem de aviso.

Esta técnica avançada é muito valiosa quando precisa de máxima furtividade. Torna extremamente difícil para o alvo rastrear a varredura de volta ao scanner real.

Comparando Resultados de Varredura

Vamos comparar as saídas dos dois tipos de varredura para ver as diferenças:

echo "=== Resultados da Varredura Furtiva ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Resultados da Varredura Ociosa ===" && cat /home/labex/project/idle_scan.txt

Ambas as varreduras detectaram com sucesso a porta 8080 aberta, mas a varredura ociosa mostra informações adicionais sobre a técnica de varredura utilizada.

Limpeza

Antes de terminar, vamos limpar o nosso ambiente parando o servidor web:

pkill -f "nc -lvp 8080"

Isto termina o processo netcat que executa o nosso servidor web na porta 8080.

Resumo

Neste laboratório, aprendeu a realizar varreduras de rede furtivas usando o Nmap, uma habilidade crucial para profissionais de segurança cibernética. Começou por configurar um ambiente de teste com um servidor web simples para praticar varreduras num cenário controlado. Em seguida, explorou varreduras furtivas básicas com a técnica de varredura SYN, que oferece resultados precisos e reduz o risco de deteção, tornando-a útil para auditorias de segurança sem alertar sistemas monitorizados.

Finalmente, aprofundou métodos de varredura secreta mais avançados, como a Varredura Ociosa, que pode ocultar a origem da varredura. Embora a sua aplicação tenha sido limitada no ambiente de laboratório, aprendeu como funciona em cenários do mundo real. Também praticou a interpretação dos resultados da varredura, compreendendo diferentes estados de portas e comparando as saídas de diferentes técnicas de varredura. Dominar estas técnicas de varredura furtiva permite-lhe realizar avaliações de rede completas no trabalho de segurança cibernética.