Objection Tutorial
学习和实践 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命令,仅列出我认为更有用的命令。
环境
一些有趣的信息(如密码或路径)可能会在环境中找到。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-a15396d7921ec411dd889b31f1a518fda22f042c%252Fimage%2520%28220%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=837a65ca&sv=1)
Frida 信息
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-9181a7d109dccb8412635a30668d8014b6631a5a%252Fimage%2520%281093%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5449051c&sv=1)
上传/下载
导入 frida 脚本
SSLPinning
根检测
执行命令
截图
静态分析变为动态
在一个真实的应用中,我们应该在使用 objection 之前了解这一部分发现的所有信息,这要归功于 静态分析。无论如何,这样做也许可以让你看到 一些新东西,因为在这里你将仅获得一个完整的类、方法和导出对象的列表。
如果你以某种方式 无法获取应用的可读源代码,这也是有用的。
列出活动、接收器和服务
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-7e07102b4e6f87e96c3cf4594a136d3590691ab7%252Fimage%2520%281016%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=df5c93a0&sv=1)
Frida 如果没有找到任何内容,将会启动一个错误
获取当前活动
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-74a3163d5e09a99eb2f038694ec0dbfdcac1a99b%252Fimage%2520%28813%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1117461e&sv=1)
搜索类
让我们开始在应用程序中查找类。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-1ee9326a975e60d9b89c0e3d5fe185992cbd3fcb%252Fimage%2520%28507%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5ce95931&sv=1)
类的方法搜索
现在让我们提取类 MainActivity: 中的方法:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-1978dd558bcc997a2b44343ac7af9829143d0dcd%252Fimage%2520%28929%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=42b0e7f3&sv=1)
列出类的声明方法及其参数
让我们找出类的方法需要哪些参数:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-006ca9f28c8918e23f7d6a94dcbe93bc208cbad8%252Fimage%2520%28299%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=22c0bda5&sv=1)
列出类
您还可以列出当前应用程序中加载的所有类:
这在你想要钩住一个类的方法而你只知道类的名称时非常有用。你可以使用这个函数来搜索哪个模块拥有这个类,然后钩住它的方法。
钩住变得简单
钩住(监视)一个方法
从源代码中我们知道来自MainActivity的函数sum()每秒运行一次。让我们尝试在每次调用该函数时转储所有可能的信息(参数、返回值和回溯):
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-b010358dd58a1b962e52a5c5cccc0ad3fe94e250%252Fimage%2520%281086%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8b6d9ddb&sv=1)
Hooking (watching) an entire class
实际上,我发现 MainActivity 类的所有方法都非常有趣,让我们全部 hook 住。请小心,这可能会崩溃应用程序。
如果你在类被挂钩时玩这个应用程序,你将看到每个函数被调用的时间、它的参数和返回值。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-7db5cbb7b07bcb7fa428cbd450b13cd47f022997%252Fimage%2520%28861%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f9412995&sv=1)
改变函数的布尔返回值
从源代码中你可以看到函数_checkPin_接收一个_String_作为参数并返回一个_boolean_。让我们让这个函数始终返回 true:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-877c67db112f6e5b507630bf5f8ec5fc1620eb66%252Fimage%2520%28883%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=dc5d1712&sv=1)
现在,如果你在 PIN 码的文本框中输入任何内容,你将看到任何内容都是有效的:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-3e9c614b9566726b780aa8b994ffe0c333adf618%252Fimage%2520%28228%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=44a3867&sv=1)
类实例
搜索并打印特定 Java 类的实时实例,由完全限定的类名指定。输出是尝试获取发现的 objection 的字符串值的结果,这通常包含对象的属性值。
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-bc3c40e93d4448fb6cd7847a09def112744fe463%252Fimage%2520%281095%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7479972b&sv=1)
Keystore/Intents
您可以使用以下方法玩弄密钥库和意图:
内存
转储
列表
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-2515a86824aeb76433556a4e4d4b9fcd51ba353a%252Fimage%2520%28286%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f71f9091&sv=1)
在列表底部,你可以看到 frida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-ac353e4c43f8b5470e4ab7e2a302cbb0381340c4%252Fimage%2520%281097%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=3eafa90d&sv=1)
让我们检查一下 frida 导出了什么:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F902778555-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVXPBd5ePyq2S6WpIV6Cj%252Fuploads%252Fgit-blob-2f8a8d54cec70561d458fa19b847e4c563761f1b%252Fimage%2520%28298%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cf37c96c&sv=1)
搜索/写入
你也可以使用 objection 在内存中搜索和写入:
SQLite
您可以使用命令 sqlite
与 sqlite 数据库进行交互。
Exit
我在 Objection 中缺少的内容
钩子方法有时会导致应用程序崩溃(这也是因为 Frida)。
你不能使用类的实例来调用实例的函数。你也不能创建类的新实例并使用它们来调用函数。
没有像 sslpinnin 那样的快捷方式来钩住应用程序使用的所有常见加密方法,以查看加密文本、明文、密钥、IV 和使用的算法。
漏洞赏金提示:注册 Intigriti,一个由黑客为黑客创建的高级漏洞赏金平台!今天就加入我们,访问 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!
学习与实践 AWS 黑客攻击:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客攻击:
HackTricks 培训 GCP 红队专家 (GRTE)
Last updated