Aprenda os Fundamentos da Varredura de Rede com Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá os fundamentos da varredura de rede usando o Nmap. O Nmap é uma ferramenta poderosa e versátil, amplamente utilizada por administradores de rede e profissionais de segurança. É um utilitário de código aberto para descoberta de rede e auditoria de segurança, capaz de escanear redes para encontrar hosts e serviços, identificar sistemas operacionais e detectar vulnerabilidades.

Através de exercícios práticos, você entenderá como realizar diferentes tipos de varreduras de portas (port scans). Você também aprenderá a interpretar os resultados da varredura e obter insights sobre as técnicas de avaliação de segurança de rede.

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 91%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Entendendo Portas e Configurando o Ambiente

Antes de começarmos a aprender sobre varredura de portas (port scanning), é crucial entender o que são portas no contexto de redes de computadores. As portas atuam como pontos de extremidade de comunicação. Elas permitem que diferentes processos em um computador compartilhem recursos de rede. Pense nelas como portas pelas quais os dados podem entrar e sair de um computador. Existem um total de 65.535 portas disponíveis, e elas são divididas em três intervalos:

  • Portas bem conhecidas (Well-known ports): São portas numeradas de 0 a 1023. Elas são reservadas para serviços específicos. Por exemplo, a porta 80 é usada para HTTP (Hypertext Transfer Protocol), que é o protocolo usado para transferir páginas da web. A porta 22 é usada para SSH (Secure Shell), que é um protocolo para acessar com segurança um computador remoto.
  • Portas registradas (Registered ports): Essas portas variam de 1024 a 49151. Elas são registradas na Internet Assigned Numbers Authority (IANA). Embora sejam registradas, usuários comuns também podem usá-las para suas próprias aplicações.
  • Portas dinâmicas/privadas (Dynamic/Private ports): Essas portas estão no intervalo de 49152 a 65535. Elas estão livremente disponíveis para uso temporário. As aplicações podem usar essas portas quando precisam estabelecer uma conexão de curto prazo.

Nesta etapa, vamos configurar um serviço local em nosso ambiente de laboratório. Vamos escanear este serviço mais tarde. Essa abordagem prática ajudará você a entender como o Nmap, uma poderosa ferramenta de varredura de portas, detecta portas abertas e os serviços em execução nelas.

Primeiro, abra um terminal. Um terminal é uma interface baseada em texto onde você pode inserir comandos para interagir com seu computador. Depois que o terminal estiver aberto, você precisa ter certeza de que está no diretório do projeto. O diretório do projeto é onde todos os arquivos relacionados a este experimento são armazenados. Você pode navegar até o diretório do projeto executando o seguinte comando:

cd /home/labex/project

Em seguida, criaremos um servidor HTTP simples em sua máquina. Usaremos o módulo de servidor HTTP embutido do Python. Este servidor ouvirá na porta 8080. Ouvir em uma porta significa que o servidor está esperando por solicitações recebidas nessa porta específica. Este servidor será o alvo de nossas varreduras Nmap. Para iniciar o servidor, execute o seguinte comando:

python3 -m http.server 8080 &

Após executar este comando, a saída deve ser semelhante a:

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

O símbolo & no final do comando é importante. Ele executa o processo em segundo plano. Isso significa que o servidor continuará em execução e você poderá continuar usando o terminal para inserir outros comandos.

Para verificar se o servidor está em execução, verificaremos as portas de escuta. Podemos fazer isso executando o seguinte comando:

ss -tuln | grep 8080

O comando ss é usado para exibir estatísticas de socket. As opções -tuln dizem ao comando para mostrar sockets TCP, UDP, de escuta e exibir endereços numéricos. O símbolo | é um pipe, que pega a saída do comando ss e a passa para o comando grep. O comando grep então procura a string 8080 na saída.

Se o servidor estiver executando corretamente, a saída deve mostrar que a porta 8080 está sendo usada:

tcp   LISTEN  0       1            0.0.0.0:8080      0.0.0.0:*

Esta saída confirma que nosso servidor HTTP está em execução como esperado e está pronto para ser escaneado pelo Nmap.

Varredura Básica de Portas com Nmap

Agora que nosso servidor HTTP está em execução, estamos prontos para começar a realizar varreduras de portas básicas usando o Nmap. Mas primeiro, vamos entender o que é varredura de portas. A varredura de portas é uma técnica fundamental em segurança de rede. Ela nos ajuda a descobrir quais portas em um host estão abertas. As portas são como portas em um prédio; cada serviço em execução em um computador usa uma porta específica para se comunicar. Para administradores de rede, saber quais portas estão abertas garante que seus serviços estejam operando conforme o esperado. Para profissionais de segurança, é um passo crucial na identificação de potenciais vulnerabilidades, pois portas abertas podem, às vezes, ser exploradas por invasores.

Primeiro, precisamos garantir que o Nmap esteja instalado em nosso sistema. O Nmap é uma poderosa ferramenta de varredura de rede que usaremos ao longo deste experimento. Para verificar se ele está instalado, podemos executar o seguinte comando no terminal:

nmap --version

Este comando solicita ao sistema que exiba a versão do Nmap instalada. Se o Nmap estiver instalado corretamente, você deverá ver uma saída semelhante a esta:

Nmap version 7.80 ( https://nmap.org )

Realizando uma Varredura de Portas Básica

Agora que confirmamos que o Nmap está instalado, vamos realizar uma varredura básica para verificar se a porta 8080 está aberta em nosso localhost. O localhost se refere ao computador em que estamos trabalhando atualmente, representado pelo endereço IP 127.0.0.1. Para realizar a varredura, execute o seguinte comando:

nmap -p 8080 localhost

Neste comando, a flag -p é usada para especificar qual porta ou portas queremos escanear. Aqui, estamos interessados apenas na porta 8080. Quando você executa este comando, o Nmap enviará pacotes de rede especiais para a porta 8080 no localhost e analisará as respostas para determinar se a porta está aberta.

Você deve ver uma saída semelhante a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-01 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

Esta saída nos fornece informações importantes. Ela nos diz que a porta 8080 está aberta e que o Nmap identificou o serviço em execução nesta porta como "http-proxy".

Em seguida, queremos salvar a saída desta varredura em um arquivo. Salvar os resultados da varredura é útil porque podemos consultá-los mais tarde para análise adicional. Para salvar a saída, execute o seguinte comando:

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

Neste comando, o símbolo > é usado para redirecionar a saída da varredura Nmap para um arquivo chamado basic_scan.txt localizado no diretório /home/labex/project.

Para verificar se a saída foi salva corretamente, podemos usar o comando cat. O comando cat é usado para exibir o conteúdo de um arquivo. Execute o seguinte comando:

cat /home/labex/project/basic_scan.txt

Você deve ver a mesma saída de antes, agora salva no arquivo.

Compreendendo a Saída

Vamos dar uma olhada mais de perto na saída de nossa varredura Nmap para entender o que cada linha significa:

  • Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-01 10:00 UTC: Esta linha nos diz quando a varredura Nmap começou. É útil para acompanhar quando a varredura foi realizada.
  • Nmap scan report for localhost (127.0.0.1): Esta linha identifica o host de destino da varredura. Neste caso, é o localhost com o endereço IP 127.0.0.1.
  • Host is up (0.00020s latency): Esta linha confirma que o host de destino está online. O valor de latência indica quanto tempo leva para os pacotes de rede viajarem para o host e voltarem. Uma latência muito baixa é esperada para o localhost porque é o mesmo computador em que estamos trabalhando.
  • PORT STATE SERVICE: Este é o cabeçalho para os resultados da varredura de portas. Ele nos diz quais informações serão exibidas nas linhas a seguir.
  • 8080/tcp open http-proxy: Esta linha indica que a porta 8080 está aberta. A parte /tcp especifica o tipo de protocolo de rede usado (TCP, que é um protocolo comum para transferência de dados confiável). O Nmap identificou o serviço em execução nesta porta como "http-proxy".
  • Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds: Esta linha resume a varredura. Ela nos diz que o Nmap escaneou um endereço IP (o localhost), descobriu que o host estava ativo e concluiu a varredura em 0,05 segundos.

Técnicas Avançadas de Varredura Nmap

Agora que concluímos com sucesso uma varredura de portas básica, é hora de levar nossas habilidades para o próximo nível e explorar algumas técnicas de varredura Nmap mais avançadas. O Nmap é uma ferramenta poderosa que oferece inúmeras opções para reunir informações detalhadas sobre serviços de rede. Essas informações são cruciais tanto para a administração de rede quanto para a avaliação de segurança. Ao usar técnicas de varredura avançadas, você pode descobrir mais sobre os sistemas em sua rede, o que ajuda a identificar potenciais riscos de segurança e a gerenciar sua rede de forma mais eficaz.

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

Um dos recursos mais úteis do Nmap é sua capacidade de determinar qual serviço e versão estão em execução em uma porta aberta. Conhecer o serviço e sua versão é essencial porque ajuda a identificar potenciais vulnerabilidades associadas a versões específicas do serviço. Muitas vulnerabilidades de software estão ligadas a versões específicas, portanto, ao conhecer a versão exata em execução em uma porta, você pode verificar rapidamente se há algum problema de segurança conhecido.

Para realizar uma varredura de detecção de versão de serviço na porta 8080, você precisa executar o seguinte comando:

nmap -sV -p 8080 localhost

Neste comando, a flag -sV é a chave. Ela informa ao Nmap para sondar portas abertas para determinar informações do serviço. O -p 8080 especifica que queremos escanear a porta 8080, e localhost indica que estamos escaneando nossa própria máquina.

A saída deste comando deve ser semelhante à seguinte:

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

PORT     STATE SERVICE VERSION
8080/tcp open  http    SimpleHTTPServer 0.6 (Python 3.10.12)

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

Como você pode ver, o Nmap agora fornece informações mais detalhadas sobre o serviço em execução na porta 8080. Ele identifica o serviço como um Python SimpleHTTPServer, juntamente com sua versão e a versão do Python em que ele está sendo executado.

Agora, vamos salvar essas informações valiosas em um arquivo. Você pode fazer isso executando o seguinte comando:

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

O símbolo > é usado para redirecionar a saída do comando nmap para o arquivo especificado.

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

cat /home/labex/project/advanced_scan.txt

Compreendendo a Diferença Entre Varreduras Básicas e Avançadas

Vamos comparar a varredura básica e a varredura avançada para entender por que as varreduras avançadas são tão úteis.

  1. Varredura Básica (nmap -p 8080 localhost): Quando você executa uma varredura básica, ela apenas informa que a porta 8080 está aberta e executando um serviço. Com base no número da porta, o Nmap faz uma suposição de que o serviço pode ser "http-proxy". No entanto, esta é apenas uma estimativa aproximada e não fornece informações detalhadas sobre o serviço real.

  2. Varredura Avançada (nmap -sV -p 8080 localhost): Em contraste, uma varredura avançada fornece informações muito mais detalhadas. Ela informa o nome exato do serviço (SimpleHTTPServer), sua versão (0.6) e até mesmo a linguagem de programação e sua versão (Python 3.10.12) em que o serviço está sendo executado.

Essas informações adicionais são valiosas por vários motivos:

  • Identificação de serviços desatualizados: Ao conhecer a versão exata de um serviço, você pode verificar facilmente se é uma versão desatualizada que pode ter vulnerabilidades conhecidas. Se for o caso, você pode tomar medidas para atualizar o serviço e proteger sua rede.
  • Compreensão de sua rede: Você pode obter uma imagem clara de exatamente qual software está sendo executado em sua rede. Isso ajuda no gerenciamento de rede e na alocação de recursos.
  • Planejamento de medidas de segurança: Você pode planejar medidas de segurança que são específicas para os serviços em execução em seus sistemas. Por exemplo, se você souber que um determinado serviço tem uma vulnerabilidade conhecida, poderá implementar controles de segurança direcionados.

Outras Opções Úteis do Nmap

O Nmap oferece muitas outras opções de varredura que podem ser combinadas para realizar diferentes tipos de varreduras. Aqui estão algumas das opções mais comumente usadas:

  • -sS: Esta é uma varredura TCP SYN, também conhecida como varredura furtiva (stealth scan). É uma maneira rápida e furtiva de escanear portas porque não completa a conexão TCP completa, tornando-a mais difícil de detectar.
  • -O: Esta opção permite a detecção do sistema operacional. Ela permite que o Nmap tente determinar o sistema operacional em execução na máquina de destino.
  • -A: Uma varredura agressiva que combina vários recursos, incluindo detecção de SO, detecção de versão, varredura de script e traceroute. Ele fornece uma visão abrangente do sistema de destino.
  • -T<0-5>: Esta opção é usada para definir o modelo de tempo (timing template). Um número mais alto significa uma varredura mais rápida, mas também pode aumentar a chance de ser detectado.
  • -Pn: Esta opção trata todos os hosts como online, ignorando a fase de descoberta do host. É útil quando você sabe que o destino está online e deseja economizar tempo.

Por exemplo, se você deseja realizar uma varredura rápida de todas as portas bem conhecidas em sua máquina local, pode usar o seguinte comando:

nmap -F localhost

A opção -F (fast) informa ao Nmap para escanear menos portas do que a varredura padrão. Isso é útil quando você deseja obter uma visão geral rápida das portas abertas em um sistema.

Observação: Em uma avaliação de segurança de rede real, é importante ter a autorização adequada antes de escanear quaisquer sistemas. A varredura não autorizada pode ser contra a lei em muitas jurisdições.

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

Nesta etapa, vamos aprender a entender e analisar os resultados de nossas varreduras Nmap. Quando se trata de segurança de rede, ser capaz de ler a saída da varredura é essencial. Isso ajuda você a tomar decisões bem informadas sobre a segurança de sua rede. Por exemplo, você pode identificar potenciais vulnerabilidades ou pontos de acesso não autorizados com base nos resultados da varredura.

Comparando Diferentes Tipos de Varredura

Vamos conduzir mais alguns tipos de varreduras para ver como suas saídas diferem. Primeiro, realizaremos uma varredura abrangente. Este tipo de varredura inclui todas as opções comuns, o que nos dá uma visão detalhada do alvo.

nmap -A -p 8080 localhost > /home/labex/project/comprehensive_scan.txt

Neste comando, a flag -A é muito importante. Ela habilita opções de varredura agressivas. Essas opções incluem detectar o sistema operacional do alvo, descobrir a versão dos serviços em execução, procurar scripts disponíveis e realizar um traceroute. Ao usar esta flag, podemos reunir muitas informações úteis sobre o alvo.

Agora, vamos dar uma olhada nos resultados desta varredura abrangente.

cat /home/labex/project/comprehensive_scan.txt

A saída será bastante detalhada. Conterá informações sobre o serviço em execução na porta 8080, quaisquer scripts possíveis que poderiam ser executados contra o serviço e outros detalhes relevantes. Essas informações detalhadas podem nos ajudar a entender melhor a situação de segurança do alvo.

Compreendendo os Estados das Portas

O Nmap relata vários estados possíveis para as portas. Cada estado nos diz algo diferente sobre o status da porta.

  • open (aberta): Isso significa que um aplicativo está aceitando ativamente conexões TCP ou pacotes UDP nesta porta. É como uma porta que está aberta e pronta para receber visitantes.
  • closed (fechada): A porta está acessível, mas não há nenhum aplicativo ouvindo nela. É como uma porta que está destrancada, mas ninguém está dentro para atender.
  • filtered (filtrada): O Nmap não pode determinar se a porta está aberta porque a filtragem de pacotes impede que suas sondas alcancem a porta. É como se houvesse um segurança bloqueando a visão da porta pelo Nmap.
  • unfiltered (não filtrada): A porta está acessível, mas o Nmap não pode dizer se está aberta ou fechada. É como olhar para uma porta e não ser capaz de dizer se alguém está dentro.
  • open|filtered (aberta|filtrada): O Nmap não pode determinar se a porta está aberta ou filtrada. É um estado incerto em que não temos certeza se a porta está aberta ou bloqueada.
  • closed|filtered (fechada|filtrada): O Nmap não pode determinar se a porta está fechada ou filtrada. Semelhante ao estado anterior, não temos certeza se a porta está trancada ou bloqueada.

Vamos ver como esses estados aparecem em nossos resultados de varredura, varrendo uma faixa de portas.

nmap -p 8080-8085 localhost > /home/labex/project/port_states.txt

Depois que a varredura for concluída, podemos visualizar os resultados.

cat /home/labex/project/port_states.txt

Você deve ver que a porta 8080 é relatada como aberta, enquanto as outras portas na faixa provavelmente são relatadas como fechadas. Isso nos dá uma ideia de quais portas estão sendo usadas ativamente e quais não estão.

Análise Prática dos Resultados

Agora, vamos criar um relatório resumido extraindo as informações-chave de nossos resultados de varredura. Usaremos o comando grep para filtrar as portas abertas. Portas abertas são muito importantes para a avaliação de segurança porque são potenciais pontos de entrada para invasores.

grep "open" /home/labex/project/comprehensive_scan.txt > /home/labex/project/open_ports.txt

Após a filtragem, podemos visualizar os resultados.

cat /home/labex/project/open_ports.txt

Esta saída filtrada facilita o foco nas portas abertas. Em vez de olhar para todo o relatório de varredura detalhado, podemos ver rapidamente quais portas estão abertas e começar a avaliar seus riscos de segurança.

Implicações de Segurança

Compreender as implicações de segurança dos resultados de sua varredura é crucial. Aqui estão alguns pontos-chave a serem lembrados.

  1. Portas Abertas Desnecessárias: Qualquer porta aberta é um potencial ponto de entrada para invasores. Se um serviço não for necessário, ele deve ser desativado. Por exemplo, se você tiver uma porta aberta para um serviço que não usa mais, um invasor poderá usar essa porta para obter acesso ao seu sistema.
  2. Serviços Desatualizados: Versões mais antigas de serviços podem ter vulnerabilidades conhecidas que os invasores podem explorar. É importante manter seus serviços atualizados para evitar esses riscos.
  3. Serviços Mal Configurados: Mesmo serviços atualizados podem ser vulneráveis se estiverem mal configurados. Um pequeno erro na configuração pode expor seu sistema a ataques.

Em nosso ambiente de laboratório, abrimos intencionalmente a porta 8080 para o servidor HTTP. Mas em um ambiente de produção do mundo real, você precisaria avaliar cuidadosamente se esse serviço é necessário e se ele está devidamente protegido.

Parando o Servidor HTTP

Antes de terminarmos esta etapa, vamos limpar parando o servidor HTTP que iniciamos anteriormente. Primeiro, precisamos encontrar seu ID de processo.

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

Quando você executa este comando, procure a linha que mostra nosso processo do servidor HTTP. A segunda coluna na saída contém o ID do processo (PID). Depois de encontrar o PID, você pode usá-lo para parar o servidor.

kill <PID>

Substitua <PID> pelo ID do processo real da saída do comando anterior.

Alternativamente, você pode usar o seguinte comando para encontrar e matar o processo em uma etapa.

pkill -f "python3 -m http.server"

Depois de parar o servidor, precisamos verificar se ele não está mais em execução.

ss -tuln | grep 8080

Se não houver saída, significa que o servidor foi interrompido com sucesso.

Resumo

Neste laboratório, você aprendeu os fundamentos da varredura de rede usando o Nmap, uma ferramenta poderosa e amplamente utilizada na indústria de segurança cibernética. Primeiro, você compreendeu o conceito de portas e suas funções em redes de computadores. Em seguida, você configurou um servidor HTTP local para praticar a varredura de um serviço do mundo real.

Você conduziu várias varreduras Nmap, desde varreduras de portas básicas até a detecção avançada da versão do serviço. Você aprendeu a interpretar os resultados da varredura, entendendo os estados das portas e suas implicações de segurança. Você também praticou a filtragem de resultados para avaliações de segurança. Essas habilidades são cruciais para administradores de rede e profissionais de segurança para identificar portas abertas, detectar vulnerabilidades, tomar decisões de segurança informadas e documentar configurações de rede. Ao dominar essas técnicas, você deu um passo significativo em direção à proficiência em avaliação e administração de segurança de rede. Sempre obtenha a autorização adequada antes de escanear sistemas em cenários do mundo real, pois a varredura não autorizada pode ser ilegal.