segunda-feira, 11 de julho de 2011

Ferramenta de exploração de rede e segurança

O Nmap (Network Mapper) é uma ferramenta para exploração de rede e auditoria de segurança. Foi desenvolvida para escanear rapidamente redes amplas e também funciona contra hosts individuais.

O Nmap utiliza pacotes IP em estado bruto para determinar quais hosts estão disponíveis na rede, quais serviços os hosts oferecem, quais sistemas operacionais estão executando e dezenas de outras características. Uma grande habilidade do Nmap é de criar pacotes IP do nada e enviá-los utilizando métodos únicos para realizar os diferentes tipos de escaneamentos.

Embora o Nmap tente produzir resultados precisos, todas as deduções são baseadas em pacotes devolvidos pelas máquinas-alvo, ou firewalls na frente delas. Tais hosts podem ser não-confiáveis e enviar respostas com o propósito de confundir ou enganar o Nmap. Muito mais comum são os hosts não de acordo com a RFC, que não respondem como deveriam às sondagens do Nmap.

Escaneamento de rede é o processo para descobrir hosts ativos na rede e informações sobre os hosts, como sistema operacional, portas abertas, serviços e aplicações.

O escaneamento de rede engloba quatro técnicas básicas:

1) Mapeamento de rede - envia mensagem para um host para gerar uma resposta se o host estiver ativo;

2) Escaneamento de porta - envia mensagem para uma porta para determinar se está ativa;

3) Detecção de serviço - envia uma mensagem específica para uma porta ativa para gerar uma resposta com o tipo e versão do serviço;

4) Detecção de S.O. - envia uma mensagem específica para um host ativo para gerar uma resposta com o tipo do sistema operacional.

Uma amostra de scan do Nmap:

# nmap -A -T4 scanme.nmap.org

Starting nmap ( http://insecure.org/nmap/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT    STATE  SERVICE VERSION
22/tcp  open   ssh     OpenSSH 3.9p1 (protocol 1.99)
53/tcp  open   domain
70/tcp  closed gopher
80/tcp  open   http    Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)

A maioria dos tipos de scan está disponível apenas para usuários privilegiados. Pois o Nmap envia e recebe pacotes em estado bruto, o que requer acesso de root em sistemas Linux.

Sinopse para linha de comando do Nmap:

nmap [Tipo]... [Opções]... Alvo

Tudo na linha de comando do Nmap que não for uma opção é tratado como uma especificação de um host-alvo. O procedimento básico é especificar como alvo um endereço IP ou um nome de host para ser escaneado. É possível escanear uma rede inteira de hosts adjacentes, para isso o Nmap suporta o estilo de endereçamento CIDR.

Para escanear todos os IPs de uma máscara de rede, acrescenta-se /númerodebits em um endereço ou hostname. Por exemplo, 192.168.10.0/24 escanearia os 256 hosts entre 192.168.10.0 e 192.168.10.255, inclusive. Pode-se especificar uma lista de números separada por vírgulas ou faixa de números para cada octeto. Por exemplo, 192.168.0-255.1-254 irá pular todos os endereços na faixa que terminarem com .0 ou .255.

O Nmap aceita múltiplas especificações de host na linha de comando, e elas não precisam ser do mesmo tipo. Por exemplo, 'nmap scanme.nmap.org 192.168.0.0/16 10.0.0,1,3-7.0-255'.

As seguintes opções também estão disponíveis para controlar a seleção de alvos:

-iL arquivo                Lê a especificação de alvos à partir de um arquivo
                           de entrada. Cada entrada deve ser separada por
                           espaços em branco, tabulações ou quebra de linhas.
--exclude host1,host2,...  Especifica uma lista de alvos, separados por vírgula,
                           a serem excluídos do scan mesmo que façam parte da
                           faixa de rede especificada.

Um dos primeiros passos em qualquer missão de reconhecimento de uma rede é reduzir um conjunto de faixas de endereços IP, em uma lista de hosts ativos e interessantes.

-sP   Esta opção diz ao Nmap para somente executar um scan usando o ping, e
      então mostrar os hosts disponíveis que responderam ao scan.

-sL   O scan listagem é uma forma de descoberta de hosts que simplesmente lista
      cada host da rede especificada, sem enviar nenhum pacote aos hosts-alvos.
      Apenas faz a resolução de DNS reverso dos hosts para descobrir seus nomes.

-P0   Esta opção pula completamente o estágio de descoberta do Nmap (sem ping).
      Faz com que o Nmap teste as funções de escaneamento solicitadas contra
      todos os endereços IP alvos especificados, como se cada alvo IP estivesse
      ativo.

-n    Não faz uma resolução DNS reversa nos endereços IP ativos que encontrar.

-PS portas  Esta opção envia um pacote TCP vazio com a flag SYN marcada.
            A flag SYN sugere aos sistemas remotos que você está tentando
            estabelecer uma comunicação.

-PA portas  Faz o ping usando TCP ACK. É muito similar ao ping usando SYN.

-PU portas  Faz o ping usando UDP, que envia um pacote UDP vazio para as portas
            informadas.

A função principal do Nmap é o scanner de portas. O simples comando 'nmap alvo' escaneia mais de 1660 portas TCP no host alvo. O Nmap divide as portas em seis estados: aberto, fechado, filtrado, não-filtrado, open|filtered, ou closed|filtered. Esses estados não são propriedades intrínsecas da porta, mas descrevem como o Nmap as vê.

Os seis estados de porta reconhecidos pelo Nmap:

aberto           Uma aplicação está ativamente aceitando conexões TCP ou
                 pacotes UDP nesta porta.
fechado          Uma porta fechada está acessível, mas não há nenhuma aplicação
                 ouvindo nela.
filtrado         O Nmap não consegue determinar se a porta está aberta porque
                 uma filtragem de pacotes (firewall/roteador) impede que as
                 sondagens alcancem a porta.
não-filtrado     O estado não-filtrado significa que uma porta está acessível,
                 mas que o Nmap é incapaz de determinar se ela está aberta ou
                 fechada.
open|filtered    O Nmap coloca portas neste estado quando é incapaz de
                 determinar se uma porta está aberta ou filtrada.
closed|filtered  Este estado é usado quando o Nmap é incapaz de determinar se
                 uma porta está fechada ou filtrada.

Existem dezenas de técnicas de escaneamento e para cada tarefa deve ser escolhida a que for apropriada. Apenas um método pode ser utilizado de cada vez exceto que um scan UDP pode ser combinado com qualquer um dos tipos de scan TCP. As opções dos tipos de escaneamento de portas estão no formato -sC, onde C é um caractere proeminente no nome do scan, normalmente o primeiro:

-sS    O scan SYN é a opção de scan padrão. Pode ser executada rapidamente,
       escaneando milhares de portas por segundo em uma rede não bloqueada por
       firewalls.

-sT    O scan TCP connect é o scan padrão do TCP quando o scan SYN não é uma
       opção. Esse é o caso quando o usuário não tem privilégios para criar
       pacotes em estado bruto.

-sU    Ativa o scan UDP. Pode ser combinado com um tipo de escaneamento TCP
       para averiguar ambos protocolos na mesma execução.

O Nmap oferece opções para especificar quais portas são escaneadas e se a ordem de escaneamento é aleatória ou sequencial:

-p portas   Especifica quais portas deseja escanear. Números de portas
            individuais são suportadas, bem como as faixas separadas por um
            hífen (ex. 1-1023).
            Quando escanear ambas as portas TCP e UDP, pode especificar um
            protocolo em particular, precedendo os números de portas com T: ou
            U: (ex. -p U:53,111,137,T:21-25,80,139,8080).

-F          Especifica que deseja apenas escanear as portas listadas no arquivo
            nmap-services que vem com o nmap. Escaneamento rápido.

-r          Não usa as portas de forma aleatória. Especificar -r faz um
            escaneamento de portas sequencial.

Depois que as portas TCP e/ou UDP forem descobertas, usando qualquer um dos outros métodos de scan, a detecção de versão interroga estas portas para determinar o que realmente está sendo executado nestas portas:

-sV    Habilita a detecção de versão. Use a opção -A para habilitar tanto a
       detecção de SO como a detecção de versão.

Uma das características mais conhecidas do Nmap é a detecção remota de S.O. utilizando a identificação da pilha do TCP/IP. O Nmap envia uma série de pacotes TCP e UDP ao host remoto e examina praticamente todos os bits das respostas. O Nmap compara os resultados com o banco de dados nmap-os-fingerprints com mais de 1500 identificações de S.O. conhecidos e mostra os detalhes do S.O. se houver uma correspondência.

A detecção de S.O. habilita diversos outros testes que usam as informações coletadas durante o processo. Um deles é a medição de uptime, que utiliza a opção timestamp do TCP (RFC 1323) para supor quando uma máquina foi reiniciada pela última vez.

A detecção de S.O. é habilitada e controlada com as seguintes opções:

-O    Habilita a deteção de SO. Alternativamente, pode usar -A para habilitar
      tanto a detecção de S.O. quanto a detecção de versão.

-O2   Usa o novo sistema de detecção de S.O.

Observação: o uso conjunto da opção -v faz o Nmap gerar informações extras sobre o sistema operacional.

Outras opções para a linha de comando do Nmap:

-v    Aumenta as informações de saída. Usando duas vezes faz maior efeito.

-A    Ativa detecção de S.O. e de versão.

-h    Exibe uma página de ajuda.

Exemplos de linha de comando dos usos do Nmap:

a) Escaneia a sub-rede a procura de hosts ativos:

# nmap -sP -n 192.168.1.0/24

b) Escaneia a sub-rede a procura de portas ativas:

# nmap -sS -n -p 1-600 192.168.1.0/24

c) Analisa a porta 80 do host para descobrir a versão do serviço:

# nmap -sV -n -p 80 192.168.1.101

d) Analisa o host para descobrir o sistema operacional:

# nmap -O2 -vv 192.168.1.101

Nenhum comentário:

Postar um comentário