使用 wireshark 分析淘宝数据流
一、实验原理:
HTTPS协议、RSA原理
二、实验目的:
深度探究https加密机制、协商机制
三、实验内容:
1. 分析淘宝的数据流(从登陆到退出,每一个数据包进行标注和分析)
2. RSA如何在公网里面分发密钥
3. 为什么有的数据包大于1500字节
......
四、实验环境(设备、元器件)
Wireshark
五、实验步骤及原理
第一问:淘宝数据流分析
- 抓包开始
第一步:抓包(一整个流程),但是这里有很多对话,既然我们获取的是淘宝的数据流,那么就会有证书:
ssl.handshake.certificate#查看在握手时候的证书
有一个证书,点击下面的详细内容,加上查询了203.119.212.127是阿里云的IP地址,说明这就是淘宝网的证书
然后通过追踪流TCP流,看到其他数据流交互状态
看到其他数据流,并且有很明显的交互状态。
- 下面开始具体分析
三次握手建立成功以后,开始建立ssl连接
我们将连接分为6步(或者可以根据目的ip和源ip再细分)
第一步(请求连接):客户端à服务器
第二步(应答连接):服务器à客户端
连接成功后,服务端再发证书、客户端随机数给客户端,server key exchange 是服务端公钥的的key;待会儿要与客户端密钥交换(密钥协商)
第三步:客户端à服务器,客户端密钥,将明文传输改为密文传输,加密信
息。这个时候还会生成第三个随机数。当然,在接受到CA时,得出里面的公钥后,会随机生成一个客户端随机数。
第四步:客户端à服务器,客户端发消息给服务器,再次确认加密机制
第五步:服务器对客户端的发送内容进行确认,提供新的session ticket
第六步:接着第五步,发送一段内容,并且对所有握手做摘要,发给客户端
来验证通信
这样划分步骤原因很简单,就是分析的时候没有着重看中间TCP内容,按照每次交互划分步骤,感觉有点绕,但是还是可以绕出来。
- 下面开始分析6个步骤中的每一个小步骤。
(1) Client hello
加密套件中表明了使用的加密算法,非对称加密算法,摘要算法记忆使用的是tls还是ssl。故,客户端第一次打招呼就发送了:客户端的随机数,客户端支持的加密套件,sessionid
(2) Server hello
需要加密的值是客户端à服务器
接下来,服务器将会把公钥证书给客户端
(1) 相互说hello以后,也有了双方的随机数,然后服务器将证书发给客户端。
(2) 接下来,客户端收到了证书,解析证书是否合格,解析完毕后会回应服务端(在TCP层里面,客户端会说,这是回应上一个包的,上一个包的序号就是1405)
(3) 明文à密文
(4) 服务端确定加密请求:
- 这里可以看到,1409是对1408的确认(这里是服务器发给客户端:对加密内容的确认),接下来,服务器也将加密传输数据;
- 并且,1409这里已经没有ssl协议了,更改为TCP了,接下来的业务数据传输就已经是在加密信道里了。
(5) 接下来,就开始正式的加密数据传输了
- 数据流分析完毕
第二问:RSA的密钥分发安全性
- RSA位于ssl与协商机制之间,是为了加密非对称算法的密钥,非对称密钥是为了加密后来传输信息的对称加密的密钥。
- RSA的密钥分发,RSA作为非对称加密算法,只有一个私钥,公钥虽多,但是通过公钥加密的信息只有私钥拥有者(服务器)才可以解开,当我们(客户端)发出一个加密的消息,只有服务器才有私钥,这样就可以保证安全性。
- 在公网里面,
第三问:为何有的数据包大于1500字节
为了提高计算机的效率,网卡设备支持offload特性,来提升网络手法性能,offload就是将本该操作系统进行分片、重组处理的某些数据包,拿给网卡硬件中做,降低了CPU消耗,也提高了处理性能。
Windows系统就设置了mtu,在系统管理器里面可以查看。所以Windows抓包无法大于1500字节。而问题里出现的大于1500字节,是因为Linux系统关闭了offload属性。
第四问:为什么这种机制可以保证数据传输的安全
- 这种机制指的是协商机制
协商机制的算法很安全,服务器端的随机数、客户端的随机数、得到公钥后生成的随机数,通过一个密钥导出器,最后得到一个对称密钥。这个过程很安全。
- 这种机制是HTTPS协议
http+ssl/tls=HTTPS
建立TCP通信以后,客户端和服务器端建立起连接以后,服务器的CA证书需要通过客户端的层层验证;验证成功后,客户端将CA里面的公钥提取出来,通过非对称加密算法加密生成的随机数,加密传输对称算法的密钥。在加密过程中,无论是使用RSA密钥分发还是DH密钥协商,攻击者都无法轻易破解出私钥,故无法得到后面通信中使用到的对称密钥。再加上后期使用对称密钥加密数据时,采用了一次一密,很难截获密钥。所以HTTPS很安全。
第五问:为什么是三个随机数
在协商算法里面,通过CA生成了一个随机数,再加上客户端、服务器端随机数,通过算法(比如DH,复杂的还有ECDH算法,现在普遍的算法),生成一个最终的密钥,由于有3个“变量”,三个随机数相当于扩充了维度。也是为了安全。
六、实验分析:
收获:
- 分发和协商不一样。
分发:
密钥分发
协商:
1. 客户端连上服务端
2. 服务端发送 CA 证书给客户端
3. 客户端验证该证书的可靠性
4. 客户端从 CA 证书中取出公钥
5. 客户端生成一个随机密钥 k,并用这个公钥加密得到 k'
6. 客户端把 k' 发送给服务端
7. 服务端收到 k' 后用自己的私钥解密得到
k
8. 此时双方都得到了密钥 k,协商完成。
- Linux下面查看网卡的属性:ethtool –k eth0
http://blog.nsfocus.net/network-packets-analysis-nic-offload/
- Wireshark的搜索规则:
搜索:该层.字段.(不能出现直接的数字)
该层.字段 eq(=)
比如:我们在搜索淘宝的时候,可以通过查找其证书,过滤掉其他多余站点
- 密码学相关知识:http://blog.nsfocus.net/network-packets-analysis-nic-offload/
下一篇: # 毫米波雷达误报
推荐阅读
-
使用 WireShark 分析 SSH 协议
-
使用 wireshark 分析 ssh 密码登录详情
-
使用 Wireshark 进行分析 - 带 ARP 协议的以太网帧 - IP 协议 - ICMP - UDP 协议 - TCP 协议 - HTTP 协议 - DNS 协议
-
Wireshark CLI | 过滤包含特定字符串的数据流 - 问题分析
-
深入网络世界,洞察数据流动--Wireshark 网络数据包捕获工具全面分析
-
使用 wireshark 分析淘宝数据流
-
Wireshark报文分析心得:Identification的使用指南
-
使用usbmon-wireshark进行USB协议抓取和分析
-
使用WireShark分析鼠标和键盘数据包