Nmap – Tutorial e comandos

Introdução

Nmap, essa ferramenta é a mais importante sem sombra de dúvidas! Sem utilizar o nmap qualquer analise fica impossível
Eu vou mostrar em detalhes o que é o Nmap, como utilizar ele, configurações que eu sempre uso, e um caso real usando uma máquina do HackTheBox
Então vamos lá!

O que é o Nmap

Network Mapper ou Mapeador de Redes (Péssima tradução) é uma ferramenta para analise de redes e segurança
O Nmap usa pacotes de diversos jeitos para descobrir se o host está disponível ou não, os serviços e portas desse host, versões, sistemas operacionais, filtros e firewalls, scripts para vulnerabilidades e diversos outros.
Essa é a ferramenta que mais vamos utilizar, ela é a base para qualquer analise!

Como utilizar

O nmap vem instalado e pronto para usar em distribuições de segurança como o Kali ou o Parrot

Mas você também pode instalar ele em qualquer OS, inclusive Windows

Vamos começar com o Host Discovery, digamos que eu queira descobrir se uma máquina está online e eu consigo falar com ela, nós podemos utilizar o ping certo? se eu utilizar ping 142.251.129.238(Ip do google), o terminal vai me retornar uma resposta!

Ping Sweep

Mas e se eu precisar fazer isso com uma rede toda, como a sua rede interna.
Se o seu padrão é 192.168.1.1/24 por exemplo isso abre a possibilidade para 254 hosts! Imagina ter que realizar um Ping para cada um deles
O nmap possui um comando para Ping Sweep, que consiste em um intervalo em vez de apenas 1 ip
Sempre que desejamos executar uma função no Nmap vamos utilizar uma “Flag” que é um – ou — e o nome da flag, para o ping sweep a flag é -sP
depois o intervalo que vamos cobrir 192.168.140.137/24

Port Scan

Agora vamos para a melhor parte, o análise de portas. Quando já possuímos um alvo, o primeiro passo é descobrir quais os serviços que o sistema está operando, eu preciso saber disso para procurar por vulnerabilidades.
Cuidado, esse é o ponto onde você precisa ter autorização para realizar!
nmap -sT 10.10.10.3 (Pode adicionar o /24 também) a flag -sT significa TCP Scan, isso mantém o 3-Way-Handshake completo

nmap -sT 10.10.10.3 

Agora conseguimos ver as portas e os serviços, mas isso não mostra todas as portas!
Podemos utilizar a flag -p para especificar as portas desejadas como
-p 80,443,21,22 … ou -p- para todas as portas, lembrando que isso pode demorar afinal são 65535 portas
Sem a flag -p o nmap verifica apenas as mais utilizadas.

Como o nmap verifica isso?

Vamos discutir o que é um 3 way handshake e como o nmap utiliza isso.
Sempre que você precisa conversar com outro sistema através do TCP, nós utilizamos o 3 way handshake
Essa forma de conexão é um padrão, vou dar uma breve explicação sobre o que é, e também deixar alguns recursos na descrição do vídeo para estudos mais detalhados disso

Quando você entra em um site, nesse caso google.com o seu sistema primeiro manda um SYN para o ip do google utilizando a porta 443(HTTPS), caso a porta esteja aberta e aguardando por conexões o google vai responder com um SYN ACK e você para finalizar a conexão responde um ACK.
Essa conversa é basicamente assim:

Você -> Ei Servidor! Você está ai? (SYN) -> Google
Google -> Estou sim(SYN)Vamos conectar?(ACK) -> Você
Você -> Vamos conectar! (ACK) -> Google

Isso é uma forma resumida do que é o 3-Way-HandShake
O Nmap utiliza essa modelo para verificar se as portas estão abertas ou não, alterando apenas o número da porta que ele está conversando
Um detalhe interessante é que o nmap por padrão utiliza o Stealth Scan (-sS) que cancela esse handshake antes de finalizar
Em vez de enviar o ultimo ACK ele envia um RST para finalizar a conexão

Você -> Ei Servidor! Você está ai? (SYN) -> Google
Google -> Estou sim(SYN)Vamos conectar?(ACK) -> Você
Você -> Deixa isso para lá (RST) -> Google

Antigamente isso era de fato Stealth pois não deixa traços no Log de conexão, mas hoje em dia não muda nada, com toda certeza o administrator do sistema vai suspeitar dessa conexão. Para enviar uma conexão completa utilizamos a flag -sT

análise com o wireshark

Vamos analisar agora como os pacotes são transmitidos. Vou utilizar o mesmo alvo anterior que está com as portas 21, 22, 139 e 445 abertas
Vou iniciar o WireShark, caso você não saiba utilizar o Wireshark, fique de olho nas minhas postagens e no meu canal!
Primeiro eu vou rodar o nmap sem o -sT

Note que diversos SYNs foram enviados para todas as portas do alvo, mas a grande maioria não obteve um SYN ACK isso significa que a porta não está escutando, logo o NMAP entende como Fechada
Agora analisando uma porta aberta como a 139.
O Nmap envia um SYN , o sistema responde com o SYN ACK e o Nmap finaliza com o RST

Agora com a flag -sT

A diferença está no final, onde em vez de enviar um RST, o nmap vai enviar um ACK e depois um RST ACK para finalizar a conexão

Default Scripts e Versions

Vamos falar de scripts, aqui está o poder total do Nmap!
Essa ferramenta possui MUITOS scripts.
Nessa parte vamos elevar o Nmap de um análise de portas e IPS para realmente descobrir versões, OS, Vulnerabilidades entre outros.
Para ver todos os scripts do nmap:

ls -1 /usr/share/nmap/scripts

Você pode rodar qualquer script utilizando o –script e o nome do Script, lembrando que alguns vão usar algum argumento –script-args
Mas normalmente você não vai utilizar eles sem uma razão, primeiro eu sempre utilizo os Default Scripts (Scripts Padrão)
Essa é a Flag -sC
Sempre que você se encontrar com um serviço como SMB, de uma olhada na documentação do NMAP para ver o que os scripts fazem e quais argumentos ele precisa. Até mesmo para vulnerabilidades como ShellShock, EternalBlue, HearthBleed entre diversas outras estão presentes nesses scripts.

O meu uso do Nmap

Normalmente eu sempre começo com o IppSecWay

mkdir nmap

nmap -sV -sC -oA nmap/initial 0.0.0.0

Primeiro eu crio um diretório chamado nmap para salvar todos os Scans
Eu uso
-sV = Enumerar todas as versões
-sC = Usar os Scripts Padrão
-oA = Output em todos os formatos(Para Salvar), depois a pasta (nmap) e o nome desse scan(initial)
E por fim o IP do alvo

Quando esse scan terminar continue enumerando os serviços e deixe o seguinte rodando:

nmap -p- -oA nmap/All-ports 0.0.0.0

Assim deixamos esse rodando para todas as portas do sistema, e depois caso encontre algo a mais:

nmap -p PORTA,PORTA... -sV -sC nmap/All-ports-Scans 0.0.0.0

Assim deixamos todos os scripts o mais rápido possível
Caso você precise usar algum script:

nmap -v -p 139,445 --script=smb-vuln-ms08-067 --script-args=unsafe=1 0.0.0.0

Lembrando que esse é apenas um exemplo, cada script precisa de um argumento próprio, outro detalhe muito legal é utilizar os WildCards para rodar mais de um script, como:

nmap -v -p 139,445 --script=smb* 0.0.0.0

Agora o nmap vai rodar todos os scripts que começam com a palavra smb, cuidado com esse tipo de comando se você não tem certeza do que cada um deles faz, isso pode danificar o sistema

Bem, essa explicação fica aqui!
Da uma olhada no meu canal do Youtube onde todos esses posts ganham vida.
Aguardo você na comunidade do Discord!
Continue Estudando:
Artigo Sobre o Nmap = https://www.interviewbit.com/blog/nmap-commands/
Wikipedia = https://pt.wikipedia.org/wiki/Nmap
Site Oficial Nmap = https://nmap.org/
TryHackMe = https://tryhackme.com/room/furthernmap
Um grande abraço de urso!