quarta-feira, 6 de novembro de 2013

IPv6 Attacks com Python: Parte 2 (MITM)


Nesta postagem eu vou estar dando continuidade ao assunto das postagens anteriores e estarei falando sobre o ataque de Man-in-the-Middle (MITM) em redes locais IPv6.

Observação:


O conteúdo apresentado nesta postagem deve ser reproduzido apenas em um ambiente no qual você possui autorização para a realização de testes de segurança.


Introdução


Em redes tradicionais IPv4, o ataque de MITM pode ser realizado atravês de alguns métodos  como ARP Poisoning e MAC Flooding. Entretanto o protocolo ARP é substituido pelo protocolo Neighbor Discovery (implementado através de mensagens ICMPv6) em redes IPv6. O nosso estudo de ataques MITM em redes IPv6 deve começar com uma análise sobre o protocolo ICMPv6 e o Neighbor Discovery.

Neighbor Discovery e ICMPv6

 

O protocolo Neighbor Discovery esta definido na RFC 4861¹ e faz parte de um dos processos de autoconfiguração do IPv6. Um dos objetivos deste protocolo é identificar o endereço MAC (Camada de Enlace) de hosts vizinhos em uma rede local (Basicamente a mesma coisa que o ARP fazia hehe). O Neighbor Discovery é implementado através das seguintes mensagens ICMPv6:
  • ICMPv6  Neighbor Solicitation
  • ICMPv6  Neighbor Advertisement
  • ICMPv6  Router Solicitation
  • ICMPv6 Route Advertisement
Neste tópico iremos focar especialmente nos 2 primeiros tipos de mensagens.

A mensagem Neighbor Solicitation é enviada por um host com o objetivo de identificar o endereço físico (MAC address) de um host vizinho. A Figura abaixo apresenta o cabeçalho da mensagem Neighbor Solicitation.

Figura 1: Cabeçalho da mensagem Neighbor Solicitation

O campo 'Type' apresenta o valor 135 e o campo 'Target Address' apresenta o endereço IPv6 do host solicitado.

A mensagem Neighbor Advertisement representa a resposta para a mensagem de Neighbor Solicitation e contém o endereço MAC do host solicitado. A Figura abaixo apresenta o cabeçalho da mensagem Neighbor Advertisement.

Figura 2: Cabeçalho da mensagem Neighbor Advertisement

O campo 'Type' apresenta o valor 136 e o campo 'Target Address' apresenta o endereço IPv6 do host solicitado. O campo 'Options' apresenta informações 'extras' contendo o endereço físico do host solicitado. A figura abaixo apresenta um exemplo de descoberta de vizinhos através do ICMPv6.


Figura 3: Troca de mensagens ICMPv6 (Neighbor Discovery)


MITM em redes locais IPv6


O protocolo de Neighbor Discovery não realiza a autenticação de mensagens ICMPv6 e esta vulnerabilidade resulta na possibilidade de ataques MITM em redes IPv6. Um atacante pode forjar mensagens ICMPv6 do tipo Neighbor Advertisement com o objetivo de envenenar a tabela de endereços MAC de uma determinada vítima.

O endereço MAC, presente no campo 'Options' da mensagem de Neighbor Advertisement, pode ser substituído pelo endereço físico de um atacante com o objetivo de se passar por outro host da rede local. O novo pacote é enviado para os hosts da rede local e as tabelas de endereço MAC são envenenadas com o novo valor (forjado pelo atacante).

Para exemplificar o ataque descrito, eu criei um pequeno script para realizar MITM entre três máquinas (2 vítimas e 1 atacante) com endereços IPv6. O vídeo a seguir apresenta o script sendo utilizado em uma pequena prova de conceito do ataque descrito.


O script encontra-se disponível para download em:
https://github.com/pasknel/hacking-com-tapioca/blob/master/IPv6/ipv6_nd_mitm.py

 

Conclusão


Neste tópico foi apresentado o assunto de ataques de MITM em redes IPv6. Na minha próxima postagem eu vou estar mudando de assunto (talvez futuramente eu volte a falar mais sobre IPv6). Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

¹ http://tools.ietf.org/html/rfc4861

Nenhum comentário:

Postar um comentário