Objection Tutorial

学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks

漏洞赏金提示注册 Intigriti,一个由黑客为黑客创建的高级 漏洞赏金平台!今天就加入我们 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!

介绍

objection - 运行时移动探索

Objection 是一个运行时移动探索工具包,由 Frida 提供支持。它的目的是帮助评估移动应用程序及其安全态势,而无需越狱或获取根权限的移动设备。

**注意:**这不是某种形式的越狱/根权限绕过。使用 objection 时,您仍然受到所面临的适用沙箱施加的所有限制。

简介

objection目标 是让用户调用 Frida 提供的主要操作否则,用户需要为每个想要测试的应用程序创建 单个脚本

教程

在本教程中,我将使用您可以在此处下载的 APK:

2MB
app-release.zip
archive

或从其 原始仓库(下载 app-release.apk)

安装

pip3 install objection

连接

建立一个 常规 ADB 连接启动 设备中的 frida 服务器(并检查 frida 在客户端和服务器上都正常工作)。

如果您使用的是 root 设备,则需要在 --gadget 选项中选择您想要测试的应用程序。在这种情况下:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

基本操作

本教程不会列出所有可能的objection命令,仅列出我认为更有用的命令。

环境

一些有趣的信息(如密码或路径)可能会在环境中找到。

env

Frida 信息

frida

上传/下载

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

导入 frida 脚本

import <local path frida-script>

SSLPinning

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

根检测

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

执行命令

android shell_exec whoami

截图

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

静态分析变为动态

在一个真实的应用中,我们应该在使用 objection 之前了解这一部分发现的所有信息,这要归功于 静态分析。无论如何,这样做也许可以让你看到 一些新东西,因为在这里你将仅获得一个完整的类、方法和导出对象的列表。

如果你以某种方式 无法获取应用的可读源代码,这也是有用的。

列出活动、接收器和服务

android hooking list activities
android hooking list services
android hooking list receivers

Frida 如果没有找到任何内容,将会启动一个错误

获取当前活动

android hooking get current_activity

搜索类

让我们开始在应用程序中查找类。

android hooking search classes asvid.github.io.fridaapp

类的方法搜索

现在让我们提取类 MainActivity: 中的方法:

android hooking search methods asvid.github.io.fridaapp MainActivity

列出类的声明方法及其参数

让我们找出类的方法需要哪些参数:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

列出类

您还可以列出当前应用程序中加载的所有类:

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

这在你想要钩住一个类的方法而你只知道类的名称时非常有用。你可以使用这个函数来搜索哪个模块拥有这个类,然后钩住它的方法。

钩住变得简单

钩住(监视)一个方法

源代码中我们知道来自MainActivity函数sum()每秒运行一次。让我们尝试在每次调用该函数时转储所有可能的信息(参数、返回值和回溯):

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

Hooking (watching) an entire class

实际上,我发现 MainActivity 类的所有方法都非常有趣,让我们全部 hook 住。请小心,这可能会崩溃应用程序。

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

如果你在类被挂钩时玩这个应用程序,你将看到每个函数被调用的时间、它的参数返回值。

改变函数的布尔返回值

从源代码中你可以看到函数_checkPin_接收一个_String_作为参数并返回一个_boolean_。让我们让这个函数始终返回 true

现在,如果你在 PIN 码的文本框中输入任何内容,你将看到任何内容都是有效的:

类实例

搜索并打印特定 Java 类的实时实例,由完全限定的类名指定。输出是尝试获取发现的 objection 的字符串值的结果,这通常包含对象的属性值

android heap print_instances <class>

Keystore/Intents

您可以使用以下方法玩弄密钥库和意图:

android keystore list
android intents launch_activity
android intent launch_service

内存

转储

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

列表

memory list modules

在列表底部,你可以看到 frida:

让我们检查一下 frida 导出了什么:

搜索/写入

你也可以使用 objection 在内存中搜索和写入:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

您可以使用命令 sqlite 与 sqlite 数据库进行交互。

Exit

exit

我在 Objection 中缺少的内容

  • 钩子方法有时会导致应用程序崩溃(这也是因为 Frida)。

  • 你不能使用类的实例来调用实例的函数。你也不能创建类的新实例并使用它们来调用函数。

  • 没有像 sslpinnin 那样的快捷方式来钩住应用程序使用的所有常见加密方法,以查看加密文本、明文、密钥、IV 和使用的算法。

漏洞赏金提示注册 Intigriti,一个由黑客为黑客创建的高级漏洞赏金平台!今天就加入我们,访问 https://go.intigriti.com/hacktricks,开始赚取高达 $100,000 的赏金!

学习与实践 AWS 黑客攻击:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客攻击:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks

Last updated