Aprenda Técnicas Básicas de Varredura Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre o Nmap, uma ferramenta crucial para descoberta de rede e auditoria de segurança. Amplamente utilizado por administradores de rede e profissionais de segurança, o Nmap ajuda a identificar portas abertas, detectar serviços em execução e descobrir potenciais vulnerabilidades de rede.

Neste laboratório, você também aprenderá técnicas básicas de varredura do Nmap. Compreender as configurações de rede por meio da varredura é uma habilidade fundamental em cibersegurança. Ao final, você será capaz de executar varreduras básicas do Nmap e interpretar sua saída, estabelecendo uma base sólida para tarefas avançadas 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 96%. Recebeu uma taxa de avaliações positivas de 95% dos estudantes.

Configurando um Servidor Web para Varredura

Nesta etapa, vamos configurar um servidor web simples usando o Docker. Docker é uma plataforma poderosa que permite empacotar aplicativos junto com todas as suas dependências em unidades padronizadas chamadas contêineres. Esses contêineres podem ser facilmente implantados e executados em diferentes sistemas. Ao configurar este servidor web, teremos um alvo para varrer com o Nmap nas próximas etapas.

Primeiro, abra uma janela de terminal. O terminal é uma interface de linha de comando onde você pode inserir comandos para interagir com seu sistema. Depois que o terminal estiver aberto, você precisa navegar para o diretório do projeto. Este diretório servirá como sua área de trabalho para este laboratório.

Para navegar para o diretório do projeto, use o comando cd. O comando cd significa "change directory" (mudar diretório). Aqui está o comando que você precisa executar:

cd /home/labex/project

2. Criando um Dockerfile

Um Dockerfile é uma parte crucial da construção de imagens Docker. É um documento de texto que contém uma série de comandos que o Docker usa para construir uma imagem. Neste caso, vamos criar um Dockerfile para um servidor web simples baseado em Nginx, que é um software de servidor web popular.

Para criar um novo arquivo chamado Dockerfile, usaremos o editor de texto nano. nano é um editor de texto simples e fácil de usar que você pode usar diretamente no terminal. Execute o seguinte comando:

nano Dockerfile

Após executar este comando, o editor nano será aberto, e você poderá começar a adicionar conteúdo ao Dockerfile. Adicione as seguintes linhas ao arquivo:

## Use the nginx image as the base
FROM nginx

## Expose port 80
EXPOSE 80

O comando FROM diz ao Docker para usar a imagem nginx como base para nossa nova imagem. O comando EXPOSE indica que o contêiner ouvirá na porta 80.

Para salvar o arquivo, pressione Ctrl+O e depois Enter. Para sair do editor, pressione Ctrl+X.

3. Construindo a Imagem Docker

Agora que temos nosso Dockerfile pronto, podemos construir a imagem Docker. Uma imagem é como um blueprint que contém todos os arquivos e configurações necessários para executar um aplicativo.

Para construir a imagem, execute o seguinte comando:

docker build -t cyber-seed-portal .

Neste comando, a flag -t é usada para marcar a imagem. Estamos marcando nossa imagem como "cyber-seed-portal". O . no final do comando diz ao Docker para usar o diretório atual como o contexto de construção.

Quando você executa este comando, o Docker iniciará o processo de construção, e a saída será algo parecido com isto:

Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM nginx
latest: Pulling from library/nginx
a803e7c4b030: Pull complete
8b625c47d697: Pull complete
4d3239651a63: Pull complete
0f816efa513d: Pull complete
01d159b8db2f: Pull complete
5fb9a81470f3: Pull complete
Digest: sha256:32da30332506740a2f7c34d5dc70467b7dfe6c23451f6c66c84eeb3cdadab213
Status: Downloaded newer image for nginx:latest
 ---> 61395b4c586d
Step 2/2 : EXPOSE 80
 ---> Running in 1c2d5e2a8e7f
Removing intermediate container 1c2d5e2a8e7f
 ---> 7683abcf62b0
Successfully built 7683abcf62b0
Successfully tagged cyber-seed-portal:latest

4. Executando o Contêiner Docker

Depois que a imagem é construída, podemos criar e executar um contêiner a partir dela. Um contêiner é uma instância em execução de uma imagem.

Para executar um contêiner, use o seguinte comando:

docker run --name cyber-seed-server -d -p 8080:80 cyber-seed-portal

Vamos detalhar este comando:

  • --name cyber-seed-server: Isso dá ao contêiner o nome "cyber-seed-server". Nomear o contêiner facilita o gerenciamento e a identificação.
  • -d: Isso executa o contêiner em modo detached (desanexado), o que significa que o contêiner será executado em segundo plano, e você pode continuar usando o terminal para outras tarefas.
  • -p 8080:80: Isso mapeia a porta 8080 da sua máquina para a porta 80 do contêiner. Portanto, quando você acessa a porta 8080 em sua máquina, ela será redirecionada para a porta 80 dentro do contêiner.
  • cyber-seed-portal: Isso especifica a imagem na qual o contêiner será baseado.

Quando você executa este comando, a saída será um ID do contêiner, algo como:

3a7b1a23c3c5d17b3e4b3e5e6f7g8h9i

Você agora configurou com sucesso um servidor web em execução em um contêiner Docker. Você pode acessar este servidor em http://localhost:8080. Este servidor será o alvo para suas varreduras Nmap nas próximas etapas.

Descobrindo Portas Abertas com Nmap

Nesta etapa, vamos usar o Nmap para descobrir quais portas estão abertas em sua máquina local. Compreender as portas abertas é uma habilidade básica, mas crucial em segurança de rede. Portas são como portas de entrada para um computador em uma rede. Cada porta pode ser usada por diferentes serviços, e saber quais portas estão abertas nos ajuda a descobrir quais serviços são acessíveis na rede.

Entendendo o Nmap

Nmap, que significa Network Mapper (Mapeador de Rede), é uma ferramenta gratuita e de código aberto. É usado principalmente para descoberta de rede e auditoria de segurança. Pense nisso como um detetive para sua rede. Administradores de sistema e rede costumam usar o Nmap para acompanhar o que está em sua rede, planejar quando atualizar serviços e verificar se hosts ou serviços estão ativos e em execução.

Varrendo por Portas Abertas

Agora, usaremos o Nmap para varrer seu localhost, que tem o endereço IP 127.0.0.1, para encontrar portas abertas. A opção -p- no Nmap é como dizer a ele para verificar cada porta possível em seu computador. Existem um total de 65535 portas TCP, e esta opção faz com que o Nmap as verifique todas.

Execute o seguinte comando em seu terminal:

nmap -p- localhost

Este comando levará algum tempo para ser concluído porque está varrendo um grande número de portas. Depois de concluído, a saída será algo parecido com isto:

Starting Nmap 7.80  at 2024-03-15 10:59 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 65529 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
3000/tcp  open  ppp
3001/tcp  open  nessus
3002/tcp  open  exlm-agent
8080/tcp  open  http-proxy
36921/tcp open  unknown

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

Entendendo os Resultados da Varredura

Os resultados da varredura nos dão muitas informações úteis sobre sua máquina. Vamos detalhar as colunas:

  • PORT: Esta coluna mostra o número da porta e o protocolo, que neste caso é TCP. O número da porta é como o endereço específico de uma porta em seu computador, e TCP é a maneira como os dados são enviados por essa porta.
  • STATE: Esta coluna nos diz se a porta está aberta, fechada ou filtrada. Uma porta aberta significa que um serviço está ouvindo nessa porta e pronto para aceitar conexões. Uma porta fechada significa que não há nenhum serviço ouvindo. Uma porta filtrada pode estar bloqueada por um firewall.
  • SERVICE: Esta coluna mostra o serviço comum que geralmente usa essa porta.

Nos resultados da varredura, você deve ver a porta 8080/tcp listada como aberta. Na etapa anterior, mapeamos esta porta para nosso contêiner Docker. O serviço "http-proxy" indica que esta porta é comumente usada para serviços de proxy HTTP, mas em nossa situação, ela está sendo usada pelo servidor web Nginx.

Outras portas abertas que você pode ver incluem:

  • Porta 22 (SSH): Esta porta é usada para acesso remoto seguro. Ele permite que você se conecte ao seu computador de outro local de forma segura.
  • Portas 3000 - 3002: Essas portas são usadas por vários serviços. Elas podem estar relacionadas a ambientes de desenvolvimento ou outros aplicativos em execução em sua máquina.
  • Porta 36921: Este é um serviço desconhecido. Pode ser um serviço personalizado ou algo que o Nmap não consegue identificar imediatamente.

Agora que você encontrou as portas abertas em sua máquina, você concluiu com sucesso sua primeira varredura Nmap. Nas próximas etapas, aprenderemos técnicas de varredura Nmap mais avançadas.

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

Nesta etapa, exploraremos como usar os recursos de detecção de versão de serviço do Nmap. Este é um recurso poderoso que nos ajuda a descobrir quais serviços estão sendo executados nas portas abertas de um sistema alvo. Compreender os serviços e suas versões é crucial para avaliações de segurança e gerenciamento de rede.

Entendendo a Detecção de Versão de Serviço

Apenas saber que uma porta está aberta nos dá algumas informações básicas. No entanto, identificar o serviço específico e sua versão fornece insights muito mais valiosos. Diferentes versões de serviços podem ter diferentes vulnerabilidades de segurança. Por exemplo, uma versão mais antiga de um servidor web pode ter falhas de segurança conhecidas que foram corrigidas em versões mais recentes. Ao saber a versão do serviço, podemos verificar se há alguma vulnerabilidade conhecida e tomar as medidas apropriadas para proteger nossa rede.

Realizando uma Varredura de Versão de Serviço

O Nmap fornece a opção -sV para habilitar a detecção de versão de serviço. Quando você usa esta opção, o Nmap enviará sondas especiais para as portas abertas no sistema alvo. Essas sondas são projetadas para coletar informações sobre os serviços em execução nessas portas, como o nome do serviço e sua versão.

Vamos executar uma varredura de versão de serviço em seu localhost. O localhost se refere ao seu próprio computador. Para fazer isso, execute o seguinte comando em seu terminal:

nmap -sV localhost

Este comando diz ao Nmap para realizar uma varredura de versão de serviço em sua máquina local. Após executar o comando, o Nmap começará a enviar sondas para as portas abertas em seu localhost e coletará informações sobre os serviços em execução nelas.

A saída do comando será algo parecido com isto:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 11:30 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
3000/tcp open  ppp?
3001/tcp open  nessus?
3002/tcp open  ssl/nessus?
8080/tcp open  http        nginx 1.23.4
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Entendendo os Resultados da Varredura de Versão de Serviço

A saída da varredura de versão de serviço fornece informações detalhadas sobre os serviços em execução em cada porta aberta. Vamos detalhar as partes importantes:

  • Porta 22: A saída mostra que a porta 22 está aberta e executando o serviço SSH (Secure Shell). A versão específica é OpenSSH 8.2p1, que está sendo executada em um sistema Ubuntu. SSH é um protocolo usado para acesso remoto seguro a um computador.
  • Porta 8080: Esta porta está aberta e executando o serviço HTTP, especificamente o servidor web Nginx versão 1.23.4. Nginx é um servidor web popular usado para servir páginas web.

Para as portas 3000 - 3002, você notará pontos de interrogação ao lado dos nomes dos serviços. Isso significa que o Nmap não conseguiu determinar os serviços exatos em execução nessas portas com certeza. Em tais casos, pode ser necessária uma investigação mais aprofundada. Você pode usar outras ferramentas ou técnicas para coletar mais informações sobre esses serviços.

Esta informação detalhada sobre as versões dos serviços é extremamente valiosa para avaliações de segurança. Você pode usar essas informações para verificar se as versões específicas dos serviços têm alguma vulnerabilidade conhecida. Por exemplo, se você descobrir que está executando uma versão mais antiga do Nginx, pode pesquisar se há algum problema de segurança associado a essa versão e considerar a atualização para uma versão mais recente e segura.

Ao usar a detecção de versão de serviço do Nmap, você foi além de apenas identificar portas abertas. Agora você tem uma compreensão mais profunda dos serviços de rede em execução em seu sistema, o que é essencial para manter uma rede segura e bem gerenciada.

Detecção de Sistema Operacional com Nmap

Nesta etapa, vamos aprender como usar o recurso de detecção de sistema operacional do Nmap. Mas primeiro, vamos entender por que isso é importante. Conhecer o sistema operacional em execução em uma máquina alvo é como ter uma informação chave para administradores de rede e profissionais de segurança. Isso os ajuda a entender as potenciais vulnerabilidades e riscos de segurança associados a essa máquina.

Entendendo a Detecção de SO

A detecção de sistema operacional é um recurso mais avançado do Nmap. Quando você usa este recurso, o Nmap envia pacotes especiais para a máquina alvo e analisa as respostas que recebe de volta. Com base nessas respostas, o Nmap faz uma estimativa informada sobre o sistema operacional em execução no alvo. Diferentes sistemas operacionais têm diferentes maneiras de lidar com solicitações de rede, e o Nmap usa essas diferenças para descobrir o que está sendo executado na outra extremidade. Essa informação é crucial para avaliações de segurança porque diferentes sistemas operacionais têm diferentes conjuntos de vulnerabilidades. Por exemplo, uma versão mais antiga do Windows pode ter falhas de segurança conhecidas que uma distribuição Linux mais recente não tem.

Realizando uma Varredura de Detecção de SO

Para realizar uma varredura de detecção de sistema operacional, usaremos a opção -O no Nmap. No entanto, este recurso requer privilégios de root porque envolve o envio de certos tipos de pacotes de rede que usuários normais não podem enviar. Portanto, precisaremos usar sudo para executar o comando com privilégios administrativos.

Execute o seguinte comando em seu terminal:

sudo nmap -O localhost

Ao executar este comando, você pode ser solicitado a inserir sua senha sudo. Esta é uma medida de segurança para garantir que apenas usuários autorizados possam realizar ações com privilégios administrativos. Depois de inserir sua senha, o Nmap iniciará a varredura.

A saída será semelhante à seguinte:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:00 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
3001/tcp open  nessus
3002/tcp open  ssl/nessus
8080/tcp open  http-proxy
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.36 seconds

Entendendo os Resultados da Detecção de SO

Os resultados da detecção de SO nos dão muitas informações úteis sobre o sistema operacional do alvo. Vamos detalhar as diferentes partes dos resultados:

  • Device type (Tipo de dispositivo): Isso nos diz a categoria geral do dispositivo. Por exemplo, pode ser um computador de uso geral, um roteador ou uma impressora. Em nosso caso, diz "general purpose (uso geral)", o que significa que provavelmente é um computador normal.
  • Running (Em execução): Isso mostra a família do sistema operacional detectado e a faixa de versão. Aqui, diz "Linux 4.X|5.X", o que significa que o Nmap detectou que a máquina está executando um sistema operacional Linux com uma versão de kernel na faixa 4.X ou 5.X.
  • OS CPE: Isso significa Common Platform Enumeration (Enumeração de Plataforma Comum). Ele fornece identificadores padronizados para o sistema operacional, que podem ser usados para pesquisas adicionais e análise de vulnerabilidades.
  • OS details (Detalhes do SO): Isso nos dá informações mais específicas sobre a versão do sistema operacional. Em nosso exemplo, diz "Linux 4.15 - 5.6", o que significa que a versão do kernel está entre 4.15 e 5.6.
  • Network Distance (Distância da Rede): Isso indica a quantos saltos de rede o alvo está. Como estamos varrendo o localhost, que é a própria máquina local, a distância da rede é de 0 saltos.

Neste caso, o Nmap identificou corretamente que a máquina está executando Linux, especificamente uma versão de kernel entre 4.15 e 5.6.

Esta informação é extremamente útil em avaliações de segurança. Ao conhecer a versão do sistema operacional, os profissionais de segurança podem pesquisar vulnerabilidades conhecidas associadas a essa versão e tomar as medidas apropriadas para proteger o sistema. Também é valioso para o inventário e gerenciamento de rede, pois ajuda a controlar quais sistemas operacionais estão sendo executados em diferentes máquinas na rede.

Ao usar o recurso de detecção de SO do Nmap, você expandiu sua compreensão do sistema alvo além de apenas saber quais portas estão abertas e quais serviços estão sendo executados. Agora você tem uma ideia melhor do sistema operacional subjacente, que é uma informação crucial para segurança e gerenciamento de rede.

Varredura de Scripts com Nmap

Nesta etapa final, vamos explorar o mecanismo de script do Nmap (NSE). O NSE é uma parte realmente importante do Nmap que o torna ainda mais útil. Ele permite que os usuários escrevam e compartilhem scripts para automatizar diferentes tarefas de rede. Isso significa que você pode usar scripts para fazer as coisas de forma mais rápida e eficiente do que fazê-las manualmente.

Entendendo o Nmap Scripting Engine (NSE)

O Nmap Scripting Engine (NSE) é um dos recursos mais poderosos e flexíveis do Nmap. Pense nele como uma caixa de ferramentas que oferece ferramentas extras para trabalhar com redes. Você pode escrever scripts na linguagem de programação Lua. Lua é uma linguagem simples e fácil de aprender, o que a torna ótima para escrever esse tipo de script.

Esses scripts podem ser usados para muitos propósitos diferentes:

  • Descoberta de rede: Isso ajuda você a descobrir quais dispositivos estão em uma rede.
  • Detecção de versão: Você pode descobrir quais versões de software estão sendo executadas em um dispositivo.
  • Detecção de vulnerabilidade: Ele pode encontrar pontos fracos de segurança em um sistema.
  • Detecção de backdoor: Ajuda você a encontrar maneiras ocultas que os invasores podem usar para acessar um sistema.
  • Exploração de vulnerabilidade: Embora isso deva ser feito em um ambiente de teste legal e ético, ele pode mostrar como um invasor pode se aproveitar de uma vulnerabilidade.

O Nmap vem com um monte de scripts pré-escritos. Esses scripts são organizados em bibliotecas com base no que eles fazem. Portanto, se você deseja realizar uma determinada tarefa, pode encontrar facilmente o script certo na biblioteca relevante.

Realizando uma Varredura de Script Básica

Para começar com uma varredura de script básica, usaremos a opção -sC. Esta opção diz ao Nmap para executar um conjunto padrão de scripts. Esses scripts padrão são projetados para serem seguros e não intrusivos. Isso significa que eles não causarão nenhum dano ao sistema alvo enquanto estiverem fazendo seu trabalho.

Vamos executar o seguinte comando:

nmap -sC localhost

Ao executar este comando, o Nmap iniciará a varredura em sua máquina local. Ele usará os scripts padrão para coletar informações sobre as portas abertas e os serviços em execução nelas. A saída será algo parecido com isto:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:30 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef (RSA)
|   256 fe:dc:ba:98:76:54:32:10:fe:dc:ba:98:76:54:32:10 (ECDSA)
|_  256 01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef (ED25519)
3000/tcp open  ppp
3001/tcp open  nessus
3002/tcp open  ssl/nessus
8080/tcp open  http-proxy
|_http-title: Welcome to nginx!

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

Executando um Script Específico

Se você deseja executar um script específico, pode usar a opção --script. Após esta opção, você precisa especificar o nome do script ou a categoria a que ele pertence.

Por exemplo, digamos que você queira obter o título de uma página web. Existe um script chamado http - title que pode fazer isso por você. Para executar este script, use o seguinte comando:

nmap --script=http-title -p 8080 localhost

Este comando diz ao Nmap para executar o script http - title na porta 8080 de sua máquina local. A saída será assim:

Starting Nmap 7.80 ( https://nmap.org ) at 2024-03-15 12:35 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy
|_http-title: Welcome to nginx!

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

Entendendo os Resultados da Varredura de Script

Os resultados da varredura de script fornecem informações mais detalhadas sobre os serviços em execução nas portas abertas.

  • Para o serviço SSH na porta 22, o script ssh - hostkey recuperou as chaves do host. Essas chaves são importantes para a comunicação segura via SSH.
  • Para o serviço HTTP na porta 8080, o script http - title buscou o título da página web, que é "Welcome to nginx!".

Esse tipo de informação é muito útil para avaliações de segurança. Ele ajuda você a entender como os serviços no sistema alvo são configurados e como eles se comportam.

Ao usar o mecanismo de script do Nmap, você explorou um de seus recursos mais poderosos. Este recurso pode economizar muito tempo e esforço quando se trata de descoberta de rede e tarefas de avaliação de segurança.

Limpando

Agora que você terminou todas as etapas de varredura, é hora de limpar. No início do laboratório, você criou um contêiner Docker. Precisamos parar e remover este contêiner para manter seu sistema limpo.

Execute o seguinte comando:

docker stop cyber-seed-server && docker rm cyber-seed-server

Este comando primeiro para o contêiner Docker em execução chamado cyber - seed - server. Em seguida, ele remove o contêiner do seu sistema.

Parabéns! Você concluiu com sucesso todas as etapas deste laboratório. Você ganhou valiosa experiência prática com diferentes técnicas de varredura do Nmap.

Resumo

Neste laboratório, você aprendeu os fundamentos da varredura de rede usando o Nmap, uma ferramenta de segurança cibernética popular e poderosa. Você configurou um contêiner Docker como um alvo de varredura, criando um ambiente prático para aplicar suas novas habilidades.

Você progrediu por uma série de técnicas avançadas de varredura do Nmap, começando com uma varredura de porta básica em sua máquina local. Em seguida, você aprendeu a detecção de versão de serviço, detecção de SO e usou o mecanismo de script do Nmap para automatizar tarefas e coletar mais informações sobre o alvo. Essas habilidades são a base das avaliações de segurança de rede, cruciais para administradores de rede e profissionais de segurança. Dominar essas técnicas do Nmap oferece uma ferramenta poderosa para cenários do mundo real, desde o inventário de rede até as avaliações de segurança.