Aprenda os Fundamentos do Nmap para Varredura de Rede

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá os fundamentos da varredura de rede usando o Nmap, uma ferramenta de segurança de rede altamente popular e versátil. Nmap, abreviação de Network Mapper, é um utilitário de código aberto para descoberta de rede e auditoria de segurança. Ele ajuda a identificar hosts e serviços em uma rede de computadores, o que é essencial para que profissionais de segurança cibernética identifiquem vulnerabilidades potenciais e protejam a segurança do sistema.

Ao longo deste laboratório, você aprenderá a realizar a descoberta básica de hosts, identificar portas abertas e detectar serviços em execução. Essas habilidades são vitais para administradores de rede e profissionais de segurança monitorarem a infraestrutura de rede, encontrarem possíveis problemas de segurança e garantirem a proteção adequada do sistema. Ao final, você terá uma base sólida no uso do Nmap para varredura de rede e descoberta de hosts.

Entendendo o Nmap e Configurando o Ambiente

O que é Nmap?

Nmap, abreviação de Network Mapper, é uma ferramenta gratuita e de código aberto. Ele é usado principalmente para descoberta de rede e auditoria de segurança. Para muitos administradores de sistemas e redes, o Nmap é um utilitário muito útil. Aqui estão algumas tarefas comuns onde o Nmap é útil:

  • Inventário de rede e gerenciamento da programação de atualização de serviços: O Nmap pode ajudá-lo a descobrir quais dispositivos estão em sua rede e quais serviços eles estão executando. Essa informação é crucial para planejar quando atualizar esses serviços.
  • Monitoramento do tempo de atividade (uptime) do host ou serviço: Você pode usar o Nmap para verificar se um determinado host ou serviço está ativo e em execução. Isso é importante para garantir a confiabilidade de sua rede.
  • Descoberta de portas abertas em sistemas alvo: Portas abertas podem ser potenciais pontos de entrada para invasores. Ao usar o Nmap, você pode descobrir quais portas estão abertas em um sistema alvo, permitindo que você as proteja, se necessário.
  • Auditoria de segurança e identificação de vulnerabilidades: O Nmap também pode ajudá-lo a identificar vulnerabilidades de segurança em sua rede. Ele pode detectar se há algum ponto fraco que os invasores possam explorar.

Configurando Seu Ambiente de Teste

Antes de começarmos a usar o Nmap para realizar varreduras, precisamos ter um alvo para varrer. Neste caso, configuraremos um servidor HTTP simples usando os recursos integrados do Python.

Primeiro, precisamos navegar para o nosso diretório do projeto. É aqui que todos os nossos arquivos relacionados a este experimento serão armazenados. Para fazer isso, usamos o comando cd no terminal. O comando cd significa "change directory" (mudar diretório). Aqui está o comando:

cd /home/labex/project

Agora que estamos no diretório correto, criaremos um arquivo HTML simples. Este arquivo será servido pelo nosso servidor web. Usamos o comando echo para criar o conteúdo HTML e o operador > para redirecionar esse conteúdo para um arquivo chamado index.html. O arquivo index.html é um nome comum para a página principal de um site. Aqui está o comando:

echo "<html><body><h1>Test Web Server for Nmap Scanning</h1></body></html>" > index.html

Para garantir que o arquivo foi criado corretamente, podemos exibir seu conteúdo usando o comando cat. O comando cat é a abreviação de "concatenate" (concatenar) e é frequentemente usado para visualizar o conteúdo de um arquivo. Aqui está o comando:

cat index.html

Se tudo correu bem, você deverá ver o seguinte conteúdo HTML:

<html><body><h1>Test Web Server for Nmap Scanning</h1></body></html>

Agora, estamos prontos para iniciar nosso servidor HTTP simples. Usaremos o módulo http.server integrado do Python para iniciar um servidor na porta 8000. O & no final do comando é importante. Ele executa o servidor em segundo plano, o que significa que podemos continuar usando o terminal para outros comandos enquanto o servidor está em execução. Aqui está o comando:

python3 -m http.server 8000 &

Após executar este comando, você deverá ver uma saída semelhante a esta:

[1] 1234
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Agora, temos um servidor web em execução na porta 8000. Este servidor está em execução em sua máquina local, com o endereço IP 127.0.0.1. Este servidor local será nosso alvo para as varreduras do Nmap.

Descoberta Básica de Hosts com Nmap

Técnicas de Descoberta de Hosts

A descoberta de hosts, também conhecida como varredura ping, é um processo fundamental em segurança de rede. Ela nos ajuda a descobrir quais hosts estão atualmente ativos e em execução em uma rede. Pense nisso como uma maneira de verificar se há dispositivos conectados ativamente à rede. Nmap, uma poderosa ferramenta de exploração de rede e auditoria de segurança, oferece vários métodos para descoberta de hosts:

  • Solicitações de Eco ICMP (ping): Isso é como enviar uma simples mensagem "olá" para um host e esperar por uma resposta. Se o host estiver ativo, ele responderá, informando que está ativo.
  • Varredura TCP SYN para portas específicas: Este método envia um pacote SYN para portas específicas em um host. Se o host responder, isso indica que a porta está aberta e o host provavelmente está ativo.
  • Varredura TCP ACK: Semelhante à varredura TCP SYN, mas usa pacotes ACK em vez disso. Pode ser útil em determinados ambientes de rede.
  • Varredura UDP: UDP é um tipo diferente de protocolo de rede. A varredura UDP verifica se as portas UDP em um host estão abertas, o que também pode nos ajudar a determinar se o host está ativo.

Nesta etapa, começaremos com uma varredura ping básica para ver se nosso host local está ativo. O host local é o dispositivo em que estamos trabalhando atualmente, e seu endereço IP é 127.0.0.1.

Realizando uma Varredura Ping

Vamos realizar uma varredura ping básica usando o Nmap. Usaremos a flag -sn, que é uma opção importante no Nmap. Essa flag informa ao Nmap para realizar apenas a descoberta de hosts e pular o processo de varredura de portas. A varredura de portas pode consumir muito tempo, especialmente em redes grandes, então essa flag nos ajuda a verificar rapidamente se um host está ativo.

nmap -sn 127.0.0.1

Quando você executar este comando, deverá ver uma saída semelhante a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

A saída mostra que nosso host local (127.0.0.1) está ativo e em execução. O valor de latência (0.000097s) nos informa quanto tempo levou para o host responder à nossa solicitação ping. Uma latência menor significa que o host respondeu rapidamente.

Agora, é uma boa prática salvar os resultados de nossa varredura para referência futura. Podemos fazer isso redirecionando a saída do comando Nmap para um arquivo.

nmap -sn 127.0.0.1 > /home/labex/project/host_scan.txt

O símbolo > é usado para redirecionar a saída do comando à esquerda para o arquivo à direita. Neste caso, os resultados de nossa varredura ping serão salvos no arquivo host_scan.txt.

Vamos visualizar o conteúdo do arquivo para confirmar se os resultados da varredura foram salvos corretamente.

cat /home/labex/project/host_scan.txt

O comando cat é usado para exibir o conteúdo de um arquivo. Quando você executar este comando, deverá ver uma saída semelhante ao que foi exibido no terminal anteriormente.

Este tipo de varredura é muito útil. Ele nos permite identificar rapidamente hosts ativos em uma rede sem gastar tempo em varreduras de portas detalhadas. Isso pode ser especialmente útil ao lidar com redes grandes, onde a varredura de portas em cada host levaria muito tempo.

Varredura de Portas e Detecção de Serviços

Entendendo a Varredura de Portas

A varredura de portas é uma técnica fundamental em segurança de rede. Em uma rede, as portas são como portas pelas quais diferentes serviços se comunicam. Cada serviço, como um servidor web, servidor de e-mail ou serviço de transferência de arquivos, usa uma porta específica para enviar e receber dados. A varredura de portas é um método para determinar quais portas em uma rede estão abertas e potencialmente executando serviços. Essa informação é crucial por vários motivos:

  • Identificação de serviços em execução em um sistema: Ao saber quais portas estão abertas, você pode descobrir quais serviços estão disponíveis em um determinado sistema. Por exemplo, se a porta 80 estiver aberta, geralmente significa que há um servidor web em execução.
  • Encontrando potenciais vulnerabilidades de segurança: Portas abertas podem ser um risco de segurança se não forem configuradas corretamente. Alguns serviços podem ter vulnerabilidades conhecidas e, ao varrer as portas, você pode identificar esses potenciais pontos fracos.
  • Verificando as configurações do firewall: Firewalls são usados para controlar o tráfego de rede. A varredura de portas pode ajudá-lo a verificar se seu firewall está configurado corretamente para bloquear ou permitir portas específicas.
  • Solução de problemas de rede: Se você estiver enfrentando problemas de rede, a varredura de portas pode ajudá-lo a identificar se um serviço específico não está acessível porque sua porta correspondente está fechada.

Varredura de Portas Básica

Vamos realizar uma varredura de portas básica em nosso host local. O host local é seu próprio computador e é representado pelo endereço IP 127.0.0.1. Vamos direcionar especificamente a porta 8000, onde nosso servidor HTTP está em execução. Para fazer isso, usaremos o comando nmap, que é uma ferramenta poderosa para exploração de rede e auditoria de segurança.

nmap -p 8000 127.0.0.1

Neste comando, a opção -p é usada para especificar a porta que queremos varrer. Portanto, estamos dizendo ao nmap para varrer a porta 8000 no host local.

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

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

PORT     STATE SERVICE
8000/tcp open  http-alt

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

A saída mostra que a porta 8000 está aberta e executando um serviço que o Nmap identifica como "http-alt" (porta HTTP alternativa). Isso significa que há um serviço em execução na porta 8000 que é semelhante a um serviço HTTP.

Vamos salvar os resultados em um arquivo. Salvar os resultados é útil porque você pode consultá-los mais tarde ou compartilhá-los com outras pessoas. Para salvar os resultados, usaremos o operador >, que redireciona a saída de um comando para um arquivo.

nmap -p 8000 127.0.0.1 > /home/labex/project/service_scan.txt

Agora, vamos visualizar o conteúdo do arquivo. Podemos usar o comando cat, que é usado para exibir o conteúdo de um arquivo.

cat /home/labex/project/service_scan.txt

Detecção da Versão do Serviço

Agora, vamos usar o recurso de detecção de versão de serviço do Nmap para obter mais informações sobre o serviço em execução na porta 8000. Conhecer a versão de um serviço é importante porque diferentes versões podem ter diferentes vulnerabilidades de segurança.

nmap -p 8000 -sV 127.0.0.1

A flag -sV informa ao Nmap para sondar as portas abertas para determinar informações sobre o serviço e a versão. Quando você executa este comando, o Nmap enviará pacotes especiais para a porta aberta para tentar descobrir qual serviço está em execução e qual é a sua versão.

Você pode ver uma saída como:

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

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python http.server 3.10.6 (Python 3.10.6)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.08 seconds

Esta saída fornece informações mais detalhadas, mostrando que o serviço na porta 8000 é um servidor HTTP Python em execução no Python 3.10.6. Esse tipo de informação é valiosa para avaliações de segurança, pois diferentes versões podem ter vulnerabilidades conhecidas. Por exemplo, se houver uma vulnerabilidade de segurança no Python 3.10.6, você pode tomar medidas para corrigi-la ou atualizar para uma versão mais segura.

Técnicas Avançadas de Varredura com Nmap

Entendendo as Opções Avançadas de Varredura

Nmap é uma ferramenta poderosa que oferece muitas opções avançadas de varredura. Essas opções permitem que você obtenha informações mais detalhadas sobre os sistemas de destino. Nesta etapa, exploraremos três aspectos importantes da varredura avançada:

  1. Detecção de SO (Sistema Operacional): Este é o processo de identificação do sistema operacional em execução no alvo. Conhecer o sistema operacional pode ajudá-lo a entender as potenciais vulnerabilidades e recursos de segurança da máquina de destino.
  2. Varredura Abrangente: Isso envolve a combinação de várias técnicas de varredura para obter uma visão mais detalhada e completa do alvo. Ao usar diferentes métodos de varredura juntos, você pode descobrir mais informações sobre as portas abertas, serviços e sistema operacional do alvo.
  3. Formatação de Saída: Salvar os resultados da varredura em diferentes formatos é crucial para a análise. Diferentes formatos são adequados para diferentes ferramentas e propósitos de análise. Por exemplo, o formato XML é ótimo para processamento posterior com linguagens de programação, enquanto um formato legível por grep é útil para análise rápida baseada em texto.

Detecção de SO

O Nmap tem a capacidade de tentar determinar o sistema operacional em execução em uma máquina de destino. Para fazer isso, usamos a flag -O. No entanto, esta operação requer privilégios administrativos porque envolve uma sondagem mais aprofundada do sistema de destino.

sudo nmap -O 127.0.0.1

Quando você executa este comando, pode ver uma saída semelhante à seguinte:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8000/tcp open  http-alt
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.81 seconds

Esta saída fornece informações valiosas sobre o sistema operacional. Neste caso, ela nos informa que a versão provável do Linux em execução no sistema está entre 4.15 e 5.6.

Varredura Abrangente

Agora, vamos realizar uma varredura mais abrangente que combina vários recursos do Nmap. Isso nos dará uma imagem mais detalhada do sistema de destino.

sudo nmap -sS -sV -O -p 1-1000 127.0.0.1

Este comando inclui várias opções importantes:

  • -sS: Esta é uma varredura TCP SYN, também conhecida como varredura furtiva (stealthy scan). É chamada de furtiva porque não completa a conexão TCP completa, tornando-a menos propensa a ser detectada por sistemas de detecção de intrusão.
  • -sV: Esta opção habilita a detecção da versão do serviço. Ele tenta determinar a versão dos serviços em execução nas portas abertas, o que pode ser útil para identificar potenciais vulnerabilidades.
  • -O: Como vimos antes, isso é para detecção de SO.
  • -p 1-1000: Isso especifica que queremos varrer as portas de 1 a 1000.

Após executar esta varredura abrangente, é uma boa ideia salvar os resultados para análise posterior.

sudo nmap -sS -sV -O -p 1-1000 127.0.0.1 > /home/labex/project/comprehensive_scan.txt

Para visualizar o conteúdo do arquivo salvo, você pode usar o seguinte comando:

cat /home/labex/project/comprehensive_scan.txt

Formatação de Saída

O Nmap permite que você gere os resultados da varredura em diferentes formatos, o que facilita a análise dos dados. Vamos começar salvando os resultados da nossa varredura em formato XML.

sudo nmap -sS -sV -p 8000 127.0.0.1 -oX /home/labex/project/scan_results.xml

A flag -oX é usada para informar ao Nmap para salvar os resultados em formato XML. XML é um formato estruturado que pode ser facilmente analisado por linguagens de programação e outras ferramentas para análise posterior.

Também podemos salvar os resultados em um formato que seja fácil de ler com grep e outras ferramentas de processamento de texto.

sudo nmap -sS -sV -p 8000 127.0.0.1 -oG /home/labex/project/scan_results.grep

Para ver o conteúdo da saída legível por grep, você pode usar o seguinte comando:

cat /home/labex/project/scan_results.grep

Este formato é muito útil para analisar os resultados com scripts e ferramentas de linha de comando, pois permite que você pesquise rapidamente informações específicas.

Análise e Interpretação dos Resultados da Varredura

Entendendo a Saída do Nmap

Quando você usa o Nmap para varrer uma rede, ele fornece muitas informações detalhadas em sua saída. Mas para aproveitar ao máximo o monitoramento de rede e a avaliação de segurança, você precisa entender o que esses resultados realmente significam. Vamos detalhar as partes principais da saída do Nmap.

Estados das Portas

As portas são como portas em uma rede. Elas permitem que diferentes tipos de tráfego de rede entrem e saiam de um dispositivo. O Nmap relata vários estados possíveis para as portas:

  • open (aberta): Isso significa que um aplicativo no dispositivo de destino está ativamente esperando para aceitar conexões nesta porta. Por exemplo, um servidor web pode estar ouvindo na porta 80 ou 443.
  • closed (fechada): A porta é alcançável, mas não há nenhum aplicativo ouvindo nela no momento. É como uma porta que está destrancada, mas não há ninguém dentro para atender.
  • filtered (filtrada): Um firewall ou algum outro obstáculo de rede está bloqueando a porta. É como se houvesse um segurança impedindo você de acessar a porta.
  • unfiltered (não filtrada): A porta é acessível, mas o Nmap não consegue dizer se está aberta ou fechada. É como espiar por uma janela embaçada e não conseguir ver se há alguém lá dentro.
  • open|filtered (aberta|filtrada): O Nmap não pode determinar se a porta está aberta ou filtrada. É um pouco uma zona de incerteza.
  • closed|filtered (fechada|filtrada): Da mesma forma, o Nmap não pode dizer se a porta está fechada ou filtrada.

Informações do Serviço

Quando você usa a opção de detecção de serviço (-sV) com o Nmap, ele tenta descobrir qual serviço está em execução em cada porta aberta. Isso inclui detalhes como o nome do software e sua versão. Conhecer o serviço e sua versão é importante porque pode ajudá-lo a identificar potenciais vulnerabilidades de segurança.

Detecção de SO

Se você usar a opção de detecção de SO (-O), o Nmap fará sua melhor estimativa sobre o sistema operacional em execução no dispositivo de destino. Essa informação pode ser útil para entender a postura geral de segurança do alvo, pois diferentes sistemas operacionais têm diferentes recursos e vulnerabilidades de segurança.

Criando um Relatório Resumido

Agora que entendemos a saída do Nmap, vamos criar um relatório resumido de nossas descobertas. Primeiro, precisamos varrer nossa interface de rede local para obter resultados mais interessantes.

ip addr show | grep "inet " | grep -v "127.0.0.1"

Este comando mostra todas as suas interfaces de rede junto com seus endereços IP. Você precisa encontrar sua interface principal, que geralmente começa com 192.168.x.x ou 10.x.x.x. Isso é importante porque usaremos essas informações para direcionar a rede certa para nossa varredura.

Depois de termos as informações necessárias, podemos criar um relatório resumido simples. Os seguintes comandos criarão um arquivo Markdown com o resumo de nossa varredura.

echo "## Relatório Resumido da Varredura de Rede" > /home/labex/project/scan_summary.md
echo "### Data: $(date)" >> /home/labex/project/scan_summary.md
echo "### Alvo: 127.0.0.1" >> /home/labex/project/scan_summary.md
echo -e "\n#### Portas e Serviços Abertos" >> /home/labex/project/scan_summary.md
echo "Porta 8000: Serviço HTTP (Servidor HTTP Python)" >> /home/labex/project/scan_summary.md
echo -e "\n#### Recomendações de Segurança" >> /home/labex/project/scan_summary.md
echo "1. Certifique-se de que todos os serviços sejam necessários e estejam atualizados" >> /home/labex/project/scan_summary.md
echo "2. Considere implementar regras de firewall para restringir o acesso a serviços sensíveis" >> /home/labex/project/scan_summary.md
echo "3. Varra regularmente por novas portas abertas que possam indicar serviços não autorizados" >> /home/labex/project/scan_summary.md

Depois de criar o relatório, vamos visualizá-lo para ver o que documentamos.

cat /home/labex/project/scan_summary.md

Melhores Práticas para Varredura de Rede

Ao conduzir varreduras de rede, é importante seguir algumas melhores práticas para garantir que você esteja fazendo isso de forma segura e responsável.

Obtenha Permissão

Sempre obtenha permissão antes de varrer redes que você não possui. A varredura sem permissão pode ser ilegal e antiética, pois pode ser vista como uma intrusão.

Limite a Frequência e Intensidade da Varredura

A varredura com muita frequência ou com alta intensidade pode interromper os serviços de rede. Você não quer causar nenhum problema para a rede que está varrendo, então esteja atento à frequência e à agressividade com que você varre.

Mantenha os Resultados da Varredura Confidenciais

Os resultados da varredura podem revelar informações confidenciais sobre a infraestrutura de uma rede, como portas abertas, serviços em execução e o sistema operacional. Mantenha esses resultados privados para evitar acesso não autorizado a essas informações.

Acompanhe as Descobertas

Depois de identificar vulnerabilidades na varredura, tome medidas para corrigi-las. Isso pode envolver a aplicação de patches no software, a alteração de configurações ou a implementação de medidas de segurança.

Documente Suas Varreduras

É importante manter um registro de suas varreduras, incluindo quando você varreu, por que você varreu e o que você varreu. Essa documentação é útil para auditoria de segurança e fins de conformidade.

Vamos documentar nossa atividade de varredura em um arquivo de log.

echo "Log de Varredura - $(date)" > /home/labex/project/scan_log.txt
echo "Propósito: Aprender técnicas de descoberta de host Nmap" >> /home/labex/project/scan_log.txt
echo "Alvo: 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "Varreduras realizadas:" >> /home/labex/project/scan_log.txt
echo "1. Varredura ping básica: nmap -sn 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "2. Varredura de porta na porta 8000: nmap -p 8000 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "3. Detecção da versão do serviço: nmap -p 8000 -sV 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "4. Varredura abrangente: nmap -sS -sV -O -p 1-1000 127.0.0.1" >> /home/labex/project/scan_log.txt

Vamos revisar nosso log de varredura para ver o que registramos.

cat /home/labex/project/scan_log.txt

Este log ajuda você a manter um registro de suas atividades de varredura, o que é crucial para a documentação e auditoria de segurança.

Resumo

Neste laboratório, você aprendeu os fundamentos da varredura de rede e da descoberta de hosts usando o Nmap, uma ferramenta poderosa no kit de ferramentas de um profissional de segurança cibernética. Você começou entendendo o Nmap e configurando um ambiente de teste com um servidor HTTP simples. Em seguida, você explorou várias técnicas de varredura, desde a descoberta básica de hosts até a varredura avançada de portas e a detecção de serviços.

Especificamente, você aprendeu a configurar um ambiente de teste, realizar a descoberta básica de hosts, identificar portas e serviços abertos, usar técnicas avançadas de varredura, salvar resultados de varredura, criar relatórios resumidos e seguir as melhores práticas para varredura responsável. Essas habilidades são uma base sólida para a avaliação e o monitoramento da segurança da rede. À medida que você avança em sua jornada de segurança cibernética, pode construir sobre esses fundamentos para desenvolver estratégias mais sofisticadas. Lembre-se, a varredura de rede deve sempre ser usada de forma responsável e ética, com a devida autorização e em conformidade com os regulamentos.