Verificar Vulnerabilidades no Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como procurar vulnerabilidades usando o script vuln do Nmap. Este script ajuda a identificar potenciais fraquezas de segurança, verificando problemas comuns como credenciais padrão, software desatualizado e configurações incorretas.

Você executará o script vuln contra um endereço IP alvo (usando 127.0.0.1 para fins de demonstração dentro do ambiente da VM do LabEx), fará a varredura de portas específicas, adicionará verbosidade para uma saída mais detalhada, salvará os resultados em um arquivo e, em seguida, revisará as vulnerabilidades identificadas no terminal Xfce, comparando-as com os resultados da detecção de serviços.

Executar o script 'vuln' com nmap --script vuln 192.168.1.1

Nesta etapa, usaremos o script vuln do Nmap para verificar um endereço IP alvo em busca de vulnerabilidades conhecidas. O script vuln é uma ferramenta poderosa que pode ajudar a identificar potenciais fraquezas de segurança em um sistema.

Antes de começarmos, vamos discutir brevemente o que são os scripts do Nmap. Os scripts do Nmap são escritos na linguagem de programação Lua e permitem que você estenda a funcionalidade do Nmap. Eles podem ser usados para uma variedade de tarefas, incluindo detecção de vulnerabilidades, descoberta de serviços e reconhecimento de rede.

O script vuln é uma coleção de scripts projetados para identificar vulnerabilidades comuns. Ele verifica uma ampla gama de problemas, como credenciais padrão, versões de software desatualizadas e configurações incorretas.

Vamos começar verificando o endereço IP alvo 192.168.1.1 usando o script vuln. Como 192.168.1.1 é um endereço IP privado, é improvável que seja diretamente acessível a partir do ambiente da VM do LabEx. Para fins de demonstração, usaremos 127.0.0.1 (localhost) como o alvo. Isso pressupõe que haja um serviço em execução na VM do LabEx que possamos verificar.

Abra seu terminal Xfce e execute o seguinte comando:

sudo nmap --script vuln 127.0.0.1

Você provavelmente precisará usar sudo porque o Nmap geralmente requer privilégios elevados para realizar determinadas varreduras.

Este comando informa ao Nmap para executar o script vuln contra o endereço IP 127.0.0.1. O Nmap tentará então identificar quaisquer vulnerabilidades no sistema alvo.

A saída mostrará os resultados da varredura. Ele listará quaisquer vulnerabilidades que foram encontradas, juntamente com uma descrição do problema e possíveis etapas de correção.

Exemplo de saída (a saída real dependerá dos serviços em execução em 127.0.0.1):

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.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.

80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

Neste exemplo, o Nmap verificou as portas 22 e 80 em 127.0.0.1. O script vulners, que faz parte do conjunto de scripts vuln, não conseguiu encontrar nenhuma vulnerabilidade conhecida para os serviços em execução nessas portas. Isso não significa necessariamente que o sistema seja completamente seguro, mas indica que não há vulnerabilidades imediatamente óbvias.

Verificar porta específica com nmap --script vuln -p 80 127.0.0.1

Na etapa anterior, verificamos todas as portas em 127.0.0.1 usando o script vuln. Nesta etapa, focaremos nossa verificação em uma porta específica: a porta 80. Isso é útil quando você deseja verificar rapidamente um serviço específico em busca de vulnerabilidades sem verificar todo o sistema. A porta 80 é comumente usada para tráfego HTTP (web).

A opção -p no Nmap permite que você especifique quais portas verificar. Você pode especificar uma única porta, um intervalo de portas ou uma lista de portas separadas por vírgulas.

Para verificar apenas a porta 80 em 127.0.0.1 usando o script vuln, execute o seguinte comando em seu terminal Xfce:

sudo nmap --script vuln -p 80 127.0.0.1

Este comando informa ao Nmap para executar o script vuln contra a porta 80 no endereço IP 127.0.0.1. O Nmap tentará então identificar quaisquer vulnerabilidades relacionadas ao serviço em execução nessa porta.

A saída será semelhante à etapa anterior, mas mostrará apenas os resultados da porta 80.

Exemplo de saída (a saída real dependerá dos serviços em execução em 127.0.0.1):

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.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

Como você pode ver, a saída está focada apenas na porta 80. O script vulners novamente não conseguiu encontrar nenhuma vulnerabilidade conhecida.

Verificar portas específicas pode reduzir significativamente o tempo necessário para realizar uma verificação de vulnerabilidade, especialmente quando você está interessado apenas em um serviço específico.

Adicionar verbosidade com nmap -v --script vuln 192.168.1.1

Nesta etapa, adicionaremos verbosidade à nossa verificação do Nmap. Verbosidade significa que o Nmap fornecerá informações mais detalhadas sobre o processo de verificação. Isso pode ser útil para entender o que o Nmap está fazendo e para solucionar quaisquer problemas que possam surgir.

A opção -v no Nmap aumenta o nível de verbosidade. Você pode usar -v várias vezes para aumentar a verbosidade ainda mais (por exemplo, -vv ou -vvv).

Para executar o script vuln contra 127.0.0.1 com verbosidade, execute o seguinte comando em seu terminal Xfce:

sudo nmap -v --script vuln 127.0.0.1

Este comando informa ao Nmap para executar o script vuln contra o endereço IP 127.0.0.1 e fornecer uma saída verbose.

A saída agora incluirá mais informações sobre o processo de verificação, como os scripts que estão sendo executados, as portas que estão sendo verificadas e o tempo que leva para concluir cada etapa.

Exemplo de saída (a saída real dependerá dos serviços em execução em 127.0.0.1 e será muito mais longa do que a saída não verbose):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 151 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 127.0.0.1 [4 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 SYN Stealth 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 SYN Stealth Scan at 10:10, 0.06s 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, 6.41s elapsed (2 services total)
NSE: Script scanning 127.0.0.1.
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:10
Completed NSE at 10:10, 1.13s elapsed.
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
|_ vulners: Could not find vulnerability results.
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

NSE: Script Post-scanning.
Initiating NSE at 10:10
Completed NSE at 10:10, 0.00s elapsed.
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 7.70 seconds

A saída verbose fornece uma visão muito mais detalhada do processo de verificação. Você pode ver os diferentes estágios da verificação, os scripts que estão sendo executados e quaisquer erros ou avisos que possam ocorrer.

Salvar resultados do vuln com nmap --script vuln -oN vuln.txt 127.0.0.1

Nesta etapa, aprenderemos como salvar os resultados de nossa verificação de vulnerabilidade do Nmap em um arquivo. Isso é útil para análise posterior, relatórios ou para comparar resultados ao longo do tempo.

O Nmap oferece várias opções para salvar os resultados da verificação em diferentes formatos. A opção -oN salva os resultados em um formato "normal" legível por humanos. Outras opções incluem -oX para o formato XML e -oG para o formato Grepable.

Para salvar os resultados da verificação do script vuln em um arquivo chamado vuln.txt no formato normal, execute o seguinte comando em seu terminal Xfce:

sudo nmap --script vuln -oN vuln.txt 127.0.0.1

Este comando informa ao Nmap para executar o script vuln contra o endereço IP 127.0.0.1 e salvar os resultados no arquivo vuln.txt usando o formato de saída normal. O arquivo vuln.txt será criado em seu diretório atual (~/project).

Após a conclusão da verificação, você pode visualizar o conteúdo do arquivo vuln.txt usando um editor de texto como nano:

nano vuln.txt

Isso abrirá o arquivo vuln.txt no editor nano, permitindo que você revise os resultados da verificação. A saída será semelhante ao que você vê na tela ao executar o Nmap sem a opção -oN.

Exemplo de conteúdo de vuln.txt (o conteúdo real dependerá dos serviços em execução em 127.0.0.1):

## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

## Nmap done at Tue Oct 27 10:15:07 2023 -- 1 IP address (1 host up) scanned in 7.00 seconds

Você também pode usar outros comandos Linux para visualizar o arquivo, como cat:

cat vuln.txt

Salvar os resultados da verificação em um arquivo é uma etapa crucial na avaliação de vulnerabilidade e nos testes de penetração. Ele permite que você documente suas descobertas e acompanhe as alterações ao longo do tempo.

Revisar vulnerabilidades no terminal Xfce

Nesta etapa, revisaremos os resultados da verificação de vulnerabilidade diretamente no terminal Xfce. Isso envolve examinar a saída do comando nmap --script vuln para identificar potenciais vulnerabilidades no sistema de destino.

Primeiro, vamos executar a verificação de vulnerabilidade contra 127.0.0.1 novamente. Isso garantirá que tenhamos os resultados mais atualizados para revisão. Execute o seguinte comando em seu terminal Xfce:

sudo nmap --script vuln 127.0.0.1

Examine cuidadosamente a saída. O script vuln tenta identificar vulnerabilidades conhecidas, verificando as versões e configurações dos serviços. Procure quaisquer linhas que indiquem potenciais vulnerabilidades.

A saída mostrará as portas que estão abertas e os serviços em execução nessas portas. O script vulners, que faz parte do conjunto de scripts vuln, tenta corresponder as versões dos serviços com vulnerabilidades conhecidas.

Exemplo de saída (a saída real dependerá dos serviços em execução em 127.0.0.1):

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.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE
22/tcp open  ssh
|_ vulners: Could not find vulnerability results.
80/tcp open  http
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_ vulners: Could not find vulnerability results.

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

Neste exemplo, o script vulners não conseguiu encontrar nenhum resultado de vulnerabilidade para os serviços SSH e HTTP. No entanto, se as vulnerabilidades fossem encontradas, a saída incluiria detalhes sobre as vulnerabilidades específicas e links para recursos relevantes.

Se você vir uma saída indicando potenciais vulnerabilidades, pesquise essas vulnerabilidades para entender os riscos e como mitigá-los. Você pode usar as informações da versão do serviço (por exemplo, "Apache/2.4.29 (Ubuntu)") para pesquisar vulnerabilidades conhecidas nessa versão específica do software.

Esta etapa é crucial para entender a postura de segurança do sistema de destino e para identificar áreas potenciais de preocupação.

Comparar com a detecção de serviços no terminal Xfce

Nesta etapa, compararemos os resultados da verificação de vulnerabilidade com a detecção de serviço padrão fornecida pelo Nmap. Isso nos ajudará a entender se o script vuln está fornecendo informações adicionais além do que o Nmap normalmente detecta.

Primeiro, execute uma verificação de detecção de serviço Nmap padrão contra 127.0.0.1. Execute o seguinte comando em seu terminal Xfce:

sudo nmap -sV 127.0.0.1

A opção -sV informa ao Nmap para realizar a detecção da versão do serviço. Isso tentará identificar as versões específicas dos serviços em execução nas portas abertas.

Exemplo de saída (a saída real dependerá dos serviços em execução em 127.0.0.1):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000073s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p0 Ubuntu 7ubuntu2.4 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))

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

Agora, compare esta saída com a saída do comando nmap --script vuln 127.0.0.1 que você executou na etapa anterior.

Especificamente, procure o seguinte:

  • Versões dos Serviços: A verificação -sV identifica as mesmas versões dos serviços que o script vuln? O script vuln geralmente se baseia nas informações da versão do serviço para identificar potenciais vulnerabilidades.
  • Informações de Vulnerabilidade: O script vuln fornece alguma informação adicional sobre vulnerabilidades que não está presente na saída da verificação -sV? O script vuln usa a biblioteca vulners para verificar vulnerabilidades conhecidas com base na versão do serviço.

Ao comparar as duas saídas, você pode obter uma melhor compreensão do valor que o script vuln fornece. Em muitos casos, o script vuln identificará potenciais vulnerabilidades que não são imediatamente aparentes na verificação de detecção de serviço padrão. Isso ocorre porque o script vuln é especificamente projetado para procurar vulnerabilidades conhecidas, enquanto a verificação -sV se concentra principalmente na identificação do serviço e sua versão.

Esta comparação ajuda você a entender os diferentes níveis de informação que você pode obter do Nmap e como usar diferentes scripts e opções para obter a avaliação de segurança mais abrangente.

Resumo

Neste laboratório, exploramos o uso do script vuln do Nmap para verificar vulnerabilidades em um sistema de destino. Aprendemos como executar o script contra um endereço IP específico (usando 127.0.0.1 como um exemplo prático devido ao ambiente do laboratório) com o comando nmap --script vuln 127.0.0.1, frequentemente exigindo sudo para obter os privilégios necessários.

O laboratório também demonstrou como verificar uma porta específica usando nmap --script vuln -p 80 127.0.0.1, aumentar a verbosidade com nmap -v --script vuln 192.168.1.1 e salvar os resultados da verificação em um arquivo usando nmap --script vuln -oN vuln.txt 127.0.0.1. Por fim, o laboratório envolveu a revisão dos resultados da verificação de vulnerabilidade e sua comparação com as informações de detecção de serviço dentro do terminal Xfce.