在对安卓手机进行取证时,经常需要备份手机的应用程序数据,备份后得到的数据文件为ab格式。虽然大部分的取证软件都可以对ab文件进行分析,但是,有时候你可能需要解析ab文件的文件系统,然后对应用程序数据进行手动分析。ab文件一般分两种,一种是没有加密,这种文件前面有24字节的文件头,文件头包含none标志,文件头之后就是数据;一种是加密的备份文件,它的文件头就比较复杂了,文件头包含AES-256标志。
Androidbackup extractor是一个开源项目,从sourceforge和github都可以下载最新的源码,它采用java编写,因此运行的时候需要java环境。Android backup extractor可以将ab格式转换为我们熟悉的tar格式,最重要的是它同时支持没有加密和数据加密的adb备份。下面分别介绍一下转换时的命令格式:
对于没有加密的ab文件,命令格式为:java -jar abe.jar unpack <backup.ab> <backup.tar>。如果执行成功,则没有任何信息提示;如果出现错误提示,有可能ab文件损坏,需要重新制作备份。
对于加密的ab文件,转换就比较麻烦,需要安装Java Cryptography Extension,可以从java官网下载文件local_policy.jar和US_export_policy.jar,复制到当前系统的java相应目录下,具体细节大家可以参考Android backup extractor的readme.txt文件。对于加密ab备份的转换,具体命令格式为:java -jar abe.jar unpack <backup.ab> <backup.tar> [password]。如果执行成功,则没有任何信息提示;如果出现错误信息,有可能ab文件损坏或者密码错误。
Androidbackup extractor除了可以将ab转化为tar,还可以将tar转换为ab。例如,你需要修改一些应用程序数据,但是手机又无法root,因此可以先将手机数据备份为ab文件,将ab备份转换为tar后修改数据,然后将修改后的tar转换为ab备份,最后恢复修改后的ab备份到设
下面介绍三个反编译工具
对于so文件的逆向工具选择
Objection是一款移动设备运行时漏洞利用工具,该工具由Frida驱动,可以帮助研究人员访问移动端应用程序,并在无需越狱或root操作的情况下对移动端应用程序的安全进行评估检查。
安装命令
pip3 install objection
frida是一款便携的、自由的、支持全平台的hook框架,可以通过编写JavaScript、Python代码来和frida_server端进行交互
frida的安装可以参考:https://www.jianshu.com/p/60cfd3f6afde
该题给出了一个修改过的backup.ab,稍微需改了ab的头部,version以及compress。直接使用abe进行提取的话需要根据代码简单修复一下ab头部。提取出来后发现有两个备份apk文件。
com.example.mybackup
com.example.zi
其中mybackup里提供了一个经过sqlcipher加密过的BOOKS.db.该数据库里存储了flag,只要解密该数据库之后即可获取flag。
密码直接可以通过反编译看到
public BooksDB(Context context) {
super(context, "BOOKS.db", null, 1);
this.k = Test.getSign(context);
this.db = this.getWritableDatabase(this.k);
this.dbr = this.getReadableDatabase(this.k);
}
getSign为自己写的获取签名,然后计算"SHA1",直接利用jeb反编译结果编写代码即可获取key,然后选择尝试正确的sqlcipher版本进行解密即可。
sqlite> PRAGMA KEY = 'KEY';
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE books_table (book_id INTEGER primary key autoincrement, book_name t
ext, book_author text);
sqlite> select * from books_table
或者利用backup的apk中提供的sqlcipher库进行重写读取数据库也是可以获取到BOOKS.db内容。