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

    文章

    3917

    浏览量

    127031
  • APP
    APP
    +关注

    关注

    33

    文章

    1566

    浏览量

    72329
  • VPN
    VPN
    +关注

    关注

    4

    文章

    290

    浏览量

    29625

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    WIZnet芯片通讯时怎么?

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

    http代理的分类

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

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

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

    USB数据软件程序下载

    USB数据软件程序下载
    发表于 09-09 16:01 9次下载

    MCU_Wireshark USB 过滤(特定端口地址)

    启动WiresharkUSB的过程如下,这里点击“开始”就可以进入界面了。不过,Wireshark启动USB
    发表于 12-08 16:36 14次下载
    MCU_Wireshark USB <b class='flag-5'>抓</b><b class='flag-5'>包</b>过滤(<b class='flag-5'>抓</b><b class='flag-5'>特定</b>端口地址)

    Android使用Wireshark

    Frida逆向分析APP实战 Objection动态分析App Frida Hook的使用方法 Android逆向分析基础(一) Android逆向分析基础(二) 使用frida-ne
    的头像 发表于 11-16 10:07 4038次阅读

    安卓端免代理

    想必你们都遇到过一些APP在运行过程中, 不允许有网络代理的存在, 如果有网络代理, 就无法访问服务器. 这样也就无法让用户进行分析了.
    的头像 发表于 03-03 14:00 4337次阅读
    安卓端免<b class='flag-5'>代理</b><b class='flag-5'>抓</b><b class='flag-5'>包</b>

    Android APP渗透之双向认证突破

    今天有hxd发来一个APP说存在双向认证,没法正常抓进行渗透,的结果长下面这个样子,一般
    的头像 发表于 05-20 14:08 5772次阅读
    <b class='flag-5'>Android</b> <b class='flag-5'>APP</b>渗透之双向认证突破

    Web测试中遇到的问题

    背景 测试的web项目是外部网站,需要挂socks代理才能访问,但是通过burp配置好之其他网站均能正常抓,唯独项目网站不到 问题 开始时使用clashx+burp,clashx
    的头像 发表于 05-29 09:14 754次阅读
    Web测试中遇到的<b class='flag-5'>抓</b><b class='flag-5'>包</b>问题

    一次挂代理Web测试中遇到的问题

    测试的web项目是外部网站,需要挂socks代理才能访问,但是通过burp配置好之其他网站均能正常抓,唯独项目网站不到
    的头像 发表于 05-29 09:13 1279次阅读
    一次挂<b class='flag-5'>代理</b>Web测试中遇到的<b class='flag-5'>抓</b><b class='flag-5'>包</b>问题

    APP不到

    其实如果不进行客户端安装证书,也是可以的,但是没有信任的证书相当于就是在路由走一次,并没有加解密过程,实际还是客户端与服务器端进行加解密通信
    的头像 发表于 08-03 16:45 1156次阅读
    <b class='flag-5'>APP</b><b class='flag-5'>抓</b>不到<b class='flag-5'>包</b>?

    如何抓取app数据 网络原理及实现

    要实现对App的网络数据,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是
    发表于 08-11 09:30 3021次阅读
    如何抓取<b class='flag-5'>app</b>数据<b class='flag-5'>包</b> 网络<b class='flag-5'>抓</b><b class='flag-5'>包</b>原理及实现

    如何在Android 10设备通过App控制GPIO

    本文档提供了在 Android 10 设备通过应用程序(App)控制通用输入输出(GPIO)的详细指南。这涵盖了从创建 gpio驱动到App 配置 以及 SELinux 策略以允许
    的头像 发表于 07-22 17:59 1072次阅读

    CentOS中使用tcpdump

    CentOS中使用tcpdump
    的头像 发表于 10-28 14:48 138次阅读