首页
论坛
课程
招聘
[原创]小菜花的frida-gadget持久化方案汇总
2021-6-27 21:41 13353

[原创]小菜花的frida-gadget持久化方案汇总

2021-6-27 21:41
13353

0x1:为什么要写这篇文章

    看到frida-gadget持久化的话题依旧在讨论,遂想记录下自己实践过的方案,第一次在看雪发文,不当之处大手子请轻喷 

                         

0x2:引言

    今天咱们讨论的是frida-gadget的持久化,通俗理解也就是注入frida-gadget,让目标app加载该so文件,进而实现frida的hook功能,并且和app共生,一定程度上也免去了反调试,反frida(修改so名字,从maps看检测风险减小,或许从hook原理继续检测?先不说find_mem_string检测)的情况,比较适用于大厂强风控下的群控hook的生产场景(这里不谈一键新机-设备指纹什么的),所以这个方案还是适合和需要掌握并落地的。

    一般来说,需要考虑三种设备环境的情况,那就是root和非root和源码定制,接下来我根据自己的了解和实践分别介绍下拙见。

    先来看这篇文章在未root的设备上使用frida,作者主要介绍的是利用lief工具把frida-gadget链接到目标app的so文件上进而实现加载和hook功能,优缺点作者也都介绍了,作为引言部分,就先从这篇文章获取到lief工具的用途和使用吧。


0x3:root环境

    1,(实践通过)目标app有使用so,利用lief工具把frida-gadget和目标app的so链接到一起,实现加载和hook

        如:从/data/app/packageName-xxx/lib下,找到app的so然后和frida-gadget进行链接

        风险点:需要过root检测,so文件完整性检测(如:目标app可扫描/data/app/packageName-xxx/lib目录下所有文件,和文件md5上传服务器做校验

    2,(未实践)利用lief工具把frida-gadget和系统库(如libart,libc)链接到一起,实现加载和hook

        风险点:需要过root检测

    3,(未实践)magisk模块方案注入frida-gadget,实现加载和hook

        见文章Frida持久化方案(Xcube)之方案一——基于Magisk和Riru,然后hanbing老师也把fridamanger做成了magisk模块,那天见在群里已经通知了

        风险点:需要过root检测,magsik检测

    4,(未实践)xposed模块方案注入frida-gadget,实现加载和hook

        见文章Frida持久化方案(Xcube)之方案二——基于xposed

        风险点:需要过root检测,xposed检测

0x4:非root环境

    1,(未实践)目标app没有使用so,修改smali文件加入代码load frida-gadget然后再重打包,实现加载和hook

            风险点:重打包检测(签名检测,文件完整性检测)

    2,(实践通过)目标app有使用so,解包利用lief工具把frida-gadget和目标app的so链接到一起然后再重打包,实现加载和hook

            风险点:重打包检测(签名检测,文件完整性检测)

    3,(实践通过)类xpatch方式加载frida-gadget,众所周知xpatch是修改的manifest文件替换了application入口,然后进行了sandhook初始化,xp模块的查找与加载,application的修正和过签名检测,三大主要功能,然后再回头看sandhook都注入了,再注入个frida-gadget不就改改代码的事嘛

            风险点:重打包检测(签名检测,文件完整性检测,xpatch-sandhook检测)

0x5:源码定制

    1,(实践通过)见文章ubuntu 20.04系统AOSP(Android 11)集成Frida,作者是直接在system/lib下放入了frida-gadget,我是参考了强哥文章玩转Android10源码开发定制(九)内置frida-gadget so文件和frida-server可执行文件到系统,利用了PRODUCT_COPY_FILES的方式把文件copy到了system/lib下,然后我又改了frameworks/base/core/jni/com_android_internal_os_Zygote.cppcom_android_internal_os_Zygote_nativeForkAndSpecialize函数,实现了fork进程的时候dlopen frida-gadget给每个进程都加上frida,进而实现了hanbing老师的fridamanger低配版(FridaManager:Frida脚本持久化解决方案),然后强哥说他是直接改的java层代码system.load的,我猜测是在makeApplication之类的地方做的,由于已经实现功能,所以未做后续验证。


0x6:总结

    其实本文的真正的出发点还是想从【反反制/较小风险点的情况下去实现frida-gadget的持久化】来聊方案,故还是推荐【非root环境和源码定制】的方式(ps:国产厂商root越来越难,非root更加通用)

     非root环境推荐:魔改xpatch+魔改sandhook+VirtualApp的iohook = 渣总ratel低配版(平头哥开放文档),这种方案下,魔改的xposed和frida都有了,想用嘛用嘛,基本只能从【java层hook原理+inline hook原理 + syscall(Android svc获取设备信息)】几个点来检查,纬度也算来到了高维对抗,并且开源轮子的显著特征都没了,至于能不能过还要看检测的具体强度,当然这个方案适配是个问题,32位下基本没问题,64位还要根据厂商再看看。大手子看到这里已经猜到了选用该方案已经不单单是为了做hook持久化了,后续还要做新机,多开等功能,尽可能完善地落地一个闭环的通用型方案。

    源码定制推荐:自己动手去实现fridamanger低配版就好,因为后续还要做设备指纹,systemapp,内核模块开发,多开等一系列功能。


0x7:感谢

    感谢上面内容提到每一个名字和项目

    哥哥们的先行和分享推进了社区的进步

    写代码和做技术因你们变得更加美好

    哥哥们牛批!

    




[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

最后于 2021-7-18 12:34 被huaerxiela编辑 ,原因:
收藏
点赞4
打赏
分享
打赏 + 10.00
打赏次数 1 金额 + 10.00
 
最新回复 (16)
雪    币: 1870
活跃值: 活跃值 (2488)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
virjar 活跃值 1 2021-6-27 22:19
2
0
哥哥,平头哥有开源计划了。你别做了,到时候直接加入进来吧
雪    币: 116
活跃值: 活跃值 (618)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huaerxiela 活跃值 2021-6-27 22:23
3
0

支持渣总,渣总牛plus

最后于 2021-6-27 22:24 被huaerxiela编辑 ,原因:
雪    币: 116
活跃值: 活跃值 (618)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huaerxiela 活跃值 2021-6-27 22:23
4
0
virjar 哥哥,平头哥有开源计划了。你别做了,到时候直接加入进来吧
哈哈,阔以,支持渣总,先给平头哥预预热
雪    币: 624
活跃值: 活跃值 (486)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
eastmaster 活跃值 2021-6-28 14:58
5
0
总结得挺全面的,点赞!
雪    币: 19
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
萌木盖 活跃值 2021-6-28 18:07
6
0
hua哥tql
雪    币: 227
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
人穷志不短 活跃值 2021-6-28 18:13
7
0
大佬
雪    币: 4
活跃值: 活跃值 (328)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_范迪塞尔 活跃值 2021-6-29 09:16
8
0
好帖 支持一下
雪    币: 225
活跃值: 活跃值 (552)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小黄鸭爱学习 活跃值 2021-6-30 11:46
9
0
virjar 哥哥,平头哥有开源计划了。你别做了,到时候直接加入进来吧
什么时候 我坐等白嫖->又有代码可以抄了
雪    币: 1870
活跃值: 活跃值 (2488)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
virjar 活跃值 1 2021-6-30 23:17
10
0
小黄鸭爱学习 什么时候 我坐等白嫖->又有代码可以抄了
抄可以,要相信你抄得越多,越容易变成我的付费用户。抄得越多越无法自拔,这就是嗑药
雪    币: 233
活跃值: 活跃值 (581)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kakasasa 活跃值 2021-7-1 14:16
11
0
感谢分享
雪    币: 213
活跃值: 活跃值 (644)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
svengong 活跃值 2021-7-14 09:42
12
0
奋战了几个晚上,终于用magisk驱动gadget了
雪    币: 116
活跃值: 活跃值 (618)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huaerxiela 活跃值 2021-7-15 18:30
13
0
svengong 奋战了几个晚上,终于用magisk驱动gadget了
哈哈,这个不是hanbing巨巨写好了嘛
雪    币: 213
活跃值: 活跃值 (644)
能力值: ( LV3,RANK:27 )
在线值:
发帖
回帖
粉丝
svengong 活跃值 2021-8-13 14:06
14
0
huaerxiela 哈哈,这个不是hanbing巨巨写好了嘛
有链接么,
雪    币: 110
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_xkfbmxim 活跃值 2021-8-18 16:34
15
0
用gadget有个问题,需要重打包apk。我这边有个apk重打包后卡在启动页,不知有人会解决吗
雪    币: 116
活跃值: 活跃值 (618)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huaerxiela 活跃值 2021-8-24 20:59
16
0
mb_xkfbmxim 用gadget有个问题,需要重打包apk。我这边有个apk重打包后卡在启动页,不知有人会解决吗
上面引用的项目你都看看,扒扒github肯定能解决
雪    币: 110
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_xkfbmxim 活跃值 2021-9-15 17:08
17
0
huaerxiela 上面引用的项目你都看看,扒扒github肯定能解决
谢谢
游客
登录 | 注册 方可回帖
返回