强制Android应用通过网络代理进行通信

来源:互联网 发布:灵异 知乎 编辑:程序博客网 时间:2024/06/03 16:15
在对Android应用进行安全性测试的时候,因为大多数应用不提供代理设置,所以对其进行抓包分析比较麻烦。一种可行的方法是使用iptables将数据重定向到本地代理的监听端口,由本地代理再转发到我们的分析工具上。如果是HTTP/HTTPS通信的话,可以实现与WEB安全测试相同的效果。

本地代理工具可以使用redsocks, 编译方式详见:http://bjin.posterous.com/redsocks-on-android

由于一些特殊原因,有些童鞋可能看不了链接,已经编译好的程序下载链接如下:http://download.csdn.net/detail/white_eyes/4765277

编写如下脚本文件(假设将程序和文件准备放到/data/redsocks下)

redsocks.conf

base {    log_debug = on;    log_info = on;    log = "file:/data/redsocks/redsocks.log";    daemon = on; // 在后台运行    redirector = iptables;}redsocks {    local_ip = 127.0.0.1;    local_port = 12345;        ip = 192.168.1.102;     //代理IP    port = 8008;            //代理端口    type = http-connect; // HTTP CONNECT,一般用于HTTPS    login = ""; // 可选    password = ""; // 可选}redsocks {    local_ip = 127.0.0.1;    local_port = 54321;    ip = 192.168.1.102;    port = 8008;    type = http-relay; // 一般的HTTP 代理    login = ""; // 可选    password = ""; // 可选}
start.sh

cd /data/redsocksif [ -e redsocks.log ] ; then     rm redsocks.logfi./redsocks -p /data/redsocks/redsocks.pid

start_re.sh

/system/bin/iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to 54321/system/bin/iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to 12345

stop.sh

cd /data/redsocksif [ -e redsocks.pid ]; then    kill `cat redsocks.pid`    rm redsocks.pidelse    echo already killed, anyway, I will try killall    killall -9 redsocksfi

stop_re.sh

/system/bin/iptables -t nat -F OUTPUT

将redsocks和脚本文件放到手机的data/redsocks目录下,用终端启动即可。