2025FIC取证决赛wp(手机取证)

下载链接:百度网盘 请输入提取码

哈希值:MD5值:935160a30f6636cf6d32710e83fb48c5

挂载密码:F!C_2025-Final@决~赛#x7Pz!

案情介绍

复制代码
在 FIC 线上赛各位取证专家的帮助下, 警方通过互联网线索成功锁定了陈某.  
李某失联后, 陈某终日值惶, 打算掩盖并消除其在黑产活动的痕迹, 于是对部分电子设备行了数据重置和销毁. 警方对陈某实施抓捕过程中, 发现陈某加密了其电脑系统, 并且重置了手机数据. 最终在陈某家中找到了陈某备用手机, 电脑, 尚未重置的服务器及路由器.  
据陈某交代备用机由于只用作网站测试和钓鱼攻击, 未对数据进行处理; 电脑上制作了多系统, 加密系统密码为    2025=(20+25)^2   大部分钱财相关内容都保留在了加密系统上.  
请各位取证专家根据组委会提供的检材, 还原陈某的黑产犯罪痕迹.

从案情来看,是一个黑产的犯罪情况,说是对一些设备进行了重置,不过我们取证是那部分没重置的

备用手机只用作网站测试和钓鱼攻击,电脑还有多系统,加密系统的密码也给了,这个比较关键,是2025=(20+25)^2,说是大部分跟钱财相关的都放在加密系统了

打开来是这样子五个检材,比去年决赛还多了俩

有很多部分都是跟着b0uu - 博客园师傅走的

一、手机取证

1.请分析检材1,该检材的蓝牙mac地址为

基础题,直接在火眼查看即可

在设备信息中,MAC地址为A4:55:90:15:2E:76

2.请分析检材1,该检材的系统Linux内核版本号为

我们知道,安卓手机使用的就是Linux内核,不过火眼检测出来的手机版本号是安卓版本号

要看系统的Linux内核版本号一般我们都是在手机内部通过设置看的,或者adb shell cat /proc/version

在这边我们没有机子,只有镜像,所以可以直接去翻一下/proc/version

可以看到内核版本为4.14.186

3.请分析检材1,该检材中实际使用的密码管理软件的软件包包名为

密码管理APP在APP分析没有直接看见,但是在便签内部发现了一条说是keepass密码的内容

但是keepass数据库里没有什么数据

继续根据这个思路搜索,查找keepass的加密数据库文件kdbx是否存在

的确存在

在该路径,所以包名为design.codeux.authpass.fdroid

4.请分析检材1,该检材中密码管理软件的主密钥为

上一题已经明细了密码管理软件是design.codeux.authpass.fdroid,且是kdbx的加密数据库

https://github.com/keepassxreboot/keepassxc/releases/tag/2.7.10

下载一个keepass的数据库软件,进行解密,密码已经发现写在便签

输入便签密码Save my P Ass.成功解密

这软件反截图啊,录屏截图都搞不下来,只能古法截图了

5.请分析检材1,该检材中保存的github.com密码为

数据库里写了,我们根据URL查找

得到密码Forensix777

6.分析检材 1,该检材 root 工具的版本为

在APP分析能找到一个root工具

所以这道题的问题就是Magisk的版本号

图上已经写了版本号27.0,即为答案

7.分析检材 1,找到该手机上的 Linux 容器,该 Linux 发行版名称为

说有Linux容器,应该小不到哪里去

我们直接文件全显大小降序看看

很容易看见一个长的就像Linux容器的文件

当然了,这是野路子,正规的寻找路径应该是这样子

我们在手机可以看到这个软件,手机正是通过这一软件在Android的Linux内核层运行了一个完整的Linux系统

即我们的容器是通过这个软件部署的,通过包名我们可以看看这个软件的信息

在/data/user/0/ru.meefik.linuxdeploy/files/config/linux.conf

我们可以看到这个部署的容器的具体的配置信息

得到Linux容器存在${EXTERNAL_STORAGE}/UUID中,提取即可

提取并进行分析

所以发行版名称为debian

对于这个容器,其实可以进行仿真,但是这边仿真比较复杂且不是那么必要,摆一下(),贴一下西电的wp

https://forensics.xidian.edu.cn/wiki/writeups/FIC2025Final/#qemu

8.分析检材 1 容器,该系统默认桌面环境为

依旧是前边那一个/data/user/0/ru.meefik.linuxdeploy/files/config/linux.conf

在这边对桌面的环境也写了配置

是xfce

9.分析检材 1 容器,该系统的 android 用户密码为

同一个配置文件可以找到user-android的密码是99c26da5

10.分析检材 1 容器,浏览器下载的文件名为

打开分析,浏览器下载记录只有一条,所以答案为reshacker_setup.exe

11.分析检材 1 容器,陈某使用过的 github 代理的域名为

历史命令一直都是很重要的部分

在这边过滤github

可以看到不少内容,最主要的就是这一行

git clone -b v5.6.4.2 https://gh.viru.sh/https://github.com/aircrack-ng/rtl8812au.git

这边在从远程代码仓库克隆项目,这个URL是典型的前缀+真实地址的形式

即gh.viru.sh才是实际访问域名

所以可以判断陈某使用过的github代理域名为gh.viru.sh

12.分析检材 1 容器中助记词程序 recphrase,其使用的壳类型为

先定位到这个recphrase程序

提取出来DIE查一下壳

发现明显打包工具为UPX,即壳为UPX

我们这边直接用UPX脱壳即可,注意这边需要-o参数才能成功脱壳,原来的没有write权限(或者给一个也行)

13.分析上题程序,程序运行后第 2 列第 3 行助记词为

分析上边那个程序,这边在历史记录里可以注意到存在这样子的命令

发现其实upx加壳的是reco这个程序

而我们之前搜索recphrase的时候reco就在上边,结合大小一样,怀疑是同一个文件

的确一样啊,结合上边的命令,也就是说这个recphrase就是py脚本通过PyInstaller打包做的

用 pyinstxtractor 解包一下

复制代码
git clone https://github.com/extremecoders-re/pyinstxtractor.git
cd pyinstxtractor
python3 pyinstxtractor.py recphrase_unpacked

直接解包

主程序就是这个reco.pyc

利用pylingual成功还原出python源码

python运行即可

所以第二列第三行是village

14.分析上题程序,该组助记词对应的钱包种子前 8 位为

根据上一题可以得到助记词

在本地的BIP39填入助记词即可计算得到恢复种子

e08478b0ca12153b4ae26d05fc50e5bbf122307d7d431c9d59e1f6bc7d9a835c7d3d384bb4011aeb7540acef56129ad620839d24383a1308997905c9c0586611

15.分析检材 1 容器,钓鱼网站(phishing)的后台用户密码加密算法为

先找这个phishing在哪里

在root家目录下

发现该目录下存在一个数据库,打开看看

可以看到密码是pbkdf2+sha256的加密算法

16.分析检材 1 容器,钓鱼网站超管用户的弱口令为

上一题已经得到了加密方式以及加密后的值

题目已经说是弱口令了,那就把弱口令的字典拿来字典爆破跑跑看就好了,这边刚好有一个rockyou.txt前5000的文件

复制代码
import hashlib
import base64
import hmac

target = "pbkdf2_sha256$1000000$OiyKwstlWoZt6cvGmjhSFP$gVg7Ds9/KtaSqJSMAHx8eoYI0IDffpTLcHSlDKSiXqY="
dict_path = "/home/kali/Desktop/5000.txt"

def check_password(password_bytes, target_hash):
    algorithm, iterations, salt, hash_b64 = target_hash.split("$")

    if algorithm != "pbkdf2_sha256":
        raise ValueError("不是 pbkdf2_sha256 哈希")

    iterations = int(iterations)
    salt_bytes = salt.encode()

    real_hash = base64.b64decode(hash_b64)

    test_hash = hashlib.pbkdf2_hmac(
        "sha256",
        password_bytes,
        salt_bytes,
        iterations,
        dklen=len(real_hash)
    )

    return hmac.compare_digest(test_hash, real_hash)

def main():
    count = 0

    with open(dict_path, "rb") as f:
        for line in f:
            password = line.rstrip(b"\r\n")
            count += 1

            if check_password(password, target):
                print("[+] 爆破成功!")
                print("[+] 密码:", password.decode(errors="ignore"))
                print("[+] 尝试次数:", count)
                return

            if count % 100 == 0:
                print(f"[*] 已尝试 {count} 个密码...")

    print("[-] 字典中没有找到密码")
    print("[*] 总尝试次数:", count)

if __name__ == "__main__":
    main()

跑一下

得到密码是123456

17.分析检材 1 容器,宝塔面板的入口为

直接在浏览器历史记录里就能看到面板的访问记录

所以入口就是/a2d3e161

18.分析检材 1 容器,宝塔面板运行在 aarch64 内核时报错的 so 文件为

已经说是宝塔的报错了,我们看看宝塔的报错日志

可以直接看见这边尝试加载64位库导致了报错,所以是PluginLoader.so

不过这个报错log里边也只有这一个so文件就是了

相关推荐
多彩电脑1 小时前
Kivy如何自定义事件
开发语言·python
java_cj1 小时前
LangChain初入门 - 简化LLM开发难度的利器
开发语言·python·langchain
sleven fung1 小时前
llama-cpp-python 本地部署入门
开发语言·python·算法·llama
li星野1 小时前
RAG优化系列:基于用户反馈的检索权重调整(Feedback Loop)——让系统越用越聪明
python·学习
特立独行的猫a1 小时前
鸿蒙 PC 平台 Python 第三方库移植全景指南
python·华为·harmonyos·三方库移植·鸿蒙pc
范范@2 小时前
Python进阶 网络编程笔记-多进程
网络·笔记·python
AwakeFantasy2 小时前
量化系统难题1_复权后的日k数据_已解决
python·金融
jay神2 小时前
基于 Python + Flask + Vue 的校内求职互助平台
前端·vue.js·后端·python·flask·毕业设计
weixin_468466852 小时前
Cherry-Studio 新手极速上手指南
人工智能·python·深度学习·ai·自然语言处理·大模型