Introdução
Neste laboratório, você aprenderá como detectar banners de serviços usando o Nmap. O objetivo principal é coletar informações sobre os serviços de rede em execução em uma máquina alvo, como nomes de serviços, versões e sistemas operacionais. Você executará o script de banner em um IP alvo, fará a varredura de portas específicas, adicionará verbosidade à varredura, salvará os resultados e revisará e comparará os banners no terminal Xfce.
Você começará usando o comando nmap --script banner para escanear todas as portas padrão em um alvo. Em seguida, você fará a varredura de portas específicas, aumentará a verbosidade para obter uma saída mais detalhada, salvará os resultados em um arquivo e, finalmente, analisará os banners para entender os serviços em execução no alvo.
Executar o script de banner com nmap --script banner 192.168.1.1
Nesta etapa, usaremos o script de captura de banner do Nmap para identificar os serviços em execução em uma máquina alvo. A captura de banner (banner grabbing) é uma técnica usada para coletar informações sobre um serviço de rede, examinando o banner que ele transmite quando uma conexão é estabelecida. Este banner geralmente contém detalhes como o nome do serviço, versão e sistema operacional.
Primeiro, vamos entender o comando que usaremos:
nmap --script banner 192.168.1.1
nmap: Este é o scanner de rede de linha de comando.--script banner: Esta opção informa ao Nmap para usar o scriptbanner, que é projetado para capturar banners de portas abertas.192.168.1.1: Este é o endereço IP alvo. Você precisará substituir isso pelo endereço IP real de uma máquina em sua rede que você tem permissão para escanear. Para este ambiente de laboratório, usaremos127.0.0.1(localhost) como o alvo. Isso garante que você está escaneando sua própria máquina e evita quaisquer possíveis problemas éticos ou legais.
Agora, vamos executar o comando. Abra seu terminal Xfce e digite o seguinte:
nmap --script banner 127.0.0.1
Este comando irá escanear todas as portas padrão em 127.0.0.1 e tentar capturar banners de quaisquer serviços abertos.
Você pode ver uma saída semelhante a esta (a saída exata dependerá dos serviços em execução em sua máquina):
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.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
Neste exemplo, o Nmap encontrou um serviço SSH em execução na porta 22. O banner revela que é OpenSSH versão 8.2p1 rodando no Ubuntu.
Se você não tiver nenhum serviço em execução em sua máquina, pode não ver nenhuma informação de banner. Não se preocupe, o comando ainda está funcionando. Em etapas posteriores, configuraremos serviços para garantir que tenhamos banners para capturar.
Escanear portas específicas com nmap --script banner -p 22,80 127.0.0.1
Na etapa anterior, escanemos todas as portas padrão usando o script de banner. Agora, vamos nos concentrar em escanear portas específicas. Isso é útil quando você sabe quais serviços lhe interessam ou quando deseja reduzir o tempo de varredura.
O comando que usaremos é:
nmap --script banner -p 22,80 127.0.0.1
Vamos detalhar o comando:
nmap: O scanner de rede.--script banner: Especifica o script de captura de banner.-p 22,80: Esta opção informa ao Nmap para escanear apenas as portas 22 e 80. A porta 22 é comumente usada para SSH (Secure Shell) e a porta 80 é comumente usada para HTTP (servidor web).127.0.0.1: O endereço IP alvo (localhost).
Antes de executar o comando, vamos garantir que temos serviços em execução nessas portas. A VM do LabEx deve ter o SSH em execução na porta 22 por padrão. Vamos instalar um servidor web simples na porta 80.
Abra seu terminal Xfce e execute os seguintes comandos para instalar um servidor HTTP básico usando Python:
sudo apt update
sudo apt install -y python3-pip
sudo python3 -m pip install http.server
Agora, inicie o servidor HTTP na porta 80. Navegue para o seu diretório ~/project primeiro.
cd ~/project
python3 -m http.server 80
Mantenha esta janela do terminal aberta e executando o servidor HTTP. Abra uma nova janela do terminal Xfce para continuar com a varredura do Nmap.
Agora, na nova janela do terminal, execute o comando Nmap:
nmap --script banner -p 22,80 127.0.0.1
Você deve ver uma saída semelhante a esta:
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.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
Esta saída mostra que o Nmap escaneou as portas 22 e 80, capturou os banners e exibiu as informações do serviço. Você pode ver o banner SSH e o banner do servidor SimpleHTTP.
Lembre-se de parar o servidor http do python depois de terminar esta etapa pressionando Ctrl+C no terminal onde ele está sendo executado.
Adicionar verbosidade com nmap -v --script banner 192.168.1.1
Nesta etapa, adicionaremos verbosidade à nossa varredura do Nmap. A verbosidade fornece informações mais detalhadas sobre o processo de varredura, o que pode ser útil para solucionar problemas ou entender o que o Nmap está fazendo nos bastidores.
O comando que usaremos é:
nmap -v --script banner 127.0.0.1
Vamos detalhar o comando:
nmap: O scanner de rede.-v: Esta opção aumenta o nível de verbosidade. Você pode usar-vvpara ainda mais verbosidade.--script banner: Especifica o script de captura de banner.127.0.0.1: O endereço IP alvo (localhost).
Antes de executar o comando, certifique-se de que o servidor http do python ainda está em execução da etapa anterior. Caso contrário, inicie-o novamente em uma janela de terminal separada:
cd ~/project
python3 -m http.server 80
Agora, em uma nova janela do terminal, execute o comando Nmap com verbosidade:
nmap -v --script banner 127.0.0.1
Você deve ver uma saída semelhante a esta (a saída exata dependerá dos serviços em execução em sua máquina):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Initiating Ping Scan at 10:10
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:10
Completed Parallel DNS resolution of 1 host. at 10:10, 0.00s elapsed
Initiating Connect Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed Connect Scan at 10:10, 0.00s elapsed (1000 total ports)
Initiating Service scan at 10:10
Scanning 2 services on localhost (127.0.0.1)
Completed Service scan at 10:10, 0.01s elapsed (2 services total)
Initiating NSE script scan at 10:10
Scanning localhost (127.0.0.1)
Completed NSE script scan at 10:10, 0.09s elapsed
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
Observe as informações adicionais fornecidas pela opção -v. Você pode ver os diferentes estágios da varredura, como o Ping Scan, a resolução DNS e o Connect Scan. Isso pode ser muito útil para entender como o Nmap funciona e para diagnosticar quaisquer problemas.
Lembre-se de parar o servidor http do python depois de terminar esta etapa pressionando Ctrl+C no terminal onde ele está sendo executado.
Salvar resultados do banner com nmap --script banner -oN banners.txt 127.0.0.1
Nesta etapa, salvaremos os resultados da nossa varredura do Nmap em um arquivo. Isso é útil para análise posterior ou para fins de relatório.
O comando que usaremos é:
nmap --script banner -oN banners.txt 127.0.0.1
Vamos detalhar o comando:
nmap: O scanner de rede.--script banner: Especifica o script de captura de banner.-oN banners.txt: Esta opção informa ao Nmap para salvar os resultados no formato "normal" em um arquivo chamadobanners.txt. Outros formatos de saída estão disponíveis (por exemplo,-oGpara saída Grepable,-oXpara saída XML), mas-oNé um formato legível por humanos.127.0.0.1: O endereço IP alvo (localhost).
Antes de executar o comando, certifique-se de que o servidor http do python ainda está em execução da etapa anterior. Caso contrário, inicie-o novamente em uma janela de terminal separada:
cd ~/project
python3 -m http.server 80
Agora, em uma nova janela do terminal, execute o comando Nmap para salvar os resultados em um arquivo:
nmap --script banner -oN banners.txt 127.0.0.1
Você não verá os resultados da varredura impressos no terminal desta vez. Em vez disso, o Nmap salvará a saída no arquivo banners.txt no seu diretório atual (~/project).
Para verificar se o arquivo foi criado e contém os resultados da varredura, você pode usar o comando cat:
cat banners.txt
Você deve ver uma saída semelhante a esta no terminal:
## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_
## Nmap done at Fri Oct 27 10:15:00 2023 -- 1 IP address (1 host up) scanned in 0.10 seconds
Isso confirma que os resultados da varredura foram salvos no arquivo banners.txt.
Lembre-se de parar o servidor http do python depois de terminar esta etapa pressionando Ctrl+C no terminal onde ele está sendo executado.
Revisar detalhes do banner no terminal Xfce
Nesta etapa, revisaremos os detalhes do banner que salvamos no arquivo banners.txt na etapa anterior. Usaremos o terminal Xfce para visualizar o conteúdo do arquivo e entender as informações que ele contém.
Primeiro, certifique-se de ter o arquivo banners.txt em seu diretório ~/project. Se você não concluiu a etapa anterior, faça-o antes de prosseguir.
Para visualizar o conteúdo do arquivo banners.txt, abra uma janela do terminal e use o comando cat:
cat banners.txt
A saída exibirá o conteúdo do arquivo, que deve ser semelhante a este:
## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
Other addresses for localhost (alias(es)): localhost
PORT STATE SERVICE
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
80/tcp open http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_
## Nmap done at Fri Oct 27 10:20:00 2023 -- 1 IP address (1 host up) scanned in 0.10 seconds
Vamos analisar a saída:
Nmap scan report for localhost (127.0.0.1): Isso indica que a varredura foi realizada no localhost (127.0.0.1).Host is up: Isso confirma que o host de destino está acessível.PORT STATE SERVICE: Esta seção fornece informações sobre as portas abertas no host de destino.22/tcp open ssh: Isso indica que a porta 22 está aberta e executando o serviço SSH.| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5: Esta é a informação do banner para o serviço SSH. Ele revela a versão do SSH e o sistema operacional.80/tcp open http: Isso indica que a porta 80 está aberta e executando o serviço HTTP.| banner: Server: SimpleHTTP/3.10 Python/3.10: Esta é a informação do banner para o serviço HTTP. Ele revela o software do servidor e a versão.
Ao revisar os detalhes do banner, você pode obter informações valiosas sobre os serviços em execução no host de destino. Essas informações podem ser usadas para análise de vulnerabilidade ou para identificar potenciais riscos de segurança.
Lembre-se de parar o servidor http do python depois de terminar esta etapa pressionando Ctrl+C no terminal onde ele está sendo executado.
Comparar banners em diferentes portas no terminal Xfce
Nesta etapa, compararemos as informações do banner obtidas de diferentes portas. Isso pode nos ajudar a identificar os serviços em execução nessas portas e entender suas versões. Usaremos o terminal Xfce e o comando grep para extrair e comparar as informações do banner do arquivo banners.txt.
Primeiro, certifique-se de ter o arquivo banners.txt em seu diretório ~/project, que contém os resultados da varredura do Nmap das etapas anteriores.
Para extrair as informações do banner para a porta 22 (SSH), use o seguinte comando:
grep "22/tcp" banners.txt
Isso exibirá a linha contendo informações sobre a porta 22, incluindo o banner:
22/tcp open ssh
| banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_
Da mesma forma, para extrair as informações do banner para a porta 80 (HTTP), use o seguinte comando:
grep "80/tcp" banners.txt
Isso exibirá a linha contendo informações sobre a porta 80, incluindo o banner:
80/tcp open http
| banner: Server: SimpleHTTP/3.10 Python/3.10
|_
Agora, vamos comparar as informações do banner. Podemos ver que:
- A porta 22 está executando SSH, e o banner revela que é a versão OpenSSH 8.2p1 no Ubuntu.
- A porta 80 está executando HTTP, e o banner revela que é um servidor SimpleHTTP implementado em Python 3.10.
Ao comparar as informações do banner, podemos identificar rapidamente os serviços em execução nessas portas e suas versões. Essa informação é valiosa para avaliações de segurança e análise de vulnerabilidades. Por exemplo, saber a versão específica do SSH ou do servidor HTTP nos permite verificar se há vulnerabilidades conhecidas associadas a essas versões.
Neste exemplo simples, comparamos apenas duas portas. No entanto, você pode estender essa técnica para comparar banners em muitas portas e hosts diferentes para obter uma compreensão abrangente dos serviços de rede em execução em seu ambiente.
Lembre-se de parar o servidor http do python depois de terminar esta etapa pressionando Ctrl+C no terminal onde ele está sendo executado.
Resumo
Neste laboratório, os participantes aprendem a usar o Nmap para detectar banners de serviço. Eles começam executando o script de banner com nmap --script banner em um IP de destino, usando 127.0.0.1 para evitar questões éticas e legais. Eles também aprendem a escanear portas específicas, adicionar verbosidade à varredura e salvar os resultados em um arquivo. Por fim, eles revisam e comparam os detalhes do banner no terminal Xfce.



