- A+
http://drops.wooyun.org/tools/5599
0x00 AppUse - 概述
From:https://appsec-labs.com/wp-content/uploads/2014/10/appuse_userguide_v2-2.pdf
AppUse (Android Pentest Platform Unified Standalone Environment)被设计用来作为安卓应用渗透测试平台。是安卓应用渗透测试人员的操作系统,包含一个自定义的安卓ROM,通过钩子加载,以便在运行时观察、操纵应用。
AppUse的核心是一个自定义的"hostile"安卓ROM,为应用程序的安全性测试特别打造的包含一个基于定制模拟器的运行时环境。使用rootkit-like技术,许多钩子注入到其执行引擎的核心之中,以便能够方便地操纵应用,通过"ReFrameworker"来观察。

AppUse包含渗透测试者为了运行和测试应用需要的任何工具:安卓模拟器、开发工具、SDK、反编译器、反汇编器等 AppUse环境设计很直观,尽可能为所有普通安卓渗透测试人员和安全研究人员设计。它自带AppUse dashboard-方便用户通过UI控制整个环境。通过安装APK到设备或者拉出、反编译、调试、操控二进制文件来配置模拟器代理,任何事都可以通过点击几个按钮来完成,方便于关注所有必要的步骤,聚焦在最重要的问题上。

此外,AppUse预装了许多"hack me"应用,包括他们的服务端。对于渗透测试者而言,在测试几个新工具或者技术以及一些目的时,有这些应用是非常必要的。
综上所述,AppUse是如下的一个集合:
• Android Emulator • Hacking & reversing tools for Android • Development tools for Android • Custom "hostile" Android ROM loaded with hooks • ReFrameworker Android runtime manipulator • Vulnerable applications • The AppUse dashboard
0x01 AppUse-操作系统
AppUse基于linux Ubuntu系统,已经装备了常见的攻击工具,可以节省时间,提高效率。
证书
尽管AppUse自动登录到root,但是你发现找到这些数据非常有用,在于系统交互时。

终端和命令行工具
已经为安卓安全测试人员配置了这些工具的环境变量。在研究中使用的工具,例如ADB,已经预装并且配置完毕。此外,所有的研究和攻击工具已经嵌入到PATH环境变量,所以可以在终端的任何位置访问,并且可以自动补全。

别名 新特性 在AppUse >1.8版本中已经添加了许多别名到终端中,为了帮助渗透测试人员工作得更快。
Signapk <apk name>
APK需要签名以便在设备上运行。由于修改APK将使得原来的APK签名不再有效,研究人员需要签名APK。可以通过位于 /AppUse/Pentest/SignAPK/sign.sh的SignAPK做到,该脚本需要参数:[existing_apk],因此该脚本将会在当前目录创建一个名为
别名:signapk <apk path>是执行/AppUse/Pentest/SignApk/sign.sh的更短的方式,以便签名被修改的apk文件。

图4:SignApk
Search <string>
search别名是一个python脚本,使用bash在文件中搜索字符串,在渗透测试人员在文件中搜索一个方法名获取其他字符串时非常有用。

Rootdevice Rootdevice是执行/AppUse/Emulator/rooting/root.sh root设备的快速方式。
Jdgui <jar file> Jdgui是执行JD-GUI的快速方式。
开发工具
AppUse环境包含了安卓开发以及调试工具,可以方便执行应用程序的渗透测试。这个环境预装 了ECLIPSE和ADT,用于编写应用程序或者exp。此外,这个环境预装了IPYTHON,方便开发python脚本,帮助在一些特殊场景中进行测试。

AppUse目录结构
AppUse位于/AppUse目录,这个目录包含了许多目录:
.Android --包含两个目录,一个目录包含SDK,另一个是ReFrameworker,包含整个ReFrameworker 平台
.Emulator --包含模拟器目录,例如sdcard,wallpaper,rooting等
Logs -- 包含AppUse dashboard日志文件
Pentest -- 包含测试工具的多个目录,例如Burp, apktool, jdgui,mercury, dex2jar等
Targets -- 最重要的目录,包含目标在接下来的段落中描述的APK/应用程序数据目录
Targets 目录
AppUse的主要目标是组织渗透测试者的所有工作,为了实现这个目标,在AppUse中应用的所有工作都将保存在同一个目录--Targets目录。Targets目录包括所有目标应用目录,包含了在dashboard中所有工具的输出。
在反转部分或者应用数据部分使用的特征之一,目标apk/app的数据将会输出在Targets目录中目标app的目录下。例如,如果你反编译AppSec.DropBoxPoc-1.apk,那么输出将会保存在/AppUse/Targets/ AppSec.DropBoxPoc-1/disassembled/

Pentest目录
AppUse是一个不断发展的项目。一个主要的目的就是总是赶上最新的工具,使研究者能够对一个给定的应用实现完全覆盖的攻击。 AppUse目录结构包含了/Pentest目录,包含了所有工具。该文件夹的简要视图如下:

你可能注意到,并不是所有的工具都呈现在DashBorad中。Dashboard有如此多的功能以至于在标准的研究中可以覆盖所有研究者的需求,有些则仍在开发之中,尚未嵌入到Dashboard中。AppUse不会阻止你使用这些,因为我们知道,对于有些研究者,他们需要这些。这些都可以在/Pentest目录下可以找到。
例如,如下展示了运行中的APK Analyzer:

0x02 AppUse - Dashboard
概述
Dashboard 是AppUse测试环境的心脏。Dashboard是一个组织了测试工具和运行时环境的GUI视图,Dashboard会把各种不同工具链接的所有数据放在一起,并在其特殊的功能中节省宝贵时间,将几个动作链接在一起,并且在文档中进一步论证。
双击桌面上的链接来运行Dashboard,其将会立即运行:

Structure:
Dashboard分布了7个选项,每一个都有特殊目的。
General:
Dashboard中,以APK为主。AppUse Dashboard意味着允许研究者通过单击动作开始工作。为了实现这个目的,Dashboards被设计用来在APK上操作,来调用它的其他动作。
Load APK
Load APK是最基本的操作,Load APK将从文件系统加载一个APK到Dashboard中,以使得Dashboard执行其动作。当开始一个应用程序的研究,这是第一个必要的动作。加载的APK将会被复制到/AppUse/Targets/<apk_name>/目录。

Install APK
在用户从文件系统加载了APK后,Install APK按钮将会出现。这个按钮允许渗透测试者安装一个APK到一个正在运行的模拟器中。为防止应用已经安装过,Dashboard会询问是否重装或者卸载并再次安装该应用。

目前设备状态
设备状态图片展示了目前连接的设备状态。在设备连接上AppUse VM时会变绿,标签为ON,在没有设备连接时会变红,便签为OFF。它帮助你在设备连接上了时,避免使用Check Device按钮来获取快速指示。

Help
帮助图片允许你得到当前选择部分的信息。通过点击它,AppUse 当前部分的用户指南将会在浏览器中打开,这将帮助你明白Dashboard中每个按钮的目的。

Android Device 实现Android部分是为了执行模拟器上的动作,通过单击可以实现如下动作:
Launch Emulator Launch Emulator 按钮是为了打开AppUse模拟器
Restart ADB Restart ADB是为了重启ADB服务,以便让AppUse能够识别设备,万一ADB服务器起不来。在AppUse1.8中实现了一个自动机制来检查服务是否为down并且重启ADB。
Install Burp Certificate 新功能
Install Burp Certificate按钮允许AppUse在模拟器中安装Burp证书,在下一个版本中,它将在任何设备连接AppUse VM时安装burp证书。
Root Device 模拟器上的Root权限在渗透测试中会派上用场,但是通常会消耗很多时间。AppUse Dashboard有一个内建的选项来自动root模拟器,通过点击按钮。

Take Screenshot
Take Screenshot 用来实现对模拟器截图,截图保存在/AppUse/Emulator/Screenshots/ 目录

Open ADB shell
Open ADB shell 按钮用来使渗透测试者更简单打开ADB shll 终端

Proxy Settings 新特性
Proxy Settings面板用来是渗透测试者更容易root设备,以及在设备上打开代理。AppUse预装了应用与Dashboard通信,允许渗透测试者在模拟器中通过单击ON/OFF打开关闭代理。设置代理需要IP和PORT,另外一个重要特性是允许决定重定向端口。万一目标应用使用二进制协议,它可能需要设置特定端口或者监听所有端口,并且中断二进制协议流量。如果设备没有root,AppUse将会自动root。

TOOLS 工具部分是用来给渗透测试者在测试中快速访问这些有用的工具。通过单击可能执行如下动作:
Launch Burp 运行Burp代理
Launch Firefox 运行火狐浏览器
Launch Wireshark AppUse预装了Wireshark ,在Dashboard中运行。
Launch Eclipse 运行Eclipse IDE
Launch NetBeans 运行NetBeans 8.0,可以调试应用
Launch IDA 运行IDA,可以反汇编二进制文件
Launch Mercury client 运行Mercury Console客户端。在设备中通过Mercury Agent打开服务后,接下来执行端口转发,然后打开Mercury Console。所有操作可以通过单击Launch Mercury Client完成

Launch SQLLite Browser Launch SQLLite Browser运行 SQLLite Browser,查看数据库文件
Launch JD-GUI Launch JD-GUI 运行JD-GUI ,查看JAR文件源代码
Open Terminal Open Terminal 打开shell,在系统中执行操作
Download APK from Google Play 从Google Play下载应用,因为在模拟器中没有google
Open AppUse Directory 打开AppUse目录,查看文件和操作
Reversing AppUse包括解码和逆向APK的最先进的工具。一旦APK被加载到Dashboard中,所有工具已经配置好,可以直接使用,可以实现完全覆盖。 逆向部分用来执行像从设备拉出APK,反编译,拆解,组装,转换到APK模式等。这部分将使得工作更快,通过单击执行如下动作:
Reverse APK Content 用来实现三个动作:反编译,拆解,unzip
Decompile (JD-GUI) JD-GUI是一个拆解jar文件的框架。一旦.dex文件必须被转换为.jar文件,JD-GUI将准备好来拆解这些代码。通过使用JD-GUI,能够审计应用源码,发现隐藏秘密和逻辑。 Decompile按钮用来帮助渗透测试者反编译目标APK,通过dex2Jar转换成JAR文件,然后使用JD-GUI查看源代码。所有这些都通过单击按钮执行。AppUse将拉住APK,反编译它,通过JD-GUI打开目标apk的jar文件。

Decompile (Luyten) 和上面的按钮一样实现相同操作,但是这个通过Luyten decompiler打开jar文件
Save Java Sources 用来保存目标APK的java源代码到目标apk目录的decompiled目录
Dissemble (Baksmali) Baksmali是一个反编译apk Dalvik字节码的工具,研究者能够来查看应用程序的Dalvik编码,并且通过人类可读的格式来修改它。 这个按钮用来帮助渗透测试人员通过多个命令反编译APK,所有操作通过单击实现: 一旦在APK上使用了baksmali,/AppUse/Targets/<Targeted APK>/Dissasembled/目录会包含所有的Dalvik编译代码,然后渗透测试者能够修改并提供额外的指令

Reassemble(smali) Baksmali让研究者能够得到人类可读的dalvik编译代码,并且有机会以任意编辑器去编辑它。S
