通过 burpsuite 代理截获微信公众号的 https 流量包,做一些重放和自动扫描。这个公众号会利用微信的认证体系,认证完之后就会到他本身的服务器,用户再通过微信内置浏览器的 cookie 或者其他认证机制交互,当然这些认证数据基本上无法获取,同时这个公众号在微信端也没有转发,在浏览器中打开等普通微信公众号常见功能。
由于模拟器的便捷性,第一个就会被想到,于是在 4.0.3 的模拟器上装上了最新版的微信,运行就退出。既然最高版本都已经禁止了模拟器,就想着微信的历史版本,装了 30,35,40,45,50 等版本,都是运行一会就提示升级,并且是不让用,难道我要逆向微信的代码,这个代价有点大,搜搜才知道原来微信已经禁止在模拟器上使用了,后来看到了有人出了解决方案,就是先 root,然后装 xposed 框架,然后在其上装 XPrivacy,过程复杂,详情见链接,这种方法我没有接着试下去。
模拟器已经被禁用,只能拿出自己的手机来试验了。
由于是台式机,直接使用的随身 wifi,如果是笔记本,可以直接将本设置为 wifi 热点。
首先是 burpsuite 的代理设置,见下图,图中 ip 则是我的真实机的 ip,绑定的端口则可以任意设置,不冲突即可,我这里设置成 8080 端口。
设置完 burpsuite 则是手机上 wifi 的代理设置,先连接到 wifi 热点,长按链接处,选 “修改网络”,勾选 “显示高级选项”,代理设置那里改成 “手动”,就可以填写 HTTP 代理的主机和端口,在这里我们设置成第二步中 burpsuite 设置的 ip 地址和端口地址。
这样设置完之后基本上就可以抓包了,如果是 https 的请求,每次都会提示证书问题,很烦人也影响效率,所以我们要安装 burpsuite 的证书,由于前面设置好了代理,通过手机浏览器访问http://burp
,就能看到有证书下载,下载完之后,通过手机的设置,安全,再到证书安装,安装完证书即可。
这样设置之后,手机上的大部分 http 和 https 数据包都能截获了,微信的数据包也能截获了,只是都是加密的,根本不知道是啥,要被测试的公众号呢?每次打开都是白屏,啥提示都没有,burpsuite 上无流量显示,通过 wireshark 抓包,也仅仅是一些到腾讯服务器的 tcp 流量,难道微信还能自动检测代理存在,自动根据公众号的安全级别来绑定,安全级别高则不发送相应流量,仅仅是猜测。
上述方式行不通,想到了第三种
微信在 windows 端也提供了相应的版本,相对于手机 android 版本,功能较弱,当然一些安全策略也有变化。
(1)修改 windows hosts 的配置文件,路径 (C:WindowsSystem32driversetchosts),具体的配置如下:127.0.0.1 test.com
(2)burpsuite 代理的设置
按照如上图示设置之后,微信客户端发送到 test.com 的流量就直接转发给本地 127.0.0.1:9080 端口,这样 burpsuite 就能捕获到了,接着 burpsuite 将该包转发到 test.com 对应的 ip 的端口上就完成了一次请求捕获转发的过程。
注意事项:
support invible proxying 必须开启,否则看不到流量。
request handling 中 redirect to host 必须设置成具体的 ip,也就是 test.com 对应的 ip,否则会导致包死循环在本地转发。
在 burpsuite 中如果设置成 test.com 会报如下错误
1 |
This request to Burp's web interface used a fully-qualified DNS name in the Host header. The request was blocked to prevent DNS rebinding attacks. You can enable support for fully-qualified DNS names in Burp's web interface at Proxy / Options / Miscellaneous. |
接着按照如上设置之后,将如下选项打勾之后则会报后续错误,解决方法就是直接设置成 ip 和端口Invalid client request received: Dropped request looping back to same Proxy listener.
在此我们就完成了微信流量的监测。
微信 windows 客户端的好处就是方便测试,另外能够打开在微信 android 客户端无法获取链接的问题,目前在 1.5.0.33 好用,估计过段时间也会被微信封了。