r2frida:基于Frida的远程进程安全检测和通信工具

关于r2frida

r2frida是一款能够将Radare2和Frida的功能合二为一的强大工具,该工具本质上是一个Radare2的自包含插件,可以帮助广大研究人员利用Frida的功能实现对目标进程的远程安全检测和通信管理。

Radare2项目提供了针对逆向工程分析的完整工具链,功能也比较稳定,而且还支持利用其他编程语言和工具来扩展其功能。而Frida则是一个动态指令工具包,可以通过注入JavaScript代码来对正在运行的目标进程执行检测和操作,而且还可以与脚本进行通信。

功能介绍

1、运行未修改的Frida脚本(使用:.命令);

2、在任意进程中执行C、JavaScript或TypeScript代码段;

3、支持在本地或远程系统连接、生成或启动进程;

4、枚举内存区域富豪、导出、协议、类和方法;

5、在代理内部或主机的内存中搜索值;

6、使用短命令替换方法实现或创建钩子;

7、在目标进程中加载库或框架;

8、支持Dalvik、Java、ObjC、Swift和C接口;

9、操作文件描述符和环境变量;

10、向进程和断点发送信号;

11、读/写进程内存;

12、调用函数、系统调用和原始代码段;

13、通过USB或TCP/IP连接Frida服务器;

14、枚举应用程序和进程;

15、跟踪寄存器、参数和函数;

16、已在Linux、Windows、macOS、iOS和Android的x64、arm32和arm64上测试;

17、不需要在主机中安装Frida;

18、支持使用代理运行的插件扩展r2frida命令;

19、...

工具安装

广大研究人员可以直接通过r2pm安装r2frida:

复制代码
$ r2pm -ci r2frida

除此之外,我们也可以访问该项目的【Releases页面】下载最新版本的预编译r2frida。

工具编译

依赖

radare2

pkg-config(Windows不需要)

curl or wget

make, gcc

npm, nodejs(即将去除)

在GNU/Debian中,我们可以使用下列命令安装工具所需依赖组件:

复制代码
$ sudo apt install -y make gcc libzip-dev nodejs npm curl pkg-config git

命令

复制代码
$ git clone https://github.com/nowsecure/r2frida.git

$ cd r2frida

$ make

$ make user-install

工具使用

为了方便测试,这里使用"r2 frida://0"在Frida中连接到pid0,并且在本地运行。

现在,我们可以运行":?"命令来获取可用的命令列表:

复制代码
$ r2 'frida://?'

r2 frida://[action]/[link]/[device]/[target]

* action = list | apps | attach | spawn | launch

* link   = local | usb | remote host:port

* device = '' | host:port | device-id

* target = pid | appname | process-name | program-in-path | abspath

Local:

* frida://?                        # 显示工具帮助信息和退出

* frida://                         # 枚举本地进程

* frida://0                        # 连接至frida-helper

* frida:///usr/local/bin/rax2        # 生成进程的绝对路径

* frida://rax2                     # 生成进程的相对路径local/bin需在PATH中设置

* frida://spawn/$(program)         #在当前系统生成一个新的进程

* frida://attach/(target)            # 在当前主机连接至目标PID

USB:

* frida://list/usb//                # 枚举第一个USB设备的进程

* frida://apps/usb//               # 枚举第一个USB设备的应用程序

* frida://attach/usb//12345        # 连接至第一个USB设备的给定pid

* frida://spawn/usb//appname       # 在第一个USB设备中生成一个App

* frida://launch/usb//appname      # 在第一个USB设备中生成+恢复一个App

Remote:

* frida://attach/remote/10.0.0.3:9999/558 # 连接远程frida-server的pid 558

  R2FRIDA_SAFE_IO=0|1              # 解决Android/thumb上的Frida问题

  R2FRIDA_DEBUG=0|1               # 用于调试参数解析行为

  R2FRIDA_COMPILER_DISABLE=0|1  # 禁用新的Frida TypeScript编译器(`:. foo.ts`)

  R2FRIDA_AGENT_SCRIPT=[file]      # r2frida代理文件路径

使用样例

复制代码
$ r2 frida://0     # 与frida -p 0相同,连接至一个本地会话

我们可以通过进程名称或pid连接、生成或启动任意进程,下列命令将连接到第一个名为rax2的进程:

复制代码
$ r2 frida://rax2   # 连接至第一个名为rax2的进程

$ r2 frida://1234  # 连接至指定pid

使用源码的绝对路径将生成一个进程:

复制代码
$ r2 frida:///bin/ls

[0x00000000]> :dc        # 目标应用程序继续执行

添加其他参数运行:

复制代码
$ r2 frida://"/bin/ls -al"

下列命令可以使用USB调试iOS/Android应用程序:

复制代码
$ r2 frida://spawn/usb/         # 枚举设备

$ r2 frida://spawn/usb//        # 枚举iOS设备中的应用程序

$ r2 frida://spawn/usb//Weather # 运行Weather天气App

命令解析

复制代码
:i         # 获取目标详情

.:i*        # 将目标进程详情导入至local r2

:?         # 显示所有可用命令

:dm       # 枚举映射,使用':dm|head'搜索程序基地址

:iE        # 枚举当前二进制的导出

:dt fread   # 跟踪'fread'函数

:dt-*      # 删除所有跟踪

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

r2frida :【GitHub传送门

参考资料

https://www.radare.org/

Frida • A world-class dynamic instrumentation toolkit | Observe and reprogram running programs on Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD, and QNX

相关推荐
小春学渗透1 小时前
Day107:代码审计-PHP模型开发篇&MVC层&RCE执行&文件对比法&1day分析&0day验证
开发语言·安全·web安全·php·mvc
落樱坠入星野1 小时前
拿下阿里云之后如何在本地运行镜像进行分析
经验分享·安全·网络安全·阿里云·云计算
iSee8572 小时前
ArcGIS地理空间平台 manager 任意文件读取漏洞复现
安全
丶21362 小时前
【鉴权】深入了解 Cookie:Web 开发中的客户端存储小数据
前端·安全·web
_.Switch9 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
JokerSZ.9 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
SafePloy安策9 小时前
软件加密与授权管理:构建安全高效的软件使用体系
安全
芯盾时代9 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
北京搜维尔科技有限公司12 小时前
搜维尔科技:【应用】Xsens在荷兰车辆管理局人体工程学评估中的应用
人工智能·安全