OBJECTION
Objection Hook
初探
-01-
Objection
Objection介绍
Objection 是一个功能强大的移动安全和逆向工程工具,它利用 Frida 来在运行时对 Android 和 iOS 应用进行探索、调试和修改。通过命令行的方式提供丰富的功能选项,适用于安全研究人员和开发者进行移动应用的测试和逆向工程。
主要功能:
1、 动态分析
2、 Hooking
3、 支持IOS和Android平台
4、 绕过 SSL 固定
5、 绕过Root检测
…等
-02-
Objection
Objction安装与启动
直接使用python就可以进行pip安装,这里使用的python版本是python 3.9;pip版本是pip 24.3.1,安装命令如下:
pip3 install objection
使用页面如下:
可选参数:
-N:使用网络连接而不是USB连接
-h:指定主机ip,默认为127.0.0.1
-p:指定端口信息,默认端口27042
-ah:api主机信息,默认为127.0.0.1
-ap:api端口信息,默认8888
-g:指定 Frida Gadget 或进程的名称,默认为 Gadget
-S:指定要连接的设备序列号
-d:启用调试模式,提供详细输出(包括源映射信息)
命令:
api:在无头模式下启动 Objection API 服务器
device-type:获取有关连接设备的信息
explore:启动 Objection 探索的 REPL(交互式命令行环境)
patchapk:用 Frida Gadget 库修补 APK 文件
patchipa:用 FridaGadget 动态库修补 IPA 文件(iOS 应用)
run:运行单个 Objection 命令
signapk:对 APK 进行 Zipalign 和签名,使用 Objection 的密钥
version:打印当前版本并退出
-03-
Objection
Objection基本用法
1、 Usb连接手机和电脑,调起想抓包的apk的包名(前提:启动手机frida)
进程注入:objection -g com.X.X explore
网络注入:objection -h [手机IP] -p [手机端口] -g 包名/进程id explore
2、 root检测
关闭root检测:android root disable
绕过root检测:android bypass safety-net
android bypass root-detection
3、 绕过 SSL 固定
IOS应用:ios sslpinning disable
Android 应用:android sslpinning disable
4、 禁用 SSL 固定
IOS应用:ios sslpinning disable
Android应用:android sslpinning disable
5、 查找/定位类信息
列出内存中所有的类:android hooking list classes
按关键词搜索类信息:android hooking search classes [关键词]
定位Hook类(可定位多个):android hooking watch class [类名] --dump-args --dump-return
6、 hook的任务列表
查看列表信息:jobs list
删除列表信息:jobs kill [job Id]
7、 设置代理
android proxy set [ip] [port]
-04-
Objection
objection实战展示
1、 手机端启动frida
2、 查看当前手机进程,获取想抓取的apk的包名
两种方式:①frida-ps -Uai ②adb shell ps ef | grep 包名关键字
3、 Objection工具调起当前应用包名
frida有两种调应用包的方式:attach模式和spawn模式。
例如在Frida中Spawn模式下直接启动目标进程,然后在该进程中注入 Frida 的 Agent; Attach 模式下,会依附到已经运行的目标进程上,并在该进程中注入 Agent。
# attach模式
objection -h IP -p 端口 -g 包名/进程id explore #通过网络注入
# spawn模式
objection -g 包名/进程id explore
objection -g 包名 explore --startup-command "objection命令" #启动前执行命令
在工作中遇见过这么一个系统,数据包data部分加密,类似于base64编码,初步判断为AES加密,然后我以encrypt为关键词,对当前app代码进行加解密定位,具体流程如下:
①搜索加解密参数encrypt:android hooking search classes [关键词]
②依次hook这些类:android hooking watch class [class名]
③并对这些类进行输入输出的查看:android hooking watch class [class名] --dump-ar
gs --dump-return
④查看当前hook的所有类信息:jobs list
⑤手动触发app数据交互,未触发交互,可依次删除以上hook的类:jobs kill “jobId”
⑥无法通过加密类进行hook,尝试利用encrypt方法进行hook(因为方法里包含安卓本身的一些加密包,数据量会比较大):android hooking search methods [关键词]
⑦对展示出的依次代码本身的方法进行hook(寻找来源于当前apk包的方法,包名为android的大概率为安卓本身的包)
android hooking watch method [关键词]
android hooking watch class_method com.X.X.net.AesJavaUtils.encrypt --dump-args --dump-return
⑧解密结果如下:
⑨可生成hook代码,如下:
android hooking generate simple x.x.x.x.AesJavaUtils
⑩简述一下另一种方式:attach模式网络注入
确保计算机和目标设备在同一网络上。通过 USB 连接,确保使用 adb tcpip 设置了正确的通信模式:
adb tcpip 27043
objection -h 192.168.43.6 -p 27043 -g com.X.X explore
android hooking watch class_method com.X.X.net.AesJavaUtils.encrypt --dump-args --dump-return
-05-
Objection
参考资料
https://bbs.kanxue.com/thread-277929-1.htm
提前祝各位师傅元旦节快乐呀~~~
监制丨船长、铁子
策划丨Cupid
美工丨molin
原文始发于微信公众号(千寻安服):Objection Hook初探
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论