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

119 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.

<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
# Teoria Básica do IPv6
## Redes
Em um endereço IPv6, os **primeiros 48 bits são o prefixo de rede**. Os **próximos 16 bits são o ID da sub-rede** e são usados para definir sub-redes. Os últimos **64 bits são o identificador de interface** (também conhecido como ID de Interface ou ID de Dispositivo, é para dispositivos). Se necessário, os bits normalmente reservados para o ID do Dispositivo podem ser usados para mascaramento de sub-rede adicional.
Não há ARP no IPv6. Em vez disso, há **ICMPv6 NS (Neighbor Solicitation) e NA (Neighbor Advertisement)**. O **NS** é usado para resolver um endereço, então ele envia pacotes **multicast**. O **NA** é **unicast** e é usado para responder ao NS. Um pacote NA também pode ser enviado sem precisar de um pacote NS.
**0:0:0:0:0:0:0:1** = 1 (`::1` para abreviar) Este é o equivalente a 127.0.0.1 no IPv4.
**Endereços Link-local:** Estes são endereços privados que não são destinados a serem roteados na internet. Eles podem ser usados localmente por LANs privadas ou temporárias para compartilhamento e distribuição de arquivos entre dispositivos na LAN. Outros dispositivos em sua LAN local que usam esse tipo de endereços podem ser encontrados enviando um ping para o endereço multicast ff02::01\
**FE80::/10** Faixa de endereço unicast local de link.
```bash
ping6 I eth0 -c 5 ff02::1 > /dev/null 2>&1
ip neigh | grep ^fe80
#Or you could also use
alive6 eth0
```
Se você **conhece o endereço MAC de um host na mesma rede** que você (você poderia simplesmente fazer ping no seu endereço ipv4 e visualizar a tabela arp para encontrar seu endereço MAC), você pode calcular o endereço Link-local dele para se comunicar com ele.\
Suponha que o **endereço MAC** seja **`12:34:56:78:9a:bc`**
1. Para notação IPv6: **`1234:5678:9abc`**
2. Acrescente `fe80::` no início e insira `fffe` no meio: **`fe80::`**`1234:56`**`ff:fe`**`78:9abc`
3. Inverta o sétimo bit da esquerda, de 0001 0010 para 0001 0000: `fe80::1`**`0`**`34:56ff:fe78:9abc`
4. `fe80::1034:56ff:fe78:9abc`
**Endereço local único:** Este tipo de endereço ipv6 também não é destinado a ser roteado na internet pública. O endereço local único é uma substituição do endereço local de site, que permite a comunicação dentro de um site enquanto é roteável para várias redes locais.\
**FEC00::/7** O intervalo de endereços locais únicos.
**Endereço de Multicast:** Isso também pode ser referido como Um-para-Muitos. Pacotes endereçados a um endereço de multicast são entregues a todas as interfaces identificadas pelo endereço de multicast. Os tipos de endereços de multicast são facilmente identificáveis porque normalmente começam com FF.\
**FF00::/8** O intervalo de endereços de multicast.
**Anycast:** Esta forma de endereço ipv6 é semelhante ao endereço de multicast com uma pequena diferença. O endereço anycast também pode ser referido como Um para o Mais Próximo. Pode ser usado para endereçar pacotes destinados a várias interfaces; mas geralmente envia pacotes para a primeira interface que encontra, conforme definido na distância de roteamento. Isso significa que envia pacotes para a interface mais próxima, conforme determinado pelos protocolos de roteamento.\
**20000::/3** O intervalo de endereços unicast global.
fe80::/10--> Link-Local Único (169.254.x.x) \[fe80:0000:0000:0000:0000:0000:0000:0000,febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]\
fc00::/7 --> Local-unicast Único (10.x.x.x, 172.16.x.x, 192.168.x.x) \[]\
2000::/3 --> Unicast Global\
ff02::1 --> Todos os Nós de Multicast\
ff02::2 --> Nós de Roteador de Multicast
## **Adivinhe o IPv6 de uma máquina**
**Método 1**
Os IPv6 de fe80::/10 são baseados no MAC. Se você tiver o IPv6 de um dispositivo dentro de uma rede e quiser adivinhar o IPv6 de outro dispositivo da rede, você pode obter seu endereço MAC usando um ping (dentro da tabela arp).
**Método 2**
Você pode enviar um ping6 para o multicast e obter o endereço IPv6 dentro da tabela arp.
```bash
service ufw stop #Stop firewall
ping6 -I <IFACE> ff02::1 #You could also make: ping6 -I <IPV6> ff02::1 if you want to make a ping to a specific IP Address
ip -6 neigh
alive6
use auxiliary/scanner/discovery/ipv6_neighbor_router_advertisement; set INTERFACE eth1; run
```
# IPv6 MitM
Homem no meio com anúncio de vizinho ICMPv6 falsificado.
* Homem no meio com anúncio de roteador ICMPv6 falsificado.
* Homem no meio usando redirecionamento ICMPv6 ou ICMPv6 muito grande para implantar rota.
* Homem no meio para atacar o IPv6 móvel, mas requer que o ipsec esteja desativado.
* Homem no meio com servidor DHCPv6 falso
# Descobrindo endereços IPv6 na natureza
## Subdomínios
Você pode usar o google e outros navegadores para procurar subdomínios como "ipv6.\*"
```bash
site:ipv6./
```
## DNS
Também pode tentar pesquisar por "**AXFR**" (transferência de zona), "**AAAA**" (IPv6) ou até mesmo "**ANY**" (todos) no registro DNS para encontrar endereços IPv6.
## Ping6
Uma vez que alguns dispositivos IPv6 de uma organização tenham sido encontrados, pode tentar usar `ping6` para verificar endereços próximos.
# 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)
<details>
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>