为了更好理解SSL协议的握手过程,结合实例,使用Wireshark抓包分析SSL握手过程中客户端与服务器间的交互过程。本例中服务器为https://10.21.49.130,客户端为本机浏览器192.168.1.214。
0x00 第一阶段
客户端浏览器向服务器发起TCP连接请求,建立起TCP连接后,客户端向服务器发送Client Hello消息,传送客户端支持的最高 SSL 协议的版本号、随机数、加密算法列表,以及其他所需信息。Client Hello消息的内容如下图所示:
可以看出SSL更换了名字为TLS,查阅资料缘由为在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3。
通过上图可以看出client hello的消息结构如下:
查看Ciper Suites支持的加密算法:DES,RSA等
查看扩展(Extensions),发现Compression Methods字段值为0,说明没有进行压缩。
0x02 第二阶段
服务器向客户端发送Server Hello包含其证书的Certificate消息并还有Key Exchange Hello done等。证书中所携带服务器的公钥,用于加密后面消息中预主密钥。消息内容如下:
查看证书:发现只有一个根证书
观察到证书的地址为cshao@gdut.edu.cn,组织名为www.gdut.edu.cn,单元名为cshao。证书公钥为3082010a0282010100d82e34...证书的签名值为:a93fe7b1ed06587df993b72673012b2d3a...等一些字段。
通过以上分析可知证书结构如下图:
0x02 第三阶段与第四阶段
服务器发送完Certificate消息后继续发送Server Key Exchange和Server Hello Done消息,Server Key Exchange消息中包含有密钥交换算法所需要的额外参数。Server Hello Done消息表示服务器已发送完此阶段的全部信息。
客户端发送Client Key Exchange和Change Cipher Spec消息,Client Key Exchange包含使用服务器RSA公钥加密过的随机数Pre_Master_Secret,该参数用于后续生成主密钥;Change Cipher Spec消息告诉服务器,接下来的消息将采用新协商的加密套件和密钥进行通信,并通知客户端到服务器的握手过程结束。
接着服务器同样发送Change Cipher Spe消息通知服务器到客户端的握手过程结束,并发送一个加密的握手数据Encrypted Handshake Message 消息,客户端收到消息解密后进行验证,验证通过则说明握手过程中的数据没有被篡改过,也说明服务器是之前交换证书的持有者。现在双方就可以开始加密通信Application Data。
IPSec服务器的搭建与ESP简单抓包及分析
设备有win10,win10上vmware里的linux虚拟机,以此作为服务器。服务器的搭建参考以下:
配置服务器
配置完如图:
注意到自动配置的ip地址为学校的ip,本机不能进行访问。修改/etc/ipsec.conf文件,使其中的leftid=192.168.220.128
为虚拟机的ip地址。
重启服务:systemctl restart ipsec xl2tpd
查看是否在运行:systemctl status ipsec
配置客户端
-
右键单击系统托盘中的无线/网络图标。
-
选择 打开网络和共享中心。或者,如果你使用 Windows 10 版本 1709 或以上,选择 打开"网络和 Internet"设置,然后在打开的页面中单击 网络和共享中心。
-
单击 设置新的连接或网络。
-
选择 连接到工作区,然后单击 下一步。
-
单击 使用我的Internet连接 (VPN)。
-
在 Internet地址 字段中输入
你的 VPN 服务器 IP
。 -
在 目标名称 字段中输入任意内容。单击 创建。
-
返回 网络和共享中心。单击左侧的 更改适配器设置。
-
右键单击新创建的 VPN 连接,并选择 属性。
-
单击 安全 选项卡,从 VPN 类型 下拉菜单中选择 "使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)"。
-
单击 允许使用这些协议。选中 "质询握手身份验证协议 (CHAP)" 和 "Microsoft CHAP 版本 2 (MS-CHAP v2)" 复选框。
-
单击 高级设置 按钮。
-
单击 使用预共享密钥作身份验证 并在 密钥 字段中输入
你的 VPN IPsec PSK
。 -
单击 确定 关闭 高级设置。
-
单击 确定 保存 VPN 连接的详细信息。
连接成功截图:
wireshark抓包分析
随意截取一个ESP的包,未看到AH的包: