首页
社区
课程
招聘
[原创]应用root检测通杀篇
发表于: 2022-6-29 13:55 26869

[原创]应用root检测通杀篇

2022-6-29 13:55
26869

应用root检测通杀篇

平时应用测试过程中经常遇见Root检测,特别是金融类应用在启动时进行Root环境监测,会向用户弹窗提示运行环境存在安全风险不让APP继续运行下一步操作或禁止安装运行(直接闪退)。虽然之前说到magisk配合Shamiko模块可以过掉大部分应用root检测,比较依赖magisk环境,若app对magisk进行检测,此时我们又要对magiak进行隐藏。

这里的思路是-通过自定义su,并去除userdebug编译模式的一些特征

常规检测手段

root 常规检测手段大致可以分为三类

1.目录特征遍历
我们来看段检测代码,从代码中可以看会去遍历"/sbin/su", "/system/bin/su", "/system/sbin/su", "/system/xbin/su" 等目录其次检测magsik、SuperSU等特征

 

2.尝试执行root后的一些操作
对特定目录尝试新建文件例如 /data、/system、/etc 等(只有root后才有权限操作的目录),或者去执行典型的,例如su,还有find、mount等命令。

 

3.读取手机编译版本、调试状态
例如读取/system/build.prop中 是test-keys(测试版),还是release-keys(发布版),去获取ro.debuggable、ro.secure的值检测是否有调试状态

如何做到通杀呢?

其实我们只要通过定制ROM自定义su,就可以轻松应对1.目录特征遍历和 2.尝试执行root后的一些操作,
当我们把su改成mysu,对应目录也自定义成mysu,提权命令也会变成mysu,当应用执行对/data、/system、/etc 等目录进行文件操作,没有提权命令mysu自然也无法完成这些操作,最后我们把test-keys 以及ro.debuggable等特征都改成正常值,这样基本上可以做到ROOT检测通杀了。

ROM实现

我这里使用的是android-8.1.0_r1

自定义su

/system/extras/su/Android.mk中su修改为mysu

 

/system/core/libcutils/fs_config.cpp中/system/xbin/su修改为/system/xbin/mysu

 

/system/sepolicy/private/file_contexts中/system/xbin/su修改为/system/xbin/mysu

更改test-keys

ro.build.tags=test-keys被写入在system/build.prop文件,我们查看这个文件看到autogenerated by buildinfo.sh
是被buildinfo.sh文件写入的,我们找下这个文件

 

/build/make/tools/buildinfo.sh
ro.build.tags的值是读取BUILD_VERSION_TAGS
而BUILD_VERSION_TAGS 则是/build/core/Makefile 中BUILD_KEYS 给的值,所以我们将
test-keys 改为 release-keys即可


更改后test-keys均变成了release-keys

更改userdebug

虽然我们改了test-keys 但是ro.build.type、ro.build.display.id、ro.build.flavor、ro.build.description、ro.build.fingerprint标签中均有userdebug,发布版值应为user
我们先看下ro.build.type对应的值是来自TARGET_BUILD_TYPE

TARGET_BUILD_TYPE 的值又是TARGET_BUILD_VARIANT,又索引到其他文件去了,为了减少出错率,我们就在这里直接赋值user

 

我们再来看下ro.build.flavor 对应TARGET_BUILD_FLAVOR


TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)

 

我们对比下值就可以判断出 TARGET_BUILD_VARIANT 就是userdebug字符串

我们直接改成TARGET_BUILD_FLAVOR := $(TARGET_PRODUCT)-user,

其他几个地方就可以按照此方式挨个去除即可,只在/build/core/Makefile 中改动即可,由于篇幅原因就不带着大家挨个改了,后面会将改好文件放入星球中大家参考即可。我们来看下改好后的效果:

修改ro.debuggable =

在/build/core/main.mk可以直接把ro.debuggable指定为0 这样我们就关闭了全局debug模式了,但是平时分析应用需要调试所以我就保留了这个功能,借助mprop帮助我们隐藏ro.debuggable的值,这样既能保留全局debug模式,又隐藏了ro.debuggable的值,缺点就是每次手机重启,需要执行一下命令,才能做到隐藏。

先push到/data/local/tmp
adb push C:\Users\cxf\Downloads\mprop170119\libs\armeabi-v7a\mprop /data/local/tmp/

1
2
3
4
5
6
adb shell
cd /data/local/tmp/
mysu
chmod 777 mprop
./mprop
setprop ro.debuggable 0


修改完成后我们测试一下。
我们看到default.prop中还是ro.debuggable 0

不用担心其实app没有su权限读取不到这里。
没有su权限的app想要获取 ro.debuggable的值一般只有两种方式
1.getprop ro.debuggable

2.利用反射android.os.SystemProperties来获取,测试后发现值也是0

我们打开AS看到进程还在可以附加,说明debug模式还在。

 

总结:这个修改ro.debuggable 后续需要优化一下。主要是让其不在依赖外部工具。

 

最后:已经测试多个金融类基本检测不到ROOT了。其实ROM不仅仅实现了此功能还实现了fart的一些脱壳点,反调试相关,后续在为大家一一介绍。

 

ROM后续会放入星球,并持续更新大家自取即可食用哦。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2023-3-9 10:14 被爱玩逆向编辑 ,原因: 修改内容
收藏
免费 13
支持
分享
最新回复 (18)
雪    币: 2888
活跃值: (6646)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

_

最后于 2022-6-29 19:01 被微启宇编辑 ,原因:
2022-6-29 18:59
0
雪    币: 17
活跃值: (891)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
什么手机rom
2022-6-30 14:20
0
雪    币: 854
活跃值: (1260)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tmi
4
定制magisk通杀市面手机ROOT检测,还不用买谷歌手机,不用编译系统
2022-7-1 09:33
0
雪    币: 709
活跃值: (1532)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
师傅,你这样做在data/data/下面获取不了最高权限
2022-7-19 16:33
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
mark
2022-7-20 08:09
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
tmi 定制magisk通杀市面手机ROOT检测,还不用买谷歌手机,不用编译系统
定制magisk通杀root有哪些教程吗?能推荐一下吗?
2022-8-20 09:29
0
雪    币: 854
活跃值: (1260)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tmi
8
sekiro 定制magisk通杀root有哪些教程吗?能推荐一下吗?
没有教程,只能去看源码
2022-8-22 09:21
0
雪    币: 25
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
师傅,你这样做在data/data/下面获取不了最高权限
2022-8-22 19:54
0
雪    币: 0
活跃值: (353)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
你这样做,源码还是没有root 权限吧,只是让他无法检测,但是root 权限怎么获取呢?
2022-8-31 16:14
0
雪    币: 0
活跃值: (353)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
现在很多在/data/ system 检测是否有写特征?这个你好像没有解决
2022-8-31 18:18
0
雪    币: 1519
活跃值: (3298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
需要修改构建su的 mk 否则不会构建su 也不会构建修改的
2022-9-6 00:32
0
雪    币: 58
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
Erlösung 你这样做,源码还是没有root 权限吧,只是让他无法检测,但是root 权限怎么获取呢?
提权命令已经被定义mysu 才能获取root
2022-9-9 16:40
0
雪    币: 850
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
tmi 没有教程,只能去看源码
能推荐一下源码吗
2022-12-12 12:21
0
雪    币: 5
活跃值: (1045)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
打工人何苦为难打工人
2022-12-16 00:22
0
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
mprop 写了啥
2023-3-20 15:46
0
雪    币: 3146
活跃值: (5126)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
17
设置自定义su名称后 在/data以及子目录下没有权限 
2023-4-10 11:22
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
支持一下
2023-4-10 18:08
0
雪    币: 164
活跃值: (378)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
感谢楼主的无私分享
2023-9-12 14:05
0
游客
登录 | 注册 方可回帖
返回
//