侧边栏壁纸
博主头像
雲先生 博主等级

心死翼未伤,亦可去远方!

  • 累计撰写 46 篇文章
  • 累计创建 40 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

wireshark抓包

Administrator
2023-01-30 / 0 评论 / 0 点赞 / 1139 阅读 / 0 字

过滤规则

过滤 IP 和 mac 地址

ip 改成 eth,就是过滤 mac 地址

ip.addr == 8.8.8.8
ip.src == 8.8.8.8
ip.dst == 8.8.8.8
ip.addr == 10.0.0.0/16

过滤端口

下面的 tcp 可以改成 udp

tcp.port == 9090
tcp.dstport == 9090
tcp.srcport == 9090
tcp.port >=1 and tcp.port <= 80

根据长度过滤

tcp.len >= 7 (tcp data length)
ip.len == 88 (except fixed header length)
udp.length == 26 (fixed header length 8 and data length)
frame.len == 999 (all data packet length)

HTTP 数据包过滤

http.host == xxx.com
// 过滤 host

http.response == 1
// 过滤所有的 http 响应包

http.response.code == 302
// 过滤状态码 202

http.request.method==POST
// 过滤 POST 请求包

http.cookie contains xxx
// cookie 包含 xxx

http.request.uri==“/robots.txt”
//过滤请求的uri,取值是域名后的部分

http.request.full_uri==“http://1.com
// 过滤含域名的整个url

http.server contains “nginx”
//过滤http头中server字段含有nginx字符的数据包

http.content_type == “text/html”
//过滤content_type是text/html

http.content_encoding == “gzip”
//过滤content_encoding是gzip的http包

http.transfer_encoding == “chunked”
//根据transfer_encoding过滤

http.content_length == 279

http.content_length_header == “279”
//根据content_length的数值过滤

http.request.version == “HTTP/1.1”
//过滤HTTP/1.1版本的http包,包括请求和响应

可用协议

tcp、udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl、oicq、bootp

抓HTTPS明文包

市面上的主流浏览器实现的 HTTP2 都是基于TLS的,也就是说要分析HTTP2报文得先过了TLS这一关,不然只能分析一堆加密的乱码。

wireshark支持两种方式来解密SSL/TLS报文:

  1. 通过网站的私钥
  2. 通过浏览器的将 TLS 对称加密秘保存在外部文件中,以供 wireshark 加解密

通过网站的私钥

如果你想抓取的网站是你自己的,那么可以利用这种方式,因为这需要使用网站生成证书使用的私钥进行解密,就是那个 nginx 上配置的ssl_certificate_key对应的私钥文件,把它添加到 wireshark 配置中:
image-1675003812656
然后通过wireshark就可以看到明文了:
image-1675003834349
通过上图可以看到,我通过curl访问的 https 协议的 URL,在配置了该服务器对应的私钥后可以抓取到对应的 HTTP 明文。

不过缺点也非常明显,只能分析自己持有私钥的网站,如果别人的网站就分析不了了,所幸的是还有第二种方案来支持。

通过浏览器的 SSL 日志功能

目前该方案只支持Chrome和Firefox浏览器,通过设置SSLKEYLOGFILE环境变量,可以指定浏览器在访问SSL/TLS网站时将对应的密钥保存到本地文件中,有了这个日志文件之后wireshake就可以将报文进行解密了。

首先设置SSLKEYLOGFILE环境变量:
SSLKEYLOGFILE=/Users/zhy/work/SSL/sslkey.log
Mac OSX通过命令行启动chrome传入参数
sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --ssl-key-log-file=/Users/zhy/work/SSL/sslkey.log

配置wireshake,首选项->Protocls->TLS:
image-1675004034459
将第一步中指定的文件路径配置好

重启浏览器,进行抓包:
image-1675004057833

抓取手机

方案一:共享PC网络

把手机用USB连接到电脑
image-1675007502354
image-1675007530663
关闭手机的蜂窝网络和wifi网络,手机此时还能上网,
刷新wireshark,发现多出一个有流量的网卡
image-1675008131887

方案二:创建虚拟网卡RVI接口

过程全程需要把手机用USB连接到电脑

RVI介绍

苹果在 iOS 5 中新引入了“远程虚拟接口(Remote Virtual Interface,RVI)”的特性,可以在 Mac 中建立一个虚拟网络接口来作为 iOS 设备的网络栈,这样所有经过 iOS 设备的流量都会经过此虚拟接口。此虚拟接口只是监听 iOS 设备本身的协议栈(但并没有将网络流量中转到 Mac 本身的网络连接上),所有网络连接都是 iOS 设备本身的,与 Mac 电脑本身联不联网或者联网类型无关。iOS设备本身可以为任意网络类型(WiFi/xG),这样在 Mac 电脑上使用任意抓包工具(tcpdump、Wireshark、CPA)抓取 RVI 接口上的数据包就实现了对 iPhone 的抓包。

查看已有的接口
ifconfig -l
创建虚拟网卡

获取手机UDID,可以用爱思助手查看
image-1675009100358

rvictl -s 00008110-001C14A03AD3801E

image-1675009512501

可以使用rvictl -x [UDID]命令在需要的时候去除网卡。

rvictl -x 00008110-001C14A03AD3801E

查看RVI列表

rvictl -l

启动wireshark找对应的网卡抓包
image-1675009581220
iPhone13或提示不支持混杂模式,不影响抓包
image-1675009282491

0

评论区