tcpdump 及 wireshark 的使用

本文包含以下内容

  1. tcpdump 的基本使用说明
  2. wireshark 的基本使用说明
  3. wireshark 对 https 的查看

tcpdump的用法

PS: 如果提示没有权限,需要切换到root或者有权限的用户,或使用sudo tcpdump xxxx

查看网络接口

通过 ifconfig 可以看到host上所有的网络接口
ifconfig
或者使用命令:tcpdump -D | grep Running
tcpdump -D

指定网络接口

窗口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

16进制输出包内容

窗口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 的使用

使用wireshark打开 tcpdump 生成的 pcap包:
wireshark

查看包的各层协议头部

选择一个包,可以在下方看到 eth,ip,tcp,http 各层协议各种头部信息:
eth: 包含源和目标的 mac 地址
ip:包含源和目标的 ip 地址
tcp:包含源和目标的端口
http:包含 url,header,各种参数
在这里插入图片描述

使用“表达式”过滤包

wireshark filter
搜索结果:
wireshark filter result

查看完整的 http 请求和回应

选择包后,右键菜单 -> 跟踪流 -> HTTP流
follow http stream
http 流结果:
follow http stream result

Wireshark 查看 https 的内容

打开 https 的 pcap 包:
https pcap
可以看到当前TLS层协议版本为 SSLv2,以及https 的 handshake 协议是如何协商秘钥的,但是Application Data是被加密后的,如果想查看它的内容,需要以下步骤
Preference
从首选项选择 Protocols
Protocols
找出 TLS 项,编辑 “RSA keys list”
TLS
添加从服务器端获取到的 private key。“Key File” 就是 private key 文
add private key
添加成功后,可以看到网络包已经被解密:
decrypted packets
也可以通过右键菜单 跟踪流 -> http流 来查看完整的内容:
decrypted follow http

TLS无法被查看

看一下这个 TLS 协议版本为 TLSv1.2 的https pcap包:
TLSv1.2
按上面的步骤,导入服务器端提供的 private key:
add private key
回到包列表,发现 Application Data 没有被解密。
回到 首选项 -> TLS,添加 TLS debug file:
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

参考资料

  1. A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic
  2. HTTP/HTTPS Analysis Using Wireshark
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值