mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
da0074a757
commit
8e596175bd
@ -38,7 +38,7 @@ ip neigh | grep ^fe80
|
||||
# Alternatively, use alive6 for neighbor discovery
|
||||
alive6 eth0
|
||||
```
|
||||
IPv6 地址可以从设备的 MAC 地址派生,用于本地通信。以下是如何从已知的 MAC 地址派生链路本地 IPv6 地址的简化指南,以及 IPv6 地址类型和在网络中发现 IPv6 地址的方法的简要概述。
|
||||
IPv6 地址可以从设备的 MAC 地址派生,用于本地通信。以下是如何从已知的 MAC 地址派生链路本地 IPv6 地址的简化指南,以及对 IPv6 地址类型和在网络中发现 IPv6 地址的方法的简要概述。
|
||||
|
||||
### **从 MAC 地址派生链路本地 IPv6**
|
||||
|
||||
@ -100,7 +100,7 @@ site:ipv6./
|
||||
|
||||
- **AXFR**:请求完整的区域传输,可能会揭示广泛的 DNS 记录。
|
||||
- **AAAA**:直接查找 IPv6 地址。
|
||||
- **ANY**:广泛查询,返回所有可用的 DNS 记录。
|
||||
- **ANY**:一个广泛的查询,返回所有可用的 DNS 记录。
|
||||
|
||||
### 使用 Ping6 进行探测
|
||||
|
||||
@ -108,9 +108,9 @@ site:ipv6./
|
||||
|
||||
## IPv6 本地网络攻击技术
|
||||
|
||||
以下部分涵盖可以在 **同一 /64 段内** 执行的实际层 2 IPv6 攻击,而无需知道任何全局前缀。下面显示的所有数据包都是 **链路本地** 的,仅通过本地交换机传输,使它们在大多数环境中极为隐蔽。
|
||||
以下部分涵盖可以在 **同一 /64 段内** 执行的实际层 2 IPv6 攻击,而无需知道任何全局前缀。下面显示的所有数据包都是 **链路本地** 的,仅通过本地交换机传输,使它们在大多数环境中极其隐蔽。
|
||||
|
||||
### 系统调优以实现稳定的实验室
|
||||
### 为稳定实验室进行系统调优
|
||||
|
||||
在处理 IPv6 流量之前,建议对您的设备进行加固,以避免被自己的测试所污染,并在大规模数据包注入/嗅探期间获得最佳性能。
|
||||
```bash
|
||||
@ -128,7 +128,7 @@ sudo sysctl -w net.ipv4.tcp_tw_reuse=1
|
||||
```
|
||||
### 被动 NDP 和 DHCPv6 嗅探
|
||||
|
||||
因为每个 IPv6 主机 **自动加入多个多播组** (`ff02::1`, `ff02::2`, …) 并使用 ICMPv6 进行 SLAAC/NDP,你可以在不发送任何数据包的情况下映射整个段。以下 Python/Scapy 单行代码监听最有趣的 L2 消息,并打印出带有颜色和时间戳的日志,显示谁是谁:
|
||||
因为每个 IPv6 主机 **自动加入多个组播组** (`ff02::1`, `ff02::2`, …) 并使用 ICMPv6 进行 SLAAC/NDP,所以你可以在不发送任何数据包的情况下映射整个段。以下 Python/Scapy 单行代码监听最有趣的 L2 消息,并打印出带有颜色和时间戳的日志,显示谁是谁:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
from scapy.all import *
|
||||
@ -199,7 +199,7 @@ sniff(iface=a.interface,prn=handler,timeout=a.time or None,store=0)
|
||||
|
||||
### 路由器广告 (RA) 欺骗
|
||||
|
||||
IPv6 主机依赖 **ICMPv6 Router Advertisements** 进行默认网关发现。如果你注入伪造的 RA **比合法路由器更频繁**,设备将默默地切换到你作为网关。
|
||||
IPv6 主机依赖 **ICMPv6 Router Advertisements** 进行默认网关发现。如果你注入伪造的 RAs **比合法路由器更频繁**,设备将默默地切换到你作为网关。
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
from scapy.all import *
|
||||
@ -227,9 +227,36 @@ sudo sysctl -w net.ipv6.conf.all.forwarding=1
|
||||
sudo ip6tables -A FORWARD -i eth0 -j ACCEPT
|
||||
sudo ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
### RDNSS (DNS) 欺骗通过 RA
|
||||
#### 路由器广告标志 (M/O) 和默认路由器优先级 (Prf)
|
||||
|
||||
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106) 允许在 RA 中添加 **递归 DNS 服务器 (RDNSS)** 选项。现代操作系统 (Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved, …) 自动信任它:
|
||||
| 标志 | 意义 | 对客户端行为的影响 |
|
||||
|------|---------|----------------------------|
|
||||
| **M (管理地址配置)** | 当设置为 `1` 时,主机必须使用 **DHCPv6** 来获取其 IPv6 地址。 | 整个地址来自 DHCPv6 – 非常适合 *mitm6* 风格的中毒。 |
|
||||
| **O (其他配置)** | 当设置为 `1` 时,主机应仅使用 **DHCPv6** 来获取 *其他* 信息(DNS, NTP, …)。 | 地址仍通过 SLAAC,但 DNS 可以通过 DHCPv6 被劫持。 |
|
||||
| **M=0 / O=0** | 纯 SLAAC 网络。 | 仅可能使用 RA / RDNSS 技巧 – 客户端不会发送 DHCPv6。 |
|
||||
| **M=1 / O=1** | 混合环境。 | 同时使用 DHCPv6 和 SLAAC;欺骗的表面最大。 |
|
||||
|
||||
在渗透测试期间,您可以简单地检查一次合法的 RA 并决定哪个向量是可行的:
|
||||
```bash
|
||||
sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134' # capture Router Advertisements
|
||||
```
|
||||
查找转储中的 `flags [M,O]` 字段 - 无需猜测。
|
||||
|
||||
**Prf**(路由器优先级)字段在 RA 头部控制当存在 *多个* 网关时你的恶意路由器看起来有多吸引人:
|
||||
|
||||
| Prf 值 | 二进制 | 意义 |
|
||||
|--------|--------|------|
|
||||
| **高** | `10` | 客户端更喜欢这个路由器而不是任何 *中*/*低* 的路由器 |
|
||||
| 中(默认) | `01` | 几乎所有合法设备使用 |
|
||||
| 低 | `00` | 仅在没有更好的路由器存在时选择 |
|
||||
|
||||
使用 Scapy 生成数据包时,可以通过 `prf` 参数设置,如上所示(`prf=0x1` → 高)。结合 **高 Prf**、**短间隔** 和 **非零生存时间** 使你的恶意网关异常稳定。
|
||||
|
||||
---
|
||||
|
||||
### 通过 RA 进行 RDNSS(DNS)欺骗
|
||||
|
||||
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106) 允许在 RA 中添加 **递归 DNS 服务器(RDNSS)** 选项。现代操作系统(Win 10 ≥1709、Win 11、macOS Big Sur、Linux systemd-resolved 等)会自动信任它:
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
from scapy.all import *
|
||||
@ -255,8 +282,8 @@ send(ra,iface=args.interface,loop=1,inter=args.interval)
|
||||
|
||||
与SLAAC不同,Windows网络通常依赖于**无状态DHCPv6**进行DNS。 [mitm6](https://github.com/rofl0r/mitm6) 自动回复`Solicit`消息,使用**广告 → 回复**流程,将**您的链路本地地址分配为DNS,持续300秒**。 这解锁了:
|
||||
|
||||
* NTLM中继攻击(WPAD + DNS劫持)
|
||||
* 拦截内部名称解析而不触碰路由器
|
||||
* NTLM中继攻击 (WPAD + DNS劫持)
|
||||
* 拦截内部名称解析而不触及路由器
|
||||
|
||||
典型用法:
|
||||
```bash
|
||||
@ -276,5 +303,6 @@ sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning
|
||||
- [RFC 8106 – IPv6 ND DNS Configuration](https://datatracker.ietf.org/doc/html/rfc8106)
|
||||
- [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)
|
||||
- [Practical Guide to IPv6 Attacks in a Local Network](https://habr.com/ru/articles/930526/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user