一次简单的手机数据库解密

移动安全 3年前 (2021) admin
444 0 0

一次简单的手机数据库解密


近期有个小伙伴发我一个数据库加密的应用分析,发现是近期友商出的一个题目,分析后整理一下过程,首先发我APK的同时,也发我了他的解析思路,但是我分析后发现过于麻烦,不够简洁,所以重新按着自己的思路分析的。

实验素材与环境:


程序名称:马铃薯视频

应用程序包名:plus.H5B8E45D3

实验环境:雷电模拟器4.0.39

APK运行环境:安卓7.1

分析工具:JEB

一次简单的手机数据库解密


分析步骤:

1. 查看默认位置/data/data/包名/database/数据库是否加密,排除加密数据库存储在其他路径,发现确实该目录下确实有一个test.db,利用数据库查看工具打开,发现确实有密码,那就确定了该数据库确实是目标数据库。


2. 利用反编译工具进行APK逆向,查看java代码


3. 利用掌握的线索直接搜索test.db,定位到代码


一次简单的手机数据库解密


发现后面的getWritableDatabase()方法,对于加密数据库而言,往往getWritableDatabase中会附加数据库密钥,也就是getWritableDatabase(db_password)。所以我们目前需要分析的就是getWritableDatabase(WebAppActivity.getMD5(WebAppActivity.bytesToHex(new byte[]{97, 98, 99, 100, 101, 102}).substring(1, 3)))里面的值。看着有点长我们简化一下。其实很简单;


外层其实就是一个getMD5(),

里面就是一个bytesToHex(byte[]{97, 98, 99, 100, 101, 102}).substring(1,3),我们先计算bytesToHex(byte[]{97, 98, 99, 100, 101, 102}),

在bytesToHex()里面就是一个byte类型的数组{97, 98, 99, 100, 101, 102}


我们可以手工先将这个数组转换一成十六进制的数。


可以利用本地的计算器来转换,手工转换前两个97,98


一次简单的手机数据库解密


97转换成十六进制就是61


一次简单的手机数据库解密


98转换成十六进制就是62

后面的类似

最终得到:616263646566

当然我们也可以用脚本验证一下,我们可以扣出来原来的bytesToHex()


一次简单的手机数据库解密


放入我们本地的java编译器中,我们打印一下

bytesToHex(new byte[]{97, 98, 99, 100, 101, 102})


一次简单的手机数据库解密


最后结果和我们手工转换的一样都是:616263646566

那么现在bytesToHex(byte[]{97, 98, 99, 100, 101, 102})=616263646566

bytesToHex(byte[]{97, 98, 99, 100, 101, 102}).substring(1,3)=

616263646566.substring(1,3)=

16


这里简单介绍一下substring()


一次简单的手机数据库解密


最后就是getMD5()

同理我们扣出原来的算法直接调用即可,最后还原验证的加密过程就是:


一次简单的手机数据库解密


转换后的十六进制数是:616263646566

截取后的加密的原文是:16

数据库加密的密文是:c74d97b01eae257e44aa9d5bade97baf


当然也可以用frida hook,根据我们静态分析的过程,我们直接hook getMD5()最简单。


一次简单的手机数据库解密


一次简单的手机数据库解密







“盘古石”团队是奇安信科技集团股份有限公司旗下专注于电子数据取证技术研发的团队,由来自国内最早从事电子数据取证的成员组成。盘古石团队以“安全为先,洞鉴未来”为使命,以“漏洞思维”解决电子数据取证难题,以“数据驱动安全”为技术思想,以安全赋能取证,研发新一代电子数据取证产品,产品涵盖计算机取证、移动终端取证、网络空间取证、IoT取证、取证数据分析平台等电子数据取证全领域产品和解决方案,为包括公安执法、党政机关、司法机关以及行政执法部门等提供全面专业的支持与服务。





一次简单的手机数据库解密


原文始发于微信公众号(盘古石取证):一次简单的手机数据库解密

版权声明:admin 发表于 2021年12月22日 上午6:11。
转载请注明:一次简单的手机数据库解密 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...