如何在帕洛阿尔托网络设备上解密 IKE 和 ESP 数据包
Resolution
概述
当 ipsec 隧道在帕洛阿尔托网络防火墙上终止时, 可以使用 ikemg.log 下注册的密钥对通信进行解密。这对于诊断 ike 和 ipsec 隧道 (如数据包丢失和顺序外数据包) 的性能问题非常有用。
详细
在本文中, 我们将说明如何使用以下拓扑在主模式和 ESP 数据包上解密 ikev1。同样的步骤也可以与 ikev2 一起使用。
默认情况下, ikemgr 的调试级别是正常的。要记录经过协商的身份验证和加密密钥, 我们必须增加要转储的调试级别。
admin@FW1> 调试 ike 全局显示
sw.ikedaemon.debug.global: 正常
admin@FW1> 在转储上调试 ike 全局
admin@FW1> 调试 ike 全局显示
sw.ikedaemon.debug.global:转储
数据包可以在 FW1 和 FW2 之间的任何位置捕获。在我们的测试设置, 我们将采取包捕获的 FW1 后, 本指南https://live.paloaltonetworks.com/t5/Learning-Articles/How-to-Run-a-Packet-Capture/ta-p/62390.
要在 User1 和 User2 之间捕获清晰和加密的数据, 我们将使用以下筛选器。
admin@FW1> 调试 dataplane 数据包诊断显示设置
--------------------------------------------------------------------------------
包诊断设置:
--------------------------------------------------------------------------------
数据包筛选器
启用: 是
比赛预解析的数据包: 没有
索引 1: 192.168.112.104 [0]-> 192.168.125.110 [0], 原始0
进入接口任何,外出接口的任何排除非 IP
进入接口任何,外出接口的任何排除非 IP
索引 2: 10.193.121.91 [0]-> 10.193.121.93 [0], 原始0
进入接口任何,外出接口的任何排除非 IP
进入接口任何,外出接口的任何排除非 IP
--------------------------------------------------------------------------------
日志记录
启用: 否
日志-油门: 否
同步-按刻度记录: 是
特点︰
计数器:
--------------------------------------------------------------------------------
数据包捕获
启用: 是
Snaplen: 0
阶段接收: 文件 rx
已捕获: 数据包-0 字节-0
最大值: 数据包-0 字节-0
阶段传输: 文件 tx
已捕获: 数据包-1 字节-0
最大值: 数据包-0 字节-0
阶段删除: 文件 dr
已捕获: 数据包-0 字节-0
最大值: 数据包-0 字节-0
此时, 我们需要跳过 ipsec 隧道以启动新的协商过程, 并记录 ipsec phase1 和 phase2 密钥。
admin@FW1>清除 vpn ike 网关 TO-FW2
admin@FW1>清除 vpn ipsec-sa 隧道 To-FW2
然后在 User1 和 User2 之间生成通信量, 并确保隧道已上。
admin@FW1> 显示 vpn-sa 网关 TO-FW2
IKEv1 phase-1 SAs
GwID/客户端 IP 对等地址网关名称角色模式算法建立失效 V ST。
hase2
-------------- ------------ ------------ ---- ---- --------- ----------- ---------- - -- -- -
-----
1 10.193.121.93 TO-FW2 Init 主要 PSK/DH2/A128/SHA1 4月08日 21:57:04 4月08日 22:03:04 v1 12 4 1
显示 IKEv1 IKE SA: 找到总共2个网关。找到1个 ike sa。
IKEv1 phase-2 SAs
GwID/客户端 IP 对等地址网关名称角色算法 spi (in) spi (出)
-------------- ------------ ------------ ---- --------- ------- -------- ----- -- --
1 10.193.121.93 TO-FW2 Init ESP/DH5/tunl/SHA2 B57366C2 B82D7CDE 547B1BD5 9 1
显示 IKEv1 phase2 SA: 找到总共2个网关。找到1个 ike sa。
在主模式上解密 ikev1。
使用 ikev1, 将对标识和快速模式消息进行加密。有时有必要对它们进行解密, 以验证两个对等方之间交换了哪些参数。
下面是加密标识消息的示例。
要解密 ikev1 消息, 我们需要两条信息。
- 与数据包捕获中的启动器 SPI 对应的启动器的 cookie。294ff0e604e73f31
- 可在 ikemgr.log 上找到的加密密钥: 搜索 "cookie:294ff0e604e73f31", 然后滚动协商邮件, 直到找到最终计算出的加密密钥。
2017-04-08 21:57:04 [调试]: 奥克利 c: 3157: oakley_compute_enckey (): 计算最后的加密密钥:
2017-04-08 21:57:04 [调试]: 奥克利 c: 3158: oakley_compute_enckey ():
793f8697 cc0e8cdb 5851496c 0acff14c
接下来, 转到 Wireshark >> 编辑 > 首选项 > 协议 >> ISAKMP IKEv1 解密表, 并输入启动器的 COOKIE 和加密密钥:
下面是解密的识别信息:
解密 ESP 数据包。
解密 ESP 数据包遵循与 ike 相同的原则, 但需要更多参数。
- 协议: IPv4
- Src ip: 要解密的 ESP 数据包的源 ip。上面的例子10.193.121.91
- Dst ip: 要解密的 ESP 数据包的目标 ip。上面的例子10.193.121.93
- ESP SPI: 您可以在包捕获下的封装安全负载下找到它。在我们的例子中, 它是0xb82d7cde
- 加密和身份验证算法: 它们是 "显示 vpn 流" 命令输出的一部分。
admin@FW1> 显示 vpn 流名 To-FW2 |匹配算法
验证算法: SHA256
enc 算法: AES128
- 可在 ikemgr.log 上找到的加密和验证密钥:
21.93 [500]/0, satype=141 (ESP), spi =, wsize=4, authtype=41 (SHA256), enctype=15 (AES128), saflags=0x0, samode=137 (tunl), reqi
d=0, 终身硬时间 180, 字节 0, 寿命软时间 146, 字节 0, enckey len=16 [3d6991e6a0f888d240c8d539a54676a7], authkey len=32
[bbac69f722297906c11d7d9038248ba3b509519a0e1e37bb0652752130c8324c]
接下来, 转到 Wireshark >> 编辑 > 首选项 > 协议 > ESP 解密并选择 "尝试检测/解码加密 ESP 负载":
然后编辑 ESP SAs。
之后, 您将看到 ESP 数据包被解密。