Nmap: the network mapper
O Nmap, é um software open source que realiza ports scan em uma rede. É o port scan mais utilizado e de longe a melhor ferramenta para ser utilizada nesse quesito.
Para identificarmos hosts ativos em uma rede, utilizamos nmap -sn <host> ou passar um bloco de ip como por exemplo 1-254. O resultado será salvo no arquivo chamado ativos.txt
┌──(user㉿kali)-[~/Desktop]
└─$ sudo nmap -sn 37.59.172.224-239 -oG ativos.txtPodemos utilizar também passando a máscara para scanear a rede inteira.
sudo nmap -sn 192.168.1.0/24Para identificar se uma porta em um host está aberta, é necessário estabelecer o three-way-handshake. Funciona da seguinte forma, o cliente envia uma flag SYN, o servidor responde com um SYN/ACK e o cliente finaliza com uma flag ACK, uma troca de dados TCP é dessa forma. Com isso, a conexão é bem sucedida. O ACK irá fechar o 3WH para estabelecer a conexão, mas a partir do momento que você recebe o SYN/ACK, o serviço está ativo (a porta está aberta).
Quando o serviço está inativo, o cliente envia uma flag SYN e o servidor envia uma flag RST/ACK como resposta. Ou seja, a porta está fechada.

Diferenças entre os tipos de scan
O TCP connect, consome muito tráfego em uma rede, visto que é necessário completar o three-way-handshake cada vez que for se comunicar, então acaba sendo muito barulhento. O Half Open / Syn Scan já consome menos tráfego numa rede, visto que ao invés de estabelecer o 3WH, ele envia no final uma flag RST encerrando a comunicação, sendo assim bem menos barulhento e consumindo menos tráfego em uma rede. Veremos isso na prática.
Para isso, abri a porta 4444 em minha máquina para realizar os testes de scan.
Scaneando nessa porta utilizando o tcp connect.
Assim que o scan termina, percebe-se que a conexão foi encerrada.
Agora, abrindo a porta novamente e realizando um Syn Scan.
Percebe-se que a conexão não foi finalizada e não foi gerado log.
Com isso percebemos a diferença, o syn scan para realizar scan é mais silencioso.
Analisando o consumo de um scan
Ao realizarmos um scan, temos que ficar atento a quantidade que ele irá consumir de uma rede, é ideal que o quanto menos for, melhor. Para isso, podemos utilizar o iptables para analisar a quantidade de pacotes que será enviado/recebido em um scan.
Temos que configurar para visualizar os pacotes que entram e sai da própria máquina. Aplicando a regra para aceitar a entrada e saída e logo após isso exibindo as informações.
Com isso, podemos fazer o scan para realizar o teste. Vamos começar com o TCP connect.
Foram enviados 4 pacotes, com tamanho de 224 bytes.
Para continuar os testes, precisamos zerar as configurações porque ele irá somar as quantidades anteriores. Utilizamos iptables -Z para zerar.
Agora, vamos utilizar o Syn Scan, ou Half Open.
Foram enviados 3 pacotes, com mesmo tamanho de 128 bytes.
Agora, vamos fazer um scan em todas as portas de um host. (O parâmetro -p- significa todas as portas). Primeiro com TCP connect.
Esse foi o consumo.
Agora faremos com o Syn Scan.
Esse foi o consumo. Podemos ver uma diferença na quantidade de bytes.
Podemos perceber que dependendo não é vantajoso utilizar um scan dessa forma. O mais ideal seria criar um personalizado com determinadas portas.
Assim haverá bem menos tráfego e será enviado uma quantidade muito menor de bytes :)
Quando formos fazer um scan em um host, temos que ficar atento para fazer um scan completo, visto que uma porta pode ter seu número alterado e por padrão, o nmap só varre as 1000 principais. Com isso, se não especificarmos com o parâmetro -p- ou -p 1-65535, ele não irá achar uma porta específica. Ex: alterando a porta do SSH para 22999, com o scan padrão ele não irá encontrar.
Também é interessante fazer uma varredura por UDP, porque pode haver alguns recursos que estão rodando por UDP.

Mas há uma ambiguidade no UDP, porque como vemos na imagem, quando enviamos um pacote para a porta UDP e ela estiver aberta, vai ter o mesmo comportamento quando ela está configurada em DROP no firewall. Caso ela esteja fechada, terá o mesmo comportamento se estiver configurada em REJECT no firewall. Como podemos ter certeza então se está aberta ou não? Podemos então, ao scanear com o nmap, passar o parâmetro -V para interagir e enumerar os serviços, rodando os scripts NSE que ele possui.
Last updated
Was this helpful?