segunda-feira, 28 de outubro de 2013

Palestra UniversoEstacio: O Império Contra-ataca!

Pessoal!

Dia 01/11 eu estarei dando a palestra "O Império Contra-ataca: FBI vs ToR" no evento UniversoEstacio da faculdade Estacio/FIC aqui em Fortaleza. A palestra vai ser as 18:00 na FIC (Moreira Campos). Qualquer pessoa pode ir para palestra, apenas é necessário fazer a inscrição.

Eu vou estar falando sobre os ataques do FBI contra a rede ToR e estarei mostrando uma análise de um exploit utilizado pelo FBI contra usuários maliciosos da rede ToR.

Para efetivar inscrição vocês deverão ir no site www.universoestacio.com.br, clique em "Faça sua Inscrição", preencha seus dados em Inscrição e depois faça o Agendamento das atividades. A minha palestra aparece em Evento -> Programação - Curso REDES DE COMPUTADORES.
  

quinta-feira, 10 de outubro de 2013

IPv6 Attacks com Python: Parte 1 + 1/2 (Firewall Bypass)

Essa postagem vai servir como um pequeno anexo para minha postagem anterior :)


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.

Bypassing Firewalls com IPv6 Port Scan



Um atacante pode utilizar IPv6 como uma forma de evadir firewalls durante a realização de um port scan. Por exemplo: alguns hosts podem apresentar dual-stack, desta forma tendo um endereço IPv4 e outro endereço IPv6. O atacante pode scannear um conjunto de portas via IPv4 e depois realizar o mesmo scan sendo que direcionado ao endereço IPv6 (obtendo diferentes resultados).

A figura abaixo mostra um exemplo de bypass (do lado esquerdo esta o resultado de um scan utilizando IPv4 e do lado direito o resultado do scan com IPv6).

Figura 1: Comparativo entre scans realizados com IPv4 e IPv6


Observem que apenas a porta 80 aparece como aberta durante o primeiro teste, enquanto as demais portas aparecem como filtradas (devido a utilização de firewall). Durante o teste utilizando IPv6 é possível ver outro resultado, a porta 22 agora aparece como aberta e as demais portas aparecem como fechadas (Isso indica que o pacote RST esta voltando para o atacante e que o firewall não esta filtrando estas portas).

Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

quinta-feira, 3 de outubro de 2013

IPv6 Attacks com Python: Parte 1 (Scanning)

Sejam bem vindos a mais um Hacking com Tapioca!

Eu vou começar uma série de tópicos de segurança em relação ao protocolo IPv6. Eu devo dividir esta série em 2 ou 3 partes (estou pensando ainda em quantas hehe). Nesta primeira parte eu quero falar especificamente sobre o processo de scanning (varreduras) em redes 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.

Mudanças no IPv6


Eu preciso começar apresentando algumas mudanças realizadas no protocolo IPv6. A primeira grande mudança do IPv6 é sobre o novo tamanho de endereço utilizado. O cabeçalho IPv6 agora apresenta campos de 128 bits para endereços de origem e de destino. A figura abaixo apresenta o cabeçalho utilizado pelo IPv6 (percebam o menor número de campos em comparação ao IPv4).

Figura 1: Cabeçalho IPv6

O novo formato de endereço é composto por 8 campos (cada campo com tamanho de 2 bytes). Os campos agora são formados por valores hexadecimais (ao contrários dos valóres decimais utilizados pelo IPv4) e são separados entre si atravês de ':' (dois pontos).

Figura 2: Sintáxe de um endereço IPv6

A partir dos novos tamanhos utilizados, podemos ter um total de 2^128 endereços IPv6 possíveis! No Brasil ja estamos vendo algumas faixas de endereçamento IPv6 sendo utilizadas por algumas empresas. Se vocês pesquisarem um pouco, vão perceber que estão sendo utilizadas faixas de endereçamento enormes (ex: /32 e /48).

Figura 3: http://www.sixxs.net/tools/grh/dfp/lacnic/?sort=country

A pergunta que fica no 'ar' é como eu posso realizar um scan (varredura) em uma rede IPv6 de forma eficiente ? Para responder em parte essa pergunta, eu vou falar um pouco sobre o papel de endereços multicast no IPv6 e realização de scanning em uma rede local IPv6.

Scanning em redes locais IPv6


O IPv6 apresenta três tipos de endereços unicast: Global Unicast, Link Local e Unique Local Address. Para esse tópico eu gostaria de focar especialmente no segundo tipo. O Link Local é utilizado apenas no enlance específico no qual a interface esta conectada (rede local) e utiliza o prefixo 'FE80::/64' em seu endereço IPv6.

O IANA possui uma lista¹ de endereços multicast existentes para o IPv6:

Figura 4: Lista de endereços multicast IPv6

Eu gostaria de focar especialmente no endereço 'FF02:0:0:0:0:0:0:1' (ou simplesmente 'FF02::1'). Este endereço de multicast é utilizado para comunicação com todos os nós de uma mesma rede local. Portanto, podemos utilizar este endereço de multicast para nos comunicar com todos os nossos vizinhos em uma rede local IPv6.

Eu criei um pequeno script para realizar o processo de enumeração de hosts em  uma rede interna utilizando IPv6 e ICMPv6. O Script cria um único pacote ICMPv6 (Echo Request) tendo como destino o endereço 'FF02::1'. Todos os nós da rede local respondem à requisição realizada com um ICMPv6 Echo Reply. O screenshot abaixo mostra um exemplo de output gerado pelo script (a figura não mostra o resultado completo porque foram hosts demais respondendo ao pacote hehe).

Figura 5: Hosts descobertos através de IPv6

A vantagem desta técnica é que eu envio apenas 1 pacote para rede, ao contrário de scans tradicionais (ex: ARP / ICMP), onde eu envio diversos pacotes (desta forma eu me torno menos intrusivo na rede). A partir deste ponto, eu posso começar um scan TCP/UDP e identificar as portas/serviços presentes nos hosts encontrados.

O script encontra-se disponível para download em:

https://github.com/pasknel/hacking-com-tapioca/blob/master/IPv6/ipv6_ping.py

 

Conclusão


Neste tópico foi apresentado o assunto de varreduras em redes IPv6. No próximo post eu vou estar falando sobre a realização de man-in-the-middle (MITM) em redes locais IPv6. Por favor escrevam suas sugestões e comentários!

Obrigado :)

Keep Hacking!

¹ http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses-2.csv