好消息,感谢姐姐的赞助,我招募到了新的员工——codex,每月200块的工资。
这篇文章是关于平航杯的手机取证。至于没有先写ai取证,这是因为我想用仿真系统来操作,这道ai题目真的非常有意思,希望能在ctf比赛中见到这么有意思的题目。
话不多说,我们看具体题目:
26. 该检材的备份提取时间(UTC)? (格式:2020/1/1 01:01:01)
我们先用axiom打开检材。这时候注意到这个检材是哟个zip文件,它的文件名是:20250415_181118.zip这个很像一个日期。难道这就是这道题的答案吗?我们不能这么草率的下结论,这个时间可能是开始备份的时间,也可能是备份完成的时间。而且,文件名是可以修改的,万一是作者为了记忆或者别的原因修改了这个文件名也不是没有可能。我们要进一步搜索。

打开文件列表,很明显发现了时间信息,都是在2025年4月15日创建的。问了下ai

这个时间明显不是解压时间,由于这些文件创建的时间虽然都在同一天,但是具体时间不同,所以我推断是用工具提取这些文件,把这些文件打包成镜像的时间。
那么真正是时间信息存放在哪里呢?我们看这些文件,有没有发现一个提点:几乎所有的文件都是.bak文件,除了第一个这就很能说明问题了。为什么一个镜像中会有一个xml文件呢?XML 先理解成一种“带标签的结构化文本”。它的作用不是像 Word 那样给人阅读,而是让程序按照固定字段保存配置、状态、清单、元数据。我们仔细阅读xml文件,可以发现一些内容:
这是MIUI Backup 的描述文件,也就是整套备份的元数据清单。其中包含了以下内容:
第一类是备份本身的信息。你这里能看到:

第二类是package相当于罗列了所有zip文件中的备份文件,包含了这些对取证比较重要的内容:

相信大家已经看到答案了1744711878838这是毫秒级时间戳,转化一下:2025-04-15 18:11:18和题目zip文件的文件名一样。但这还不是答案,因为题目问的是UTC,而这个时间是手机备份的时间。还要减去8小时,为什么是8小时?

27. 分析倩倩的手机检材,手机内 Puzzle_Game 拼图程序拼图 APK 中的 Flag1 是什么? (格式:xxxxxxxxx)
在真实的资格赛中,最块最有效的方法是直接让codex做,,,

这道题又是一道逆向,问拼图游戏的flag我的思路是导出文件用jadx逆向工具打开。
内容很多,不妨直接搜索flag缩小范围。

注意这里圈起来的地方要点一下,否则没法显示全部结果。。。。。无语
虽然有很多内容,但是注意到这里

跳转过去看看具体情况。
很显然,我没看懂。。。。。这个之后再写吧。
28. 分析手机内 Puzzle_Game 拼图程序,请问最终拼成功的图片是哪所大学? (格式:浙江大学)
图片肯定在apk反编译中能看到。我们找一下。Apk其实就是一个压缩包,我们直接解压缩打开它。通常情况下,图片会存放在res文件夹中的这几个位置:1.Drawable(普通图片)2. Mipmap(图标)3. Assets(这个文件夹中的文件要在程序中读取)4.raw(原始)
在找图片的过程中,你一定会有疑问,为什么这些文件夹有这么奇怪的后缀呢?


找到图片,询问ai一气呵成浙江中医药大学
29. 分析倩倩的手机检材,木马 app 是怎么被安装的(网址)? (格式: http://127.0.0.1:1234/)
让我们找网址,我们要找到浏览器历史记录。问题来了,这些都是bak文件,我要怎么打开这些备份文件查看内容呢?
我们要先看这些bak是什么类型的文件,针对不同的bak用不同的软件打开。
查看文件头发现是MIUI BACKUP,小米自带的备份。

看到这里,可以发现像是压缩包目录结构,尝试用7zip打开。
发现了一堆数据库

看看历史记录

Emm唯一不那么像一个正常安全的url就是第一条了http://192.168.180.107:6262/
其实每次做到调取浏览器记录的时候我都会有疑问:如果用无痕浏览,还能再数据库中找到浏览记录吗?
通常情况下,数据库中是没有痕迹的,但这不意味着完全没有痕迹,再dns解析记录中,下载记录中,内存取证中,文件系统(临时文件)都可能会留下记录。
Emmm如果像找到完整的痕迹,还是比较困难的
30. 分析倩倩的手机检材,检材内的木马 app 的 hash 是什么? (格式:大写 MD5)
到下载中查看。

看样子,只可能是fix2 sign.apk了我们导出然后放到软件中即可。
31. 分析倩倩的手机检材,检材内的木马 app 的应用名称是什么? (格式:Baidu)
使用云沙箱分析一下app 云沙箱理解成:“把可疑程序放到一个隔离的虚拟手机/系统里运行,然后自动记录它的行为。”

32. 分析倩倩的手机检材,检材内的木马 app 使用什么加固? (格式:腾讯乐固)
木马为什么要加固呢?我的理解是避免被杀毒软件发现。但我的答案太片面了。套上壳之后杀毒软件就读不到真实的代码,而是读到几个类,分析得不到任何结果。此外,通过代码混淆,加密数据,反调试达到阻碍安全人员读取的目的。还有一些原因,我的水平还不理解。。。
我通过apkscan-pkid来查壳,这是一个判断 Android 壳非常经典的工具,用的是某位大佬再github发布的更新版本。

33. 分析倩倩的手机检材,检材内的木马软件所关联到的 IP 和端口是什么? (格式:127.0.0.1:1111)
做这道题之前,我们先了解一下木马的原理。
首先,我们下载并启动了木马。之后,木马连接到服务器。在之后,攻击者通过服务器下达攻击命令。所以,我们的思路是先脱壳再反编译。
我在网上网页中脱壳了,但是没法下载。。。。。。。。。why
找个时间单独写一篇文章详细分析一下这个木马吧。
34. 该木马 app 控制手机摄像头拍了几张照片? (格式:1)
这道题再手机上应该没有答案,应为木马控制手机拍照后直接上传到了服务器,也就是上一道题目的答案。在我们用手机拍照的过程中,我们先打开相机应用,打开后,相机调用camera的api,之后拍下照片保存到DCIM/Camera,媒体库扫描之后在相册中显示。
被木马操控后就不是这种情况了。第一种可能是木马直接调用了相机api,控制了摄像头,之后拍了照片,可能保存到木马应用的目录中,之后再上传照片到服务器。第二种则是不用保存照片,直接上传。
这道题其实我有些不理解,根据我现在的理解程度,我觉得要这样思考:
当手机端木马控制摄像头获取照片后,通常需要将数据回传至远程控制服务器(C2服务器)。
服务器收到手机上传的数据后,根据木马程序的设计逻辑,可能不会立即将数据写入最终存储位置,而是先经过临时缓存、日志记录等中间处理过程。
典型流程如下:
手机木马
↓
网络通信
↓
C2服务器接收数据
↓
临时目录/缓存文件保存
↓
日志记录操作信息
↓
程序进一步处理
↓
保存至数据库或文件目录
因此,在服务器取证过程中,需要根据木马运行机制进行分层排查。
一、优先检查临时目录中的日志信息
首先检查服务器中的临时目录:
Linux系统常见位置:/tmp/var/tmp
原因:
·木马程序运行过程中可能会产生临时文件;
·接收到客户端连接、执行命令、上传文件等操作时,可能先写入日志;
·临时日志能够反映木马运行状态和通信行为。
二、进一步分析服务器文件存储位置
如果临时日志中发现上传行为,需要继续寻找最终存储位置。
重点检查以下目录:
1. Web服务器目录
常见:/var/www//var/www/html/
原因:很多木马控制端采用 Web 管理后台,上传的数据可能存储在 Web 目录中。
重点关注:upload uploads images photo data files 等目录。
2. 程序部署目录
常见:/opt/
原因:攻击者或开发者经常将自定义服务程序部署在该目录。
重点寻找:server control client config database等文件。
3. 用户目录
常见:/home/
原因:部分控制程序、脚本或者上传数据可能存储在用户目录中。
三、搜索关键字辅助定位
如果无法确定文件位置,可以使用关键词搜索:
木马相关:
Rat remote shell client server control
摄像头相关:
Camera capture photo image picture
上传相关:
Upload download file
图片文件:
.jpg .jpeg .png
通过关键词定位:
·木马程序;
·日志文件;
·上传目录;
·被窃取的数据。

除此之外,还有一种思路也比较合理。就是先查看bash history查看历史记录,能看到这个:

结合知识,rat是远程控制的意思,接着在androrat中找找线索。
找到了这样几条重要的命令:
cd /root/AndroRAT/
python3 androRAT.py --shell -i 0.0.0.0 -p 8000
script -a -q RAT_activities“打开录屏笔记本,把接下来这个终端里发生的交互过程都记到 RAT_activities 里,而且接着以前的内容继续记。”
find / -name RAT_activities
cat /root/AndroRAT/RAT_activities
vi /root/AndroRAT/RAT_activities
这样就更加合理了,攻击者把记录生成在RAT_activities,我们要找到这个,但是这个文件有关杯一栋楼或者删除了。
35.木马APP被使用的摄像头为(格式:Camera)
在上面日志中提到了,仔细找一下就能找到答案。
36. 分析倩倩的手机检材,木马 APK 通过调用什么 API 实现自身持久化? (格式:JobStore)
Emmmm之后找个时间再写吧
37. 分析倩倩的手机检材,根据倩倩的身份证号请问倩倩来自哪里? (格式:北京市西城区)
很显然,按照我的水平,我有懵逼了。。。。
我一开始实在想会不会在note里面(真的有人会在这种地方村身份证号吗。。。。。)很显然没有,之后又想会不会在哪个银行账户中,结果她手机上根本没有银行。。。。wdf也没有出行app短信中也没有。。。。。。。
看了wp发现在输入法中,看来这个地方一直是我忽略的地方了。

38. 此手机检材的 IMEI 号是多少? (格式:1234567890)
Xways直接搜
至今还记得美亚杯中在咸鱼里找到的imei

平航的手机取证也算是写完了,通过这个我发现了我的几点不足。
代码水平太差了,逆向的内容看不懂 有些答案存储的地方没有思路,太依赖别人的wp了
由于我写文章的时候是边写边做的导致我经常看别人的wp了,所以以后我决定要换一个方式:规定一小时时间自己做,然后再看wp,可能会降低更新频率,请见谅。
做了平航的这几道题目,感觉这个比赛还是很有意思的。尤其最有意思的ai部分我还没有做。
下一部分我会先写ai取证和流量分析。逆向实在有些看不懂。我之前制作过ctf的一些简单逆向,直接让我分析程序的逆向我还是有些没有思路。