0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Android上基于透明代理对特定APP抓包技巧

哆啦安全 来源:seeflower 2023-02-23 09:47 次阅读

前言

本文结合多篇已有文章,基于iptables + redsocks2 + Charles,最终实现对安卓上特定APP进行抓包,且APP无感知

即APP不能通过检查系统代理或者VPN来判断是不是有抓包行为

步骤

首先先保存开机后的iptables,如果已经修改过,请重启手机

iptables-save > /data/local/tmp/iptables.rules

要恢复iptables为之前的规则,则使用如下命令,或者重启手机

iptables-restore /data/local/tmp/iptables.rules

使用如下命令,作用是:将uid10428所请求的在0-65535端口上的tcp流量,转发到127.0.0.1:16666,但是排除了来自127.0.0.1的请求

参考:iptables 在 Android 抓包中的妙用

iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 --dport 0:65535 -j DNAT --to-destination 127.0.0.1:16666

要实现抓包,其中127.0.0.1:16666是一个透明代理的地址

然而根据已有文章可知,如果直接设置为Charles的透明代理地址,对于https将会出现invalid first line in request错误,只有http的请求数据会被正常解析

参考:利用 Redsocks 解决透明代理的远程抓包问题

根据文章可知,借助redsocks进行转发即可

我这里使用的是redsocks2,编译参考:静态交叉编译 Android 的 redsocks2

这里直接使用编译好的即可,也可以考虑自己编译下,下载后解压压缩包

  • https://fh0.github.io/assets/android-redsocks2.tgz

创建配置文件,名为redsocks.conf,内容如下:

base {
    log_debug = off;
    log_info = on;
    log = stderr;
    daemon = off;
    redirector = iptables;
}


redsocks {
    bind = "127.0.0.1:16666";
    relay = "192.168.1.14:8889";
    type = socks5;
    autoproxy = 0;
    timeout = 13;
}

其中bind就是透明代理地址,relay就是Charles的代理地址,更多详细用法请查阅redsocks2的readme

注意配置文件的每一对{}后面都应该有一个空行,否则会提示unclosed section


现在把redsocks.confredsocks2_arm64推送到/data/local/tmp

然后在root用户下运行redsocks2_arm64即可

adb push redsocks2_arm64 /data/local/tmp/redsocks
adb shell chmod +x /data/local/tmp/redsocks
adb shell
su
cd /data/local/tmp
./redsocks

现在不出意外的话,Charles应该就能看到uid10428所对应APP的全部tcp数据包了(除去来自127.0.0.1的请求)

如果是只想对特定端口抓包,那么应该使用-m multiport --dports 80,443这样来限定一个或者多个端口

iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 -m multiport --dports 80,443 -j DNAT --to-destination 127.0.0.1:16666

总结

  1. 使用iptables将来自特定uid的全部tcp流量转到指定的透明代理上

    iptables -t nat -A OUTPUT -p tcp ! -d 127.0.0.1 -m owner --uid-owner 10428 --dport 0:65535 -j DNAT --to-destination 127.0.0.1:16666

2. 使用redsocks将流量转发到正向代理,如Charles的socks5代理

redsocks2_arm64下载地址如下

https://fh0.github.io/assets/android-redsocks2.tgz

redsocks.conf内容如下

base {
    log_debug = off;
    log_info = on;
    log = stderr;
    daemon = off;
    redirector = iptables;
}


redsocks {
    bind = "127.0.0.1:16666";
    relay = "192.168.1.14:8889";
    type = socks5;
    autoproxy = 0;
    timeout = 13;
}

其他补充:

  • 安装Charles证书到系统分区,Charles才能解密https

如果你发现了文章中的错误,请指出

效果

0986fac8-b30a-11ed-bfe3-dac502259ad0.png

099ad412-b30a-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Android
    +关注

    关注

    12

    文章

    3851

    浏览量

    125659
  • APP
    APP
    +关注

    关注

    33

    文章

    1530

    浏览量

    71634
  • VPN
    VPN
    +关注

    关注

    3

    文章

    277

    浏览量

    29386

原文标题:Android上基于透明代理对特定APP抓包技巧

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Linux内核的透明代理配置方案

    本内容提供了基于Linux内核的透明代理配置方案,先解释为什么要配置透明代理,如何利用Linux内核来实现
    发表于 11-03 16:47 777次阅读

    求ios/android移动App开发医疗的应用 教程

    ios/android移动App开发医疗的应用教程
    发表于 07-29 23:55

    CC2530 packet sniffer 为什么不到,?

    我用packet sniffer 软件,芯片用的是CC2530,想协调器给终端设备发送的信道和pandid值,但是抓取不到,不知道为什么?只有MAXC层有数据,NWK层和应用层都没有数据,求大神指点?
    发表于 03-14 10:53

    终端节点为什么无法

    终端节点为什么无法?终端节点收不到协调器无线发送的数据包打断点调试协调器无线发送成功,终端节点开启低功耗模式,并且轮询设置为5s,每5s向协调器发送data request请求。不知道为什么无法
    发表于 03-16 10:27

    CC2640 使用BTool怎么用?

    CC2640使用BTool怎么用?我一直用simpleBLEPeripheral改写的程序,烧写simpleBLEPeripheral,使用BTool,出现[/url]。使用p
    发表于 03-16 11:27

    CC2650读取Android app显示的服务问题

    CC2650读取Android app显示的服务问题这个是CC2650板子跑HeartRate时,APP显示的服务,并没有 HEARTR
    发表于 04-07 11:09

    WIZnet芯片通讯时怎么?

    `Q:WIZnet芯片进行公网通讯或者芯片间通讯的话怎么?A:芯片和PC通讯的话可以直接通过Wireshark,如果芯片和公网直接通讯或者通讯是发生在芯片之间,则没有办法直接
    发表于 03-13 11:32

    Packet Sniffer遇到的问题

            我用的是CCDebuger +CC2531 USB Dongle,按照TI官方文档的顺序进行,每次出来的数据基本全都是错的,按用户指南说的是数据解析错误,但是具
    发表于 06-01 02:30

    加密后分析的问题?

    请问一下,我的zigbee设备全部都开启了加密, 使用软件的时候,数据都是加密的,我应该怎么解密分析这些数据呢,谢谢了
    发表于 06-01 14:22

    http代理的分类

    有着不同的安全性,下面就随着亿牛云代理的脚步一起看看HTTP代理是怎么按安全性分类的吧。透明代理(简单代理):透明代理的意思是客户端根本不需
    发表于 12-20 17:25

    cc2640的simpleblebroadcaster例程不到

    我把simpleblebroadcaster例程改成5*5封装的配置编译烧写到cc2640但是我用包工具u*** dongle,不到,为什么?
    发表于 03-09 09:36

    wireshark数据分析问题

    用网络调试助手作为Tcp Server给STM32F429发送数据,每次传输完21845bytes后,就出现问题。用WireShark的数据有些不太理解。上图为用串口调试助手调试后的信息,每次传输到21846bytes就接收不到了。以上为网络
    发表于 04-08 04:35

    如何使用WireShark进行网络

      如何使用WireShark进行网络:准备工作、wireshark 主界面介绍、封包列表介绍
    发表于 04-02 07:05

    请问BLE-Dongle是否支持协议分析?请问怎么进行协议分析?

    如题,请问贵司的BLE-Dongle是否支持协议分析?请问怎么进行协议分析?
    发表于 09-07 07:12

    Linux内核的透明代理配置解析

    如果设置了透明代理,那么在客户端只需要在网络配置中设置一个网关就可以了,其他的任何程序都不用另行设置。这是设置透明代理最大的诱惑,当然这只是对我而言,其实iptables有更强大的防火墙功能,这才是它最大的用处。但是,此次配置不涉及防火墙,如果有兴趣的请看上贴
    发表于 10-27 11:28 0次下载