sexta-feira, 4 de setembro de 2015

Capturando senhas com Social Engineering Toolkit e Ettercap


Neste artigo estarei realizando um teste de laboratório explorando uma falha realizando um ataque de Arp Poisoning. Os atores deste lab vão ser:

Minha máquina - Kali Linux 2.0 - 192.168.0.113
Roteador - Cisco - 192.168.0.1
Máquina Alvo - Windows 7 - 192.168.0.116

Neste exemplo estarei fazendo um Spoofing na rede e redirecionando todas as requisições de um determinado site para a minha máquina, fazendo o cliente pensar que eu sou o servidor e confiando suas credenciais pra mim em forma de POST.

A exploração do ARP Poisoning é o método mais rápido de se estabelecer no meio da comunicação entre duas máquinas e interceptar as informações enviadas entre ambas, fazendo com que possua acesso a dados confidenciais, senhas e relatórios de tráfego, e essa técnica é mais conhecida como Man in the Middle. Esse método se aplica somente em redes Ethernet ou seja, esse tipo de comunicação pode ser resumido em redes internas, sejam elas empresariais, residenciais ou até mesmo aquele wifi livre na praça de alimentação do Shopping ou do café que você gosta de frequentar.



Esse tipo de rede trabalha com dois endereços de identificação: O MAC Address e o IP.
O endereço MAC é o endereço físico da placa de rede, e o padrão Ethernet envia os dados em forma de (relativamente) pequenos frames de 1500 bytes, e os cabeçalhos de identificação Ethernet desses frames enviam o endereço MAC para a identificação entre clientes e servidores durante a troca de informações.

O IP (Internet Protocol) é o endereço que é atribuído a placa de rede independente de onde ela opera, seja por métodos estáticos ou dinâmicos.

Esses dois endereços de identificação devem trabalhar juntos para o envio, fragmentação e identificação dos frames na rede e envio para a porta destino mapeadas anteriormente e identificadas pelo MAC e IP.

Como funciona o protocolo ARP? 

O ARP (Address Resolution Protocol) é o protocolo de resolução de nomes dentro de uma rede. Ele tem a função de vincular um IP virtual ao seu devido endereço físico. Quando um pacote chega da Internet para a rede interna, o Gateway tem a função de ler o cabeçalho da requisição, encontrar o MAC Address responsável e encaminhar para o IP virtual  responsável. E a técnica que iremos utilizar aqui irá "by-passar" essa resolução, bagunçando o cache do ARP e fazendo com que o cliente e servidor redirecionem os pacotes trafegados para onde a gente quiser.



Sem mais firulas, hands on!!

Utilizando o SET (Social Engineering Toolkit

Preparando o ambiente

Se você estiver realizando o ataque em um ambiente Kali, será necessário algumas preparações antes de prosseguir. Vamos editar o arquivo /etc/setoolkit/set.config  e mudar o parâmetro que define o diretório root do apache. 



Inicie o apache

# service apache2 start

Edite o diretório root do apache

O SET por padrão salva os sites clonados no diretório /var/www/, porém o DocumentRoot das versões mais novas, vêm apontado diretamente para a pasta /var/www/html. Vamos ajustar esse parâmetro antes de continuarmos com o ataque. 

# vim /etc/setoolkit/set.config 

Altere o parâmetro APACHE_DIRECTORY para o valor /var/www/html/


1. Clonando o site alvo

Esse exemplo terá uma mescla de engenharia social no quesito de ferramental. Normalmente, você utilizaria essa ferramenta para criar um link falso e fazer uma pessoa clicar para capturar por POST os dados que ela digitou, nesse exemplo vamos só clonar o site e realizar a mágica mais tarde.

Ative o Social Engineering Toolkit

#setoolkit 

Agora nessa ordem:

Selecione a opção 1 "Social-Engineering Attacks"

Selecione a opção 2 "Website Attack Vectors"

Selecione a opção 3 "Credential Harvester Attack Method"

Selecione a opção 2 "Site Cloner"


Neste passo iremos definir o IP da sua máquina que servirá de servidor para o ataque. Os dados vão ser enviados pra cá no caso, caso esteja em dúvida você poderá ver o seu IP na rede abrindo outro terminal e digitando

#ip addr
ou
#ifconfig

Agora você vai digitar o site que será clonado, vamo realizar o ataque clonando o Facebook.

# www.facebook.com

Ele irá realizar o clone e gravar na pasta /var/www/html. Dependendo da sua versão do apache, ele vai jogar o DocumentRoot no diretório /var/www/htdocs ou /var/www/html



 Agora no navegador digite "localhost" para ver ele clonou tudo certinho.


2. Realizando o Arp Poisoning


Ok, tudo perfeito. Agora vamos realizar uma técnica chamada Arp Spoofing

Edite o arquivo /etc/ettercap/etter.dns

#vim /etc/ettercap/etter.dns

e adicione as linhas no final do arquivo


facebook.com A 192.168.0.113
m.facebook.com A 192.168.0.113
*.facebook.com A 192.168.0.113
www.facebook.com PTR 192.168.0.113
https://www.facebook.com A 192.168.0.0.113
Sendo o IP 192.168.0.113 o número do seu IP como atacante. 
Esse parâmetro irá redirecionar todo o tráfego mandado para o facebook para a sua máquina, você conseguiu esse resultado deixando o servidor de resolução de nomes maluco. 

Abra o ettercap



Na aba Sniff selecione a opção "Unified Sniff"

Na aba Host, selecione a opção "Scan for hosts" ou dê um Ctrl + S para procurar os hosts em sua rede.

Novamente na aba "hosts" selecione a opção "Host List"



Selecione o Gateway e o IP que deseja sniffar e clique em "Add to Target 2"

Caso esteja realizando o ataque de uma rede com Switches, abra um terminal, e como root digite

# macof

Este comando irá inundar o filtro de MAC no Switch e irá facilitar o spoofing

Em seguida clique em "Plugins" e logo após um duplo clique sobre a opção "dns_spoof"



Feito isso, vá até a aba Mitm e selecione "Arp Poisoning" clicando no checkbox "Sniff remote connections" e clique em Ok.





Logo após vá na aba "Start" e selecione "Start Sniffing"

3. Realizando o ataque 


Agora vamos esperar que o alvo entre na url www.facebook.com



Como você deixou o protocolo ARP da rede totalmente maluco, fazendo ele atender aos nameservers do seu computador ao invés dos DNS padrões, quando o alvo solicitou uma requisição para o facebook.com, ele pediu para o seu computador estabelecer a rota, e ele retornou com a resposta de que o seu computador é o servidor e apresentou a página clonada do site.


Veja que nos logs do Ettercap ele mostra que o plugin de DNS Spoof redirecionou o acesso do facebook.com para o servidor 192.168.0.113, que no caso é a sua máquina.

4. Agora vamos ver a senha capturada: 


O SET cria um arquivo chamado harvester_ano_dia_mes hora.txt no diretório do Apache. Vamos dar um cat no arquivo

# cd /var/www/html
# ls -l



# cat harvester_2015-09-04\ 23\:14\:54.901315.txt



Lembrando que estas ferramentas e técnicas são específicas para análise e identificação de vulnerabilidades de segurança em redes corporativas, e não para cometer crimes. Todo o tipo de invasão e roubo de informação é crime!! Portanto este artigo destina-se a profissionais e estudantes de segurança da informação.

:)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

30 comentários:

  1. Amigo você fez na verdade um DNS Spoof e não um Arpspoof

    ResponderExcluir
    Respostas
    1. O Arp Poisoning funciona pros dois casos, Jackson. Neste exemplo precisei utilizar um site clonado pelo SET, ou seja, a máquina alvo estaria na mesma rede local que eu, e seria muito mais fácil e performático poisonar o DNS. Mas a lógica exemplo também funcionaria caso executasse direto na Arp com um grampo de Sniffing.

      Excluir
    2. Ele fez os 2, arp spoof + dns spoof. O dns spoof foi quando ele habilitou o plugin. O arp spoof foi quando clicou no menu "Arp poisoning".

      Excluir
  2. Dá para pegar a senha do face do mozão?

    ResponderExcluir
  3. Como faz para capturar as senhas de outra rede WI-FI? =/

    ResponderExcluir
  4. se eu enviar o link pra alguem do meu face e ela logar a senha dela vem pro meu pc ou é só na minha máquina que pega a senha?

    ResponderExcluir
    Respostas
    1. Se é ethernet, é rede local, Silas. Se você estiver na mesma rede de WiFi que ela dá certo, senão, não.

      Excluir
  5. Olá!
    Estou incansavelmente procurando pelo mundo uma forma de realizar este ataque com sucesso, porém a batalha continua.

    Cheguei aqui, alias, parabéns pela iniciativa.

    Bom, vou ao que interessa. Fiz todos estes teus procedimentos assim como outros diversos que encontrei por aí, mas com nenhum consegui capturar senhas da minha rede, meu SET não captura nem na tela que fica aberta e nem no arquivo txt que ele gera, o arquivo sempre fica em branco, além de o meu ALVO não ser redirecionado para o ip do ATACANTE o qual esta com o site do facebook clonado.

    Procurei em tudo e a única diferenća das minhas telas para a sua é que na minha tela do SET esta faltando a última linha azul que diz o seguinte:
    [ ok ] Starting apache2 (via systemctl): apache2.service.
    Simplesmente esta linha não aparece no meu.

    Lembrando que fiz e refiz este teu exemplo e não brilhou.

    Não sei se me expliquei de forma correta, mas se puder me ajudar neste sentido, fico muito grato. Não sei se o problema está no meu apache, em minhas configuraćões de rede ou do ettercap. Realmente não sei mais para onde correr.

    Por qualquer retorno.
    Muito obrigado.

    ResponderExcluir
    Respostas
    1. Tenta startar o serviço do apache como root

      Excluir
  6. muito bom, tutorial muito bom!

    tive problemas ao abrir localhost e ver se a pagina estava clonada, ao digitar, abria direto o apache 2 debian default page

    ResponderExcluir
  7. Cara me ajuda, onde fica o diretorio /etc/setoolkit/set.config no lion sec (distro que eu uso) e quando vou tentar entrar fala que nao esta disponivel

    ResponderExcluir
    Respostas
    1. abre o terminal e digita locate set.config
      para localizar o arquivo

      Excluir
  8. Prezado, o cliente só consegue acessar a página dititando o IP do atacante, se digitar o site não funciona, a página não conecta.
    O que pode ser feito para corrigir?

    ResponderExcluir
  9. Este comentário foi removido pelo autor.

    ResponderExcluir
  10. Amigo, sou leigo no assunto, por favor releve: É necessário o alvo estar usando o seu wi-fi, ou você o dele, certo?

    ResponderExcluir
  11. Bom dia, eu consegui deixando as configurações do apache com valor=off e em set.config.py APACHE_SERVER=False, porém a vítima só consegue acessar a página se digitar o meu IP, não redireciona... Queria que, quando a vítima digitasse o site do facebook, ele fosse direcionado para o meu IP que é a página falsa. =(

    ResponderExcluir
  12. OLÁ CAROS COLEGAS TUDO BEM ?
    ALGUÉM PODERIA ME ENSINAR COMO USO ESSE MÉTODO EM REDE EXTERNA ?
    DESDE JÁ OBRIGADO E UM GRANDE ABRAÇO A TODOS !

    ResponderExcluir
  13. O consigo configurar tudo certo ate a vitima acessa o site e ser redirecionana para meu pc, mas no dispocitivo da vitima mostra como se nao tivese internet alguem pode me ajuda

    ResponderExcluir
    Respostas
    1. Tiago você consegue atacar a vítima fora da sua rede ?

      Excluir
  14. Olá. No SET, logo após colocar o site a ser clonado aparece a seguinte mensagem de erro abaixo e sai do SET.
    "Someting went wrong, printing the error: zipimporter() argument 1 must be string, not function"

    ResponderExcluir
  15. porque do A entre o site e o IP do atacante na configuraçao do aquivo do ettercao e o PTR?
    faz temo q faço isso mas n entendo o q são e o q fazem exatamente

    ResponderExcluir
  16. Criei o clone, subi o apache ( tentei com nginx também ), dei um nmap na minha rede desliguei tudo que podia desligar e configurei o etter, porém só fica esperando no setoolkit ... sabe o pq ?

    ResponderExcluir
  17. Existe alguma técnica para prevenção desse tipo de ataque?

    ResponderExcluir

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com