返回列表 发新帖

【ApkCheck】一种对抗IO重定向方案

  [复制链接]

162

主题

8064

回帖

2万

积分

博士后

滑稽

Rank: 8Rank: 8

金币
754
好评
474
信誉
210

MT论坛新人MT论坛最佳新人MT论坛活跃会员考神MT论坛帅哥MT论坛灌水老大

QQ
发表于 2025-9-26 15:23:29 来自手机  | 显示全部楼层 | 阅读模式  来自 福建
本帖最后由 逗比_滑稽 于 2025-9-26 15:23 编辑

本贴为ApkCheck1.2版本发布帖子
(项目源码在最后面)

上贴:【开源项目】ApkCheck1.1-签名/包裹校验Demo


————————————————
攻防发展持续到现在,各种手段五花八门,而今天主要讲一讲攻击方一种手段“IO重定向”

什么是IO重定向?这里简单概括一下,比如读取文件A得到的是A文件的数据,这是正常程序的情况。但如果文件A被IO重定向,那么读取文件A的时候其实会得到B文件的数据。

有的人可能会疑惑,为什么IO重定向会出现在我们的视野当中?
这是一份Android获取APK签名代码代码

  1. //获取包裹管理器
  2.                 PackageManager PackaM = context.getPackageManager();
  3.                 //解析自身应用信息
  4.                 PackageInfo Info = PackaM.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
  5.                 //获取签名
  6.                 Signature Sign = Info.signatures[0];
复制代码

在之前,这份代码或许还有些许作用。
到现在这份代码获取的签名毫信任可言,早期一些过签工具通过java动态代理包裹管理器的mPM字段能够轻松绕过这份校验。

所以就出现新的校验手段“Binder通讯获取签名”,本质上getPackageInfo方法其实就是与服务端通讯来获取签名,只需复刻getPackageInfo方法的Binder通讯代码就可以避开走mPM字段。

但这又出现一个新的弱点,Binder通讯回来的Parcel数据是要经过PackageInfo.CREATOR封装才得到PackageInfo实例的。

而新版MT的去签原理就是代理CREATOR(相关帖子:【应用安全】船新PackageInfo.CREATOR代理检测方案),所以能够很轻松过掉这个校验,虽然可以通过检测CREATOR是否被代理来防止,但这明显不是去签最后的手段,它可以通过钩子Binder的transact函数来伪造签名。

于是乎防守方又衍生出一种方案,那就是不信任本地的Binder驱动,通过自实现Binder驱动来与服务端通信。

但在前几天零星0523大佬发布了SRPatchV3更新预告
【帖子】SRPatchV3更新预告&无痕Java API Hook&ioctl级别拦截
新方案直接能够拦截应用进程中所有Binder通信。

至此,通过Binder通信获取签名可以暂时告一段落了。虽然说这方面攻击方胜利了,但不代表防守方完败

除了通过Binder获取签名,最常见的还有IO流读取自身包裹解析签名,这也是一种最简单也是很常见签名校验手段,既然Binder这条路走不了,那我直接读文件解析就好了,反正签名校验再怎么样都要读取包裹解析签名,所以到现在各种独特的读取文件方式也是衍生而出,其中最出名的就是SVC,这里就不一一讲了。

防守方采用文件读取的防御手段,那么攻击方又会做出什么样的对策方案,答案回到开头我们讲的IO重定向。

当我们试图用IO流读取APK的时候,IO重定向就会替换掉我们读取的目标,那有没有什么对策方案?

有的兄弟,有的。

1.检查APK包裹的GID,UID
/data/app/xxx.xxx.xxx/base.apk
这个路径下的APK文件它属于一个系统文件,它的GID和UID都是1000的,但如果IO重定向了一个文件,这个GID和UID会发生变化,因为它不是一个系统文件。

2.检查APKInode是否与Maps记录ApkInode
Inode相当于每个文件的独特编号,如果IO重定向之后是不会与Maps记录的一致的

除此之外还有比较简单粗暴的嘛,有的兄弟。
我们使用IO输入流读取文件,负责实际工作的是来自libc.so底层的open相关函数。而IO重定向是把libc那几个open函数给钩子到去签实现的open函数,替代原本的函数工作。

这么做就是破坏libc原有的逻辑,所以我们可以通过读取Maps记录的libc.so可执行内存段Hash与本地库文件对应字节段Hash做比较

如果不一致则表示被IO重定向了


最后,以上方法校验代码都可以从我ApkCheck项目得到,欢迎各位做防去签对抗测试。

更新内容:
libc/libart内存检测
Apk资源内存检测
stat指令获取APK文件GID与UID
CREATORCheck增加对类加载器校验
布局优化(纵享丝滑)

ApkCheck_1.2:
ApkCheck
已有2人评分好评 金币 理由
redblack25 + 1 + 1 赞一个!
青春向上 + 1 + 1 学习一下。

查看全部评分 总评分:好评 +2  金币 +2 

回复

使用道具 举报

31

主题

394

回帖

2101

积分

大学生

Rank: 5Rank: 5

金币
298
好评
12
信誉
101

MT论坛最佳新人

QQ
发表于 2025-9-26 15:24:58 来自手机  | 显示全部楼层  来自 天津
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

0

主题

4465

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1705
好评
1
信誉
100
发表于 2025-9-26 15:31:29 来自手机  | 显示全部楼层  来自 广西
看看隐藏
回复

使用道具 举报

19

主题

3754

回帖

9555

积分

硕士生

Rank: 6Rank: 6

金币
1518
好评
21
信誉
143
发表于 2025-9-26 15:36:29 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

65

主题

3825

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
2358
好评
12
信誉
100

MT论坛最佳新人考神MT论坛帅哥MT论坛新人MT论坛活跃会员

发表于 2025-9-26 15:40:28 来自手机  | 显示全部楼层  来自 贵州
回复

使用道具 举报

123

主题

3513

回帖

1万

积分

博士生

●一只菜鸡●

Rank: 7Rank: 7Rank: 7

金币
3512
好评
85
信誉
122

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员

发表于 2025-9-26 15:44:18 来自手机  | 显示全部楼层  来自 辽宁
感谢分享,论坛有你更精彩!
回复

使用道具 举报

10

主题

1646

回帖

7998

积分

硕士生

Rank: 6Rank: 6

金币
259
好评
10
信誉
120
发表于 2025-9-26 15:47:53 来自手机  | 显示全部楼层  来自 四川
看看
回复

使用道具 举报

5

主题

3536

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1105
好评
1
信誉
98
发表于 2025-9-26 15:48:03 来自手机  | 显示全部楼层  来自 湖南
学习
回复

使用道具 举报

402

主题

2860

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5052
好评
148
信誉
100

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员MT论坛侠客

发表于 2025-9-26 15:49:20 来自手机  | 显示全部楼层  来自 四川
前排围观滑稽大佬
回复

使用道具 举报

5

主题

2099

回帖

7246

积分

硕士生

Rank: 6Rank: 6

金币
2690
好评
16
信誉
100

考神MT论坛最佳新人MT论坛帅哥MT论坛新人

发表于 2025-9-26 15:50:50 来自手机  | 显示全部楼层  来自 河南
看看
回复

使用道具 举报

18

主题

2246

回帖

5956

积分

硕士生

Rank: 6Rank: 6

金币
3583
好评
0
信誉
90

MT论坛最佳新人考神

发表于 2025-9-26 15:51:48 来自手机  | 显示全部楼层  来自 河南
感谢分享,谢谢楼主分享的这么详细的教程和思路使我受益匪浅
回复

使用道具 举报

54

主题

3590

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
795
好评
190
信誉
180

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2025-9-26 15:52:07 来自手机  | 显示全部楼层  来自 陕西
“防不胜防”
回复

使用道具 举报

35

主题

6577

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1502
好评
6
信誉
172

考神MT论坛新人MT论坛帅哥MT论坛最佳新人

QQ
发表于 2025-9-26 15:53:21 来自手机  | 显示全部楼层  来自 河北
感谢分享,
回复

使用道具 举报

9

主题

2815

回帖

7618

积分

硕士生

Rank: 6Rank: 6

金币
4693
好评
0
信誉
100
发表于 2025-9-26 15:54:48 来自手机  | 显示全部楼层  来自 福建
看看大神分析
回复

使用道具 举报

0

主题

2432

回帖

6729

积分

硕士生

Rank: 6Rank: 6

金币
3288
好评
1
信誉
86
发表于 2025-9-26 15:54:57 | 显示全部楼层  来自 贵州
看看隐藏
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表