Como Usar as Flags de Varredura do Nmap

NmapBeginner
Pratique Agora

Introdução

O Nmap (Network Mapper) é uma ferramenta fundamental em segurança e administração de redes. Este laboratório apresenta as flags de varredura do Nmap, que permitem realizar reconhecimento de rede e avaliação de vulnerabilidades de forma eficaz. Através da prática, você aprenderá a usar vários comandos do Nmap para descobrir hosts, varrer portas e identificar serviços em uma rede. Essas habilidades são essenciais para administradores de rede e profissionais de segurança manterem ambientes de rede seguros.

Instalação do Nmap e Varredura Básica

Instalando o Nmap

O Nmap não vem pré-instalado na maioria dos sistemas, então nosso primeiro passo é instalá-lo. Abra um terminal no seu ambiente LabEx e execute os seguintes comandos:

sudo apt update
sudo apt install nmap -y

Após a conclusão da instalação, verifique se o Nmap foi instalado corretamente, verificando sua versão:

nmap --version

Você deve ver uma saída semelhante a esta:

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1f libssh2-1.8.0 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

Entendendo os Fundamentos do Nmap

O Nmap funciona enviando pacotes especialmente criados para hosts-alvo e analisando as respostas. Isso ajuda a determinar:

  • Quais hosts estão disponíveis na rede
  • Quais serviços (portas) eles estão oferecendo
  • Quais sistemas operacionais eles estão executando
  • Que tipo de filtros de pacotes/firewalls estão em uso

A sintaxe básica de um comando Nmap é:

nmap [tipo de varredura] [opções] alvo

Onde:

  • [tipo de varredura] especifica o tipo de varredura a ser executada
  • [opções] são parâmetros adicionais para personalizar a varredura
  • alvo é o endereço IP, nome do host ou intervalo de IP a ser varrido

Sua Primeira Varredura: Varrendo o Localhost

Vamos começar com uma varredura simples da sua própria máquina (localhost). Execute:

nmap localhost

Este comando varre as 1000 portas TCP mais comuns na sua máquina local. A saída será semelhante a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

A saída mostra:

  • A hora de início da varredura
  • O host sendo varrido (localhost/127.0.0.1)
  • Portas abertas e seus serviços associados
  • Tempo de conclusão da varredura e estatísticas

Entendendo os Resultados da Varredura

Vamos analisar a saída:

  • PORT: Mostra o número da porta e o protocolo (por exemplo, 22/tcp)
  • STATE: Indica se a porta está aberta, fechada ou filtrada
  • SERVICE: Mostra o serviço tipicamente associado a essa porta

Os estados de porta mais comuns são:

  • open: A porta está aceitando conexões
  • closed: A porta está acessível, mas nenhuma aplicação está ouvindo nela
  • filtered: O Nmap não pode determinar se a porta está aberta porque a filtragem de pacotes está bloqueando suas sondas

Varrendo uma Porta Específica

Para varrer uma porta específica, use a flag -p seguida pelo número da porta:

nmap -p 22 localhost

A saída será focada apenas na porta 22:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh

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

Varrendo um Intervalo de Portas

Você pode varrer um intervalo de portas usando um hífen:

nmap -p 20-25 localhost

Isso varre as portas 20 a 25:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 15:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE  SERVICE
20/tcp closed ftp-data
21/tcp closed ftp
22/tcp open   ssh
23/tcp closed telnet
24/tcp closed priv-mail
25/tcp closed smtp

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

Agora você aprendeu como instalar o Nmap e realizar varreduras básicas de portas. No próximo passo, exploraremos técnicas de varredura mais avançadas usando várias flags do Nmap.

Explorando as Flags Essenciais de Varredura do Nmap

Agora que você entende os conceitos básicos do Nmap, vamos explorar algumas flags de varredura essenciais que lhe darão mais controle e informações de suas varreduras.

Varredura TCP SYN (-sS)

A varredura TCP SYN é o tipo de varredura padrão quando executada como root. É frequentemente chamada de varredura "half-open" (meio aberta) porque nunca completa as conexões TCP. É relativamente furtiva e rápida.

Vamos executar uma varredura SYN no localhost:

sudo nmap -sS localhost

A saída será semelhante a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Varredura TCP Connect (-sT)

A varredura TCP Connect é a varredura padrão quando o Nmap não é executado com privilégios de root. Ela completa o handshake TCP completo, tornando-a mais detectável, mas também mais confiável em alguns casos.

nmap -sT localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Detecção de Versão do Serviço (-sV)

A flag de detecção de versão diz ao Nmap para tentar determinar a versão dos serviços em execução nas portas abertas:

nmap -sV localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Observe como a saída agora inclui informações detalhadas da versão para cada serviço. Isso é extremamente valioso para avaliações de segurança, pois certas versões podem ter vulnerabilidades conhecidas.

Detecção de SO (-O)

A flag de detecção de SO tenta determinar o sistema operacional do alvo:

sudo nmap -O localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql
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 1.57 seconds

Observe que o Nmap detectou que o sistema está executando a versão do kernel Linux 4.X ou 5.X.

Combinando Flags para Varredura Abrangente

Você pode combinar várias flags para obter resultados mais abrangentes. Por exemplo, vamos combinar a detecção de versão do serviço e a detecção de SO:

sudo nmap -sV -O localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00015s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
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
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Varredura Agressiva (-A)

A flag de varredura agressiva combina várias opções de varredura, incluindo detecção de SO, detecção de versão, varredura de script e traceroute:

sudo nmap -A localhost

Saída (truncada para brevidade):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp      CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 11
|   Capabilities flags: 65535
|   Some Capabilities: SupportsLoadDataLocal, Support41Auth, Speaks41ProtocolOld, IgnoreSigpipes, DontAllowDatabaseTableColumn, FoundRows, SupportsCompression, ConnectWithDatabase, LongPassword, InteractiveClient, SwitchToSSLAfterHandshake, ODBCClient, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, LongColumnFlag, SupportsTransactions, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments
|   Status: Autocommit
|   Salt: \x14\x12\x1Fjw\x182\x15\x0D\x12\x13C\x1F\x14\x0D\x07
|_  Auth Plugin Name: caching_sha2_password
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 and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 10.12 seconds

Observe a quantidade significativa de informações adicionais fornecidas pela varredura agressiva, incluindo informações da chave SSH, detalhes do servidor HTTP e informações de serviço MySQL mais detalhadas.

Nesta etapa, você aprendeu sobre várias flags essenciais de varredura do Nmap e como combiná-las para obter resultados mais abrangentes. Na próxima etapa, exploraremos estratégias práticas de varredura para diferentes cenários.

Estratégias de Varredura de Rede e Controles de Tempo

Nesta etapa, aprenderemos sobre estratégias de varredura de rede e como controlar o tempo e o desempenho das varreduras do Nmap. Isso é crucial ao varrer redes maiores ou quando você precisa ser mais discreto.

Varrendo Vários Hosts

O Nmap pode varrer vários hosts de várias maneiras:

Varrendo uma Lista de IPs

Você pode especificar vários endereços IP separados por espaços:

nmap 127.0.0.1 127.0.0.2

Varrendo um Intervalo de IPs

Você pode varrer um intervalo de endereços IP usando a notação CIDR:

nmap 127.0.0.1/30

Este comando varre de 127.0.0.0 a 127.0.0.3. A saída mostrará:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

Nmap scan report for 127.0.0.2
Host is up (0.00015s latency).
All 1000 scanned ports on 127.0.0.2 are closed

Nmap scan report for 127.0.0.3
Host is up (0.00013s latency).
All 1000 scanned ports on 127.0.0.3 are closed

Nmap done: 4 IP addresses (3 hosts up) scanned in 0.92 seconds

Opções de Descoberta de Host

Varredura Ping (-sn)

Às vezes, você só quer saber quais hosts estão online sem varrer portas. A varredura ping é perfeita para isso:

nmap -sn 127.0.0.1/24

Este comando varrerá toda a sub-rede 127.0.0.1/24, mas só executará a descoberta de host sem varredura de portas. Devido ao comprimento da saída, mostraremos apenas um trecho:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Nmap scan report for 127.0.0.2
Host is up (0.00013s latency).
Nmap scan report for 127.0.0.3
Host is up (0.00014s latency).
...
Nmap done: 256 IP addresses (256 hosts up) scanned in 2.34 seconds

Ignorando a Descoberta de Host (-Pn)

Às vezes, firewalls bloqueiam solicitações ping. Para ignorar isso e varrer todos os hosts, independentemente das respostas ping, use a flag -Pn:

nmap -Pn localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:45 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Controles de Tempo e Desempenho

O Nmap fornece vários modelos de tempo que ajustam vários parâmetros de varredura:

  • -T0: Paranoid - Muito lento, usado para evasão de IDS
  • -T1: Sneaky - Lento, usado para evasão de IDS
  • -T2: Polite - Reduz a velocidade para consumir menos largura de banda
  • -T3: Normal - Padrão, equilibra velocidade com confiabilidade
  • -T4: Aggressive - Mais rápido, assume uma rede razoavelmente rápida e confiável
  • -T5: Insane - Muito rápido, assume uma rede extremamente rápida

Vamos tentar uma varredura agressiva:

nmap -T4 localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 16:50 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

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

Observe que a varredura foi concluída um pouco mais rápido do que a varredura padrão.

Formatos de Saída

O Nmap pode salvar os resultados da varredura em vários formatos para análise ou relatório posterior:

Saída Normal (-oN)

Salve os resultados da varredura em um formato normal em um arquivo:

nmap -oN scan_results.txt localhost

Este comando salva a saída da varredura em scan_results.txt no diretório atual.

Saída XML (-oX)

Salve os resultados da varredura em formato XML, o que é útil para análise com outras ferramentas:

nmap -oX scan_results.xml localhost

Todos os Formatos (-oA)

Salve os resultados da varredura em todos os formatos (normal, XML e grepable):

nmap -oA scan_results localhost

Isso cria três arquivos: scan_results.nmap, scan_results.xml e scan_results.gnmap.

Vamos examinar o conteúdo do arquivo de saída normal:

cat scan_results.txt

Saída:

## Nmap 7.80 scan initiated Thu Sep 14 16:55:23 2023 as: nmap -oN scan_results.txt localhost
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
631/tcp  open  ipp
3306/tcp open  mysql

## Nmap done at Thu Sep 14 16:55:23 2023 -- 1 IP address (1 host up) scanned in 0.12 seconds

Estratégia Prática de Varredura

Vamos combinar o que aprendemos para criar uma estratégia de varredura prática para uma varredura abrangente:

sudo nmap -sS -sV -O -T4 -oA comprehensive_scan localhost

Este comando:

  • Usa varredura furtiva SYN (-sS)
  • Detecta versões de serviço (-sV)
  • Tenta a detecção de SO (-O)
  • Usa tempo agressivo (-T4)
  • Salva os resultados em todos os formatos (-oA)

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE  VERSION
22/tcp   open  ssh      OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
80/tcp   open  http     Apache httpd 2.4.41 ((Ubuntu))
631/tcp  open  ipp      CUPS 2.3
3306/tcp open  mysql    MySQL 8.0.30-0ubuntu0.20.04.2
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
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Agora você pode visualizar os resultados da varredura abrangente em qualquer um dos arquivos de saída:

ls comprehensive_scan.*

Saída:

comprehensive_scan.gnmap  comprehensive_scan.nmap  comprehensive_scan.xml

Considerações Éticas

Lembre-se de que a varredura de rede só deve ser realizada em redes que você possui ou para as quais tem permissão explícita para varrer. A varredura não autorizada pode ser:

  1. Ilegal em muitas jurisdições
  2. Considerada um ato hostil pelos administradores de rede
  3. Potencialmente disruptiva para os serviços de rede

Neste ambiente de laboratório, só varremos o localhost, o que é sempre permitido, pois é seu próprio sistema.

Você agora aprendeu sobre diferentes estratégias de varredura de rede, controles de tempo e formatos de saída. Você tem todo o conhecimento fundamental necessário para realizar o reconhecimento de rede eficaz usando o Nmap.

Varredura de Script e Análise de Serviço Direcionada

Nesta etapa, exploraremos o poderoso mecanismo de script (NSE) do Nmap e aprenderemos como realizar análises de serviço direcionadas. Os scripts NSE estendem a funcionalidade do Nmap, permitindo varreduras mais detalhadas para serviços e vulnerabilidades específicas.

Introdução ao Nmap Scripting Engine (NSE)

O Nmap Scripting Engine permite que os usuários escrevam e compartilhem scripts para automatizar uma variedade de tarefas de rede. O Nmap vem com centenas de scripts pré-escritos categorizados em vários grupos:

  • auth: Scripts relacionados à autenticação
  • default: Scripts executados por padrão com -sC
  • discovery: Descoberta de host e serviço
  • exploit: Tentativa de explorar vulnerabilidades
  • malware: Detectar malware e backdoors
  • safe: Scripts seguros e não intrusivos
  • vuln: Scripts de detecção de vulnerabilidade

Executando Scripts Padrão (-sC)

A flag -sC executa o conjunto padrão de scripts, que geralmente são seguros e fornecem informações úteis:

nmap -sC localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)

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

Observe como os scripts forneceram informações adicionais sobre cada serviço, como chaves de host SSH e títulos de página HTTP.

Executando Scripts Específicos

Você pode executar scripts específicos usando a flag --script seguida pelo nome ou categoria do script:

nmap --script=http-title localhost

Isso executa apenas o script http-title, que recupera o título das páginas HTTP:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql

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

Executando Scripts por Categoria

Você pode executar todos os scripts em uma categoria específica:

nmap --script=discovery localhost

Isso executa todos os scripts de descoberta, que podem fornecer uma grande quantidade de informações sobre os serviços de rede (saída truncada para brevidade):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp
| cups-info:
|   CUPS Server:
|     Server: CUPS/2.3 IPP/2.1
|_    Authentication-Method: Basic
| http-methods:
|_  Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql
| mysql-info:
|   Protocol: 10
|   Version: 8.0.30-0ubuntu0.20.04.2
|   Thread ID: 15
|   Capabilities flags: 65535
|   Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
|   Status: Autocommit
|   Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_  Auth Plugin Name: caching_sha2_password

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

Combinando Varredura de Script com Detecção de Serviço

Para obter os resultados mais abrangentes, combine a varredura de script com a detecção de serviço:

nmap -sV -sC localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp  open  ipp     CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open  mysql   MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
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 9.03 seconds

Análise de Serviço Direcionada

Vamos nos concentrar em analisar serviços específicos com mais detalhes.

Analisando Serviços HTTP

Para analisar serviços HTTP em detalhes, podemos usar os scripts http-*:

nmap --script="http-*" -p 80 localhost

Isso executa todos os scripts relacionados a HTTP na porta 80:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).

PORT   STATE SERVICE
80/tcp open  http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
|   Apache/2.4.41
|_  Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.

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

Analisando Serviços SSH

Da mesma forma, podemos analisar serviços SSH:

nmap --script="ssh-*" -p 22 localhost

Saída:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-hostkey:
|   3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
|   256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_  256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)

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

Varredura de Vulnerabilidade

O Nmap inclui scripts que podem detectar potenciais vulnerabilidades. Usar a categoria vuln pode ajudar a identificar problemas de segurança:

nmap --script=vuln localhost

Isso pode levar algum tempo, pois executa várias verificações de vulnerabilidade. A saída pode ser semelhante a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
|   VULNERABLE:
|   Slowloris DOS attack
|     State: LIKELY VULNERABLE
|     IDs:  CVE:CVE-2007-6750
|       Slowloris tries to keep many connections to the target web server open and hold
|       them open as long as possible.  It accomplishes this by opening connections to
|       the target web server and sending a partial request. By doing so, it starves
|       the http server's resources causing Denial Of Service.
|
|     Disclosure date: 2009-09-17
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_      http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp  open  ipp
3306/tcp open  mysql

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

Neste caso, o Nmap identificou que o servidor web Apache pode ser vulnerável a um ataque Slowloris DoS. Essa informação pode ser valiosa para proteger seus sistemas.

Criando um Relatório de Varredura Abrangente

Agora, vamos combinar tudo o que aprendemos para criar um relatório de segurança abrangente:

sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost

Este comando:

  • Usa varredura furtiva SYN (-sS)
  • Detecta versões de serviço (-sV)
  • Tenta a detecção de SO (-O)
  • Executa scripts padrão (-sC)
  • Executa scripts de detecção de vulnerabilidade (--script=vuln)
  • Usa tempo agressivo (-T4)
  • Salva os resultados em todos os formatos (-oA)

A saída será abrangente e pode levar algum tempo para ser concluída. Depois de concluído, você terá um relatório de segurança detalhado em vários formatos (normal, XML e grepable) que você pode consultar para análise de segurança.

Nesta etapa, você aprendeu como usar o mecanismo de script do Nmap para reunir informações detalhadas sobre serviços e detectar potenciais vulnerabilidades. Essas técnicas avançadas são essenciais para avaliações abrangentes de segurança de rede.

Resumo

Neste laboratório, você aprendeu os fundamentos do uso do Nmap para reconhecimento de rede e avaliação de segurança. Agora você entende:

  1. Como instalar o Nmap e realizar a varredura básica de hosts e portas
  2. Como usar as flags de varredura essenciais do Nmap para diferentes tipos de varreduras
  3. Como implementar estratégias de varredura eficazes e controlar os parâmetros de tempo
  4. Como aproveitar o Nmap Scripting Engine para análise detalhada de serviços e detecção de vulnerabilidades

Essas habilidades formam uma base para avaliações de segurança de rede e são essenciais para profissionais de segurança cibernética. Lembre-se de sempre usar essas técnicas de forma responsável e apenas em redes que você tem permissão para varrer.

À medida que você continua sua jornada de segurança cibernética, considere explorar recursos mais avançados do Nmap, como o desenvolvimento de scripts NSE personalizados, técnicas de evasão de firewall e integração com outras ferramentas de segurança. A prática regular com o Nmap o ajudará a se tornar mais proficiente na identificação de possíveis problemas de segurança em ambientes de rede.