第七届蓝帽杯[半决赛]取证部分WP

第七届蓝帽杯[半决赛]取证部分WP

刚参加了蓝帽杯半决赛。在这里加一篇取证部分的WP。

咱真的一个人去哈尔滨打了,果然还是没再能晋级。

初赛取证挺多的(43道)。而且赛后基本上也把初赛取证题的那点门路摸明白了。本来还幻想着多拿下点取证题还是能稍微有一点点晋级的机会的。但半决赛只有15道取证题,而且只是手机取证,难度都不高,谁都能做的那种。咱就完全没任何优势了。

一个人去打CTF线下赛挺无助的,坐在电脑前都不知道该干啥。如果还有下次的话还是拉点队友比较好。

(希望能有下次吧…

这次取证检材是个华为手机备份文件的形式,外加一个sd卡镜像。另外有一个备份时的log文件,先看看log。咱就都把它复制在这里

09-11 17:20:54.525 [U] 准备提取任务
09-11 17:20:54.525 [U] 操作设备:
09-11 17:20:54.525 [U] 提取类型:ExtractHwClone
09-11 17:20:54.525 [U] 提取参数:{“TaskBase”:null,”CommonParam1”:”TAS-AL00%0427%CloudClone”,”CommonParam2”:”11223344”,”CommonParam3”:””}
09-11 17:20:54.525 [U] 输出目录:E:\鉴定\MFA\Packages\华为克隆 20230911172053
09-11 17:20:54.525 [U] 启动提取任务….
09-11 17:20:54.525 [U] 正在初始化提取引擎….
09-11 17:21:10.066 [U] 正在等待提取引擎开始执行….
09-11 17:21:10.568 [I] 任务开始
09-11 17:21:10.674 [I] 开启拉取流程…
09-11 17:21:10.674 [I] 当前账号和密码:账号TAS-AL00%0427%CloudClone:密码:11223344
09-11 17:21:10.684 [I] 正在启动移动热点服务…

09-11 17:26:33.546 [I] 设备信息概要
09-11 17:26:33.546 [I] 设备名称:sailfish
09-11 17:26:33.547 [I] 设备品牌:谷歌
09-11 17:26:33.547 [I] 设备型号:Pixel
09-11 17:26:33.547 [I] 系统版本:10.0.0
09-11 17:26:33.547 [I] CPU架构:arm64-v8a
09-11 17:26:33.547 [I] CPU类型:sailfish
09-11 17:26:33.547 [I] 内核版本:3.18.137
09-11 17:26:33.547 [I] 补丁时间:2019-09-05
09-11 17:26:33.547 [I] 设备序列号:FA6A80312283
09-11 17:26:33.610 [I] SD卡存储空间:剩余16.94 GB/总计24.32 GB
09-11 17:26:37.222 [I] 开始接收数据
09-11 17:27:18.846 [C] 正在提取分区镜像文件(1.23 GB/1.23 GB)
09-11 17:27:18.847 [I] 接收数据完毕
09-11 17:27:19.683 [I] 提取完成
09-11 17:27:19.688 [U] 提取任务执行完成

注意看起来日志开始的时候是17:20,但实际上下面两条才是开始提取的标志。所以开始提取是17:21

09-11 17:21:10.568 [I] 任务开始
09-11 17:21:10.674 [I] 开启拉取流程…

1.检材数据开始提取是今年什么时候:09-11 17:20
2.嫌疑人手机SD卡存储空间一共多少GB:24.32GB
3.嫌疑人手机名称:sailfish

然后把检材都导入盘古石的手机取证系统。先查看设备信息:

1

4.嫌疑人手机IMEI:352531082716257

查看手机的通讯录,可以发现一条记录。查看记录概要:

2

5.嫌疑人手机通讯录数据存放在哪个数据库文件:contacts.db

再查看手机的应用列表和应用日志:

3

第6题有点不太好评价了。题目问的是嫌疑人手机一共使用过多少个应用。应用日志中总共出现过的应用有190个,咱填的是这个答案。但最后答案根据是应用列表中的条数得来的。和题目描述并不相符。

根据题目描述,嫌疑人手机有一个测试软件,并且在取证前使用过。查看应用列表和应用使用日志,发现一款名为My Application的应用,使用默认图标和应用名,没有相关详细信息并且在数据提取前使用过,因此推测该应用就是该测试应用。

于是将apk提取出来,用Virustotal进行扫描

4
5

扫描结果就显示出很多信息了。

7.测试apk的包名:com.example.myapplication
9.测试apk的主入口:com.example.myapplication.MainActivity
10.测试apk一共申请了几个权限:3个

用jadx解包反编译一下。先看看签名信息:

6

8.测试apk的签名算法:SHA256withRSA

然后分析一下MainActivity。可以看到主类下有两个方法,分别用来提取通话记录和短信:

7

可以看到其中操作通话记录的方法retrieveCallLog()只是用了Base64编码一下就写入了Calllog.txt。如果Base64算加密的话,,,

11.测试apk对Calllog.txt文件内的数据进行的加密:Base64

本来这道题还区分大小写,只有BASE64给分,后来咱的答案形式也给算分

在检材的文件系统中搜索Calllog.txt。将文件内容用Base64解码后即可查看。

8

12.10086对嫌疑人拨打了几次电话:2次

然后再分析retrieveSms()方法。

9

可以看到该方法获取短信后用Getkey()方法获取key,再用key传入encryptData()方法进行加密,将加密后的数据写入SMS.txt。

encryptData()将数据用javax.crypto.cipher中的AES加密后再用Base64编码。

13.测试apk对短信记录进行了几次加密:2

10

Getkey()是native方法。将apk中的libmyapplication.so(x86_64下)文件导出,用ida打开进行分析

11
12

可以看到该函数先将”lijubdyhfurindhcbxdw”进行Base64到v13,然后用sub_209E0(v15, v13, 16LL)对v13进行操作。

13

sub_209E0这个确实看不太懂。但它传入了一个16,结合AES128需要的密钥长度是16bytes,咱猜测它是截断v13前16个字节作为密钥。如果是这样的话那么最终可能的密钥会是bGlqdWJkeWhmdXJp

encryptData()方法使用的AES是AES-ECB模式。先从文件系统找到SMS.txt,将数据和可能的密钥用cyberchef尝试解密一下

14

最后解密成功了,证明密钥正确,短信内容也能看到了。

14.测试apk对短信记录进行加密的密钥:bGlqdWJkeWhmdXJp
15.嫌疑人在2021年登录支付宝的验证码:9250

评论