Experimento relacionado: https://tryhackme.com/r/room/nmap
Conteúdo relacionado: Aprenda como usar o Nmap para descobrir hosts ativos, encontrar portas abertas e detectar versões de serviços.
Introdução
Imagine que você se conecta a uma rede e utiliza diversos recursos de rede, como e-mail e navegação na web. Dois problemas surgem. Primeiro, como descobrir outros dispositivos ativos (online) nesta ou em outras redes. Segundo, como identificar os serviços de rede em execução nesses dispositivos ativos, como servidores SSH e web.
Uma abordagem seria manual. Para descobrir dispositivos ativos na rede 192.168.0.1/24, você poderia usar ferramentas básicas como ping e arp-scan para verificar 254 endereços IP. Apesar de essa rede ter 256 endereços, contamos apenas 254, pois dois são reservados. Cada ferramenta tem limitações. Por exemplo, se o firewall do sistema de destino bloquear tráfego ICMP, o comando ping não fornecerá informações. Além disso, o arp-scan só funciona se seu dispositivo estiver conectado à mesma rede que o alvo (via Ethernet ou Wi-Fi). Em resumo, sem ferramentas avançadas e confiáveis, descobrir dispositivos ativos em uma rede seria extremamente demorado; com as ferramentas corretas e tempo suficiente, podemos obter uma lista de hosts ativos na rede alvo. Portanto, precisamos de uma ferramenta flexível que possa lidar com várias situações.
Depender de soluções manuais ou scripts ineficientes também consumiria muito tempo para descobrir quais serviços estão em execução em um host específico. Por exemplo, embora você possa usar telnet para tentar cada porta sequencialmente, o número de portas a serem escaneadas é de milhares, tornando essa uma tarefa muito demorada, mesmo com scripts para automatizar as tentativas de conexão.
Nesse cenário, o scanner de rede Nmap é uma solução muito eficiente que pode atender às duas necessidades mencionadas e muito mais. O Nmap é um scanner de rede de código aberto, lançado pela primeira vez em 1997. Desde então, o Nmap tem adicionado constantemente vários recursos e opções, tornando-se uma ferramenta poderosa e flexível que se adapta a diversos cenários e configurações.
Objetivos de Aprendizado
Este artigo fornecerá os fundamentos necessários para usar o scanner Nmap ou o comando nmap. Especificamente, você aprenderá:
- Como descobrir hosts ativos (online);
- Como encontrar serviços em execução em hosts online;
- Como distinguir diferentes tipos de escaneamento de portas;
- Como detectar versões de serviços em execução;
- Como controlar o tempo de escaneamento;
- Como formatar a saída.
Pré-requisitos
Antes de ler este artigo, o leitor deve estar familiarizado com o modelo TCP/IP e alguns conceitos e protocolos relacionados. Os seguintes experimentos do TryHackMe podem fornecer o conhecimento necessário:
- Conceitos de Rede
- Fundamentos de Rede
- Protocolos Principais de Rede
- Protocolos de Segurança de Rede
Descoberta de Hosts: Quem está Online?
Vamos começar com a primeira pergunta: quem está online? Esta seção explica como usar o Nmap para descobrir hosts ativos. Podemos usar vários métodos complexos no Nmap para descobrir hosts ativos.
Antes de começar, note que ao usar o Nmap, podemos especificar os alvos de várias maneiras:
- Faixa de IPs usando
-: Para escanear todos os IPs de 192.168.0.1 a 192.168.0.10, pode ser escrito como192.168.0.1-10; - Usar
/para sub-rede IP: Para escanear uma sub-rede, pode ser expressa como192.168.0.1/24, o que equivale a192.168.0.0-255; - Nome do host: Você também pode especificar o alvo pelo nome do host, como
exemplo.thm.
Suponha que você queira descobrir hosts online na rede. O Nmap fornece a opção -sn, que é um escaneamento ping; mas não espere que funcione como o ping. Veremos seu uso real a seguir.
Ao longo deste artigo, executaremos o nmap como root ou usando sudo, para não limitar as funcionalidades do Nmap devido a permissões de conta. Executar o Nmap como um usuário local (não root) limita tipos básicos de escaneamento, como echo ICMP e escaneamento TCP connect; discutiremos isso novamente no final do artigo.
Escaneamento de Rede Local
Neste caso, usamos o termo "local" para nos referir à rede à qual já estamos conectados diretamente, como Ethernet ou Wi-Fi. No primeiro exemplo abaixo, escanearemos a rede Wi-Fi à qual o dispositivo atual está conectado. O endereço IP da máquina que estamos usando é 192.168.66.89, e estamos escaneando a rede 192.168.66.0/24. O comando nmap -sn 192.168.66.0/24 e sua saída serão assim:
root@tryhackme:~# nmap -sn 192.168.66.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-07 13:49 EEST
Nmap scan report for XiaoQiang (192.168.66.1)
Host is up (0.0069s latency).
MAC Address: 44:DF:65:D8:FE:6C (Unknown)
Nmap scan report for S190023240007 (192.168.66.88)
Host is up (0.090s latency).
MAC Address: 7C:DF:A1:D3:8C:5C (Espressif)
Nmap scan report for wlan0 (192.168.66.97)
Host is up (0.20s latency).
MAC Address: 10:D5:61:E2:18:E6 (Tuya Smart)
Nmap scan report for 192.168.66.179
Host is up (0.10s latency).
MAC Address: E4:AA:EC:8F:88:C9 (Tianjin Hualai Technology)
[...]
Nmap done: 256 IP addresses (7 hosts up) scanned in 2.64 seconds
Como estamos escaneando uma rede local diretamente conectada, podemos procurar o endereço MAC dos dispositivos de destino. Isso nos permite identificar o fornecedor da placa de rede, o que é útil para tentar determinar o tipo de dispositivo de destino.
Ao escanear redes locais diretamente conectadas, o Nmap primeiro envia solicitações ARP. Quando um dispositivo responde a uma solicitação ARP, o Nmap o marca como "host ativo".
Escaneamento de Rede Remota
Agora vamos considerar o caso de uma rede "remota". Neste contexto, "remota" significa que há pelo menos um roteador separando nosso sistema computacional da rede de destino. Portanto, todo o tráfego para o sistema de destino deve passar por um ou mais roteadores. Isso difere do escaneamento de rede local com o nmap, pois agora não podemos enviar solicitações ARP para o destino.
Suponha que o endereço IP do sistema que estamos usando atualmente seja 192.168.66.89, pertencente à rede 192.168.66.0/24. No exemplo abaixo, a rede de destino que queremos escanear é 192.168.11.0/24, onde dois ou mais roteadores (saltos) separam nosso sistema local do host de destino.
root@tryhackme:~# nmap -sn 192.168.11.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-07 14:05 EEST
Nmap scan report for 192.168.11.1
Host is up (0.018s latency).
Nmap scan report for 192.168.11.151
Host is up (0.0013s latency).
Nmap scan report for 192.168.11.152
Host is up (0.13s latency).
Nmap scan report for 192.168.11.154
Host is up (0.22s latency).
Nmap scan report for 192.168.11.155
Host is up (2.3s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 10.67 seconds
A saída do Nmap acima mostra que 5 hosts estão ativos, mas como o Nmap descobriu isso? Para saber mais, vamos analisar alguns exemplos de tráfego gerados pelo Nmap. Na captura de tela abaixo, podemos ver as respostas de dois hosts:
192.168.11.1está ativo e pode responder a solicitações ICMP echo (ping).192.168.11.2parece estar desligado. O Nmap enviou duas solicitações ICMP echo (ping), duas solicitações de timestamp ICMP, dois pacotes TCP com o flag SYN definido na porta 443 e dois pacotes TCP com o flag ACK definido na porta 80; mas o destino não respondeu a nada. Podemos observar vários pacotes ICMP "destination unreachable" do roteador em192.168.11.151.
Vale a pena notar que podemos controlar melhor como o Nmap descobre hosts online, por exemplo, as opções -PS[portlist], -PA[portlist], -PU[portlist] podem usar TCP SYN, TCP ACK e UDP discovery em portas específicas. No entanto, isso está fora do escopo deste artigo.
Por último, o Nmap oferece um escaneamento de lista com o parâmetro -sL, que apenas lista os alvos a serem escaneados, sem realmente executar o escaneamento. Por exemplo, o comando nmap -sL 192.168.0.1/24 listará os 256 alvos a serem escaneados. Essa opção ajuda a confirmar os alvos antes de executar o escaneamento real.
Como mencionado anteriormente, a opção -sn destina-se a descobrir hosts ativos sem tentar descobrir os serviços em execução nos hosts de destino. Esse tipo de escaneamento pode ser útil se você quiser descobrir dispositivos online em uma rede sem causar muito ruído, mas não nos dirá quais serviços estão em execução nos hosts ativos. Se quisermos saber mais sobre os serviços de rede em execução nos hosts ativos, precisamos de um tipo de escaneamento mais "agressivo", que exploraremos na próxima seção.
Dica: o termo mais "agressivo" aqui refere-se a uma maior intensidade de escaneamento.
No experimento relacionado do TryHackMe, clique no botão Start AttackBox na parte superior da página e aguarde o carregamento. Quando o AttackBox estiver pronto, abra seu terminal para acessar o nmap e responder às perguntas desta e das próximas seções. Além disso, clique no botão "Start Machine" na página do experimento para implantar o sistema de destino.
Pergunta
Ao escanear o alvo 192.168.0.1/27, qual foi o último endereço IP escaneado?
Análise: CIDR e máscara de sub-rede: /27 indica que os primeiros 27 bits são a parte da rede, e os últimos 5 bits são a parte do host. A máscara de sub-rede é 255.255.255.224 (27 bits como 1, últimos 5 bits como 0). Divisão de sub-rede: O tamanho desta sub-rede é 2^5 = 32 endereços (incluindo endereço de rede e broadcast). O IP fornecido 192.168.0.1 pertence à sub-rede 192.168.0.0/27, com faixa de endereços de 192.168.0.0 a 192.168.0.31. Endereços-chave: Endereço de rede: 192.168.0.0 (parte do host todos zeros). Endereço de broadcast: 192.168.0.31 (parte do host todos uns). Faixa de hosts disponíveis: 192.168.0.1 a 192.168.0.30; faixa de escaneamento real: 192.168.0.0 a 192.168.0.31. Conclusão: O último endereço IP escaneado foi o endereço de broadcast da sub-rede, ou seja, 192.168.0.31.
Dica: você pode usar o escaneamento de lista do Nmap para verificar, ou seja, -sL.
nmap -sL 192.168.0.1/27
192.168.0.31
Escaneamento de Portas: Quem está Escutando?
Anteriormente, aprendemos a usar a opção -sn para descobrir hosts ativos. Nesta seção, queremos descobrir os serviços de rede que estão em estado de escuta nos hosts ativos. Serviços de rede são processos que escutam conexões de entrada em portas TCP ou UDP. Serviços de rede comuns incluem servidores web (que geralmente escutam nas portas TCP 80 e 443) e servidores DNS (que geralmente escutam nas portas UDP e TCP 53).
Por design, o TCP tem 65.535 portas, assim como o UDP. Como determinar quais portas estão associadas a quais serviços? Vamos ver.
Escaneamento de Portas TCP
O método mais simples e básico para saber se uma porta TCP está aberta é tentar conectar a ela usando telnet. Se você preferir usar um cliente Telnet para escanear, talvez precise tentar estabelecer uma conexão TCP com cada porta de destino. Em outras palavras, você precisa tentar concluir o handshake de três vias TCP com cada porta de destino; apenas portas TCP abertas farão a resposta adequada e permitirão que a conexão TCP seja estabelecida. Esse processo não é muito diferente do processo de escaneamento de conexão do Nmap em essência.
Escaneamento de Conexão
No Nmap, podemos usar -sT para realizar um escaneamento de conexão (connect scan). Ele tenta concluir o handshake de três vias TCP com cada porta TCP de destino. Se a porta TCP estiver aberta e o Nmap se conectar com sucesso, o Nmap desconectará imediatamente a conexão estabelecida.
Na captura de tela abaixo, o endereço IP da máquina de ataque que executamos o nmap é 192.168.124.148, podemos ver que o sistema de destino tem a porta TCP 22 aberta e a porta 23 fechada. Na parte marcada como 1, podemos ver como o handshake de três vias TCP é concluído e, em seguida, será desconectado pelo Nmap usando um pacote TCP RST-ACK. A parte marcada como 2 mostra a tentativa de conexão para portas fechadas, podemos ver que o sistema de destino responderá com um pacote TCP RST-ACK.
Escaneamento SYN (Escaneamento Furtivo)
Ao contrário do escaneamento de conexão, que tenta conectar-se a portas TCP de destino (ou seja, concluir o handshake de três vias TCP completo), o escaneamento SYN executa apenas a primeira etapa do handshake de três vias TCP: envia um pacote TCP SYN. Portanto, o processo de handshake de três vias TCP envolvido nunca será concluído. A vantagem disso é que, como uma conexão TCP completa nunca é estabelecida, espera-se que gere menos logs. Portanto, essa opção de escaneamento geralmente é considerada uma forma de escaneamento relativamente furtivo. Você pode adicionar a opção -sS ao comando Nmap para usar o escaneamento SYN do Nmap.
Na captura de tela abaixo, escaneamos a porta 22 do sistema de destino (que está aberta). A parte marcada como 1 indica que o serviço em estado de escuta respondeu com um pacote TCP SYN-ACK, no entanto, o Nmap continuará respondendo com um pacote TCP RST, em vez de concluir o handshake de três vias TCP. A parte marcada como 2 mostra a tentativa de conexão TCP para uma porta já fechada; neste caso, a troca de pacotes relacionados é a mesma do exemplo de escaneamento de conexão acima.
Escaneamento de Portas UDP
Embora a maioria dos serviços use TCP para comunicação, alguns serviços também usam UDP. Por exemplo, DNS, DHCP, NTP (Protocolo de Tempo de Rede), SNMP (Protocolo Simples de Gerenciamento de Rede) e protocolos VoIP (Voz sobre IP). Ao usar UDP para comunicação, não é necessário estabelecer uma conexão e depois desconectá-la, além disso, é adequado para cenários de comunicação em tempo real, como streaming. São essas as razões pelas quais consideramos escanear e descobrir serviços que escutam em portas UDP.
O Nmap fornece a opção -sU para nos ajudar a escanear serviços UDP. Como o UDP é mais simples que o TCP, esperamos que a troca de tráfego também seja diferente. A captura de tela abaixo mostra quando o Nmap envia um pacote UDP para uma porta UDP fechada, várias mensagens de resposta ICMP "destination unreachable" (port unreachable) são geradas.
Limitando Portas de Destino
Por padrão, o Nmap escaneará as 1.000 portas mais comuns, mas isso pode não ser o que queremos; portanto, o Nmap também nos oferece mais opções:
-Findica o modo rápido (Fast mode), que escaneará as 100 portas mais comuns (em vez das 1.000 padrão).-p[range]permite especificar o intervalo de portas a serem escaneadas. Por exemplo,-p10-1024significa escanear portas 10 a 1024, enquanto-p-25significa escanear todas as portas de 1 a 25. Note que se você escolher usar-p-, todas as portas serão escaneadas, o que equivale a-p1-65535. Se você quiser fazer um escaneamento de portas o mais completo possível, será sua melhor opção.
Resumo da Seção
| Opção | Explicação |
|---|---|
-sT |
Escaneamento de conexão TCP: conclui o handshake de três vias completo |
-sS |
TCP SYN: conclui apenas a primeira etapa do handshake de três vias TCP |
-sU |
Escaneamento UDP |
-F |
Modo rápido: escaneia 100 portas mais comuns |
-p[range] |
Especifica o intervalo de portas: -p- significa escanear todas as portas |
Pergunta
Quantas portas TCP estão abertas no sistema de destino MACHINE_IP?
sudo nmap -sS 10.10.226.7
6
Encontre o servidor web em escuta no MACHINE_IP e acesse-o com um navegador. Qual o conteúdo da flag exibida na página inicial do alvo?
Dica: Use o navegador para acessar http://ENDERECO_IP:NUMERO_PORTA, onde ENDERECO_IP é o endereço IP do servidor de destino e NUMERO_PORTA é o número da porta do servidor web em escuta.
Com base nas informações da captura de tela anterior, sabemos que a porta correspondente ao serviço http é 8008; portanto, podemos acessar no computador de ataque: 10.10.226.7:8008.
THM{SECRET_PAGE_38B9P6}
Detecção de Versão: Extraindo Mais Informações
Detecção de Sistema Operacional
Você pode habilitar a detecção de sistema operacional adicionando a opção -O. Como o nome sugere, a opção de detecção de sistema operacional fará com que o Nmap dependa de várias métricas para fazer uma suposição informada sobre o sistema operacional de destino. Neste exemplo, o Nmap detectará que o dispositivo de destino está usando um sistema operacional Linux 4.x ou 5.x; no entanto, na detecção real da versão do sistema operacional, não se pode garantir que o resultado seja 100% preciso. A estimativa da versão entre 4.15 e 5.8 no exemplo abaixo está muito próxima do resultado real, mas o sistema operacional do host de destino neste exemplo é na verdade a versão 5.15.
root@tryhackme:~# nmap -sS -O 192.168.124.211
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-13 13:37 EEST
Nmap scan report for ubuntu22lts-vm (192.168.124.211)
Host is up (0.00043s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
MAC Address: 52:54:00:54:FA:4E (QEMU virtual NIC)
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.8
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.44 seconds
Detecção de Serviços e Versões
Quando você descobre algumas portas abertas e quer saber quais serviços relacionados estão em escuta, você pode usar a opção -sV para habilitar a detecção de versão do nmap. Isso é muito conveniente para coletar mais informações sobre o alvo com menos comandos. Como a saída do terminal abaixo mostra uma coluna adicional chamada "VERSÃO", que contém informações sobre a versão do servidor SSH detectado.
root@tryhackme:~# nmap -sS -sV 192.168.124.211
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-13 13:33 EEST
Nmap scan report for ubuntu22lts-vm (192.168.124.211)
Host is up (0.000046s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
MAC Address: 52:54:00:54:FA:4E (QEMU virtual NIC)
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 0.25
Se você quiser ter as funcionalidades de -O, -sV e mais opções em uma única opção, o que fazer? Neste caso, você pode escolher usar a opção -A no Nmap. Esta opção suporta detecção de sistema operacional, escaneamento de versão e rastreamento de roteamento, entre outros recursos.
Escaneamento Forçado
Quando executamos um escaneamento de portas Nmap, por exemplo, usando a opção -sS, é possível que o host de destino não responda na fase de descoberta de hosts (por exemplo, o host de destino não responde a solicitações ICMP). Portanto, o Nmar marcará este host como desligado e não iniciará o escaneamento de portas relacionado. Aqui, podemos exigir que o Nmap trate todos os hosts como online e execute um escaneamento de portas para cada host, incluindo aqueles que não responderam na fase de descoberta de hosts. Podemos acionar essa opção de comando adicionando o parâmetro -Pn.
Resumo da Seção
| Opção | Explicação |
|---|---|
-O |
Detecção de sistema operacional (OS) |
-sV |
Detecção de serviço e versão |
-A |
Detecção de sistema operacional, detecção de versão e outros recursos adicionais |
-Pn |
Escanear hosts que parecem estar desligados (ignorar descoberta de hosts) |
Pergunta
Qual o nome e as informações de versão detectáveis do servidor web em execução no host de destino MACHINE_IP?
sudo nmap -sS -sV -p8008 -Pn 10.10.226.7
lighttpd 1.4.74
Tempo: Quão Rápido é Rápido?
O Nmap também oferece várias opções para controlar a velocidade e o tempo do escaneamento Nmap.
Executar um escaneamento Nmap em velocidade normal pode disparar sistemas IDS ou outras soluções de segurança, portanto, controlar a velocidade do escaneamento é uma escolha razoável. O Nmap oferece seis modelos de tempo, cujos nomes epxlicam tudo: paranóico (0-paranoid), furtivo (1-sneaky), educado (2-polite), normal (3-normal), agressivo (4-aggressive) e insano (5-insane). Você pode escolher o modelo de tempo pelo nome ou número. Por exemplo, você pode adicionar -T0 ou -T 0, -T paranoid etc. para selecionar a opção de controle de tempo mais lenta do Nmap.
No exemplo de comando de escaneamento Nmap abaixo, iniciamos um escaneamento SYN das 100 portas TCP mais comuns nmap -sS MACHINE_IP -F. Especificamente, repetiremos o escaneamento com diferentes tempos de escaneamento: T0, T1, T2, T3 e T4. Nas configurações de comando abaixo, o Nmap levou tempos diferentes para escanear 100 portas comuns. Como mostrado na tabela abaixo, dependendo das configurações de rede e do sistema de destino, você obterá resultados diferentes de comando.
| Tempo | Duração Total |
|---|---|
| T0 (paranóico) | 9.8 horas |
| T1 (furtivo) | 27.53 minutos |
| T2 (educado) | 40.56 segundos |
| T3 (normal) | 0.15 segundos |
| T4 (agressivo) | 0.13 segundos |
Na captura de tela abaixo, podemos ver o tempo gasto pelo Nmap para enviar diferentes pacotes. Quando o tempo de escaneamento do Nmap é T0, podemos ver que o Nmap espera 5 minutos (300 segundos) antes de passar para a próxima porta.
Quando definimos o tempo de escaneamento do Nmap como a opção T1, como mostrado na captura de tela abaixo, o Nmap espera cerca de 15 segundos entre cada duas portas.
Em seguida, quando o tempo de escaneamento do Nmap é T2, o tempo de espera do nmap diminui para 0.4 segundos, como mostrado na figura abaixo.
Finalmente, quando o Nmap usa a opção de tempo padrão T3, o Nmap se comportará o mais rápido possível, como mostrado na figura abaixo. Vale a pena repetir que isso pode parecer diferente na prática. Neste caso específico, o Nmap considerará a conexão com o host de destino rápida e confiável, pois não há perda de pacotes.
Outra opção útil é controlar o número de sondas de serviço paralelas, que pode ser controlada pelas opções --min-parallelism <numsondas> e --max-parallelism <numsondas>. Essas opções podem ser usadas para definir o número mínimo e máximo de sondas TCP e UDP ativas simultaneamente para um grupo de hosts. Por padrão, o nmap controla automaticamente o número de sondas paralelas. Se o desempenho da rede for ruim, ou seja, houver perda de pacotes, o número de sondas paralelas pode diminuir para 1; além disso, se a rede estiver funcionando bem, o número de sondas paralelas pode chegar a centenas.
Uma opção útil semelhante é --min-rate <número> e --max-rate <número>. Como o nome sugere, eles podem controlar a taxa mínima e máxima do nmap para enviar pacotes. Essa taxa será expressa em pacotes por segundo. Vale a pena mencionar que a taxa especificada se aplica a todo o processo de escaneamento, não apenas a um único host.
A última opção de parâmetro que apresentaremos nesta seção é --host-timeout <tempo>. Esta opção especificará o tempo máximo que você está disposto a esperar, aplicável a hosts lentos ou conexões de rede lentas.
| Opção | Explicação |
|---|---|
-T<0-5> |
Modelo de tempo – paranóico(0-paranoid), furtivo(1-sneaky), educado(2-polite), normal(3-normal), agressivo(4-aggressive) e insano(5-insane) |
--min-parallelism <numsondas> e --max-parallelism <numsondas> |
Número mínimo e máximo de sondas paralelas |
--min-rate <número> e --max-rate <número> |
Taxa mínima e máxima (pacotes/segundo) |
--host-timeout |
Tempo máximo de espera para o host de destino |
Pergunta
No comando Nmap, qual o equivalente não numérico da opção -T4?
-T agressivo
Saída (Output): Controlando o que Você Vê
Esta seção focará nos seguintes tópicos:
- Exibir informações adicionais durante o escaneamento;
- Selecionar o formato de arquivo para salvar o relatório de escaneamento.
Modo Verboso e Depuração
Em alguns casos, um escaneamento Nmap pode demorar muito para ser concluído ou gerar qualquer resultado que será exibido na tela. Além disso, às vezes você pode estar mais interessado em mais informações em tempo real sobre o andamento do escaneamento. Se quiser obter mais informações sobre o andamento do escaneamento Nmap, pode habilitar a opção de saída detalhada adicionando -v. Como o exemplo de saída do terminal abaixo, primeiro escolhemos o nível de detalhe de saída padrão (sem adicionar nenhuma opção para controlar o nível de detalhe do conteúdo de saída).
root@tryhackme:~# nmap -sS 192.168.139.1/24
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 18:57 EEST
Nmap scan report for 192.168.139.254
Host is up (0.000030s latency).
All 1000 scanned ports on 192.168.139.254 are in ignored states.
Not shown: 1000 filtered tcp ports (no-response)
MAC Address: 00:50:56:E0:FC:AE (VMware)
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.000010s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Nmap done: 256 IP addresses (2 hosts up) scanned in 41.84 seconds
Em seguida, repetimos um comando de escaneamento semelhante ao acima; mas, adicionalmente, adicionamos a opção -v para tentar obter uma saída mais detalhada. Como mostrado abaixo, as muitas informações detalhadas na saída podem ser muito úteis para nós, especialmente quando estamos aprendendo Nmap e explorando diferentes opções de parâmetro. No exemplo de saída do terminal abaixo, podemos ver como o Nmap passa de uma fase para outra: escaneamento ARP ping, resolução paralela de DNS e, finalmenet, o escaneamento furtivo SYN para cada host ativo.
root@tryhackme:~# nmap 192.168.139.1/24 -v
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 19:01 EEST
Initiating ARP Ping Scan at 19:01
Scanning 255 hosts [1 port/host]
Completed ARP Ping Scan at 19:01, 7.94s elapsed (255 total hosts)
Initiating Parallel DNS resolution of 1 host. at 19:01
Completed Parallel DNS resolution of 1 host. at 19:02, 13.00s elapsed
Nmap scan report for 192.168.139.0 [host down]
Nmap scan report for 192.168.139.2 [host down]
[...]
Nmap scan report for 192.168.139.253 [host down]
Nmap scan report for 192.168.139.255 [host down]
Initiating Parallel DNS resolution of 1 host. at 19:02
Completed Parallel DNS resolution of 1 host. at 19:02, 0.05s elapsed
Initiating SYN Stealth Scan at 19:02
Scanning 192.168.139.254 [1000 ports]
[...]
Initiating SYN Stealth Scan at 19:02
Scanning g5000 (192.168.139.1) [1000 ports]
Discovered open port 902/tcp on 192.168.139.1
Completed SYN Stealth Scan at 19:02, 0.03s elapsed (1000 total ports)
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.0000090s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Read data files from: /usr/bin/../share/nmap
Nmap done: 256 IP addresses (2 hosts up) scanned in 42.19 seconds
Raw packets sent: 3512 (146.336KB) | Rcvd: 2005 (84.156KB)
Em geral, a opção -v é suficiente para o nível de detalhe da saída; no entanto, se ainda não estiver satisfeito, você pode adicionar outro "v" (por exemplo, -vv ou até -vvvv) para aumentar o nível de detalhe da saída. Você também pode especificar diretamente o nível de detalhe da saída, usando opções como -v2 e -v4. Você pode até pressionar "v" após o início do escaneamento Nmap para aumentar o nível de detalhe da saída.
Se todas essas opções de saída verbosa não forem suficientes para suas necessidades, você também pode considerar usar a opção -d para seleção de conteúdo de nível de depuração. Da mesma forma, você pode aumentar adicionando um ou mais "d" ou especificando diretamente o nível de depuração, com o nível máximo de depuração sendo -d9; antes de selecionar opções específicas, certifique-se de estar preparado para lidar com milhares de linhas de informações e depuração.
Salvando Relatórios de Escaneamento
Em muitos casos, precisamos salvar os resultados do escaneamento Nmap. O Nmap nos oferece vários formatos de salvamento. Os três mais úteis são o formato de saída normal (humanizado), o formato de saída XML e o formato de saída grep-able (referente ao comando grep). Normalmente, você pode escolher os seguintes formatos de relatório de escaneamento Nmap:
-oN <arquivo>- Formato de saída normal;-oX <arquivo>- Formato de saída XML;-oG <arquivo>- Formato de saída grep-útil (útil paragrepeawk);-oA <basename>- Saída em todos os formatos principais.
No exemplo de terminal abaixo, podemos ver o exemplo ao usar a opção -oA. Ele gerou três relatórios de escaneamento Nmap com extensões nmap, xml e gnmap, representando respectivamente as saídas normal, XML e grep-able.
root@tryhackme:~# nmap -sS 192.168.139.1 -oA gateway
Starting Nmap 7.92 ( https://nmap.org ) at 2024-08-13 19:35 EEST
Nmap scan report for g5000 (192.168.139.1)
Host is up (0.0000070s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
902/tcp open iss-realsecure
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
# ls
gateway.gnmap gateway.nmap gateway.xml
Pergunta
Que opção de parâmetro devemos adicionar ao comando nmap para selecionar uma saída de depuração (debugging)?
-d
Resumo do Artigo
Neste artigo, aprendemos como usar o Nmap para descobrir hosts ativas em qualquer rede. Exploramos os tipos comuns de escaneamento de portas e como usar o Nmap para encontrar números de versão de serviços. Aprendemos como controlar o tempo do escaneamento Nmap e, finalmente, apresentamos os diferentes formatos para salvar resultados de escaneamento Nmap.
É importante notar que é melhor executar o Nmap com permissões sudo, para que possamos usar todas as suas funcionalidades. Executar o Nmap com permissões de usuário local ainda fará com que ele funcione; no entanto, você deve esperar que muitas funcionalidades não estejam mais disponíveis. Quando executamos o Nmap como um usuário local, só podemos usar uma pequena parte das funcionalidades do Nmap. Por exemplo, se você executar o Nmap com permissões sudo, ele usará automaticamente o escaneamento SYN (-sS), mas se você estiver executando o Nmap como um usuário local, o padrão é o escaneamento de conexão TCP (-sT). Isso ocorre porque a construção de certos pacotes (como enviar pacotes TCP SYN) requer privilégios root.
O Nmap é uma ferramenta de escaneamento de portas muito rica em recursos, e neste artigo abordamos apenas as funcionalidades mais comuns e importantes. No módulo de aprendizado de segurança cibernética do TryHackMe, existem quatro salas de experimento dedicadas ao aprendizado do Nmap. A tabela abaixo lista a maioria das opções de comando Nmap que explicamos neste artigo, consulte a tabela para nos ajudar a revisar e lembrar delas.
| Opção | Explicação |
|---|---|
-sL |
Escaneamento de lista – lista os alvos sem escanear |
| Descoberta de Hosts | |
-sn |
Escaneamento ping – apenas descoberta de hosts |
| Escaneamento de Portas | |
-sT |
Escaneamento de conexão TCP – conclui todo o handshake de três vias |
-sS |
TCP SYN – primeira etapa do handshake de três vias |
-sU |
Escaneamento UDP |
-F |
Modo rápido – escaneia as 100 portas mais comuns |
-p[range] |
Especifica o intervalo de portas – -p- escaneia todas as portas |
-Pn |
Trata todos os hosts como online – escaneia hosts que parecem estar offline |
| Detecção de Serviços | |
-O |
Detecção de SO |
-sV |
Detecção de versão de serviço |
-A |
Detecção de SO, detecção de versão e outros recursos adicionais |
| Tempo | |
-T<0-5> |
Modelo de tempo – paranóico(0-paranoid), furtivo(1-sneaky), educado(2-polite), normal(3-normal), agressivo(4-aggressive) e insano(5-insane) |
--min-parallelism <numsondas> e --max-parallelism <numsondas> |
Número mínimo e máximo de sondas paralelas |
--min-rate <número> e --max-rate <número> |
Taxa mínima e máxima (pacotes/segundo) |
--host-timeout |
Tempo máximo de espera para o host de destino |
| Saída em tempo real | |
-v |
Detalhamento – por exemplo -vv e -v4 |
-d |
Nível de depuração – por exemplo -d e -d9 |
| Relatório | |
-oN <arquivo> |
Formato de saída normal |
-oX <arquivo> |
Formato de saída XML |
-oG <arquivo> |
Formato de saída grep-able |
-oA <basename> |
Saída em todos os formatos principais |
Pergunta
Se você executar o comando nmap MACHINE_IP com permissões de usuário local, qual tipo de escaneamento o Nmap usará?
-sT: Escaneamento de conexão TCP (connect scan)