Descobrimento de Host e Scan de Portas
Vocês já devem ter estudado, quando Pedro Álvares Cabral chegou ao Brasil e viu uma imensidão de terras desconhecidas e não mapeadas, certo?
Trocamos terras por computadores e temos o conceito de
Descobrimento de Hosts.
Esta ação, utilizada principalmente por administradores de redes e Pentesters, tem como objetivo criar um mapa de todos os Hosts ativos e com
características interessantes para possíveis verificações, documentações ou escaneamentos mais precisos.
O Nmap oferece suporte para vários métodos para realizar esta técnica, desde o simples Ping, até combinações de diferentes protocolos.
Aqui vão os principais:
- -sL (list scan): É a forma mais básica, onde o Nmap só lista os Hosts de uma rede, sem mandar nenhum pacote até eles. Também faz resolução
de DNS reverso para descobrir seus nomes.
- -sP (ping scan): Realiza um Ping no Host alvo, para descobrir se ele está ou não ativo. Caso o pacote seja rejeitado, envia um TCP ACK na porta
80, e se ainda houver rejeição, envia um pacote TCP SYN. Esta técnica é utilizada quando há um Firewall antes de alvo, que pode estar bloqueando os
pacotes ECHO REQUEST.
- -P0 (zero ping): Desabilita o Ping antes de fazer qualquer varredura. Utilizado contra Firewalls que rejeitem o ECHO REQUEST.
- -PS [portas] (syn scan): Envia pacotes SYN na porta 80 para verificar se o Host está ativo, pode-se especificar portas diferentes.
- -PA [portas] (ack scan): Mesmo que o de cima, porém envia pacotes ACK.
- -PR [portas (arp scan): Realiza o scan pela tabela ARP, há ganho de performance.
- -n: Não faz resolução de nomes DNS.
Existem mais alguns tipos de técnicas para descobertas de rede, que podem ser vistas no
Guia do
Nmap, totalmente em português.
Escaneamento de Portas
Após a descoberta dos Hosts e identificação dos mais interessantes, o profissional pode realizar um escaneamento de portas, para determinar seus
serviços e status:
- -sS (tcp/syn scan): Conhecido como 'Half-open Scanning', pois não completa a conexão TCP, tornando-o um scan silencioso. Esse scan envia um
pacote SYN, se receber um SYN/ACK a porta está ouvindo e caso receba RST a porta está fechada.
- -sT (tcp scan): Este scan tenta realizar um 'three-way-handshake' em cada porta, se a conexão for bem sucedida, a porta está aberta. É fácil de
ser detectado, porém é mais confiável.
- -sU (udp scan): Envia um pacote UDP de 0 Bytes para as portas UDP, se receber um pacote ICMP do tipo 3 (port unreachable), está fechada. Esta
técnica se torna mais rápida contra o Windows, pois o mesmo ignorou as sugestões do padrão RFC.
- -sA (ack scan): Totalmente diferente dos outros, este scan serve para testar regras de Firewall e determinar se as portas são filtradas ou não. O
Nmap envia um pacote ACK, portas abertas ou fechadas retornarão um pacote SYN e serão marcadas como UNFILTRED. Caso a resposta seja pacotes
de erro ICMP as portas serão marcadas como FILTRED.
Varreduras Silenciosas
O Nmap possui algumas varreduras silenciosas (furtivas). São métodos avançados que visam escanear portas restritas, ou que possuem regras de
Firewall. São escaneamentos com Flags específicas, que não funcionam no Windows, pois o mesmo rejeitou as recomendações da
RCF 973.
- -sF (fin scan): Envia um pacote TCP FIN, se a porta estiver fechada retorna um RST e portas abertas ignoram o pacote.
- -sX (xmas tree scan): Envia um pacote FIN com as flags FIN, URG e PUSH (o nome faz referência a árvore de natal, pois as Flags 'iluminam' o
pacote). Portas fechadas respondem com RST e portas abertas ignoram.
- -sN (null scan): É enviado um pacote com o cabeçalho TCP nulo (0 bit). Mais uma vez, portas abertas ignoram o pacote e portas fechadas
retornam o RST.
Padrões de Temporização
O Nmap possui alguns padrões de temporização que regem quantos pacotes serão enviados em determinada faixa de tempo. O comando é feito com a
opção: -T {num}
- -T0 (paranoid): Um pacote a cada 5 minutos. Utilizado para despitar IDS.
- -T1 (sneaky): Um pacote a cada 15 segundos. Também utilizado para evitar IDS.
- -T2 (polite): Um pacote a cada 0.4 segundos. Reduz as chances de travar a máquina.
- -T3 (normal):Múltiplos pacotes para múltiplos alvos. É o timing padrão do Nmap.
- -T4 (aggressive): Escaneia somente 5 minutos por Host e não espera mais de 1,25 segundos por resposta. Realmente agressivo.
- -T5 (insane): Escaneia 75 segundos por Host e não espera 0.3 segundos por resposta. Realiza um teste muito rápido, onde, se a rede não for boa
o suficiente, os Hosts podem cair ou haver falta de precisão nos resultados.
Alguns exemplos:
nmap -sP 192.168.1.0/24
$ nmap -sS 192.168.1.15-20
$ nmap -sS -n -p 80 192.168.1.61
$ nmap -T5 -p 80,139 192.168.1.61
Enumeração de Serviços
A fase de enumeração de serviço é essencial em uma atividade de Pentest.
Esta fase realiza um scan detalhado das portas para identificar o serviço que está rodando e, sua versão. A partir destes dados, podemos procurar por
Exploits, ou vulnerabilidades, para softwares específicos, aumentando a chance de sucesso da invasão.
Também é utilizada para identificar o sistema operacional e sua arquitetura.
- Como isso funciona?
O Nmap envia pacotes para cada porta ativa e, como resposta, recebe o Banner do serviço. Esse Banner é um conjunto de caracteres que determina o
nome e versão do programa.
Por fim, o Nmap compara o Banner com sua base de dados e nos retorna os detalhes da aplicação.
Quando determinado Banner não está presente na sua base de dados, ele é repassado para o usuário juntamente com um link onde, se o usuário
souber qual aplicação está rodando, avisar a equipe do Nmap a qual programa aquele Banner se refere.
Vamos às opções:
- -sV (version scan): O principal scan para enumeração de serviços. O scan de versão retorna a porta, seu estado, serviço e versão.
- -O (operational scan): Realiza o scan para descobrir qual sistema operacional o sistema está rodando. O retorno se baseia em porcentagens de
acerto.
- -A (advanced scan): Retorna resultados avançados, como o banner do sistema operacional e alguns dados fornecidos por scripts, como detalhes
do serviço Samba.
Exemplos:
nmap -sV -p 21,22,80 192.168.1.20
$ nmap -O -A 192.168.1.20