Man-in-the-Middle  (MITM para os mais íntimos)
Autor: Mateus Américo | Publicado: 2014-03-26T14:11:00+02:00



Para pessoas que não tem dinheiro para pagar um cursinho de Inglês (HOMEM-NO-MEIO).&nbsp;Não é um filme de suspense!



O que seria o Man-in-the-Midle?


Também me fiz essa pergunta. No momento em que pesquisava uma das inúmeras ferramentas do Back Track, me deparei com essa expressão, depois de muito pesquisar, acreditem ainda não sei muito sobre ela.&nbsp;Vou tentar ser o mais elucidativo possível afinal os termos que vocês poderão encontrar podem confundir muito.



Um ataque man-in-the-middle (MITM) é um ataque no qual o atacante é capaz de ler, inserir e modificar, mensagens entre duas entidades sem que estas tenham conhecimento que a ligação entre ambas está comprometida. Um verdadeiro pen-test.



&nbsp; &nbsp;Ou seja, a capacidade de ver, tocar, cheirar, acrescentar e mecher na comunicação entre duas entidades, mais conhecidas como Cliente-Servidor, onde o Cliente pensa que está se comunicando com o 
Servidor e virce-versa, sem saberem que tem um enxirido no meio.
Com isso o atacante se insere no meio da comunicação dos dois postos.
Este tipo de ataque é porventura aquele mais difícil de detectar e de prevenir, sendo também o exemplo clássico da segurança informática, estando na base de técnicas de hacking, de descoberta de passwords, desvio de tráfego, ataques de imitação, injecção de pacotes, modificação de pacotes, etc.

Eu poderia me delongar em uma explicação massiva de comunicação HALF-DUPLEX E FULL-DUPLEX, pois até que ajudaria a entender muito bem tudo isso. Mas sinceramente, vamos pra parte divertida que é pra isso que estamos aqui.

Então só vou mostrar um pouco dos tipos de ataque pra man-in-the-middle, e mostrar um pouco dos recursos usados, spoofing e poisoning. Genericamente, o spoofing refere-se quando o ataque pretende mascarar algo de uma forma criteriosa, enquanto o poisoning refere-se à massificação do ataque.


Complicado? Nao se Preocupe não, ainda vai piorar.




ARP poisoning e ARP spoofing


Envio para uma determinada estação tramas arp adulteradas de forma a colocar-se no meio de qualquer comunicação que essa estação tente efectuar, ou seja, através da resposta aos pedidos arp request da estação vítima, torna-se possível manipular a tabela de arp que esta mantém. A manipulação da tabela de arp pode consistir em associar o endereço ip da estação de destino com o mac address da estação que está a fazer o ataque. Quando a estação vítima tentar comunicar com a estação destino esta vai estar a comunicar efectivamente com a estação que está a fazer o ataque. Este tipo de ataque é designado de ARP spoofing.



Sinceramente não vou explicar o protocolo ARP e a Tabela ARP. Camada dois do Modelo OSI, sinceramente, basicão de redes que todo Hacker que se preze pelo menos tenha que dar uma pincelada.


Seria o mesmo que eu perder meu relógio no cinema e falar que dou R$ 50,00 pra quem me entregasse e um mané do fundo falasse que é dele e oferecesse R$100,00, todos pensariam, quem está oferecendo mais é o verdadeiro dono, afinal vale muito pra ele. Este é o ideal do ARP poisoning, pensar que o meu computador tem o endereço MAC do gateway

O ocorrido é o seguinte: a máquina A não sabe se foi mesmo o gateway que enviou o pacote de resposta ARP, e o atacante pode tirar partido disso mesmo, enviando a resposta para a máquina A antes do Gateway o fazer. Após isto acontecer a máquina A pensa que está a comunicar com o Gateway, mas na verdade comunica com o atacante que pode decidir reencaminhar, ou não, as mensagens para o Gateway. Neste ponto o atacante tem o controle total da comunicação.

Os ataques de Man-in-the-Middle abaixo são muito complexos de se efetuar, então eu só vou mostrar 3 tipos de ataques, ARP poisoning e MAC flooding, e DNS spoof.

DHCP spoofing


O serviço DHCP é usado para a atribuição dinâmica de endereços às estações da rede, assim como informações do dns e do default gateway. O protocolo usa UDP e não suporta qualquer tipo de autenticação. Apesar de o DHCP ter alguma complexidade, para efectuar um ataque MITM basta modificar as informações da estação vítima. Por exemplo, modificar o endereço do dns para o endereço ip da estação que está a efectuar o ataque (DNS Spoofing) ou modificar o endereço do default gateway para o ip do atacante.



DNS spoofing e DNS poisoning


O serviço DNS é utilizado na resolução de nomes, ou seja, é responsável por associar um nome simbólico a um endereço IP. Este serviço responde a pedidos de resolução de nomes, tanto a resolução directa (dado o nome devolve o endereço IP) como a inversa (dado um IP devolve o nome). O ataque MITM é baseado na modificação da resposta do DNS. Quando uma estação pergunta ao DNS qual o IP para um determinado nome, a estação que está a efectuar o ataque pode interceptar a resposta e enviar uma resposta manipulada.


Para efectuar este tipo de ataque MITM é necessário conhecer o formato dos pacotes DNS, pois, vai ser necessário criar um novo pacote com o ID do pacote interceptado. Este mecanismo apenas funciona quando se intercepta a resposta porque o cliente que efectuou o pedido tem a informação do ID do pacote que vai receber, pois no caso do ID não ser o esperado o pacote é descartado.
Ataques do tipo DNS poisoning podem incidir sobre a manipulação das listas de
actualizações dinâmicas dos DNSs ou no envio de pedidos de actualização.



Port stealing
O roubo de porta é um ataque MITM que é utilizado quando existe uma associação de uma porta a um endereço IP. Este ataque pode ser utilizado quando o atacante pretende tomar controle, por exemplo, sobre uma porta de um switch. Para o efeito o atacante inunda a rede com pacotes, cujo endereço IP de origem é o da vítima mas com o seu endereço MAC. Assim, quando chegar um pacote com a vítima como destino, o atacante vai recebe-lo. Seguidamente envia um ARP request com um pedido para o endereço IP da vítima, ao que a vitima responde com um ARP reply, retornando
o estado da porta à sua associação original. O atacante pode seguidamente reenviar o pacote recebido e repetir todo o processo. Bom com estes ataques já chega, Afinal existem vários outros tipos de ataque, mas infelizmente, são complexos demais para serem abordados num simples topico como este.



Agora vou mostrar um pouco da Divisão Taxionômica do MITM

Denial of Service

O Denial of Service (DoS) consiste na negação de um serviço, ou seja, torná-lo indisponível para os clientes que lhe queriam aceder. Genericamente trata-se da sobrecarga do servidor, com pedidos que ele não consegue responder ou executar. Por exemplo, a inundação do servidor com pedidos de conexão TCP/IP leva ao aumento da fila de conexões pendentes, tornando-o incapaz de responder a outros pedidos ou outras tarefas. Este tipo de ataque pode ser uma conseqüência dum ataque man-in-the-middle.


MAC Flooding

Este tipo de ataque, consiste em inundar o switch com muitas tramas arp para que o switch não as consiga processar, sendo obrigado a repetir as tramas recebidas para todos os portos, portando-se como um hub.
vou mostrar como realizar este ataque mais embaixo, usando uma ferramenta do Dsniff, o Macof


Replay attack


Actualizando as tabelas MAC/IP com endereços MAC não existentes, faz com que os pacotes sejam descartados. Se isto for feito em todos os clientes da rede, vai provocar um ataque do tipo denial of service.


ACK Storm

Se um atacante não for cuidadoso ao desviar uma sessão TCP, pode provocar quebras nas ligações devido às tempestades de pacotes ACK. Assume-se que o atacante, a dada altura da sessão, conseguiu forjar a informação correcta do pacote (cabeçalhos, números de sequência, etc...). Quando são enviados dados injectados na sessão pelo atacante para o servidor, este irá acusar a recepção dos mesmos, ao enviar ao verdadeiro cliente um pacote de ACK, este irá conter um número de sequência que o cliente não está à espera, e por isso o cliente vai tentar resincronizar a sessão TCP com o servidor, enviando para tal um pacote ACK com o número que está à espera. O servidor recepciona o pacote de ACK mas este contém um número que não é o correcto, por isso, o servidor reenvia o último pacote ACK. Este ciclo continuará eternamente provocando a tempestade de pacotes ACK.

À medida que o atacante injecta mais dados, o tamanho da tempestade de pacotes ACK aumenta, decaindo rapidamente a performance da rede. Caso o atacante ou o cliente não encerre a sessão, a tempestade eventualmente irá parar quando os pacotes ACK se perderem.

Eavesdropping / Sniffing

O Sniffing ou eavesdropping consiste na monitorização do tráfego na rede entre um cliente e um servidor, em especial os dados em plain text e as informações de configuração da rede. O uso de ferramentas de sniffing permite a fácil leitura de tráfego em plain text, assim como, o acesso a pacotes encriptados que são depois decifrados, explorando vulnerabilidades existentes nos algoritmos de segurança usados.&nbsp;

Ou seja, o fato de usar o Wireshark ou qualquer outra ferramenta de Sniffing, já é uma Man-in-the-Middle.

Exploits

O Exploit consiste no facto do atacante aproveitar-se de vulnerabilidades existentes em aplicações, sistemas operativos, protocolos ou algoritmos de segurança, de forma a obter acesso indevido a dados ou sistemas. Estes últimos aspectos são os mais preocupantes, dado que o utilizador é levado a acreditar que os protocolos de segurança e os algoritmos usados são seguros, quando parte destes têm várias vulnerabilidades conhecidas e ainda outras que o virão a ser.
Normalmente listas com este tipo de vulnerabilidades, que genericamente advêm de erros de concepção, são amplamente divulgadas na Internet dentro dos meios que tratam este tipo de assuntos.


Filtering

Neste tipo de ataque, o atacante pode modificar o payload do pacote e recalcular o respectivo checksum de forma a torná-lo válido. Para tal, podem ser criados filtros executados on the fly e aplicados aos pacotes desejados. Apenas em full-duplex e de forma a alterar o comprimento do payload é necessário o ajuste da sequência dos pacotes.

Eu falei que iria piorar bom mas eu acho que já chega né? Vou mostrar agora umas ferramentas para fazer o MITM.

Ferramentas


dsniff – http://monkey.org/~dugsong/dsniff/


O dsniff é um conjunto de ferramentas para testes de auditoria e penetração numa rede. Estas ferramentas estão dividas em: ferramentas passivas de monitorização do tráfego na rede (dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, e webspy); ferramentas para intercepção de tráfego por parte de um atacante (arpspoof, dnsspoof, e macof); e ferramentas para implementação de ataques do tipo monkey-in-the-middle contra sessões SSH e HTTPS (sshmitm e webmitm).

arpspoof

Esta ferramenta permite ao atacante efectuar um arp poisoning à vítima, indicando ser o destinatário da ligação, tipicamente a gateway de saída da rede. Assim sendo, sempre que a vitima envie tráfego para o exterior da rede irá passar pelo atacante, que poderá observar, alterar ou apagar informação destinada a outros. É conveniente que a vitima não detecte que existiu este tipo de alteração de tabelas arp.

dsniff

A ferramenta dsniff é um sniffer que permite detectar usernames e passwords de protocolos não seguros de uma forma muito simples. Dos protocolos que esta ferramenta processa encontra-se o FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase e o Microsoft SQL protocols.

dnsspoof

Esta ferramenta permite ao atacante responder da forma que entender às perguntas de DNS da vítima. È bastante útil para a implementação de vários tipos de ataque man-in-the-middle e para furar listas de controles de acesso baseadas em nomes de hosts.

Ettercap - http://ettercap.sourceforge.net
- Permite a injecção de caracteres numa conexão estabelecida
- Suporta SSH v1
- Suporta HTTPS
Permite o uso de Plugins
Colector de passwords para vários protocolos
Permite filtrar pacotes, alterando-os ou descartando-os
Permite terminar uma conexão
Permite realizar scanning passivo da LAN
Permite verificar a existência de outros poisoners na rede

Ethereal - http://www.ethereal.com/

Ferramenta de sniffing de tráfego IP.

SSLSNIF - http://www.thoughtcrime.org/ie.html

Ferramenta usada para capturar ligações SSL e enviar um certificado forjado.

Bom agora vem a parte de mostrar como fazer um Man-in-the-Middle

Vou usar a ferramenta DsNiff, e fazer dois ataques o ARP poisoning, o MAC flooding e o DNS spoofing.

-_-&gt; &nbsp; No ARP poisoning, o Computador do atacante envia pacotes com respostas forjadas para requisições ARP de outras Maquinas da rede. O protocolo ARP é utilizado para descobrir os endereços MAC das demais maquinas da rede, já que os switches não entendem endereços IP. Esses pacotes forjados fazem com que os outras maquinas passem a enviar seus pacotes para a maquina do atacante, que é configurado para capturar as transmissões e retransmitir os pacotes originais para os destinatários correctos.

A rede continua funcionando normalmente, mas agora o atacante tem chance de logar todo o tráfego, usando o Wireshark ou outro sniffer. Felizmente, o Wireshark também pode ser usado para perceber as anormalidades na rede e chegar até o espertinho.

Os ataques de MAC flooding, por sua vez, tem como alvo o switch da rede e trabalham dentro de um princípio bastante simples. O switch possui uma área limitada de memória para armazenar a tabela com os endereços MAC dos micros da rede (que permite que ele encaminhe as transmissões para as portas corretas), de forma que, ao receber um grande número de pacotes com endereços MAC forjados, a tabela é completamente preenchida com os endereços falsos, não deixando espaço para os verdadeiros.

Nessa situação, existem apenas duas opções: ou o switch simplesmente trava, derrubando a rede, ou abandona o uso da tabela de endereços e passa a trabalhar em modo failopen, onde os frames são simplesmente retransmitidos para todas as portas, da mesma forma que um hub burro, permitindo que o atacante capture todo o tráfego da rede (até que o switch seja reiniciado).

Como switches que travam não são uma boa propaganda, os fabricantes normalmente utilizam a segunda opção, o que faz com que a maioria dos switches baratos e quase todos os hub-switches sejam vulneráveis a esse tipo de ataque.

Uma das ferramentas mais usadas é o macof, um pequeno utilitário que faz parte da suíte dsniff (que roda sobre o Linux), cujo código fonte está disponível no:
http://www.monkey.org/~dugsong/dsniff/

O dsniff também pode ser encontrado nos repositórios de muitas distribuições, o que facilita a instalação. Nas distribuições derivadas do Debian, você pode instalá-lo via apt-get:

Citação:
# apt-get install dsniff

Uma vez que o dsniff foi instalado, usar o macof é bastante simples: basta especificar a interface de saída, usando a opção “-i”, e especificar o número de pacotes forjados a serem enviados, usando a opção “-n”, como em:

Citação:
# macof -i eth0 -n 100000

A maioria dos hub-switchs são capazes de armazenar entre 1000 e 8000 endereços MAC na memória, de forma que bombardeando o hub-switch com 100000 endereços MAC diferentes (o que demora cerca de um minuto e meio em uma rede de 100 megabits) você consegue chavear qualquer aparelho vulnerável para modo failopen. A partir daí, basta lançar o Wireshark e passar a capturar todo o tráfego da rede. Note que, em alguns casos, rodar o comando vai fazer o switch travar, derrubando toda a rede até que você o reinicie manualmente, o que nos modelos mais simples é feito desconectando e reconectando o cabo de energia.

O dsniff inclui também um utilitário para ARP poisoning, o arpspoof. Ao usá-lo, você deve especificar a interface de rede local e também o endereço IP do host de destino dos pacotes que você deseja capturar. Especificando o endereço do gateway da rede (o uso mais comum), você pode capturar todos os pacotes destinados à Internet.

Para usá-lo, o primeiro passo é ativar o encaminhamento de pacotes na configuração do Kernel, o que é feito usando o comando abaixo:

Citação:
# echo 1 &gt; /proc/sys/net/ipv4/ip_forward

A partir daí, você pode ativar o arpspoof, especificando o endereço de destino dos pacotes que deseja capturar, como em:

Citação:
# arpspoof -i eth0 192.168.1.1

Com isso, o arpspoof passará a enviar pacotes de broadcast para toda a rede, avisando todos os micros que o novo endereço MAC do “192.168.1.1″ é o endereço da sua máquina. Isso fará com que ela passe a receber o tráfego destinado a ele, permitindo que você o capture usando o Wireshark.

Naturalmente, o tráfego não poderia simplesmente ser desviado para a sua máquina, caso contrário, os pacotes deixariam de ir até o gateway da rede e os micros não conseguiriam mais acessar a Internet. Para evitar isso, o arpspoof reencaminha automaticamente todos os pacotes recebidos ao endereço correto (justamente por isso precisamos ativar o ip_forward no Kernel), fazendo com que, apesar do “desvio”, o tráfego continue fluindo, como se nada estivesse acontecendo:

Para fazer um DNS spoofing vamos precisar do endereço de um servidor da internet


Citação:
# www.yahoo.com.br

Server: 189.5.128.5

Address: 189.5.128.5#53

Non-authoritative answer:

www.yahoo.com.br canonical name = frontpage.americas.fy5.b.yahoo.com.

Name: frontpage.americas.fy5.b.yahoo.com

Address: 200.152.161.132 


depois criaremos um arquivo chamado dnsspoof.conf


Citação:
#vim dnsspoof.conf

e colocaremos as seguintes configurações


Citação:
200.152.161.132 www.google.com.br
e agora executaremos o comando do dnsspoof


Citação:
#dnsspoof -i eth0 -f dnsspoof.conf

com este comando envenenaremos o cache dns, fazendo com isso que todas as máquinas que tentem acessar o endereço do google irá eventualmente acessar o yahoo. Pois o aqui entramos no verdadeiro ideal do Man-in-the-Middle, aqui nos estamos alterando as informações que trafegam na rede.


Agora você me pergunta por que eu vou usar isso.?

Pense comigo você tem uma página fake do facebook, você pode fazer com que todos que tentem acessar o face sejam direcionados para sua página fake, em outra instancia USE Criatividade consiga informacao realmente util escolhendo bons alvos...

Bom é isso pessoal, eu poderia explicar como evitar estes ataques, mas sabe como é né.
Estou com sono, amanhã é dia de Cão, Segundona, eu fico por aqui.
Abracos do Nerd.

Credito:&nbsp;JPConteudo