sábado, 1 de dezembro de 2012

Scanner NMAP


O Nmap, apesar de parecer de difícil utilização, é bem fácil, basta entender sua sintaxe de utilização e explorar ao máximo seus recursos e com um pouco de imaginação também iremos longe...

Como já dito no início do artigo, trataremos aqui somente da interface em modo texto, apesar de o front-end gráfico também ser muito bom.

A sintaxe de utilização do Nmap basicamente é:

nmap <parâmetros> <alvo> -p <portas>



Métodos de scanning

TCP connect()

Forma mais simples de scanning, ela tenta abrir uma conexão na máquina alvo, se for bem sucedida é porque a porta está aberta. Esse método é facilmente detectado pelo firewall da máquina alvo (é o default).

# nmap -sT alvo

TCP SYN (half open)

Nesse método, um pacote SYN é enviado, caso haja resposta (um pacote SYN-ACK seja recebido), é porque a porta está aberta. Caso seja recebido um RST é porque está fechada. Se a resposta vier positiva (SYN-ACK), o nmap envia outro RST fechando a conexão, de modo que a conexão não se completará. A vantagem desse método é que fica mais difícil a detecção do portscan, pois ele não abre uma conexão TCP completa.

# nmap -sS alvo

FIN (Stealth)

Esse método envia pacotes FIN para o alvo, caso não haja resposta, a porta está aberta, caso seja recebido um pacote RST, é porque está fechada. Esse método é útil, pois alguns firewalls podem detectar a chegada de pacotes SYN, detectando o método TCP SYN, esse modo elimina essa possibilidade de detecção.

# nmap -sF alvo
# nmap -sX alvo
(Xmas Tree -> envia as flag FIN, URG e PUSH no pacote FIN)
# nmap -sN alvo
(null scan -> não envia flag no pacote FIN)

ACK (ack scan)

Esse método é utilizado para mapear o firewall alvo. Ele pode determinar o tipo de firewall e se ele apenas bloqueia os pacotes SYN.

# nmap -sA alvo

UDP

Nesse método, um pacote UDP de 0 byte é enviado, caso seja recebido um "ICMP port unreachable" é porque a porta está fechada, caso contrário, está aberta.

# nmap -sU alvo


RPC scan

Esse método combina vários métodos de scan do nmap. Ele considera todas as portas TCP/UDP abertas e as "flooda" com comandos "NULL SunRPC", tentando descobrir quais portas RPC estão abertas, e se possível, o programa e a versão do RPC.

# nmap -sR alvo

TCP/IP Fingerprint

Esse método ativa a identificação remota do sistema operacional. Ela usa várias informações recebidas e as compara com a base da dados dos sistemas operacionais conhecidos, detectando qual o sistema usado na máquina.

# nmap -O alvo

Além dessas opções, o nmap possui muitas outras, como por exemplo o scan rápido (nmap -F) ou então a opção de não pingar a máquina antes de scaniá-la (nmap -P0).

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.
  • -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.


Técnicas de Evasão 

Às vezes, precisamos escanear determinado Host que está atrás de um Firewall, ou sendo monitorado por IDS/IPS sem sermos detectados. O Nmap dispõe de algumas funcionalidades para isso.

- Camuflagem de IP:

  • -S <ip_falso> <ip_alvo>: Camufla o IP do atacante, usando um IP falso para realizar o scan. Se o Nmap exigir a interface de rede utilizada, use o comando: -e <interface>


- Fragmentação de pacotes:

  • -f (fragment): Realiza a fragmentação dos pacotes enviados. Esta opção irá dividir os pacotes em 8 Bytes após o cabeçalho. Com isso, tornamos mais difícil o trabalho dos sistema de detecção de intrusão.


Decoys:

  • -D <ip1>,<ip2><ipN>,<seu_ip>: Utiliza uma série de IPs reais para disfarçar a varredura. Quando utilizado, faz com que todos os IPs listados 'realizem' o scan no alvo, sendo praticamente impossível detectar quem realmente está atacando. Se não for colocado o seu IP no final, ele será colocado em uma posição randômica.


- Falsificando porta de origem:

  • -g <porta>: Por padrão, o Nmap utiliza portas altas e aleatórias para realizar as varreduras. Um Firewall de borda bem configurado, pode bloquear estas portas, porém, podemos definir uma só porta de onde sairá o scan. Como exemplo, podemos utilizar a porta 53 (DNS) que geralmente não é bem tratada para burlar a proteção.


- MAC Spoofing:

  • --spoof-mac <enderco_mac|fabricante>: Camufla o endereço de MAC, disfarçando quem está realizando as varreduras. Podemos utilizar um endereço MAC qualquer, como: 01:02:03:04:05:06 ou, nomes de fabricantes, como Cisco, Apple, Microsoft e etc.


Relatórios

Dependendo do tamanho e tipo do scan que realizamos, queremos armazenar os dados em arquivos separados para futura consulta, o Nmap nos dá esse suporte de diversas maneiras.

  • -oN <arquivo>: Salva no arquivo exatamente o que é mostrado na tela, sem avisos ou informações de runtime.
  • -oS <arquivo>: Gera um relatório no modo de escrita dos Scripts kiddies (haha!).
  • -oX <arquivo>: Salva as informações no formato XML.
  • -oG <arquivo>: Retorna os resultados em um arquivo especial. Cada linha de comentário começa com um sustenido (#) e os dados encontrados são separados por dois pontos (:).
  • -oA <arquivo>: Salva todos os tipos de relatórios, sendo "arquivo.nmap", "arquivo.xml" e "arquivo.gnmap", respectivamente.
  • -v (verbose): Relata mais resultados. Usar '-vv', para um maior efeito.


Exemplos:

$ nmap -oN resultados_nmap.txt 192.168.1.20
$ nmap -oX resultados_nmap.xml 192.168.1.20

Nenhum comentário:

Postar um comentário