{{#include ../../banners/hacktricks-training.md}} # Teoria Básica do IPv6 ## Redes Os endereços IPv6 são estruturados para melhorar a organização da rede e a interação entre dispositivos. Um endereço IPv6 é dividido em: 1. **Prefixo da Rede**: Os primeiros 48 bits, que determinam o segmento da rede. 2. **ID da Sub-rede**: Os 16 bits seguintes, usados para definir sub-redes específicas dentro da rede. 3. **Identificador de Interface**: Os 64 bits finais, que identificam exclusivamente um dispositivo dentro da sub-rede. Enquanto o IPv6 omite o protocolo ARP encontrado no IPv4, ele introduz o **ICMPv6** com duas mensagens principais: - **Solicitação de Vizinhança (NS)**: Mensagens multicast para resolução de endereços. - **Anúncio de Vizinhança (NA)**: Respostas unicast ao NS ou anúncios espontâneos. O IPv6 também incorpora tipos especiais de endereços: - **Endereço de Loopback (`::1`)**: Equivalente ao `127.0.0.1` do IPv4, para comunicação interna dentro do host. - **Endereços Link-Local (`FE80::/10`)**: Para atividades de rede local, não para roteamento na internet. Dispositivos na mesma rede local podem se descobrir usando essa faixa. ### Uso Prático do IPv6 em Comandos de Rede Para interagir com redes IPv6, você pode usar vários comandos: - **Ping Endereços Link-Local**: Verifique a presença de dispositivos locais usando `ping6`. - **Descoberta de Vizinhança**: Use `ip neigh` para visualizar dispositivos descobertos na camada de link. - **alive6**: Uma ferramenta alternativa para descobrir dispositivos na mesma rede. Abaixo estão alguns exemplos de comandos: ```bash ping6 –I eth0 -c 5 ff02::1 > /dev/null 2>&1 ip neigh | grep ^fe80 # Alternatively, use alive6 for neighbor discovery alive6 eth0 ``` Os endereços IPv6 podem ser derivados do endereço MAC de um dispositivo para comunicação local. Aqui está um guia simplificado sobre como derivar o endereço IPv6 Link-local a partir de um endereço MAC conhecido, e uma breve visão geral dos tipos de endereços IPv6 e métodos para descobrir endereços IPv6 dentro de uma rede. ## **Derivando Link-local IPv6 do Endereço MAC** Dado um endereço MAC **`12:34:56:78:9a:bc`**, você pode construir o endereço IPv6 Link-local da seguinte forma: 1. Converta o MAC para o formato IPv6: **`1234:5678:9abc`** 2. Adicione `fe80::` e insira `fffe` no meio: **`fe80::1234:56ff:fe78:9abc`** 3. Inverta o sétimo bit da esquerda, mudando `1234` para `1034`: **`fe80::1034:56ff:fe78:9abc`** ## **Tipos de Endereços IPv6** - **Endereço Local Único (ULA)**: Para comunicações locais, não destinado ao roteamento na internet pública. Prefixo: **`FEC00::/7`** - **Endereço Multicast**: Para comunicação de um-para-muitos. Entregue a todas as interfaces no grupo multicast. Prefixo: **`FF00::/8`** - **Endereço Anycast**: Para comunicação de um-para-o-mais-perto. Enviado para a interface mais próxima conforme o protocolo de roteamento. Parte do intervalo global unicast **`2000::/3`**. ## **Prefixos de Endereço** - **fe80::/10**: Endereços Link-Local (semelhante a 169.254.x.x) - **fc00::/7**: Unicast Local Único (semelhante a intervalos privados IPv4 como 10.x.x.x, 172.16.x.x, 192.168.x.x) - **2000::/3**: Unicast Global - **ff02::1**: Multicast Todos os Nós - **ff02::2**: Multicast Nós Roteadores ## **Descobrindo Endereços IPv6 dentro de uma Rede** ### Modo 1: Usando Endereços Link-local 1. Obtenha o endereço MAC de um dispositivo dentro da rede. 2. Derive o endereço IPv6 Link-local a partir do endereço MAC. ### Modo 2: Usando Multicast 1. Envie um ping para o endereço multicast `ff02::1` para descobrir endereços IPv6 na rede local. ```bash service ufw stop # Stop the firewall ping6 -I ff02::1 # Send a ping to multicast address ip -6 neigh # Display the neighbor table ``` ## IPv6 Man-in-the-Middle (MitM) Attacks Várias técnicas existem para executar ataques MitM em redes IPv6, como: - Falsificação de anúncios de vizinho ou roteador ICMPv6. - Usar mensagens ICMPv6 de redirecionamento ou "Pacote Muito Grande" para manipular o roteamento. - Atacar o IPv6 móvel (geralmente requer que o IPSec esteja desativado). - Configurar um servidor DHCPv6 malicioso. # Identifying IPv6 Addresses in the eild ## Exploring Subdomains Um método para encontrar subdomínios que estão potencialmente ligados a endereços IPv6 envolve aproveitar motores de busca. Por exemplo, empregar um padrão de consulta como `ipv6.*` pode ser eficaz. Especificamente, o seguinte comando de busca pode ser usado no Google: ```bash site:ipv6./ ``` ## Utilizando Consultas DNS Para identificar endereços IPv6, certos tipos de registros DNS podem ser consultados: - **AXFR**: Solicita uma transferência completa de zona, potencialmente revelando uma ampla gama de registros DNS. - **AAAA**: Busca diretamente endereços IPv6. - **ANY**: Uma consulta ampla que retorna todos os registros DNS disponíveis. ## Probing com Ping6 Após identificar endereços IPv6 associados a uma organização, a ferramenta `ping6` pode ser usada para sondagem. Esta ferramenta ajuda a avaliar a capacidade de resposta dos endereços IPv6 identificados e pode também auxiliar na descoberta de dispositivos IPv6 adjacentes. ## Referências - [http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html](http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html) - [https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904](https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904) {{#include ../../banners/hacktricks-training.md}}