0x01常见抓包工具Charles/Fiddler/Wireshark区别
为什么Charles等抓包工具或浏览器控制台看到的HTTPS是明文的?
HTTPS其实相当于HTTP+TLS,HTTP是明文操作,所有的加解密操作都在TLS这边。
浏览器控制台能看到明文HTTPS是因为浏览器是应用层,所以浏览器的输出都是TLS解密过的。
Charles能看到是因为Charles抓包的时候有一个信任证书的操作,类似于中间人攻击。
Fiddler和Charles都是用于抓取应用层协议等上层的数据,都是建立连接成功以后的数据。而Wireshark可以抓取所有协议的数据包,因为直接读取网卡数据。需要抓取HTTPS建立连接成功前的过程,所以选择Wireshark。
Curl命令只发送一个请求,如果用浏览器打开百度,页面的各种资源也会发送请求,对分析造成很多不必要的数据包。
0x01为什么指数数字签名证书需要hash一次
给证书明文签名和给明文的hash签名其实区别不大,但是对hash签名能让非对称加密的速度快很多。
0x02传输流程
- 三次握手
- 客户端发送client_hello
- 服务端发送server_hello
- 服务端发送证书
- 服务端发送Server Key Exchange
- 服务端发送Server Hello Done
- 客户端发送Client_key_exchange+Change_cipher_spec+Encrypted_handshake_message
- 服务端发送New Session Ticket
- 服务端发送Change_cipher_spec
- 服务端发送Encrypted_handshake_message
- 完成密钥协商,开始发送数据
- 完成数据发送,四次TCP挥手:客户端FIN,服务端ACK,服务端FIN,客户端ACK。