Introdução
Neste laboratório, você aprenderá a utilizar o Nmap Scripting Engine (NSE). O laboratório cobre a execução de scripts padrão, o uso de scripts específicos, a adição de argumentos aos scripts, a atualização de scripts, o teste de múltiplos scripts e a visualização da saída do script no terminal Xfce. Você executará comandos como nmap -sC, nmap --script e nmap --script-updatedb contra endereços IP alvo para realizar várias varreduras e coletar informações.
Executar scripts padrão com nmap -sC 192.168.1.1
Nesta etapa, exploraremos como usar o Nmap para executar seu conjunto padrão de scripts contra um alvo. Os scripts do Nmap são ferramentas poderosas que podem automatizar uma ampla gama de tarefas, desde a identificação de vulnerabilidades até a coleta de informações sobre um sistema alvo. A opção -sC informa ao Nmap para usar a categoria de script "padrão". Esta categoria inclui scripts que são considerados seguros e úteis para varredura de uso geral.
Antes de começarmos, vamos garantir que estamos no diretório correto.
cd ~/project
Agora, vamos executar o Nmap com a opção -sC contra o endereço IP alvo 192.168.1.1. Este endereço IP é um espaço reservado. Em um cenário do mundo real, você o substituiria pelo endereço IP real do alvo que deseja varrer. Para este ambiente de laboratório, assumiremos que 192.168.1.1 é um alvo válido.
sudo nmap -sC 192.168.1.1
Este comando executará uma varredura Nmap padrão, incluindo uma varredura de portas e detecção de serviços, e então executará os scripts padrão contra quaisquer portas abertas. A saída mostrará os resultados da varredura de portas, detecção de serviços e qualquer informação coletada pelos scripts.
A saída terá uma aparência semelhante a esta (a saída exata variará dependendo do sistema alvo):
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu)
| ssh-hostkey:
| 2048 ... (RSA)
| ssh-rsa ...
|_ssh-algorithm: ...
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_clock-skew: mean: -1s, deviation: 0s, median: -1s
|_nbstat: NetBIOS name: ..., NetBIOS user: ..., NetBIOS MAC: ... (unknown)
| smb-os-discovery:
| OS: Unix
| ...
|_ System time: ...
Nmap done: 1 IP address (1 host up) scanned in ... seconds
Neste exemplo, a saída mostra que a porta 22 está aberta e executando SSH. O script ssh-hostkey identificou a chave do host SSH, e o script ssh-algorithm identificou os algoritmos suportados. O script clock-skew detectou uma ligeira diferença de tempo no sistema alvo. Os scripts nbstat e smb-os-discovery coletaram informações sobre os serviços NetBIOS e SMB, respectivamente.
Usar script específico com nmap --script banner 127.0.0.1
Nesta etapa, aprenderemos como usar um script Nmap específico. O Nmap possui uma grande biblioteca de scripts que podem ser usados para realizar várias tarefas. Usaremos o script banner, que tenta recuperar o banner de um serviço em execução em um host alvo. Banners geralmente contêm informações sobre a versão do software e outros detalhes que podem ser úteis para reconhecimento.
Primeiro, certifique-se de estar no diretório ~/project:
cd ~/project
Agora, vamos usar o comando nmap com a opção --script para especificar o script banner e direcionar o endereço IP do localhost, 127.0.0.1.
sudo nmap --script banner 127.0.0.1
Este comando informa ao Nmap para executar o script banner contra todas as portas abertas em 127.0.0.1. A saída mostrará os resultados do script, incluindo quaisquer banners que foram recuperados.
A saída pode ser semelhante a esta (a saída exata dependerá dos serviços em execução no seu localhost):
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000028s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
631/tcp open ipp
5900/tcp open vnc
8000/tcp open http
8080/tcp open http
Host script results:
|_banner: SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
|_banner: 111/tcp: rpcbind version 2-4
|_banner: 631/tcp: CUPS v2.4.1
|_banner: 5900/tcp: RFB 003.008
|_banner: 8000/tcp: Werkzeug/2.0.1 Python/3.9.7
|_banner: 8080/tcp: Jetty(9.4.44.v20210927)
Nmap done: 1 IP address (1 host up) scanned in ... seconds
Neste exemplo, o script banner recuperou com sucesso banners de vários serviços em execução em 127.0.0.1, incluindo SSH, rpcbind, CUPS, VNC e servidores HTTP. Os banners fornecem informações sobre as versões de software que estão sendo usadas.
Adicionar argumentos com nmap --script http-title --script-args http.useragent=Test 192.168.1.1
Nesta etapa, aprenderemos como passar argumentos para scripts Nmap. Alguns scripts exigem ou permitem que argumentos sejam personalizados. Usaremos o script http-title e modificaremos seu argumento http.useragent. O script http-title recupera o título de um servidor HTTP. O argumento http.useragent especifica a string User-Agent que o script usará ao fazer solicitações HTTP.
Primeiro, vamos navegar para o nosso diretório de trabalho:
cd ~/project
Agora, vamos executar o Nmap com a opção --script para especificar o script http-title e a opção --script-args para definir o argumento http.useragent como Test. Usaremos o endereço IP alvo 192.168.1.1. Lembre-se que, em um cenário real, você o substituiria pelo endereço IP real de um alvo executando um servidor HTTP.
sudo nmap --script http-title --script-args http.useragent=Test 192.168.1.1
Este comando informa ao Nmap para executar o script http-title contra quaisquer portas HTTP abertas em 192.168.1.1, usando "Test" como a string User-Agent.
A saída pode ser semelhante a esta (a saída exata dependerá do sistema alvo e da sua configuração do servidor HTTP):
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http nginx 1.18.0
|_http-title: Test
Nmap done: 1 IP address (1 host up) scanned in ... seconds
Neste exemplo, o script http-title recuperou com sucesso o título do servidor HTTP em execução na porta 80 de 192.168.1.1. O argumento http.useragent foi usado para definir a string User-Agent como "Test" na solicitação HTTP. O servidor pode registrar esta string User-Agent, o que pode ser útil para identificar varreduras. Se o alvo não tiver a porta 80 aberta, você verá uma saída diferente.
Atualizar scripts com nmap --script-updatedb
Nesta etapa, atualizaremos o banco de dados de scripts do Nmap. O Nmap Scripting Engine (NSE) depende de um banco de dados de scripts. Com o tempo, novos scripts são adicionados e os scripts existentes são atualizados. Para garantir que você tenha os scripts mais recentes, você deve atualizar periodicamente o banco de dados de scripts.
Primeiro, certifique-se de estar no diretório ~/project:
cd ~/project
Agora, vamos usar o comando nmap com a opção --script-updatedb para atualizar o banco de dados de scripts.
sudo nmap --script-updatedb
Este comando fará o download das informações mais recentes do script e atualizará o banco de dados. A saída mostrará o progresso da atualização.
A saída pode ser semelhante a esta:
Starting Nmap 7.80 ( https://nmap.org ) at ...
NSE: Updating rule database.
NSE: Using nmap.org/svn/nse_svn to download the latest scripts.
Downloaded nmap-mac-prefixes.lua
Downloaded nselib/data/nmap-services.
Downloaded nselib/data/service-ports.
Downloaded scripts/script.db
NSE: Script database updated.
Nmap done: 0 IP addresses (0 hosts up) scanned in ... seconds
Esta saída indica que o banco de dados de scripts foi atualizado com sucesso. Agora você tem os scripts Nmap mais recentes disponíveis para uso.
Testar múltiplos scripts com nmap --script banner,http-title 127.0.0.1
Nesta etapa, executaremos múltiplos scripts Nmap simultaneamente. Isso permite que você colete mais informações sobre um alvo em uma única varredura. Usaremos os scripts banner e http-title contra o alvo 127.0.0.1.
Primeiro, vamos navegar para o nosso diretório de trabalho:
cd ~/project
Agora, vamos executar o Nmap com a opção --script, especificando os scripts banner e http-title, separados por vírgula. Usaremos o endereço IP alvo 127.0.0.1, que se refere à máquina local.
sudo nmap --script banner,http-title 127.0.0.1
Este comando informa ao Nmap para executar os scripts banner e http-title contra quaisquer portas abertas em 127.0.0.1. O script banner tenta recuperar banners de serviço, enquanto o script http-title recupera o título de quaisquer servidores HTTP.
A saída pode ser semelhante a esta (a saída exata dependerá dos serviços em execução em 127.0.0.1):
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000018s latency).
Loopback interface ignored
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu)
| banner: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1
|_ssh-hostkey:
80/tcp open http nginx 1.18.0
|_http-title: Welcome to nginx!
Nmap done: 1 IP address (1 host up) scanned in ... seconds
Neste exemplo, o script banner recuperou o banner SSH da porta 22, e o script http-title recuperou o título do servidor HTTP em execução na porta 80. Se o alvo não tiver essas portas abertas, você verá uma saída diferente.
Visualizar a saída do script no terminal Xfce
Nesta etapa, focaremos na visualização da saída dos scripts Nmap dentro do terminal Xfce. O terminal Xfce é o emulador de terminal padrão no ambiente da VM LabEx. Você já o utilizou nas etapas anteriores. Esta etapa é mais sobre entender como interpretar a saída e menos sobre executar um novo comando.
A saída dos scripts Nmap é exibida diretamente no terminal após a conclusão da varredura. O formato da saída depende do próprio script. Alguns scripts fornecem uma saída de texto simples, enquanto outros podem fornecer dados mais estruturados.
Vamos revisitar o comando da etapa anterior:
sudo nmap --script banner,http-title 127.0.0.1
Quando você executa este comando, a saída é impressa diretamente no terminal Xfce. Você pode rolar pela saída do terminal para revisar os resultados dos scripts banner e http-title.
Por exemplo, a saída pode incluir:
- Informações do banner: O script
bannertenta recuperar banners de serviço de portas abertas. Isso pode revelar a versão do software em execução em uma porta específica. - Título HTTP: O script
http-titlerecupera o título da página da web servida por um servidor HTTP.
A chave é examinar cuidadosamente a saída em busca de qualquer informação útil. O terminal Xfce fornece uma maneira simples e direta de visualizar essa informação. Você também pode usar ferramentas Linux padrão como grep para filtrar a saída, se necessário. Por exemplo, para encontrar apenas as linhas contendo "http-title", você pode canalizar a saída do comando nmap para grep:
sudo nmap --script banner,http-title 127.0.0.1 | grep "http-title"
Este comando executará a mesma varredura Nmap de antes, mas exibirá apenas as linhas na saída que contêm a string "http-title". Isso pode ser útil para focar em partes específicas da saída.
Esta etapa é principalmente sobre observação e compreensão. Não há um único comando a ser executado, mas sim um foco em como interpretar os resultados que você já gerou nas etapas anteriores dentro do ambiente do terminal Xfce.
Resumo
Neste laboratório, os participantes aprenderam a utilizar o Nmap Scripting Engine através de vários comandos. Eles começaram executando scripts padrão usando nmap -sC contra um IP alvo, o que inclui scripts seguros e úteis para varredura geral. Eles também aprenderam a usar um script específico com nmap --script, adicionar argumentos aos scripts com --script-args, atualizar scripts com --script-updatedb e testar múltiplos scripts de uma vez. Finalmente, eles visualizaram a saída do script no terminal Xfce.



