[恶意软件分析]DroidBox的环境搭建与使用
目录
1 DroidBox介绍
DroidBox旨在提供对Android应用程序的动态分析。项目地址: Github:Droidbox
分析完成后生成的结果中描述了以下信息:
- 所分析软件包的哈希
- 传入/传出网络数据
- 文件读写操作
- 通过DexClassLoader启动服务并加载类
- 通过网络、文件和短信泄漏的信息
- 规避的权限
- 使用Android API执行的加密操作
- 列出广播接收器
- 已发送短信和电话
此外,还将生成了两个图表以可视化包装的行为。
一个显示操作的时间顺序,另一个显示为树图,可用于检查已分析包之间的相似性。
2 Java环境
2.1 Java下载
- 下载JDK安装包,下载地址: Oracle:JDK 7U80
备注:下载JDK安装包需要登录Oracle账号,可以选择自行注册,也可以使用公共账号: CSDN:Oracle账号
2.2 Java环境配置
- 将安装包解压缩到指定位置(以 /usr/lib/jvm/ 为例)
sudo tar -zxvf jdk-7u80-linux-x64.gz -C /usr/lib/jvm/
- 修改环境变量
sudo gedit ~/.bashrc
或者sudo gedit /etc/profile
- 在文件末尾注册环境变量
###java环境变量
#set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 生效环境变量
source ~/.bashrc
或者对应使用source /etc/profile
- 向系统注册此JDK
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_80/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_80/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.7.0_80/bin/jar 300
sudo update-alternatives --install /usr/bin/javah javah /usr/lib/jvm/jdk1.7.0_80/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.7.0_80/bin/javap 300
2.3 Java环境验证
- 运行代码查看
java -version
- 返回下图则成功
3 Android SDK环境
3.1 Android SDK下载
- 下载JDK安装包,下载地址: SDK Tools:SDK R24.4.1
3.2 Android SDK环境配置
- 将安装包解压缩到指定位置(以 /usr/local/ 为例)
sudo tar -zxvf android-sdk_r24.4.1-linux.tgz -C /usr/local/
- 修改环境变量
sudo gedit ~/.bashrc
或者使用sudo gedit /etc/profile
- 在文件末尾注册环境变量
###Android SDK环境变量
export ANDROID_HOME=/usr/local/android-sdk-linux
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
- 生效环境变量
source ~/.bashrc
或者对应使用source /etc/profile
3.3 API版本和Platform-tools安装
- 在android-sdk-linux文件夹打开终端,执行命令
tools/android update sdk
- 在Android ADK Manager中对应安装以下Packages
- Android SDK Build-tools:19.1
- Android 4.1.2(API 16):全部内容
- Extras:全部内容(可选项)
4 DroidBox安装
4.1 DroidBox下载
- 下载DroidBox安装包,下载地址: Github:Droidbox 4.1.1
4.2 DroidBox解压缩
- 将安装包解压缩到指定位置(以 /usr/local/ 为例)
sudo tar -zxvf DroidBox411RC.tar.gz -C /usr/local/
4.3 DroidBox需要的库(结果可视化-可选)
- pylab和matplotlib以提供分析结果的可视化
5 DroidBox使用
5.1 DroidBox常用命令
- 查看可获取的安卓虚拟机
android list target
- 创建模拟器(序号为API16 Android 4.1.2的ID)
android create avd -n 模拟器名字 -t 序号
- 查看已创建的安卓模拟器
android list avd
- 启动模拟器
./startemu.sh 模拟器名字
- 安装要分析的APK
adb install APK名字
- 分析安装的APK
./droidbox.sh APK名字 需分析的时长
(60表示60s)
5.2 关于DroidBox使用的补充命令
- 终止模拟器内所有后台进程
adb shell am kill-all
- 卸载已安装的软件(com.android.security为样例软件名字)
adb uninstall com.android.security
- 清除模拟器数据(只清除本机数据,不清除Sd卡数据)
emulator @模拟器名字 -wipe-data
- 创建SdCardFile(想要格式化Sd卡数据,只需要重新创建同名字Sd卡)
mksdcard -l mySdCard 512M Sd卡名字.img
(512M为Sd卡大小,可自定义) - 搭载Sd卡启动模拟器
./startemu.sh 模拟器名字 -sdcard Sd卡名字.img
- 安装要分析APK到Sd卡上
adb install APK名字 -s
(-s表示安装到Sd卡上) - 循环执行安装APK命令(示例:安装名字为Mal1.apk到Mal9.apk的APK)
i=1; while (( $i < 10 )); do adb install Mal$i.apk -s; ((i=$i+1)); done;
- 循环执行分析APK命令(示例:分析60秒名字为Mal1.apk到Mal9.apk的APK,并在分析完一个APK后清除后台)
i=1; while (( $i < 10 )); do ./droidbox.sh Mal$i.apk 60;((i=$i+1)); adb shell am kill-all; done;
5.3 DroidBox输出结果分析
在分析完成后,会生成以DroidBox开头的代码,其后的结果是以json数据的方式输出的。
____ __ ____
/\ _`\ __ /\ \/\ _`\
\ \ \/\ \ _ __ ___ /\_\ \_\ \ \ \L\ \ ___ __ _
\ \ \ \ \/\`'__\ __`\/\ \ /'_` \ \ _ <' / __`\/\ \/'\
\ \ \_\ \ \ \/\ \L\ \ \ \/\ \L\ \ \ \L\ \ \L\ \/> </
\ \____/\ \_\ \____/\ \_\ \___,_\ \____/ \____//\_/\_\
\/___/ \/_/\/___/ \/_/\/__,_ /\/___/ \/___/ \//\/_/
对于json数据的处理,可以借助菜鸟工具进行JSON 在线解析
6 参考资料
- Java相关
- Droid相关
- Linux命令行相关
- 模拟器使用相关