hacktricks/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md

130 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
{% endhint %}
# Teoria básica do IPv6
## Redes
Os endereços IPv6 são estruturados para melhorar a organização da rede e a interação dos dispositivos. Um endereço IPv6 é dividido em:
1. **Prefixo da Rede**: Os primeiros 48 bits, determinando 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, identificando 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 de endereços especiais:
- **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 esse intervalo.
### 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
```
IPv6 addresses 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 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 de 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 <IFACE> 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 vizinhos ou roteadores ICMPv6.
- Usar mensagens de redirecionamento ICMPv6 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 também pode 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)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}