Módulos auxiliares do Metasploit com o Parrot Security

Continuando a minha aventura com o ParrotSec começada no post anterior – e permanecendo com a utilização do Metasploit framework, por ser minha ferramenta predileta para testes de penetração – neste post estou compartilhando as minhas anotações sobre o uso dos módulos auxiliares (auxiliary modules) da referida ferramenta.

O que é DNS Spoofing?

O spoofing de DNS é a manipulação do tráfego de DNS, mapeando o nome de um host especifico para a máquina do atacante, em vez da máquina verdadeira; geralmente, isso é feito implementando um servidor DNS mal-intencionado. Em outras palavras, enganar o computador da vítima para que ele use seu servidor DNS malicioso, esse servidor pode estar em qualquer lugar, seja na mesma sub-rede ou fora do gateway padrão da vítima. Isso ocorre porque o DNS é operado na camada 3 e superiores, enquanto o Envenenamento ARP, abordado no post Ataque por ARP Spoofing, lida com a camada 2 e com a camada 3. Como você pode executar a partir da vítima, o DNS spoofing pode ser considerado mais seguro de executar do que o Envenenamento por ARP, dando ao invasor a oportunidade de mais ambientes e destinos. Mas como um dispositivo de rede sabe como encontrar seu servidor DNS? Isso foi explicado no post Simulação de Rede Falsa para Roubar Senhas, onde mostrei como criar um AP falso, um servidor DHCP falso, um servidor DNS falso e um servidor HTTP falso com uma Página Web falsa usando o Ghost Phisher; agora vou, dando continuidade ao post anterior Metasploit e SMB com o Parrot OS, mostrar como fazer isto usando o Metasploit framework e o Parrot OS

Recomendo, para melhor entendimento, uma lida nos posts anteriores citados acima. No entanto, vou repetir, rapidamente, como funciona estes protocolos.

Como o DHCP está envolvido?

Primeiro, é importante ressaltar que a menos que o sistema esteja configurado com um endereço IP estático, o endereço do servidor DNS é determinado por uma opção do servidor DHCP; logo, isso pressupõe que o sistema seja servido por DHCP, em vez de ser definido com um endereço IP estático. O uso do DHCP é muito comum, tanto em ambientes corporativos quanto em redes domésticas. Quando um dispositivo é inicializado, precisa de um endereço IP para se conectar à rede. Se nenhum IP já estiver definido, o sistema solicitará um IP de um servidor DHCP usando o protocolo DHCP. A solicitação e resposta de DHCP é um processo direto de quatro etapas, carinhosamente conhecido como DORA: Discovery, Offer, Request, Acknowledgment (Descoberta, Oferta, Solicitação, Reconhecimento). A inicialização do protocolo é feita pelo cliente DHCP. A seguir, uma breve introdução sobre como esse protocolo funciona.

  1. O Cliente envia uma transmissão de Discovery (Descoberta): “Algum servidor DHCP?”
  2. O servidor DHCP envia uma Offer (Oferta) ao cliente: “Deseja um IP?”
  3. O cliente responde com uma Request (Solicitação): “Eu desejo”
  4. Servidor DHCP Acknowledge (Reconhece): “Este é o seu: AAA.BBB.CCC.DDD”.

Quando o servidor reconhece o cliente, um determinado endereço IP será enviado e tal endereço não será oferecido a outro cliente. Existem salvaguardas no protocolo, garantindo apenas um endereço IP por cliente. Além do endereço IP, o servidor DHCP fornece outras informações, como por quanto tempo o endereço IP é reservado (a concessão) e a oferta também fornece informações do servidor DNS. É assim que vou entregar o endereço DNS falsificado – por meio de um servidor DHCP falso.

Criando um um servidor DHCP falso com o Metasploit

Neste post vou mostrar como iniciar um servidor DHCP falso e implementar um servidor DNS falso. Na oferta DHCP, vou fornecer o endereço IP 192.168.25.5 da minha própria máquina como os servidores DNS e DHCP falsos.

Para começar, é preciso identificar o meu endereço IP. Em um Terminal, executei ifconfig para descobrir, conforme mostrado na Figura abaixo.

Figure 5-10_kali

Abri um Terminal, iniciei o framework Metasploit, digitando msfconsole-start. No prompt do console do msf, usei o falso módulo DHCP digitando

use auxiliary/server/dhcp

Em seguida, digitei

show options

para ver as configurações disponíveis. As opções do módulo são mostradas na Figura abaixo.

Figure 5-11e12_Kali

Defini as opções para DNSSERVER, NETMASK e SRVHOST, que são o falso servidor DNS, sua máscara de rede e o endereço IP desse servidor DHCP falso, respectivamente. Defini DNSSERVER e SRVHOST como o IP da minha máquina (192.168.25.5). Em seguida, defini o NETMASK como 255.255.255.0. E executei o exploit.

Configurando o servidor DNS falso com o Metasploit

Com o servidor DHCP falso em execução, usei o Metasploit, novamente, para configurar meu servidor de DNS falso para resolver qualquer uma ou todas as consultas IP enviadas para ele; pode ser para um ou para vários domínios. Inicialmente, vou usar um “coringa” (*) para todos os domínios.

O módulo Metasploit que usei foi o auxiliary/server/fakedns. Para este módulo, as seguintes configurações precisam ser definidas: TARGETACTION, TARGETDOMAIN e TARGETHOST. O TARGETHOST é, novamente, a minha máquina, o servidor para resolver consultas DNS. O TARGETDOMAIN é o domínio que desejo resolver. Por fim, o TARGETACTION é como desejo que o servidor DNS se comporte. Neste cenário, a configuração do parâmetro é FAKE. Para referência, uma maneira de testar este módulo, mas que na verdade não altera nenhuma consulta, é usar o BYPASS, que direciona as consultas para um servidor DNS legítimo. Agora, vou usar FAKE, para resolver os domínios de destino para minha própria máquina. Depois de definir esses três parâmetros, digitei exploit para iniciar o módulo. Como o módulo do servidor DNS já está em execução, a saída está ilustrada na Figura seguinte.

Figure 5-13e14_Kali

Silenciando o DNS

Logo após iniciar o módulo fakedns, a tela do Metasploit ecoará todas as consultas de DNS encontradas. As consultas que não estiverem na configuração TARGETDOMAIN serão ignoradas. Para evitar que a tela fique ocupada, ecoando as consultas, é melhor executar o trabalho de exploração no modo silencioso. Aqui está como executar novamente o exploit de uma forma silenciosa:

  1. Digitar exit para interromper a saída da tela.
  2. Listar os trabalhos (jobs) do msfconsole digitando jobs -l (observe o l minúsculo).
  3. Matar o trabalho do fakedns digitando jobs -k 1 (número do id do job fakedns).
  4. Reiniciar o módulo silenciosamente digitando exploit -q.

Para verificar se que a configuração está funcionando, conferi no Wireshark, que já vem instalado no ParrotSec, três coisas: se estou respondendo às solicitações do DHCP, se estou recebendo tráfego de DNS e se o meu endereço IP está sendo entregue para as consultas DNS.

WireShark_capturando-DNS

Configurando um servidor FTP falso

Agora eu sei que as consultas FTP estão sendo resolvidas para o seu sistema. Mas o que os usuários estão percebendo? Eles estão batendo na porta, mas ninguém está em casa! Vamos configurar um servidor FTP falso para capturar credenciais da nossa vítima. Nem precisei configurar esse módulo, pois as opções padrão funcionam imediatamente, apenas executei o módulo e quando capturei as informações que precisava, eliminei o trabalho (jobs –k) no qual o servidor está sendo executado, apenas digitei use auxiliary/server/capture/ftp no console do msf.

Capture_FTP-c_pwd

Para consultar a lista de módulos úteis que posso utilizar em algum momento:

ls -l /usr/share/metasploit-framework/modules/auxiliary/server/capture/*

list_aux_srv_capture

Como se pode ver, são vários módulos objetivos e projetados para roubar credenciais para o IMAP, HTTP Basic Auth, FTP, POP3, SMTP, SMB, etc.

Estou apenas arranhando a superfície dos Metasploit auxiliary modules. Sempre há algo para todos os gostos! Para consultar o Rapid7 Auxiliary Module utilize este link: https://www.offensive-security.com/metasploit-unleashed/auxiliary-module-reference.

Ataque pela internet (WAN)

O que mostrei aqui foi realizado em uma vítima na mesma rede (LAN) em que está a minha máquina. Para configurar um ataque pela internet (WAN) é preciso que a conexão passe pelo roteador do invasor, o meu roteador.

Para isso, é preciso fornecer o endereço IP público (algo como, é 179.178.227.43), que enviará a sessão ao roteador do atacante e, a partir daí, encaminhar para a máquina na LAN (algo como, 192.168.25.5). É aí que entra o “port forwarding” (encaminhamento de porta); Resumindo: configurar LHOST com endereço público, LPORT, e configurar encaminhamento de porta (port forwarding) no roteador com a mesma porta do LPORT>LAN_IP. Este procedimento está fora do escopo deste post.

Como Evitar os Ataques MitM

Como mencionado anteriormente, este capítulo apenas arranha a superfície dos protocolos que podem ser usados para ataques MitM. Pode parecer uma época de abertura para hackers de rede, mas existem várias contramedidas que podem ser implantadas para evitar algumas das técnicas descritas neste post. Para o envenenamento por ARP, uma solução é definir tabelas ARP estáticas. Isso significa, efetivamente, que o administrador deve criar uma associação entre os endereços MAC e o endereço IP. O problema com essa solução é que ela não é bem dimensionada. Se você gerencia um empreendimento que consiste em milhares de máquinas, não é razoável configurar manualmente a tabela ARP para cada máquina. Existem produtos que tentam rastrear o tráfego ARP normal e sinalizam pacotes ARP anônimos, algo como o Wireshark nos avisa que dois endereços MAC diferentes estão vinculados ao mesmo endereço IP. Outra técnica de mitigação é a detecção de DHCP. O rastreamento DHCP especifica um servidor DHCP confiável. O switch, em seguida, escuta todas as respostas DHCP desse servidor DHCP confiável e cria uma tabela de ligação da porta de endereço IP para switch. Com esse conhecimento, o switch é capaz de informar qual host está em qual porta, e se ele perceber, por exemplo, um host enviando respostas ARP para um IP que ele não possui impedirá esse tráfego. O rastreamento DHCP também impede servidores DHCP mal-intencionados, pois elimina todas as respostas de DHCP que não são originadas no servidor DHCP confiável. Uma tecnologia final para mencionar é 802.1x https://pt.wikipedia.org/wiki/IEEE_802.1X. Esse protocolo é um padrão para NAC (Network Access Control) baseado em portas, que pode ser aproveitado para manter os criminosos fora da rede, interrompendo possíveis ataques de MitM. Basicamente, um switch tentará autenticar todos os hosts que se conectarem à rede. Se um host não for autorizado, o switch não encaminhará o tráfego. Isso efetivamente interrompe todos os ataques, pois hosts maliciosos não devem conseguir acesso à rede. Note que digo “não devem”.

Embora existam vários os tipos de mecanismos sofisticados de autenticação 802.1x, o único atributo identificador na camada 2 é o endereço MAC. Acontece que podemos aproveitá-lo para realizar um ataque MitM contra clientes conectados a uma rede protegida por 802.1x, só depende se temos acesso físico à máquina da vítima para colocar a máquina atacante diretamente entre a vítima e a porta do switch. Sobre este tipo de ataque, confira a nota DEFCON https://www.defcon.org/images/defcon-19/dc-19-presentations/Duckwall/DEFCON-19-Duckwall-Bridge-Too-Far.pdf.

Continuo explorando o Parrot no próximo post, aguardem

Anúncios

1 comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s