[恶意软件分析]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
  • 返回下图则成功
    运行java -version后的正确反馈结果

3 Android SDK环境

3.1 Android SDK下载

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下载

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 参考资料

posted @ 2020-06-05 01:30  褪色影子  阅读(307)  评论(0编辑  收藏  举报