Pentesting - Redes de Computadores - MITM
Autor: Ciência da Computação - JokerHat | Publicado: 2016-02-26T12:57:00-03:00




MITM

Você esta na rede. E agora? O que fazer?

Ainda não leu o Post sobre redes Wifi, clique aqui: PENTASTING REDES WIFI - BYPASS: WPS.





A resposta é: depende do objetivo, porém, é basicamente tudo. Mas hoje vamos falar sobre MITM. 



MITM é o acronimo para Men In The Middle (Homem no meio). É uma tecnica que consiste no atacante estar entre a comunicação dos nós de uma rede. Esta tecnica pode ser implementada por meio de hardware e/ou software.











INTRODUÇÃO

Interceptar a comunicação entre os nós da rede é o objetivo da tecnica MITM. Como exemplo desta aplicação, imagine você navegando na internet sem perceber que existe um indivíduo lendo tudo o que você esta fazendo.

O homem no meio é a referencia dada ao atacante entre, basicamente, a comunicação entre dois dipositivos que utilizam uma rede de computador.
Os alvos mais comuns são as redes públicas. 



Por meio desta tecnica, entre suas possibilidades, as mais comuns são:&nbsp;

Enviar paginas fakes para os nós da rede por meio de engenharia social para obtenção de credenciais senhas de serviços bancários online;&nbsp;
Modificar as informações enviadas de um nó para outro; 


Em outras palavras, o MITM pode ser entendido como um "grampo" na comunicação de rede.





PENTASTING MITM

Vamos implementar a tecnica em sua maneira simples. Uma vez que você enenda o conceito, você poderá aperfeiçoar o ataque conforme necessidade e complexidade do objetivo.



Antes de iniciarmos, a versão que estou usando da distro Kali Linux é (lsb_release -a):












A ferramenta que iremos usar chama-se Ettercap.



Site Oficial: https://ettercap.github.io/ettercap/

Mais detalhes da ferramenta: en.wikipedia.org 



Local: Applications/09 - Sniffing &amp; Spoofing/Ettercap-Graphical


















O ambiente que eu me encontra é composto por dois notebooks que se comunicam com um roteador.

Bom, o Ettercap é um programa utilitário da distro Kali Linux. Ele tem diversas opções que poderão ser estudadas melhor por você. Contudo, leia o Help da ferramenta. Logo em seu inicio, ela deixa claro que é uma ferramenta par implementação do MITM e que ela tem mudado conforme a versão da distro e é preciso ler com atenção sua main.


Considerando que você ja tenha lido o manual, com foco na janela da Ettercap, prescione a hotkey:


Ctrl+U (ou Sniff/Unified Sniffing). Uma janela se abrirá para informar-mos a Interface de rede que iremos utilizar para o processo. Escolha e finalize.


Obs: No meu caso, eu utilizo a wifi (wlan0)




Certo. Ao escolher sua interface, é feito uma rapida verificação da rede. No meu caso, as informações abaixo:







Entenda a informação:

O programa esta em modo "escuta (grampo)" sobre minha interface wlan0 informando o MAC da interface, o IP da minha maquina (host seguido da mascara da rede) e um endereço ipv6 que corresponde ao meu host.

SSL (Security Software Layer) é uma padrão de criptografia em redes de computadores usado para assegurar a integrida da informação trocada entre browser e servidor. O software nos informa que ela não esta implementada por default e se quisermos configurar é preciso abrirmos o etter.conf. As demais informações são de volume.



Você poderá visualizar este arquivo com: nano /etc/ettercap/etter.conf

Algumas informações que você encontrará na internet dirão para você descomentar as opções em LINUX SSL no iptables, mas não explicam porque. Neste blog é diferente, eu te explico o que acontece. Você não precisa fazer isso, usaremos na linha de comando o setting do iptables. Se quiser mudar mais abaixo lhe explico o que irá fazer. Contudo, vc ja sabe one este arquivo se localiza.





&nbsp;Saia do nano clicando a hotkey: Ctrl+X. Digite y, e aperte Enter.


&nbsp;Após, digite o comando: iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000



Obs: A porta default é 10000, se quiser trocar, fique a vontade. A porta 80 é a que nos interessa, essa porta é da internet. Vamos farejar as URLs.

Para maiores detalhes sobre o utilitário iptables clique aqui. Resumidamente, este utilitário permite criarmos regras de firewall na maquina host. Além disso, criamos roteamentos, criamos o setting da rede, e etc relacionado às configurações de rede. Digite iptables -h, para mais informações sobe seus comandos.



Bom, o comando acima tem o objetivo de rotear os pacotes (destino e origem) por meio das portas 80 e 10000. Uma vez especificado a porta, podemos trabalhar com proxy e certificados fakes, os quais você encontrará (problemas) se não rodar o próximo comando. O problema é que será emitido para o usuario o alerta de certificado inválido que utilizar a porta 80 conexões com a internet por meio de algum browser, chegando a não deixá-lo navegar. Caso isso ocorra faça um ping 8.8.8.8 na maquina e veja que existem pacotes recebidos (com conexão).



Por favor, quando puder veja esta palestra da DEFCON sobre o mitmproxy: clique aqui.

Basicamente, o emprego da feramenta permite acessar endereços no browser sem a necessida do browser ficar pedindo ou informando sobre a falta de certificação digital. Para aplicações utilizando MITM.



Obs: note que não precisamos entrar na etter.conf para descomentar as opções de SSL utilizando iptables. 


Na espeficicação que fizemos no iptable no roteamento, iremos utilizar o SSLSTRIP para estar ouvindo na porta de destino (10000) (default do sslstrip). Digite: sslstrip -l 10000. Veja também sobre o mitmProxy que ambos tem a mesma finalidade.




O utilitário sslstrip, que complementa o MITM, permite a utilização de sniffers na rede em conexões que utilizam certificados SSL, inibindo os pedidos e informações relacionadas à máquina alvo e permitindo o spoofing sobre o arp. EM resumo, os certificados que o alvo encontraria (sem a utilização das portas no roteamento com iptables sobre um proxy), seriam mostradas ao usuario e em alguns casos, como acontece no firefox e no chrome, a conexão é bloqueada impedindo que o usuario navegue. Devido a este motivo surgiu soluções como a MITMProxy descrita acima. Porém, podemos usar a ssltrip na porta escolhida no IPTABLES. Vc também poderá testar no etter.conf setando na opção LINUX em SSL na opção iptables as portas que irá utilizar, e depois rode-a no sslstrip. Mas isso é só para não ficar digitando, mas o legal é digitar (risos). Outra opção é criar um pequeno shellscript para fazer isso com apenas um comando, bom isso é outro assunto...








Ctrl+C (ou Hosts/Scan for Hosts). Este procedimento irá escanear toda a rede (/24).




Ctrl+H (ou Hosts/Hosts List). É mostrado uma lista dos hosts ativos da rede. Perceba que existem dois botões chamados: TARGET 1 e TARGET 2.&nbsp;





Antes e proceder você deve identificar o host da vitima e o seu radio (roteador) que geralmente é o getway da sua rede. Vc pode conseguir esta informção de diversas maneiras. Uma delas é visualizando o getway, digite no terminal: route -n. Depois, visualize o ip do alvo.
Após, vc irá clicar no IP descrito na tabela, e logo a seguir na Target corresponente. 


Target 1: maquina_alvo
Target 2: roteador 








No meu caso a Target 1 corresponde ao meu alvo e a Target 2 ao meu roteador.

A opção MITM é a próxima etapa. Veja que temos as opções:

Arp Poisoning
ICMP Redirect
Port Stealing
DHCP Spoofing
NDP Poisoning

Estes são protocolos de rede, os quais poderemos manipular com a ferramenta Ettercap sobre a opção Men IN The Middle. Muito interessante. Neste post vamos ver a Arp Poisoning.


Entendendo melhor como o ataque ARP POISONING funciona:

ARP (Address Resolution Protocol) é um protocolo de rede utilizado para mapear um endereço IP de um endereço MAC mantendo cada computador de uma rede com uma tabela IP na memória (cache). Isso evita o gargalo da conexão.&nbsp; Ao ser enviado um Broadcat para toda a rede, o computador remetente verificará se a insformação existe em seu cache ARP. Segundo a norma RFC 1122, é possível manipular o tempo de cache em um computador. Para visualizar a chace ARP, basta digitar no terminal: arp -a.

Em resumo, basicamente, quando uma determinada informação é enviada para determinado IP na rede, o computador remetente verifica na cache arp se o mesmo existe, evitando mandar a informação para toda a rede mas especificamente apenas para um computador. 

O ARP POISONING (Envenenando o Arp) ou ARP SPOOFING (Enganando o ARP) consiste em enganar o arp onde uma falsa resposta arp é enviada à requisição arp original. Desta forma, o roteador, enganado, envia a informação do computador que remete a ação para o computador atacante. A rede permanece normal, onde o remetente recebe normalmente a resposta de sua ação. O que acontece é que o roteador envia para o computador atacante o mesmo pedido.

Em resumo, a tecnica consiste em enganar o cache do arp da rede, fazendo com que o roteador envie para a máquina atacante os pedidos realizados pela maquina alvo. Essa ação de enganar o cache arp é entendido como Poisoning (envenenamento). 

Um dos pioneiros do SPOOFING foi o hacker Kevin Mitinik (retratado no fime Hackers Operação Takdown). A tecnica de Kevin na época, a um tempo depois, ficou conhecida como IP SPOOFING além de que a engenharia social era a tecnica que mais teria usado. Seu ataque pode ser melhor compreendido lendo sobre o assunto clique aqui.

Certo, vamos voltar ao MITM. Clique na opção do menu superior do Ettercap em MITM/Arp Poisoning. E escolha&nbsp; opção Sniff Remote Connections, ou seja, vamos farejar as conexões remotas após envenenamento. Isso permitirá termos acesso as inforações do usuário que neste caso serão credenciais.
O modelo e ataque do Ettercap para MITM é interessante porque a opção de ARP POISONING/Sniff Remote Connections permite que seja catalogado apenas qualquer meio em que o alvo necessitou informar usuario e senha (credenciais) como: tela de logins de email; login de redes sociais; etc.
Quando o usuário realiza esta operação, fornecendo suas credenciais, o atacante recebe na tela do Ettercap as credencias que o usuario usou em eterminado local (url).
Entenda que não estamos pegando tudo, incluindo informações desnecessárias, que o alvo esta fazendo em seu computador, mas somente credenciais. Para pegar tudo é outro assunto.


Atenção, a porta que estamos farejando, definida nas portas do iptables,é a 80. Desta forma e para este caso, para toda ação POST em um formulário, é enviado para o atacante o GET dos formulários. Para mais detalhes sobre POST, GET e formulários veja Marcação de Conteúdo HTML (lembrando que HTML não é programação, mas sim uma linguagem de marcação de texto).




A opção Only Poison one-way, apenas fará o envenenamento mas não estará scaneando a conexão. Essa opção é interessante quando combinada com outras ferramentas. Lembrando que você também pode usar o ettercap em modo texto sem a inerface (pelo terminal). Em outro post poderemos es tudar sobre isso.

Ao clicar em ARP Posoning/Sniff Remote Connections, clique na opção do menu superior em&nbsp; Sniff/Start Sniff.






Note as informações:
Targe 1: IpAlvo. É meu outro notebok ligado à rede
Targe 2: IpRoteador. É o meu getway, o roteador na rede para comunicação com a internet.
A imagem ja esta em modo Sniffing.

Em outro computador (meu alvo), navegando pelo IEXPLORER, eu abri o site WWW.HOTMAIL.COM, e entrei com uma credencial que não existe, apenas para pegarmos no MITM.




O resultado por ser visto abaixo:
















Note que o login e password (usuario e senha, credenciais) foram pegos quando apertei o botão Entrar.

Estamos scaneando as conexões remotas sobre a porta 80 (internet). A porta 10000 esta rodando no sslstrip para rodar conexões que utilizam SSL nas certificações. Ela é responsavel por inibir os pedidos de certificados para acesso a determinado site, em resumo, funciona como um proxy. Você também poderá estar usando o MITMProxy. Ambas opções, são para inibir os certificados.



Bom, em especial, para todo site que o alvo entrar e necessitar credencial, o atacante aplicando a tecnica MITM neste conceito do ARP POISONIG, pode captar tais credenciais.


As redes publicas parecem ser as mais comuns de serem alvos de ataques como este. Assim como tem sido falado em matérias dos jornais, lembro uma no CQC na band. Etc. O que seria interessante é um aviso ás pessoas sobre a rede pública (o que já existe), mas alertar dos riscos que poderá estar correndo como sua comunicação não estar segura. Se não me engano isso ja existe nos dispositivos quando se conectam com tal rede. Bom, se mesmo assim a pessoa estiver a utilizar do serviço o qual ela foi alertada que existe riscos, concluímos que ela veio a correr o risco por que realmente quis, mesmo após ser alertada.
A criptografia é uma opção para dificultar a possibilidade de leitura, mas neste caso vc esta na rede.

Depois podemos estudar o TCPDump e o wireshark, para filtrar mais informações da rede além das credenciais. Porém, ainda restam as outras opções do MITM no ettercap.

Obs: vc pode usar o nmap para resolver os endereços IP com os nomes das maquinas. Por exemplo, se seu alvo for fulano com um iPhone, rode o nmap na range com o comando: namp 192.168.1.0/24. Irá listar todos os computadores com a range e o nome da maquina (explore mais sobre o nmap -h).

Bom, para quem ainda não conhece as políticas do Open Source, saiba que o código de tudo que usamos na distribuição Linux, neste caso a KALI voltada para pentasting, o código fonte é aberto.

Sim, por ser aberto você poderá entender cada linha de comando, basta saber a linguagem que foi escrita e fazer a reengenharia. A maioria delas é feita em python e se não, foi feita em C/C++, e algumas interfaces em Java. Mas esta opção é voltada para programadores. Contudo, se você fazer alguma melhoria poderá notificar para a próxima versão do mesmo. Mas o interessante é que você poderá modificá-lo de acordo com suas necessidades.




&nbsp;


POSSÍVEIS ERROS:




Tenho notado em alguns foruns pessoas reclamando sobre a mensagem ou relacionada:




SEND L3 ERROR: 92 byte packet (86dd:06) destined to 2a01:111:2010:8::ff20 was not forwarded (libnet_write_raw_ipv6(): -1 bytes written (Network is unreachable))

É muito simples de ser entendida. No Ettercap verifique se a opção HOSTS/ENABLED IPV6 SCAN esta ativa. Caso sim, retire. Salvo se você NÃO estiver trabalhando em uma rede ipv4. Você também poderá especificar o endereço em TARGETS/SELECT TARGET(S). 

O que pode estar acontecendo é que vocẽ estará tabalhano numa rede ipv4 e pedindo um escaneamento junto com ipv6. A mensagem diz: 92 bytes de pacotes não foram encaminhados para o ipv6, a rede esta inacessível.
Se você deixar este erro você não conseguirá proceder com o MITM pelo ettercap. Vc precisa resolve-lo. ALgumas pessoas dirão para você fazer isso: echo "1" &gt; /proc/sys/net/ipv4/ip_forward. E não precisa, o erro é claro e não tem nada haver com isso. Essa ultima é um complemento do iptables para casos em que o roteamento não esta funcionando e necessita desta configuração (em versões anteriores do kali pode até ser preciso). Na versão que estou usando (veja acima que eu especifiquei) ja possui essa resolução tanto que o pacote MITMProxy ja esta instalado. Na versão anterior não me lembro, mas acho que não. Ja no backtrack é certeza que não.


Mais uma vez eu lhe digo: não copie e cole código ou comandos, procure entender para que eles servem, e como usá-los. Esse será o seu diferencial. Entender o que esta acontecendo lhe dá a garantia da eficiencia do seu trabalho.


Att o próximo post

(Hack the Planet)





REFERENCIA:&nbsp;


https://pt.wikipedia.org/wiki/Ataque_man-in-the-middle 

http://linuxcommand.org/man_pages/iptables8.html