Objection Tutorial
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
漏洞赏金提示:注册 Intigriti,一个由黑客为黑客创建的高级 漏洞赏金平台!今天就加入我们 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
objection - 运行时移动探索
Objection 是一个运行时移动探索工具包,由 Frida 提供支持。它的目的是帮助评估移动应用程序及其安全态势,而无需越狱或获取根权限的移动设备。
**注意:**这不是某种形式的越狱/根权限绕过。使用 objection
时,您仍然受到所面临的适用沙箱施加的所有限制。
objection 的 目标 是让用户调用 Frida 提供的主要操作。否则,用户需要为每个想要测试的应用程序创建 单个脚本。
在本教程中,我将使用您可以在此处下载的 APK:
或从其 原始仓库(下载 app-release.apk)
建立一个 常规 ADB 连接 并 启动 设备中的 frida 服务器(并检查 frida 在客户端和服务器上都正常工作)。
如果您使用的是 root 设备,则需要在 --gadget 选项中选择您想要测试的应用程序。在这种情况下:
本教程不会列出所有可能的objection命令,仅列出我认为更有用的命令。
一些有趣的信息(如密码或路径)可能会在环境中找到。
在一个真实的应用中,我们应该在使用 objection 之前了解这一部分发现的所有信息,这要归功于 静态分析。无论如何,这样做也许可以让你看到 一些新东西,因为在这里你将仅获得一个完整的类、方法和导出对象的列表。
如果你以某种方式 无法获取应用的可读源代码,这也是有用的。
Frida 如果没有找到任何内容,将会启动一个错误
让我们开始在应用程序中查找类。
现在让我们提取类 MainActivity: 中的方法:
让我们找出类的方法需要哪些参数:
您还可以列出当前应用程序中加载的所有类:
这在你想要钩住一个类的方法而你只知道类的名称时非常有用。你可以使用这个函数来搜索哪个模块拥有这个类,然后钩住它的方法。
从源代码中我们知道来自MainActivity的函数sum()每秒运行一次。让我们尝试在每次调用该函数时转储所有可能的信息(参数、返回值和回溯):
实际上,我发现 MainActivity 类的所有方法都非常有趣,让我们全部 hook 住。请小心,这可能会崩溃应用程序。
如果你在类被挂钩时玩这个应用程序,你将看到每个函数被调用的时间、它的参数和返回值。
从源代码中你可以看到函数_checkPin_接收一个_String_作为参数并返回一个_boolean_。让我们让这个函数始终返回 true:
现在,如果你在 PIN 码的文本框中输入任何内容,你将看到任何内容都是有效的:
搜索并打印特定 Java 类的实时实例,由完全限定的类名指定。输出是尝试获取发现的 objection 的字符串值的结果,这通常包含对象的属性值。
您可以使用以下方法玩弄密钥库和意图:
在列表底部,你可以看到 frida:
让我们检查一下 frida 导出了什么:
你也可以使用 objection 在内存中搜索和写入:
您可以使用命令 sqlite
与 sqlite 数据库进行交互。
钩子方法有时会导致应用程序崩溃(这也是因为 Frida)。
你不能使用类的实例来调用实例的函数。你也不能创建类的新实例并使用它们来调用函数。
没有像 sslpinnin 那样的快捷方式来钩住应用程序使用的所有常见加密方法,以查看加密文本、明文、密钥、IV 和使用的算法。
漏洞赏金提示:注册 Intigriti,一个由黑客为黑客创建的高级漏洞赏金平台!今天就加入我们,访问 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
学习与实践 AWS 黑客攻击:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客攻击:HackTricks 培训 GCP 红队专家 (GRTE)