手机抓包方式汇总

Posted feiniao8651

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机抓包方式汇总相关的知识,希望对你有一定的参考价值。

我们经常会需要分析手机App的发包数据,本文汇总整理一下常见的抓包的方法。

方法一

手机设置代理为电脑上的抓包程序(Fiddler/Charles)。通过手机安装对应抓包程序证书,可以实现https请求抓包。
优点:设置和操作简单
缺点:设置代理,会被App安全机制检测到,同时存在不支持代理的App。

方法二

透明代理(Transparent Proxy)。这种方式是在手机连接的热点设备上,将手机的网络包进行抓取转发。对设备来说是无感的,所以被称为透明代理。
热点设备可以是PC,也可以是路由器,甚至可以是树莓派等开发板,只要设备能同时支持有线和无线连接。这里以Macbook pro为例来实现透明代理。
设置步骤:

  1. 系统偏好设置-共享,打开互联网共享,来源设置为以太网,共享端口设置为Wi-Fi,在Wi-Fi选项中可以配置共享无线热点的名称和密码。
  2. 打开IP转发
sudo sysctl -w net.inet.ip.forwarding=1
  1. 使用ifconfig命令找到当前共享热点的无线网卡,具体操作方法是手机连接到共享热点后,查看当前网关,然后看看ifconfig列出的网卡列表里,哪一个网卡的ip地址是手机上显示的网关ip。我的电脑显示的是共享热点网卡是bridge100。
    创建并启用端口转发规则,将bridge100网卡的80、443端口流量转发到本地的8080端口:
echo "rdr pass on bridge100 inet proto tcp to any port 80, 443 -> 127.0.0.1 port 8080" | sudo pfctl -ef -

运行以下命令可以看到已经创建好的转发规则:

sudo pfctl -s nat

pfctl命令是PF防火墙的配置命令,类似于Linux系统的iptables。PF防火墙 ( 全称:Packet Filter ) 是 UNIX LIKE 系统上进行 TCP/IP 流量过滤和网络地址转换的软件系统。PF 同样也能提供 TCP/IP 流量的整形和控制,并且提供带宽控制和数据包优先集控制。

  1. 配置允许mitmproxy访问pfctl
sudo sh -c "echo 'ALL ALL=NOPASSWD: /sbin/pfctl -s state' >> /etc/sudoers"
  1. 本地安装mitmproxy
brew install mitmproxy
  1. 启动mitmproxy
    mitmproxy提供了三种不同的启动命令:
  • mitmproxy gives you an interactive command-line interface
  • mitmweb gives you a browser-based GUI
  • mitmdump gives you non-interactive terminal output

这里用的是mitmweb,启动后自动打开浏览器,显示一个可交互的网页页面,抓取的数据包也会在页面上显示。

mitmweb --mode transparent
  1. 连接共享热点的设备访问http://mitm.it安装证书文件并启用信任。

总结

以上两种抓包方式,也被称为中间人攻击,就是代理程序接收到用户终端发来请求数据时,伪装成用户向目标服务器发送了数据请求,同时将数据进行了解包分析。但是当遇到服务器请求进行证书校验时,这种方式就无法生效了。
本文只是利用了手里现成的设备来实现透明代理抓包,同样的也可以通过Linux设备,Windows设备,以及路由器等设备来实现,部分教程补充在参考资料中。

参考:
mitmproxy透明代理设置
mitmproxy官方网站
透明代理入门
iptables实现透明代理,进行Web流量截取的方法
Android路由重定向+透明代理抓App包

以上是关于手机抓包方式汇总的主要内容,如果未能解决你的问题,请参考以下文章

手机抓包方式汇总

手机爬虫汇总

Android中利用手机抓包的方法,经典篇

Android 项目经验汇总:Fiddler的坑,证书无效

Android 项目经验汇总:Fiddler的坑,证书无效

通过wiresheck对手机进行抓包,不需要配置虚拟WiFi