PS: 如果提示没有权限,需要切换到root或者有权限的用户,或使用sudo tcpdump xxxx
通过 ifconfig 可以看到host上所有的网络接口
或者使用命令:tcpdump -D | grep Running
窗口1运行:tcpdump -i enp0s3
窗口2运行:curl https://www.baidu.com
窗口1运行:tcpdump host 10.0.2.15
窗口2运行:curl https://www.baidu.com
只看以 “10.0.2.15” 为源头的流量:
窗口1运行:tcpdump src 10.0.2.15
窗口2运行:curl https://www.baidu.com
只看以 “10.0.2.15” 为目标的流量:
窗口1运行:tcpdump dst 10.0.2.15
窗口2运行:curl https://www.baidu.com
窗口1运行:tcpdump -c 1 -X icmp
-c 1:只获取一个包
-X:使用16进制
窗口2运行:ping www.baidu.com
窗口1运行:tcpdump port 443
窗口2运行:curl https://www.baidu.com
查看源端口为443的流量
窗口1运行:tcpdump src port 443
窗口2运行:curl https://www.baidu.com
查看目标端口为443的流量
窗口1运行:tcpdump dst port 443
窗口2运行:curl https://www.baidu.com
窗口1运行:tcpdump icmp
窗口2运行:ping www.baidu.com
窗口1运行:tcpdump port 443 -w ssl.pcap
窗口2运行:curl https://www.baidu.com
窗口1运行:tcpdump -r ssl.pcap
and 的使用:
窗口1运行:tcpdump dst port 443 or icmp
窗口2运行命令1:curl https://www.baidu.com
窗口2运行命令2:ping www.baidu.com
or 的使用:
窗口1运行:tcpdump host 10.0.2.15 and dst port 443
窗口2运行:curl https://www.baidu.com
not 的使用:
窗口1运行:tcpdump not tcp
窗口2运行命令1:curl https://www.baidu.com
窗口2运行命令2:ping www.baidu.com
使用wireshark打开 tcpdump 生成的 pcap包:
选择一个包,可以在下方看到 eth,ip,tcp,http 各层协议各种头部信息:
eth: 包含源和目标的 mac 地址
ip:包含源和目标的 ip 地址
tcp:包含源和目标的端口
http:包含 url,header,各种参数
选择包后,右键菜单 -> 跟踪流 -> HTTP流
http 流结果:
打开 https 的 pcap 包:
可以看到当前TLS层协议版本为 SSLv2,以及https 的 handshake 协议是如何协商秘钥的,但是Application Data是被加密后的,如果想查看它的内容,需要以下步骤
从首选项选择 Protocols
找出 TLS 项,编辑 “RSA keys list”
添加从服务器端获取到的 private key。“Key File” 就是 private key 文
添加成功后,可以看到网络包已经被解密:
也可以通过右键菜单 跟踪流 -> http流 来查看完整的内容:
看一下这个 TLS 协议版本为 TLSv1.2 的https pcap包:
按上面的步骤,导入服务器端提供的 private key:
回到包列表,发现 Application Data 没有被解密。
回到 首选项 -> TLS,添加 TLS debug file:
回到包列表,刷新一下(一般会自动刷新),然后查看刚才添加的 tls.log,在里面搜索 master,就会看到原因:
ssl_generate_pre_master_secret: found SSL_HND_CLIENT_KEY_EXCHG, state 197
ssl_restore_master_key can't find pre-master secret by Unencrypted pre-master secret
ssl_decrypt_pre_master_secret: session uses Diffie-Hellman key exchange (cipher suite 0xC028 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) and cannot be decrypted using a RSA private key file.
ssl_generate_pre_master_secret: can't decrypt pre-master secret
ssl_restore_master_key can't find pre-master secret by Encrypted pre-master secret
dissect_ssl3_handshake can't generate pre master secret