Enumerar Serviços HTTP no Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, o objetivo é aprender a enumerar serviços HTTP usando o Nmap. Você começará executando uma enumeração HTTP no localhost 127.0.0.1 com o script http-enum. Em seguida, você escaneará a porta 80, adicionará um user agent e salvará os resultados da enumeração. Finalmente, você revisará as descobertas HTTP e as comparará com um escaneamento de banner no terminal Xfce.

Lembre-se, em cenários do mundo real, você só deve escanear redes e sistemas com permissão explícita.

Executar enumeração HTTP com nmap --script http-enum 127.0.0.1

Nesta etapa, usaremos o Nmap com o script http-enum para enumerar serviços HTTP no localhost. Este script ajuda a identificar potenciais vulnerabilidades e configurações incorretas, descobrindo arquivos e diretórios comuns de servidores web.

Antes de começarmos, vamos discutir brevemente o que são Nmap e scripts NSE. Nmap ("Network Mapper") é uma utilidade gratuita e de código aberto para descoberta de rede e auditoria de segurança. O NSE (Nmap Scripting Engine) permite que os usuários escrevam scripts para automatizar uma ampla variedade de tarefas de rede. O script http-enum é um desses scripts NSE projetado para enumerar recursos HTTP comuns.

Para este laboratório, teremos como alvo o endereço IP do localhost 127.0.0.1. Esta é uma abordagem segura para aprendizado, pois estamos escaneando nossa própria máquina local.

Agora, vamos executar o comando Nmap:

sudo nmap --script http-enum 127.0.0.1

Este comando diz ao Nmap para:

  • sudo: Executar o comando com privilégios de superusuário, que podem ser necessários para certas operações do Nmap.
  • nmap: Invocar a ferramenta Nmap.
  • --script http-enum: Especificar que queremos usar o script http-enum.
  • 127.0.0.1: O endereço IP alvo a ser escaneado (localhost).

Após executar o comando, você verá uma saída semelhante à seguinte (a saída exata dependerá do sistema alvo):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

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

A saída mostra que o script http-enum encontrou alguns recursos interessantes na porta 8080:

  • /robots.txt: Um arquivo que especifica quais partes do site não devem ser rastreadas por robôs da web.
  • /session/: Um diretório potencialmente interessante que pode conter arquivos ou funcionalidades relacionadas à sessão.

Essas descobertas podem ser investigadas posteriormente para identificar potenciais vulnerabilidades ou configurações incorretas.

Escanear a porta 8080 com nmap --script http-enum -p 8080 127.0.0.1

Nesta etapa, focaremos nosso escaneamento Nmap em uma porta específica, a porta 8080, usando o script http-enum. Especificar uma porta pode ajudar a refinar o escaneamento e fornecer resultados mais direcionados. Estaremos escaneando 127.0.0.1, que é o endereço de loopback, representando a máquina local. Isso é útil para testar serviços em execução em seu próprio sistema.

Vamos detalhar o comando que usaremos:

sudo nmap --script http-enum -p 8080 127.0.0.1

Aqui está o que cada parte do comando significa:

  • sudo: Executa o comando com privilégios de superusuário. Isso pode ser necessário para obter resultados precisos, especialmente em números de porta mais baixos.
  • nmap: Invoca a ferramenta Nmap.
  • --script http-enum: Especifica que queremos usar o script http-enum para enumerar recursos HTTP.
  • -p 8080: Esta opção diz ao Nmap para escanear apenas a porta 8080. A porta 8080 é comumente usada como uma porta HTTP alternativa, muitas vezes para servidores de desenvolvimento ou serviços proxy.
  • 127.0.0.1: O endereço IP alvo, neste caso, o endereço de loopback, que se refere à máquina local.

Agora, execute o comando em seu terminal:

sudo nmap --script http-enum -p 8080 127.0.0.1

A saída será semelhante a esta (a saída exata dependerá dos serviços em execução em sua máquina local):

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

PORT     STATE SERVICE
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

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

Neste exemplo, o script http-enum encontrou /robots.txt e /session/. Estes são recursos comuns em servidores web, e uma investigação adicional pode revelar mais informações sobre a configuração do servidor e potenciais vulnerabilidades. Ao especificar a porta 8080, focamos o escaneamento e recebemos resultados específicos para o serviço HTTP em execução na máquina local.

Adicionar user agent com nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

Nesta etapa, personalizaremos o cabeçalho User-Agent usado pelo script http-enum. O cabeçalho User-Agent é enviado pelo cliente (neste caso, o Nmap) para o servidor e identifica o software cliente. Modificar o User-Agent pode ser útil por vários motivos, como:

  • Contornar medidas básicas de segurança: Alguns servidores podem bloquear requisições de ferramentas de escaneamento conhecidas. Alterar o User-Agent pode ajudar a evitar esses bloqueios.
  • Testar o comportamento do servidor: Você pode observar como o servidor responde a diferentes strings de User-Agent.
  • Discrição: Usar um User-Agent menos comum pode tornar seus escaneamentos menos perceptíveis.

Usaremos a opção --script-args para modificar o valor de http.useragent.

Aqui está o comando que usaremos:

sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

Vamos detalhar este comando:

  • sudo: Executa o comando com privilégios de superusuário.
  • nmap: Invoca a ferramenta Nmap.
  • --script http-enum: Especifica que queremos usar o script http-enum.
  • --script-args http.useragent=Test: Esta é a parte chave. Ela passa um argumento para o script http-enum. Especificamente, define a variável http.useragent para o valor "Test". Isso significa que, quando o script enviar requisições HTTP, ele usará "Test" como o cabeçalho User-Agent.
  • 127.0.0.1: O endereço IP alvo a ser escaneado (localhost).

Execute o comando em seu terminal:

sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1

A saída será semelhante à saída da primeira etapa, mas as requisições HTTP enviadas ao servidor agora incluirão o cabeçalho User-Agent: Test. Você não verá o User-Agent diretamente na saída do Nmap, mas ele será usado em segundo plano durante o escaneamento.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

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

Esta etapa demonstra como personalizar scripts Nmap usando a opção --script-args. Isso permite que você ajuste o comportamento dos scripts e os adapte a situações específicas.

Salvar resultados do enum com nmap --script http-enum -oN http_enum.txt 127.0.0.1

Nesta etapa, salvaremos os resultados do script http-enum em um arquivo. Isso é crucial para análises e relatórios posteriores. O Nmap fornece várias opções para salvar resultados de escaneamento em diferentes formatos. Usaremos a opção -oN, que salva os resultados em um formato "normal" legível por humanos.

Aqui está o comando que usaremos:

sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1

Vamos detalhar este comando:

  • sudo: Executa o comando com privilégios de superusuário.
  • nmap: Invoca a ferramenta Nmap.
  • --script http-enum: Especifica que queremos usar o script http-enum.
  • -oN http_enum.txt: Esta opção diz ao Nmap para salvar os resultados em formato normal no arquivo chamado http_enum.txt. O arquivo será criado em seu diretório atual (~/project).
  • 127.0.0.1: O endereço IP alvo a ser escaneado (o endereço de loopback).

Execute o comando em seu terminal:

sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1

A saída no terminal será semelhante à saída das etapas anteriores, mas além de exibir os resultados na tela, o Nmap também os salvará no arquivo http_enum.txt.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

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

Para verificar se o arquivo foi criado e contém os resultados do escaneamento, você pode usar o comando cat para exibir o conteúdo do arquivo:

cat http_enum.txt

Você deverá ver os resultados do escaneamento Nmap na saída. Este arquivo agora pode ser usado para análises posteriores, relatórios ou como entrada para outras ferramentas.

Revisar descobertas HTTP no terminal Xfce

Nesta etapa, revisaremos as descobertas HTTP do arquivo http_enum.txt que criamos na etapa anterior. Usaremos o terminal Xfce e o comando cat para exibir o conteúdo do arquivo e analisar os resultados.

Primeiro, certifique-se de estar no diretório ~/project. É aqui que o arquivo http_enum.txt deve estar localizado.

Para visualizar o conteúdo do arquivo http_enum.txt, use o seguinte comando:

cat http_enum.txt

Este comando imprimirá o conteúdo do arquivo em seu terminal.

Exemplo de saída (a saída real pode variar dependendo do alvo):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
3001/tcp open  nessus
8080/tcp open  http-proxy
| http-enum:
|   /robots.txt: Robots file
|_  /session/: Potentially interesting folder

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

Agora, vamos analisar a saída. O script http-enum tenta identificar arquivos e diretórios potencialmente interessantes no servidor web. Neste exemplo, ele encontrou:

  • /robots.txt: Este arquivo fornece instruções aos robôs da web (crawlers) sobre quais partes do site não devem ser indexadas. Às vezes, ele pode revelar áreas ocultas ou sensíveis do site.
  • /session/: Este é um diretório potencialmente interessante que pode conter arquivos relacionados à sessão, arquivos de configuração ou outras informações sensíveis.

Ao revisar essas descobertas, você pode obter uma melhor compreensão da estrutura do servidor web e identificar áreas potenciais para investigação adicional. Por exemplo, você pode usar um navegador web para visitar http://127.0.0.1:8080/robots.txt e http://127.0.0.1:8080/session/ para ver o que eles contêm.

Esta etapa demonstra como revisar a saída de scripts Nmap e identificar informações potencialmente interessantes. Esta é uma parte crucial do processo de reconhecimento.

Nesta etapa, realizaremos um escaneamento de banner usando Nmap e compararemos seus resultados com as descobertas do script http-enum. O "banner grabbing" é uma técnica usada para coletar informações sobre um serviço examinando o banner que ele apresenta quando uma conexão é estabelecida. Isso pode revelar a versão do software e outros detalhes.

Primeiro, vamos realizar um escaneamento de banner na porta 8080 do alvo (127.0.0.1) usando Nmap. Usaremos a opção -sV, que habilita a detecção de versão:

sudo nmap -sV -p 8080 127.0.0.1

Este comando tentará determinar o serviço e a versão em execução na porta 8080.

Exemplo de saída:

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

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

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

Neste exemplo, o escaneamento de banner revela que o servidor web é SimpleHTTPServer 0.6 executando em Python 3.7.5.

Agora, vamos comparar essas informações com as descobertas do script http-enum, que revisamos na etapa anterior. O script http-enum identificou arquivos e diretórios potenciais, como /robots.txt e /session/.

Ao comparar os resultados do escaneamento de banner e do script http-enum, podemos construir uma imagem mais completa do sistema alvo. O escaneamento de banner fornece informações sobre as versões do software, enquanto o script http-enum revela arquivos e diretórios potenciais. Essas informações combinadas podem ser valiosas para identificar vulnerabilidades e planejar ataques adicionais.

Por exemplo, saber a versão do software do servidor web permite que você procure por vulnerabilidades conhecidas específicas para essa versão. Os arquivos e diretórios identificados podem então ser alvos de exploração.

Esta etapa demonstra a importância de combinar diferentes técnicas de escaneamento para coletar informações abrangentes sobre um sistema alvo.

Resumo

Neste laboratório, os participantes aprenderam a enumerar serviços HTTP usando o script http-enum do Nmap. Eles executaram comandos para escanear o localhost (127.0.0.1), visando a porta 8080, adicionando um user agent personalizado e salvando os resultados em um arquivo de texto. O laboratório enfatizou o uso de privilégios de superusuário para certas operações e demonstrou práticas de escaneamento seguras ao usar o localhost.

Após a execução dos escaneamentos, os participantes revisaram as descobertas HTTP e compararam os resultados com um escaneamento de banner no terminal Xfce, ajudando-os a identificar potenciais vulnerabilidades e configurações incorretas no servidor web local. Essa abordagem prática proporcionou experiência com técnicas de reconhecimento de rede.