CamoDroid 与 Frida Android动态分析工具搭建流程(linux)
写在前面
这个东西配置起来比较复杂,其实最主要就是配置frida,如果你之前就使用过frida框架的话问题就不是很大
介绍camodroid
CamoDroid 是一个开源和开放架构的 Android 应用程序动态分析环境(沙盒),可以抵御模拟器规避。它能够模仿考虑各种级别和功能的真实设备。迷彩机器人具有以下功能:
- CamoDroid 可以通过掩盖分析环境的存在来模仿实际设备来运行应用程序。它监控可用于识别 Android 沙箱的 Java 和本机 (C++) API,并提供类似于真实设备提供的返回值。
- 它将传感器模拟到正在运行的应用程序,并为正在运行的应用程序提供传感器读数。
- CamoDroid 模仿实际的用户数据(通过受益于包含各种文件类型的文件数据集)。
它记录应用程序发出的受权限保护的 API 调用的执行。
配置流程
这个的大体流程可以分为三个部分
- 安装一个android模拟器
- 安装frida-tools在电脑上,安装frida-server在模拟器上面,同时确保模拟器上的frida-server在运行中
- 下载相应的数据包并放在这个device中的文件夹里面
听起来很简单对不对,但是如果不踩坑的就不叫编程了
安装模拟器
我用的xdroid,就直接跳过了,当然你也可以用其他的模拟器,作者推荐的是国外的GenyMotion
https://www.genymotion.com/
安装frida-tools
这个比较简单,我ubuntu上有好几个版本的python,我是用的python310,然后直接就pip安装frida-tools就可以了
首先我们打开一个终端,然后输入
sudo sysctl kernel.yama.ptrace_scope=0
之后再打开一个终端输入cat,然后就放着不管就可以了
之后我们新建一个python文件,输入下面这些代码,然后运行一下,如果输出正常的话就说明没有问题
import fridahttps://github.com/frida/frida/releases
session = frida.attach("cat")script = session.create_script("""
rpc.exports.enumerateModules = () => {return Process.enumerateModules();
};
""")
script.on("message", on_message)
script.load()print([m["name"] for m in script.exports.enumerate_modules()])
当然不出意外的话就要出意外的,如果你是这样运行那么很有可能会出现下面这个问题
frida.ProcessNotFoundError: ambiguous name; it matches: cat (pid: 15581), cat (pid: 15582), cat (pid: 28379)
这就说明你的电脑中同时存在的三个名字相同的进程,程序不知道到底是哪一个所以就报错了,然后我们的解决方法就是找到我们终端的进程的pid才可以
我们可以暂停之前的cat,然后输出一下是哪两个cat在后台运行,然后再启动cat,看看新增加的cat是哪一个,记下pid,一般来说的话,都是最后一个pid是我们需要的pid,比如我这里就是28379这个pid,然后我们直接把上面的这个代码换成下面这个
# 原来的代码是这样的
session = frida.attach("cat")#我们改成下面这样
session = frida.attach(28379)
这样就可以得到类似这种输出
[‘cat’, …, ‘ld-2.15.so’]
如果出现一个warning的话忽略就好,warning一般不重要
安装frida-server
首先需要安装adb,这个对于linux用户就是一行代码的事情
sudo apt-get install android-tools- adb
然后通过开发助手获得android系统的cpu信息,但是!!!!注意!!!如果是虚拟机,即使这里写的是可以跑arm,但是还是要下载x86_64的,我就踩了这一个坑
对了这个链接在这里
https://github.com/frida/frida/releases
这里我要提一嘴,我不明白为什么google就是不去完善他的arm架构模拟器,我尝试过很多次android studio的arm架构在电脑上跑,结果都是会有问题,按说这也不应该是很难的事情,因为其他的模拟器比如雷电或者xdroid都有相应的arm模拟器,但是android studio的就是跑不起来,无法运行带有arm架构下编译native code的软件,就很奇怪
然后下载好之后我们按这样搞
之后我们打开一个终端输入
frida-ps -U
然后我们就可以看到这些进程了
这样就说明我们的frida什么的都配置好了
使用CamoDroid
这个官方的使用方法在这里
https://github.com/farnoodfaghihi/CamoDroid/wiki/Usage
首先打开一个终端,使用adb安装这个软件
adb install xxx.apk
如果报错的话就加上一个参数,就像下面这样
adb install -t xxx.apk
之后使用命令行运行上面的frida-server,如果之前运行过了就不要再运行了
之后我们运行这个代码,就是别忘了cd到camodroid的解压目录中再运行
官方给出的命令是,但是!!!这个命令不能用,有问题
frida -U -f com.example.application -l CamoDroid.js --no-pause
因为frida和这个软件的更新不同步,所以出了问题,正确命令应该是
frida -U -f com.example.application -l CamoDroid.js
注意:com.example.application是你的包名字,如果你不知道的话可以直接用开发助手查出来
之后我们运行完命令之后就是这样的