之前接到一些ios测试的时候,一些应用往往由于这样那样的原因(比如自实现的发包函数)导致直接使用本地ios系统的代理很难将数据代理到主机的burp或findler中,本文提供了一种解决该问题的途径
原理,实际上是多做了一层代理,既然ios中自带的代理无法将一些自制的函数的发包抓获,我们就将ios中的数据牵引到安卓中,通过安卓中的iptables将制定的应用的数据包进行转发,此时需要先用wireshark将应用使用的端口先捕获,测试安卓手机其实是充当了一个可随意配置转发的高级路由(当然此处也可以使用linux进行转发,但是最好不要使用虚拟机,因为会出现网卡冲突,当然你再外加一个无线网卡也可以)
1.安卓手机开启wlan热点共享功能
2.本地主机连接该热点共享
3.添加主机本地的路由,将所有来自于热点无线的ip转至本地有线外网网关
route delete 0.0.0.0
route add 192.168.43.0 mask 255.255.255.0 192.168.16.254
route add 0.0.0.0 mask 0.0.0.0 192.168.16.254
4.设置主机本地的代理burp代理,使用的是无线地址
5.将iphone同样连到安卓的无线热点中
6.在安卓手机上安装proxydroid,修改resock.conf文件,位于/data/data/org.proxydroid下
在安卓的手机中安装proxydroid,修改proxydroid中的resocks.conf文件将本地的8123,8124端口的流量代理到主机的代理上此处local_ip使用0.0.0.0,不要使用127.0.0.1,log_debug和demon分别设置成on和off,这样便于转发不成功的时候进行调试,
7.设置iptables
设置iptables,首先需要将之前的规则都清空
iptables –F –t nat
iptables -F
iptabels -X
iptables -L –t nat 确认规则已清除
通过以下指令添加对80,443,以及需要抓包应用使用的端口8080的转发
iptables -t nat -A PREROUTING -p tcp --dport 80 -m tcp -j REDIRECT --to-ports 8123
iptables -t nat -A PREROUTING -p tcp --dport 8080 -m tcp -j REDIRECT --to-ports 8123
iptables -t nat -A PREROUTING -p tcp --dport 443 -m tcp -j REDIRECT --to-ports 8124
使用./redsocks启动,转发数据到代理
8.可以成功捕获转发的数据包