第4章 源IP伪造技术:IP欺骗原理、常见攻击手法

说实话,做密钥审计这几年,最让我头疼的不是算法本身,而是流量中的那些假IP。你想想看,一个密钥协商请求的源IP明明是内网地址,TTL却暴露了它来自外网——这种情况一个不注意就漏过去了。

源IP伪造(IP Spoofing)说白了就是攻击者把数据包里的源地址改成任意值。为什么能改?因为IP协议在设计时根本没考虑认证,只负责“发出去”,不验证“谁发的”。这个缺口,一旦和密钥系统结合,就成了大麻烦。

4.1 IP欺骗原理

每一层网络模型都有个信任锚点。对于IP来说,源地址就是那个锚点。很多密钥分发方案依赖源IP做身份识别——比如只有特定地址的客户端才能请求证书。

我不止一次在审计报告中批评这种设计。为什么?因为IP头里的源地址字段是明文,且不做校验。攻击者只要有一张网卡,就能用原始套接字或抓包工具任意修改这个字段。举个例子:

核心原理:攻击者构造数据包时,将IP头的源地址字段替换为目标信任的任意IP,利用网络层无认证特性发起各种攻击。

具体看一个典型场景:攻击者想冒充密钥服务器。他只要把源地址改成服务器IP,把一个重置会话的包发给客户端。客户端收到后直接断开连接,重连时被中间人劫持。这类攻击在密钥协商的握手阶段尤其致命。

4.2 常见IP欺骗攻击手法

这些年我遇到过不下十几种变种,但核心套路就那么几类。我整理了一张表,你对照着看会更清楚:

攻击类型描述经典场景对密钥审计的威胁
盲欺骗攻击者无法监控应答包,只能猜测序列号早期TCP会话劫持伪造密钥更新请求
非盲欺骗攻击者处在目标网络路径上,可监听应答内部网络ARP+IP欺骗拦截DHCP分配的临时密钥
中间人(MITM)攻击者同时伪造双方IP,中继消息HTTPS剥离、SSH欺骗窃取握手阶段的密钥材料
反射放大伪造源IP为受害者,向开放服务器发送查询DNS/NTP/SNMP放大攻击扰乱密钥生命周期管理服务器
IP源路由利用IP选项强制报文经过攻击者源路由欺骗(现已弃用)绕过ACL访问密钥库

你看,每种手法对密钥审计的影响都不同。我记得有一次审计一个大厂的证书颁发系统,发现大量来源显示为内网“ca-master”的请求,但TTL值只有10。内网请求怎么会只有10跳?显然是从外网伪造了源IP进来的。后来查了审计日志,对方确实在利用盲欺骗发起证书吊销攻击。

4.3 IP欺骗攻击的演化路径

这个演化过程用一张图就能说清楚。下面是我画的结构:攻击者从伪造单个IP,到组合使用反射和中间人,最终直达密钥系统。你仔细看看节点间的逻辑:

IP欺骗攻击演化与影响链路 攻击者 伪造源IP 目标服务器 反射/放大节点 密钥审计系统 典型攻击链路说明 攻击者伪造源IP → 直接攻击目标服务器,或通过反射节点放大流量 → 目标服务器应答被误导至伪造IP(盲欺骗),或密钥系统收到大量无效请求。
审计小技巧:当你在日志里看到“来自192.168.x.x的密钥发布请求,但TTL不为64或128”时,基本可以标记为可疑。我个人的经验是结合IPID字段和初始窗口大小做交叉验证——伪造的工具往往在这些细节上露出马脚。

4.4 检测与应对思路

说了这么多攻击手法,那审计时怎么抓?我建议重点关注三个方向:

  • IP可信度建模:记录每个合法源IP的TTL、IPID、TCP选项等指纹,一旦偏离就告警。
  • 请求上下文关联:密钥操作如果来自高频请求的IP,却从未出现过ARP交互,大概率是伪造的。
  • 网络层验证:在边界交换机上配置反向路径转发(uRPF),丢弃源地址不可达的报文。
特别提醒:我曾经在审计一个云密钥管理系统时,发现对方用了IP欺骗来做SSL剥离。日志里源IP全是内网地址,但实际包在出口被防火墙标记了不同的接口ID。后来我专门写了一个审计规则——检查“IP来源接口”是否与源地址段匹配,一下子就筛出几千条异常。别小看这个接口字段,它是很多伪造包的死穴。

4.5 实战:一次票据重放中的IP欺骗

最后分享一个我处理过的真实案例。某金融平台密钥审计日志显示,同一张Kerberos票据在10秒内被两个不同IP地址使用。一个是合法服务器,另一个看起来是同一个网段。表面像是负载均衡,但仔细看第二个请求的IPID序列号是乱序的,而且TCP窗口大小和操作系统指纹对不上。我沿着线索追下去,果然是攻击者在内网用ARP欺骗抢占了部分IP,拿到票据后伪造源IP进行重放。最终我们增加了审计规则——记录每个票据首次使用时的IP指纹,后续请求只要指纹对不上就立即告警。