本文中,服务端IP地址是120.55.246.173,移动端(我的手机)的IP地址是192.168.1.226,中间人(我的电脑)的IP地址是192.168.1.158,电脑通过Charles监听8888端口,转发移动端发来的数据包。

正常的HTTPS通信过程

正如在上文应用接口的安全方案设计(二) 中分析的,是否存在MIM攻击关键在于客户端接收到的证书,是否是服务端下发的原始证书。 着重看编号156158两个包。 156携带着服务端下发的原始证书信息: 158是Charles处理后发送给客户端的包:

可以看到传递的证书是一致的,意味着这个HTTPS通信是安全的。

MIM攻击下的HTTPS通信过程

276号包表示服务端下发给Charles合法的证书: 352号包表示Charles传递自己的证书给客户端:

Wireshark已经贴心的给我们加上了黄色的警告提示,这个证书已经由原来由wosign签发的证书被替换成了Charles的证书: 如果客户端接收了Charles的证书,整个通信内容就都暴露在Charles中了。