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

在对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/redsocks
if [ -e redsocks.log ] ; then 
    rm redsocks.log
fi
./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/redsocks
if [ -e redsocks.pid ]; then
    kill `cat redsocks.pid`
    rm redsocks.pid
else
    echo already killed, anyway, I will try killall
    killall -9 redsocks
fi

stop_re.sh

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

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

强制Android应用通过网络代理进行通信_第1张图片

强制Android应用通过网络代理进行通信_第2张图片

你可能感兴趣的:(强制Android应用通过网络代理进行通信)