鱼塘

好多好多好多鱼

0%

使用wireshark查看strongswan的ESP数据包内容

本文主要介绍如何使用 Wireshark 查看自建 IPSec 服务器与客户端之间的传输内容,即使用 Wireshark 解密 IPSec IKEv1/IKEv2 以及 ESP 密文。需注意:任意 IPSec 服务提供商皆可使用本方法查看到客户的访问内容,所以尽量选择可信的服务提供商或者自己搭建。

ubuntu 下安装预共享密钥 strongswan、 xl2tpd

使用环境

1
2
ubuntu 19.10
strongswan 5.8.4

根据开源项目 Setup a (really) strong StrongSwan VPN Server for Ubuntu and Debian

修改部分内容使项目适用与本文章

修改后项目地址 Salted-Fiish/IPSec-Server-Setup

具体修改内容参考 README 文件

由于 Wireshark 对 ESP 加密算法和认证算法支持不全支持

故安装完成后尽量修改配置文件使 IPSec 强制选择Wireshark支持的协议进行加解密和验证

Wireshark 支持的加密算法:

  • NULL Encryption.
  • TripleDES-CBC RFC2451 with key length of 192 bits.
  • AES-CBC with 128-bit keys RFC3602 with key length of 128/192/256 bits.
  • AES-CTR RFC3686 with key length of 160/224/288 bits. The remaining 32 bits will be used as nonce.
  • DES-CBC RFC2405 with key length of 64 bits.
  • BLOWFISH-CBC RFC2451 with key length of only 128 bits.
  • TWOFISH-CBC with key of 128/256 bits.

Wireshark 支持的验证算法:

  • NULL Authentication.
  • HMAC-SHA1-96 RFC2404 : any keylen
  • HMAC-MD5-96 RFC2403 : any keylen
  • HMAC-SHA256 : any keylen

修改内容示例

1
2
3
4
5
6
vim /etc/ipsec.conf

conn %default
···
esp=3des-sha1! # 添加这条,强制使用 3des-sha1, ’!‘ 必须有
···

VPN 操作命令

1
/etc/init.d/vpn-assist start|stop|restart

客户端连接

MacOS 已测试

新建 VPN,类型选择 Cisco IPSec

新建 Cisco IPSec VPN

  1. 填写 服务器地址、账户名称、密码
  2. 点击 “认证设置”,填写共享的密钥,点击 “好”
  3. 点击 “应用” 完成设置
  4. 点击 “连接” 开启 IPSec 连接

iOS 已测试

新建 VPN,类型选择 IPSec

设置信息基本同 MacOS

Wireshark 抓包并设置解密

抓包

打开 Wireshark 进行抓包

对服务器 IP 地址和端口进行过滤

1
ip.addr == 'ipsec_server_ip' && (udp.port == 500 || udp.port == 4500)

设置 IKEv1/IKEv2/ESP 解密

Wireshark -> preferences -> protocols -> ISAKMP -> IKEv1 Decryption Table -> Edit

Wireshark -> preferences -> protocols -> ISAKMP -> IKEv2 Decryption Table -> Edit

Wireshark -> preferences -> protocols -> ESP -> Edit

如图所示

ikev1_decryption_table

  1. 如果之前有添加过配置文件,该窗口会显示出配置文件路径,点击文件路径打开文件,将 /etc/wireshark_keys 中对应文件内容复制进去

  2. 也可以则点击 + 号将 /etc/wireshark_keys 中的 ikev1_decryption_table 文件、ikev2_decryption_table 文件、esp_sa 文件内容分别写入到对应配置中

  3. 或者将 /etc/wireshark_keys 中对应文件复制到 Wireshark 配置文件路径中

1
2
# MacOS、linux 适用
cp esp_sa ~/.config/wireshark/

使用 Wireshark 重新打开抓到的包即可看到解密后的数据

问题解决

  1. Wireshark 提示 Error loading table ‘ESP SAs’: esp_sa:2: invalid value: TripleDes-CBC

    解决:修改 esp_sa 中 TripleDes-CBCTripleDES-CBC

    原因:大小写问题,如果遇到这类问题尽量把出错的参数修改为 Wireshark 支持的加密算法 提供的参数

  2. 不能解密 ESP 数据包

    解决:修改 esp_sa 源/目的 IP 为 NAT 内 IP

    原因:本地 IP 地址与出口 IP 地址不同,造成解密失败

参考链接

Setup a (really) strong StrongSwan VPN Server for Ubuntu and Debian

使用wireshark查看strongswan ipsec esp ikev1 ikev2的加密内容

https://wiki.strongswan.org

https://wiki.wireshark.org/ESP_Preferences