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文件就是了

相关推荐
笨鸟先飞,勤能补拙6 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能6 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂7 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study7 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境8 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境8 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1238 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102169 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb009 小时前
一个项目带你入门AI应用开发01
python
0566469 小时前
Python康复训练——常用标准库
开发语言·python·学习