安卓手机抓包方法归纳总结

安卓手机抓包方法归纳总结安卓手机抓包方法归纳总结最近需要对安卓应用发出的网络数据进行抓包分析,除了常见的HTTP还包括MQTT协议。本文总结归纳了。手机端抓包的各种方法和思路0x01wireshark方案在PC端抓过包的人一定不会对Wireshark感到陌生,该软件可以直接抓取流经网络适配器(网卡)的所有数据包,意味着局域网内其它主机发出的数据包也可以截获(这种模式叫作混杂模式)。此外该软件能够解析下至数据链路…

大家好,欢迎来到IT知识分享网。

安卓手机抓包方法归纳总结

最近需要对安卓应用发出的网络数据进行抓包分析,除了常见的HTTP还包括MQTT协议。
本文总结归纳了。手机端抓包的各种方法和思路

0x01 wireshark方案

在PC端抓过包的人一定不会对Wireshark感到陌生,该软件可以直接抓取流经网络适配器(网卡)的所有数据包,意味着局域网内其它主机发出的数据包也可以截获(这种模式叫作混杂模式)。此外该软件能够解析下至数据链路层,上至应用层的绝大多数网络协议。

那么在手机端如何使用wireshark进行抓包分析呢?大致的思路有两种:

1. 在PC上使用wireshark

把手机端的网络流量导流到PC上。在PC上直接使用Wireshark进行抓包并分析。
这种方案要求手机与PC处于同一局域网内。
可行的办法是,手机连接电脑开的热点。对于没有无线网卡的电脑,可以使用随身WIFI来创建WIFI热点

2. tcpdump + wireshark

在手机端使用tcpdump抓包,然后在PC端使用wireshark分析。
tcpdump是linux上的一个命令行抓包工具。它直接在网卡抓取数据包,所以需要root权限
具体步骤可以参考:详解使用tcpdump、wireshark对Android应用程序进行抓包并分析

解析SSL层密文遇到麻烦

Wireshark很强大,但是它在解析SSL层加密过的信息时,需要配置秘钥。
如果拥有服务器证书的私钥,那一切就很简单了。简单在wireshark的首选项中设置一下即可。

另一种方法只针对浏览器发出的HTTPS数据,Chrome和Firefox会在日志中记录会话的秘钥。
只要在系统环境变量中增加SSLKEYLOGFILE变量,重启浏览器即可。
具体实践可参考:Wireshark对HTTPS数据的解密

显然,这种方案对手机APP产生的HTTPS数据无能为力。

0x02 HTTP代理思路

将手机的HTTP请求导流至代理服务器,那么便可以在代理服务器中抓取到网络数据包了.
可以使用的工具有Fiddler或者Charles
该思路的不足是,只能抓取http的数据,如果要抓取别的应用层协议,就无能为力了。

同一局域网下使用Fiddler

在PC端打开Fiddler作为HTTP代理服务器。
在手机端设置HTTP代理。这样就可以把手机端的HTTP流量导流只PC端。

对于HTTPS流量,可以在手机端安装Fiddler的证书。这样代理就可以解密加密的数据了

具体实践可参考:Fiddler实现手机抓包
通过SDcard安装证书的方法:Fiddler证书安装(查看HTTPS)

不同局域网下使用DevTools + Fiddler

对于不处于同一局域网的设备,还可以使用Chrome游览器的设备远程调试功能,具体步骤如下:

  1. 在PC端的chrome浏览器输入 chrome://inspect/#devices 即可进入
  2. 点击Port forwarding,弹出设置窗口
    安卓手机抓包方法归纳总结
  3. 在设备端口输入框填写移动设备要监听的端口号,此处设为8000(可以任意未被使用的值,只要下面使用处做相应修改即可)。
    选中Enableport forwarding,点击Done完成。
    安卓手机抓包方法归纳总结
  4. 在手机端设置HTTP代理,主机号:localhost,端口号:上一步中设置的8000
    安卓手机抓包方法归纳总结
  5. 在手机端用浏览器随访问任意网页,当chrome://inspect窗口的端口号闪动为绿色时,表明该端口转发配置已生效。此时任何通过手机8000端口发出的请求都会通过数据线被映射到电脑的localhost:8888
    安卓手机抓包方法归纳总结

0x03 手机端抓包工具:Packet capture

这个工具是手机端的一个VPN,也相当于是一个代理。
它还可以把抓取到的数据保存为pcap格式,这样就可以在PC上使用Wireshark来分析。相比较于Tcpdump,它的好处是不需要root手机。

在实践中,并不能解析SSL加密的数据包。查资料,说是因为高版本安卓不再信任用户添加的CA证书列表。或者是客户端APP对CA证书进行了校验。总之是没法解析TLS数据。
一种解决办法是使用Xposed 插件just trust me。来跳过CA证书的校验过程。

扩展阅读:
手机抓包工具汇总

0x04 其它思路

其实抓到包很容易,难的是如何解析SSL层加密的数据。

抓包的目的就是分析网络数据,如果有APP的源码,其实可以换个思路,不用在网络侧抓包,而是在代码里调用网络接口前,将数据打印出来。
注意这里的目的是获取到应用层协议的报头,而不仅仅是应用层协议的载荷。

1. Xposed HOOK

这是一种比较野的路子,在尝试的过程中失败了。但是可以把思路写出来
利用Xposed框架,Hook网络请求的相关代码,将数据打印出来。
能够在不修改源代码的前提下,截获网络数据。

2. 自定义Socket

在代码里自定义一个Socket/SSLSocketFactory,对Socket进行一层包装,增加自定义的逻辑。
自定义逻辑可以是统计流量,也可以是记录。
这种思路同样可以获得应用发出的网络数据。

然后在OkhttpClient.Bulder中设置SSLSocketFactory/SocketFactory。网络库一般都会提供设置SocketFactory的方法。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11806.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信