Otimizar o Tempo e o Desempenho das Varreduras no Nmap

NmapBeginner
Pratique Agora

Introdução

Neste laboratório, o objetivo é otimizar o tempo e o desempenho das varreduras no Nmap. Você aprenderá diversas técnicas para aprimorar as varreduras do Nmap, incluindo o uso do template rápido com -T4 para uma varredura de rede rápida, o aumento do paralelismo, a definição de atrasos, o acompanhamento do progresso, o teste de stealth (furtividade) e a comparação do tempo no terminal Xfce. Essas etapas o ajudarão a entender como equilibrar velocidade e precisão nas varreduras do Nmap.

Usar o template rápido com nmap -T4 192.168.1.0/24

Nesta etapa, usaremos a opção de template rápido com o Nmap para realizar uma varredura rápida de uma rede. A opção -T4 é usada para especificar um timing template (modelo de tempo) que equilibra velocidade e precisão. É mais rápido que o template padrão, mas pode ser menos preciso em alguns casos.

Antes de começarmos, vamos entender o que é um timing template. O Nmap usa timing templates para controlar a agressividade com que ele varre um alvo. Esses templates afetam parâmetros como o atraso entre as sondagens (probes), o número de tentativas e os valores de timeout. A opção -T permite que você escolha um template predefinido, variando de -T0 (paranoid) a -T5 (insane). Números mais altos indicam uma varredura mais agressiva.

O template -T4 é um bom compromisso para a maioria das redes. É mais rápido que o template padrão (-T3), mas ainda evita ser excessivamente agressivo, o que poderia levar à perda de pacotes ou acionar sistemas de detecção de intrusão.

Agora, vamos realizar a varredura. Usaremos o comando nmap -T4 192.168.1.0/24 para varrer a rede 192.168.1.0/24.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Execute o seguinte comando:

sudo nmap -T4 192.168.1.0/24

Este comando instrui o Nmap a varrer todos os endereços IP no intervalo 192.168.1.0/24 usando o timing template -T4. O /24 especifica uma máscara de sub-rede de 255.255.255.0, o que significa que o Nmap varrerá 256 endereços IP (192.168.1.0 a 192.168.1.255).

A saída mostrará os resultados da varredura, incluindo as portas abertas e os serviços em execução em cada host. Como a rede 192.168.1.0/24 provavelmente é sua rede local, os resultados variarão dependendo dos dispositivos conectados a ela.

Exemplo de saída (variará com base na sua rede):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap scan report for 192.168.1.100
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.23 seconds

Esta saída mostra que o Nmap varreu 256 endereços IP e encontrou dois hosts ativos: 192.168.1.1 e 192.168.1.100. O host 192.168.1.1 tem a porta 80 (http) aberta, e o host 192.168.1.100 tem a porta 22 (ssh) aberta. A varredura levou aproximadamente 5,23 segundos.

Aumentar o paralelismo com nmap --min-parallelism 20 127.0.0.1

Nesta etapa, aumentaremos o paralelismo das varreduras do Nmap usando a opção --min-parallelism. Essa opção permite que você especifique o número mínimo de sondas (probes) que o Nmap envia em paralelo. Aumentar o paralelismo pode acelerar significativamente as varreduras, especialmente em redes com muitos hosts ou portas.

Por padrão, o Nmap ajusta dinamicamente o nível de paralelismo com base nas condições da rede. No entanto, você pode usar --min-parallelism para garantir que o Nmap sempre envie pelo menos um certo número de sondas simultaneamente.

Vamos entender o que significa paralelismo no contexto do Nmap. Quando o Nmap varre um alvo, ele envia sondas para diferentes portas ou hosts. Com o paralelismo, o Nmap pode enviar várias sondas simultaneamente, em vez de esperar por uma resposta de cada sonda antes de enviar a próxima. Isso pode reduzir significativamente o tempo total da varredura.

Agora, vamos realizar uma varredura com paralelismo aumentado. Usaremos o comando nmap --min-parallelism 20 127.0.0.1 para varrer o localhost (127.0.0.1) com um paralelismo mínimo de 20.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Execute o seguinte comando:

sudo nmap --min-parallelism 20 127.0.0.1

Este comando instrui o Nmap a varrer 127.0.0.1 e tentar manter pelo menos 20 sondas em paralelo. Observe que o Nmap ainda pode ajustar o paralelismo dinamicamente com base nas condições da rede, mas tentará ficar acima do mínimo especificado.

A saída mostrará os resultados da varredura, incluindo as portas abertas e os serviços em execução no localhost.

Exemplo de saída (variará com base no seu sistema):

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.000027s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

Esta saída mostra que o Nmap varreu o localhost (127.0.0.1) e encontrou três portas abertas: 22 (ssh), 631 (ipp) e 9000 (cslistener). A varredura foi concluída relativamente rápido devido ao aumento do paralelismo. O tempo real economizado dependerá das condições da rede e do alvo que está sendo varrido.

Definir atraso com nmap --scan-delay 500ms 192.168.1.1

Nesta etapa, definiremos um atraso entre as sondas usando a opção --scan-delay no Nmap. Essa opção permite que você especifique a quantidade de tempo que o Nmap deve esperar entre o envio de cada sonda. Aumentar o atraso da varredura pode ser útil para evitar a detecção por sistemas de detecção de intrusão (IDS) ou para varrer hosts que são sensíveis ao tráfego de rede.

Por padrão, o Nmap ajusta automaticamente o atraso da varredura com base nas condições da rede. No entanto, você pode usar --scan-delay para definir manualmente um atraso específico. O atraso é especificado em milissegundos (ms) ou segundos (s).

Vamos entender por que você pode querer usar um atraso na varredura. Uma varredura muito rápida pode sobrecarregar um host de destino ou acionar alertas de segurança. Adicionar um atraso torna a varredura menos agressiva e menos propensa a ser notada. Isso é especialmente importante ao varrer sistemas de produção ou redes onde você deseja minimizar o impacto da varredura.

Agora, vamos realizar uma varredura com um atraso especificado. Usaremos o comando nmap --scan-delay 500ms 192.168.1.1 para varrer o host 192.168.1.1 com um atraso de 500 milissegundos entre cada sonda.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Execute o seguinte comando:

sudo nmap --scan-delay 500ms 192.168.1.1

Este comando instrui o Nmap a varrer 192.168.1.1 e esperar 500 milissegundos entre o envio de cada sonda. Isso diminuirá significativamente a velocidade da varredura em comparação com uma varredura sem atraso.

A saída mostrará os resultados da varredura, incluindo as portas abertas e os serviços em execução em 192.168.1.1.

Exemplo de saída (variará com base na sua rede):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

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

Esta saída mostra que o Nmap varreu 192.168.1.1 e encontrou a porta 80 (http) aberta. Observe que a varredura demorou mais (5,50 segundos) do que poderia ter demorado sem a opção --scan-delay. O tempo exato variará dependendo do alvo e das condições da rede.

Acompanhar o progresso com nmap -v --stats-every 5s 192.168.1.0/24

Nesta etapa, aprenderemos como acompanhar o progresso de uma varredura do Nmap usando as opções -v (verbose) e --stats-every. Essas opções fornecem feedback em tempo real sobre o progresso da varredura, o que é especialmente útil para varreduras de longa duração.

A opção -v aumenta o nível de verbosidade da saída do Nmap. Com -v, o Nmap exibirá mais informações sobre a varredura, incluindo as sondas sendo enviadas, as respostas recebidas e o status de cada host. Você pode usar -vv para uma saída ainda mais verbose.

A opção --stats-every permite que você especifique com que frequência o Nmap deve imprimir estatísticas sobre o progresso da varredura. O valor é especificado em segundos (s), minutos (m) ou horas (h). Por exemplo, --stats-every 5s imprimirá estatísticas a cada 5 segundos.

Vamos entender por que o acompanhamento do progresso é importante. Ao varrer grandes redes, as varreduras do Nmap podem levar um tempo considerável. Sem informações de progresso, pode ser difícil saber em que ponto a varredura está e se ela está progredindo. As opções -v e --stats-every fornecem informações valiosas sobre o status da varredura.

Agora, vamos realizar uma varredura com acompanhamento de progresso. Usaremos o comando nmap -v --stats-every 5s 192.168.1.0/24 para varrer a rede 192.168.1.0/24 e imprimir estatísticas a cada 5 segundos.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Execute o seguinte comando:

sudo nmap -v --stats-every 5s 192.168.1.0/24

Este comando instrui o Nmap a varrer todos os endereços IP no intervalo 192.168.1.0/24, exibir saída verbose e imprimir estatísticas a cada 5 segundos.

A saída mostrará o progresso da varredura, incluindo o número de hosts varridos, o número de hosts ativos e o tempo restante estimado.

Exemplo de saída (variará com base na sua rede):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Initiating Ping Scan at 10:20
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:20, 0.23s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:20
Completed Parallel DNS resolution of 256 hosts. at 10:20, 1.42s elapsed
Initiating SYN Stealth Scan at 10:20
Scanning 256 hosts [1000 ports/host]
5s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
10s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
15s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
20s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

25s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

30s elapsed; 2 hosts completed (0.07/s). 2 hosts up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 32.50 seconds

Esta saída mostra o progresso da varredura a cada 5 segundos. Você pode ver o número de hosts concluídos, a taxa de varredura (hosts/s) e o número de hosts ativos. A varredura também relata portas abertas à medida que são descobertas.

Testar stealth (furtividade) com nmap -T1 127.0.0.1

Nesta etapa, exploraremos como realizar uma varredura stealth (furtiva) usando o Nmap com o template de tempo -T1. A varredura stealth visa minimizar as chances de ser detectada por sistemas de detecção de intrusão (IDS) ou firewalls.

A opção -T1 é conhecida como o template de tempo "sneaky" (sorrateiro). É mais lento que o template padrão e foi projetado para ser menos perceptível. Ele consegue isso aumentando o atraso entre as sondas, o que reduz a carga no sistema de destino e torna a varredura menos propensa a ser sinalizada como maliciosa.

É importante entender que nenhuma varredura é verdadeiramente invisível. Mesmo com técnicas stealth, sempre há risco de detecção. No entanto, usar a opção -T1 pode reduzir significativamente esse risco.

Agora, vamos realizar uma varredura stealth do localhost (127.0.0.1) usando o template de tempo -T1.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Execute o seguinte comando:

sudo nmap -T1 127.0.0.1

Este comando instrui o Nmap a varrer o localhost (127.0.0.1) usando o template de tempo -T1. Como estamos varrendo o localhost, a varredura deve ser concluída relativamente rápido, mesmo com o template de tempo mais lento.

A saída mostrará os resultados da varredura, incluindo as portas abertas e os serviços em execução no localhost.

Exemplo de saída (pode variar com base na configuração do seu sistema):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

Esta saída mostra que o Nmap varreu o localhost e encontrou três portas abertas: 22 (ssh), 631 (ipp) e 9000 (cslistener). A varredura levou aproximadamente 10,50 segundos. Observe que o tempo de varredura pode ser maior em comparação com o uso de um template de tempo mais rápido, como -T4.

Comparar o tempo de execução no terminal Xfce

Nesta etapa, compararemos o tempo de execução das varreduras do Nmap usando diferentes templates de tempo. Usaremos o terminal Xfce para executar as varreduras e observar o tempo que cada varredura leva para ser concluída. Isso o ajudará a entender o impacto dos templates de tempo na velocidade da varredura.

Compararemos os templates de tempo -T1 (sneaky - sorrateiro) e -T4 (fast - rápido). Varremos o localhost (127.0.0.1) para esta comparação.

Abra seu terminal na VM do LabEx. Certifique-se de estar no diretório ~/project.

Primeiro, vamos executar uma varredura usando o template de tempo -T1. Usaremos o comando time para medir o tempo de execução.

Execute o seguinte comando:

time sudo nmap -T1 127.0.0.1

O comando time executará a varredura do Nmap e, em seguida, exibirá o tempo que levou para ser concluída. Preste atenção ao tempo "real" relatado pelo comando time. Isso representa o tempo total decorrido.

Exemplo de saída (o tempo variará):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

real    0m10.552s
user    0m0.103s
sys     0m0.032s

Neste exemplo, o tempo "real" é de 0 minutos e 10,552 segundos.

Agora, vamos executar a mesma varredura usando o template de tempo -T4.

Execute o seguinte comando:

time sudo nmap -T4 127.0.0.1

Novamente, preste atenção ao tempo "real" relatado pelo comando time.

Exemplo de saída (o tempo variará):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

real    0m1.285s
user    0m0.098s
sys     0m0.029s

Neste exemplo, o tempo "real" é de 0 minutos e 1,285 segundos.

Compare os tempos "reais" das duas varreduras. Você deve observar que a varredura usando o template de tempo -T4 é concluída significativamente mais rápido do que a varredura usando o template de tempo -T1. Isso demonstra a troca entre velocidade e stealth (furtividade). -T1 é mais lento, mas mais stealth, enquanto -T4 é mais rápido, mas potencialmente mais perceptível.

Resumo

Neste laboratório, os participantes aprenderam a otimizar o tempo e o desempenho das varreduras do Nmap. Eles usaram a opção -T4 para uma varredura rápida, mas equilibrada, da rede 192.168.1.0/24, entendendo que valores -T mais altos significam uma varredura mais agressiva. Eles também aumentaram o paralelismo com --min-parallelism 20, definiram um atraso na varredura com --scan-delay 500ms, acompanharam o progresso com -v --stats-every 5s, testaram a varredura stealth (furtiva) com -T1 e compararam os tempos no terminal Xfce.