首页
社区
课程
招聘
[翻译]多种特征检测 Frida
发表于: 2017-5-8 17:10 46043

[翻译]多种特征检测 Frida

2017-5-8 17:10
46043

多种特征检测 Frida

Frida 在逆向工程狮中很受欢迎,你基本可以在运行时访问到你能想到的任何东西,内存地址、native 函数、Java 实例对象等。在 OWASP 的移动测试指南里就提到了 Frida。但是啊,每出来个好用的注入工具,都会有反注入、反反注入、反反反注入、反...注入。这篇文章要介绍的是 Android APP 检测 Frida 的方法。

检查 Frida 的痕迹

一种简易方法是检测 Frida 的运行痕迹,也适用于同类工具的检测,比如包文件、二进制文件、库文件、进程、临时文件等等。本例中针对的对象是 fridaserver,它通过 TCP 对外与 frida 通信,此时可以用 Java 遍历运行的进程列表从而检查 fridaserver 是否在运行。

若 Frida 运行在默认配置时此法有效,若是遇到个笨拙的脚本小子,在第一步就能绊倒他。绕过也是相当简单,只需重命名 fridaserver,我们得找个更好的方法。

fridaserver 默认的 TCP 端口是 27047,可以检查这个端口是否开放。native 代码如下:

同样,这也得要求 fridaserver 是默认配置运行,命令行指定参数就可以改变它的监听端口,绕过也太不麻烦了。不过我们可以用' nmap -sV' 找到开放端口来改善这个方法。因为 fridaserver 使用 D-Bus 协议通信,我们为每个开放的端口发送 D-Bus 的认证消息,哪个端口回复了哪个就是 fridaserver。

我们现在好像有了个非常好用的方法了呢,但是还存在问题。Frida 提供不需要 fridaserver 运行的模式!怎么检测?!

Frida 的各个模式都是用来注入的,我们可以利用的点就是 frida 运行时映射到内存的库。最直接的是挨个检查加载的库。

这段代码检测名字含有“frida”的库,表明上有用,实际上:

- 还记得为什么检测名字是“fridaserver”的方法为什么不可靠吧?这里也是一样,稍微改一下 frida 就能重命名代理库名。

- 这段代码依赖的是标准库的`fopen()`和`strstr()`函数,可笑的是,我们竟想用能被 frida 轻而易举就 hook 的函数来检测 frida !

问题1可以用经典的病毒扫描法解决,在内存中扫描 frida 的库特征 “gadgets”。我选择字符串 “LIBFRIDA”,它在所有 frida-gadget 和 frida-agent 的版本中都有出现。下面的代码扫描了在 `/proc/sel/maps` 里找到的所有的可执行段,为了简洁我放了部分代码,完整的在 a14K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1i4K6u0V1L8i4g2W2L8r3I4W2M7W2)9J5c8X3k6J5K9h3c8S2i4K6u0V1k6r3g2@1k6h3y4@1K9h3!0F1i4K6u0V1k6r3g2E0L8#2)9J5c8X3u0D9L8$3u0Q4x3V1k6E0j5i4y4@1k6i4u0Q4x3V1k6m8L8Y4c8A6c8Y4u0A6k6r3q4Q4x3V1k6S2M7s2m8Q4x3V1k6K6M7X3y4Q4x3V1k6E0j5h3W2F1i4K6u0r3j5%4m8H3i4K6u0r3L8X3q4@1K9i4k6W2i4K6u0V1L8r3W2T1i4K6u0W2j5%4m8H3 。

注意 `my_openat()` 等函数,它们并非平常的 libc 库函数,是自定义实现的,但是功能和 libc 中的一样,设置了系统调用的参数,执行了软中断。因为直接调用公共 API 并不可靠,这样不容易被 hook。完整的实现在 f45K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6T1i4K6u0V1L8i4g2W2L8r3I4W2M7W2)9J5c8X3k6J5K9h3c8S2i4K6u0V1k6r3g2@1k6h3y4@1K9h3!0F1i4K6u0V1k6r3g2E0L8#2)9J5c8X3u0D9L8$3u0Q4x3V1k6E0j5i4y4@1k6i4u0Q4x3V1k6m8L8Y4c8A6c8Y4u0A6k6r3q4Q4x3V1k6S2M7s2m8Q4x3V1k6K6M7X3y4Q4x3V1k6E0j5h3W2F1i4K6u0r3j5%4m8H3i4K6u0r3M7%4W2K6j5$3q4D9L8q4)9J5k6g2x3`. 。下面是 my_openat 的代码:


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 17
支持
分享
最新回复 (16)
雪    币: 14
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
Frida  这工具怎么没听说过
2017-5-8 17:44
0
雪    币: 49
活跃值: (381)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
frida很爽。我安卓版本是4.1.1,so可以hook,java死活就是报错,417K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2i4K6u0r3K9i4y4K6N6h3g2K6i4K6u0r3x3U0f1H3i4K6t1$3L8X3u0K6M7q4)9K6b7R3`.`. 这个issues,有遇到过吗?请教下。
2017-6-5 16:01
0
雪    币: 3603
活跃值: (799)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
4
切忌浮躁 frida很爽。我安卓版本是4.1.1,so可以hook,java死活就是报错,40dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6X3M7X3W2V1j5g2)9J5c8X3k6J5K9h3c8S2i4K6u0r3K9i4y4K6N6h3g2K6i4K6u0r3x3U0f1H3 这个issues,有遇到过吗?请教下 ...
我用4.4.4没问题  :)
2017-6-7 12:58
0
雪    币: 49
活跃值: (381)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
kiyaa 我用4.4.4没问题 :)
那看来是系统版本的问题了,那我换个手机试试。frida的确很爽,比cydia  substate和xposed还爽。
2017-6-8 00:11
0
雪    币: 130
活跃值: (59)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
666,学习姿势了
2017-9-25 10:41
0
雪    币: 94
活跃值: (3082)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
666,学习姿势了
2018-1-25 17:18
0
雪    币: 51
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习姿势
2018-7-19 19:10
0
雪    币: 174
活跃值: (384)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
老铁,我虽然还没有看具体的内容,但是看到标题,我就爱上了你
2018-11-21 17:37
0
雪    币: 409
活跃值: (297)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
老铁们,这个demo好像已经不能有效的检测了,我做了测试,而且手工看了下/proc/self/maps,frida现在貌似比较难进行粗暴的检测了。另外,84dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6I4N6r3k6J5k6h3g2@1x3o6m8Q4x3V1k6m8L8Y4c8A6c8Y4u0A6k6r3q4Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4c8e0S2Q4b7U0u0Q4z5p5y4Q4c8e0c8Q4b7V1y4Q4b7V1y4Q4c8e0c8Q4b7U0W2Q4z5f1k6Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0S2Q4z5o6y4Q4b7V1c8Q4c8e0k6Q4b7e0y4Q4z5o6m8Q4c8e0k6Q4b7U0g2Q4z5p5u0Q4c8e0g2Q4z5o6N6Q4b7V1q4Q4c8e0c8Q4b7V1q4Q4z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0N6Q4z5f1k6Q4b7e0g2Q4c8e0W2Q4z5o6q4Q4z5e0y4Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0k6Q4z5o6S2Q4z5e0q4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0g2Q4b7e0N6Q4b7V1k6Q4c8e0g2Q4z5p5q4Q4b7V1k6Q4c8e0k6Q4z5f1y4Q4z5o6W2Q4c8e0W2Q4z5e0N6Q4b7f1g2Q4c8e0W2Q4b7e0u0Q4z5e0S2Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7U0S2Q4z5p5y4Q4c8e0k6Q4z5f1y4Q4z5f1u0Q4c8e0k6Q4z5o6S2Q4z5e0m8Q4c8e0g2Q4z5p5q4Q4z5f1k6Q4c8e0k6Q4b7e0y4Q4z5o6m8Q4c8e0k6Q4b7U0g2Q4z5p5u0Q4c8e0g2Q4z5o6N6Q4b7V1q4Q4c8e0k6Q4z5f1c8Q4b7e0g2Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0S2Q4z5o6m8Q4z5o6q4Q4c8e0W2Q4z5e0y4Q4z5o6q4U0j5h3I4D9i4@1f1$3i4K6R3^5i4K6V1I4i4@1f1@1i4@1t1^5i4K6S2n7i4@1f1K6i4K6R3H3i4K6R3J5
2020-8-15 21:25
0
雪    币: 204
活跃值: (259)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了
2020-8-17 20:16
0
雪    币: 129
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666
2020-8-21 17:57
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
svc一遍搭配crc,还得在内核里搞
2020-11-14 19:04
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
同样检测不出来。。。
2021-1-27 17:10
0
雪    币: 1318
活跃值: (655)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
DBUS认证这个还是可以的能够检测,暴力的内存搜搜不行呀
2021-2-24 14:46
0
雪    币: 171
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16

DBUS 也检测不了了,我用的是 frida 15.0.14

改了一下日志,137K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9K9i4g2C8N6h3)9K6y4U0t1#2y4K6y4Q4x3V1k6m8L8Y4c8A6c8Y4u0A6k6r3q4Q4x3X3b7J5

2022-11-30 16:29:13.879 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 27042!
2022-11-30 16:29:25.532 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 35015!
2022-11-30 16:29:26.722 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 35115!
2022-11-30 16:29:27.892 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 35219!
2022-11-30 16:29:29.942 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 35864!
2022-11-30 16:29:32.342 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 36952!
2022-11-30 16:29:33.812 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 37936!
2022-11-30 16:29:34.605 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 38533!
2022-11-30 16:29:37.524 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 41102!
2022-11-30 16:29:37.636 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 41185!
2022-11-30 16:29:40.603 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: FRIDA dbus check port: 43163!
2022-11-30 16:30:18.228 27856-27899/sg.vantagepoint.antifrida V/FridaDetectionTest: 检查完成


最后于 2022-11-30 16:32 被liukuo362573编辑 ,原因:
2022-11-30 16:31
0
雪    币: 239
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
17
汇编指令报错 mov ip, r7
可能系统环境不兼容,有没有大佬来更新一下指令
2024-2-17 16:58
0
游客
登录 | 注册 方可回帖
返回