2024龙信杯暨2024全国电子数据取证大赛

案情介绍

1
近期,某公安机关接到受害人报案:通过微信添加认识一位相亲中介客服,客服邀约其与“相亲”对象进行选妃,受害人上钩后,整个过程被涉案团伙录音录像,同时,该客服以有更多的对象可供挑选为由,引导受害人下载其事先制作好的木马APP,受害人安装该APP后,嫌疑人利用录制的视频和受害人的通讯录做要挟,从而实施多次诈骗。最终受害人不堪重负,选择报案。

一、手机取证

1.分析手机检材,请问此手机共通过adb连接过几个设备?[答案:2]

此时为了让x-ways解压和分析该手机镜像的内容我们将原来的dd后缀改为tar

根据题意我们对adb关键词进行搜索发现存在adb_temp_keys.xml且存在两个key;代表连接过两个设备。

2.分析手机检材,机主参加考试的时间是什么时候?[答案:2024-08-23]

我们可以知道该手机为小米手机,那么小米便签的数据库在/data/com.miui.notes/databases/note.db

当天是周一,下周五就是8月23。或者直接使用手机大师搜索考试

3.分析手机检材,请问手机的蓝牙Mac地址是多少?[答案:48:87:59:76:21:0f]

此时的文件位于/misc/bluedroid/bt_config.conf

4.分析手机检材,请问压缩包加密软件共加密过几份文件?[答案:6]

基于安卓系统的设备中,/storage/emulated/0media/0 目录通常指代设备内部存储的根目录。这是用户文件、媒体、应用数据等存放的主要路径。我们进入该目录后会发现存在FileCompress;安卓设备通常会将应用安装信息存储在 /data/system/packages.xml,我们查找该文件进行查找

得到该文件目录后进行apk的反编译得到密码1!8Da9Re5it2b3a.

解压后得到信息,证明了该软件为压缩包加密软件。

5.分析手机检材,请问机主的另外一个155的手机号码是多少?[答案:15599555555]

在mm.txt这份加密文件中

6.分析手机检材,其手机存在一个加密容器,请问其容器密码是多少。[答案:d7Avsd!Y]u}J8i(1bnDD@<-o]

继续对加密文档进行解密得到容器密码

7.分析手机检材,接上问,其容器中存在一份成员名单,嫌疑人曾经误触导致表格中的一个成员姓名被错误修改,请确认这个成员的原始正确姓名?[标准格式:陆俊梅]

我们依旧在media这个目录进行查找;在 Android 设备上,media 目录通常是指存放媒体文件(如音频、视频和图片)的地方。发现在Download下存在一个data文件;我们进行提取后使用TrueCrypt进行挂载。里面存在一个表格

此时因为存在成员名字被修改,那么此时存在的可能性为出现相同的电话号码或者相同的邀请人信息;这个时候我们使用这两个条件进行查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import pandas as pd

file_path = 'Z:\名单数据.xlsx'
df = pd.read_excel(file_path)
phone_to_name = {}

for name, phone, inviter, inviter_phone in zip(df['姓名'], df['手机号'], df['邀请人'], df['邀请人手机号']):
if phone not in phone_to_name:
phone_to_name[phone] = name
elif phone_to_name[phone] != name:
print(f"警告:手机号 {phone} 对应了多个不同的姓名:{phone_to_name[phone]}{name}")

if inviter_phone not in phone_to_name:
phone_to_name[inviter_phone] = inviter
elif phone_to_name[inviter_phone] != inviter:
print(f"警告:手机号 {inviter_phone} 对应了多个不同的邀请人:{phone_to_name[inviter_phone]}{inviter}")

在结合表格进行分析发现陆陆只出现了一次,可以确定为该处的姓名被修改。

8.分析手机检材,接上题,请确认该成员的对应的最高代理人是谁(不考虑总部)?[标准格式:张三]

9.分析手机检材,请确认在该组织中,最高层级的层次是多少?(从总部开始算第一级)[标准格式:10]

10.分析手机检材,请问第二层级(从总部开始算第一级)人员最多的人是多少人?[标准格式:100]

11.分析手机检材,机主共开启了几款APP应用分身?[答案:2]

在Android设备上面,应用分身的软件一般来说不是从本地商店下载的,我们去data目录进行查找后发现有一款名为隐私安全的软件有些可疑,进去查找数据

查看数据库后发现存在两个应用的分身

或者此时可以直接采用搜索的方法,默认开发者将该软件的应用名写为分身,我们同步搜索fenshen*

12.分析手机检材,请问机主现在安装了几款即时通讯软件(微博除外)?[答案:4]

13.分析手机检材,请问勒索机主的账号是多少(非微信ID)?[答案:1836042664454131712]

手机大师里面没有默往这个结果。我们去x-ways翻一下这个软件的数据库;这个时候发现需要密码

这个时候可以借用一下川佬的工具:https://github.com/WXjzcccc/ForensicsTool

在里面介绍说默往(通常在shared_prefs/im.xml中的userId的值)

14.分析手机检材,接上问,请问机主通过此应用共删除了多少条聊天记录 ?[答案:2]

这个题目需要注意一个点就是缓存文件要一并导出缓存文件wal才可以找得到被删除的消息

15.分析手机检材,请问会盗取手机信息的APP应用包名是什么?[答案:com.lxlxlx.luoliao]

反编译后在AndroidManifest.xml找到包名

16.接上题,请问该软件作者预留的座机号码是多少?[答案:40085222666]

老套路我们先看MainActivity这个时候发现

疑似存在加密的数据,我可以继续往下翻找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static /* synthetic */ void a(MainActivity mainActivity) {
if (mainActivity == null) {
throw null;
}
try {
String a2 = b.b.a.f.a.INSTANCE.a();
String absolutePath = Environment.getExternalStorageDirectory().getAbsolutePath();
FileInputStream fileInputStream = new FileInputStream(new File(absolutePath + new String(b.b.a.a.a(mainActivity.s0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes()))));
FileOutputStream fileOutputStream = new FileOutputStream(new File(absolutePath + new String(b.b.a.a.a(mainActivity.u0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes()))));
b.b.a.f.a.INSTANCE.a(fileInputStream, fileOutputStream);
fileOutputStream.write(a2.getBytes());
fileInputStream.close();
fileOutputStream.close();
File file = new File(absolutePath + new String(b.b.a.a.a(mainActivity.s0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
if (file.exists() && file.isFile()) {
file.delete();
}
} catch (FileNotFoundException e2) {
e2.printStackTrace();
} catch (NoSuchAlgorithmException e3) {
e3.printStackTrace();
} catch (Exception e4) {
e4.printStackTrace();
}
}

发现存在加密逻辑,此时的加密逻辑很像aes;全局搜索定位到AES加密

进行数据解密得到电话号码为40085222666

17.接上题,恶意程序偷取数据的收件邮箱地址的gmail邮箱是多少?[答案:1304567895@gmail.com]

继续对加密数据进行解密

18.接上题,恶意程序偷取数据的发件邮箱地址是多少?[标准格式:temp1234@gmail.com]

发送邮件需要smtp服务,直接搜smtp即可

19.接上题,恶意程序偷取数据的发件邮箱密码是多少?[答案:qwer123456]

继续解密下一条数据

20.接上题,恶意程序定义收发件的地址函数是什么?[答案:a]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public final boolean a(String str, String str2, List<String> list, List<File> list2) {
try {
this.f302a.a(new e(new String(b.b.a.a.a(this.d.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes()))));
e[] eVarArr = new e[list.size()];
for (int i = 0; i < list.size(); i++) {
eVarArr[i] = new e(list.get(i));
}
this.f302a.a(f.a.f369c, eVarArr);
this.f302a.c(str);
j jVar = new j();
h hVar = new h();
hVar.a((Object) str2, "text/html;charset=UTF-8");
jVar.a((b) hVar);
if (list2 != null && list2.size() > 0) {
for (File file : list2) {
h hVar2 = new h();
hVar2.a(new c.a.f(new c.a.j(file)));
h.b(hVar2, file.getName());
jVar.a((b) hVar2);
}
}
i iVar = this.f302a;
if (iVar != null) {
iVar.a(new c.a.f(jVar, jVar.a()));
jVar.a(iVar);
this.f302a.e();
throw null;
}
throw null;
} catch (Exception e) {
e.printStackTrace();
return true;
}
}

二、计算机取证

1.分析计算机检材,嫌疑人在将其侵公数据出售前在Pycharm中进行了AES加密,用于加密的key是多少?[答案:65B2564BG89F16G9]

丢到取证大师分析一下

发现是efs加密;这个时候我们再仿真的时候就不可以进行重置密码;不然会导致无法查看(若强制修改密码,则会由于EFS加密的关系无法解密文件内容);我们再取证大师中找到用户信息

然后丢给cmd5进行解答

当然也可以导出sam、system文件让mimikatz进行读取ntlm最后再给cmd5进行破解

2.分析计算机检材,身份证为”371963195112051505”这个人的手机号码是多少?[答案:13013524420]

根据加密的脚本我们可以反推出解密的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
from tqdm import tqdm

def aes_decrypt(encrypted_data, key, iv):
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = cipher.decrypt(bytes.fromhex(encrypted_data))
unpadded_data = unpad(decrypted_data, AES.block_size)
return unpadded_data.decode()

key = b'65B2564BG89F16G9'
iv = b'83E6CBEF547944CF'

input_file = "encrypted_data.txt"
output_file = "decrypted_data.txt"

def process_data(input_file, output_file, key, iv):
with open(input_file, "r") as f_in, open(output_file, "w") as f_out:
total_lines = sum(1 for _ in f_in)
f_in.seek(0)
for line in tqdm(f_in, total=total_lines, desc="Processing"):
parts = line.strip().split(',')
index = parts[0]
f_out.write(index + ",")

decrypted_parts = []
for encrypted_part in parts[1:]:
decrypted_part = aes_decrypt(encrypted_part, key, iv)
decrypted_parts.append(decrypted_part)

f_out.write(",".join(decrypted_parts) + "\n")

process_data(input_file, output_file, key, iv)

3.分析计算机检材,对解密后的身份证数据列进行单列去重操作,重复的身份证号码数量是多少?(身份证不甄别真假)[答案:100]

依旧还是采用川哥的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd

df = pd.read_csv('decrypted_data.txt',header=None,names=['序号','姓名','身份证','手机号','性别'],encoding='gbk')
print(len(df['身份证'])-len(df['身份证'].unique()))
男性数量 = 0
异常数量 = 0
for index,row in df.iterrows():
if int(str(row['身份证'])[-2]) % 2 == 1:
男性数量 += 1
if row['性别'] == '男' and int(str(row['身份证'])[-2]) % 2 == 0:
异常数量 += 1
elif row['性别'] == '女' and int(str(row['身份证'])[-2]) % 2 == 1:
异常数量 += 1
print(男性数量,异常数量)

4.分析计算机检材,接上题,根据身份证号码(第17位)分析性别,男性的数据是多少条?[标准格式:100]

5.分析计算机检材,接上题,对解密后的数据文件进行分析,甄别身份证号码性别值与标识性别不一致的数量是多少?[标准格式:100]

6.分析计算机检材,计算机中存在的“VPN”工具版本是多少?[答案:4.4]

进入到仿真系统进行查看,发现了一款名为WinXray的代理软件

我们可以直接在这里查看版本

也可以去x-ways里面进行确认

7.分析计算机检材,计算机中存在的“VPN”节点订阅地址是什么?[答案:https://paste.ee/d/4eIzU]

当然我们可以知道C:\Users\Administrator\AppData\Local 文件夹(针对管理员账户)是操作系统为每个用户账户创建的 本地应用程序数据存储 目录。AppData 文件夹用于保存应用程序的用户特定数据。

1
2
3
4
5
6
7
8
Local:
文件夹存储的是与当前计算机关联的应用程序数据,不会随用户配置文件在不同计算机之间进行同步。它保存的是不需要漫游的临时数据或缓存文件。例如,浏览器的缓存、一些应用程序的本地设置等。这些数据通常只对当前用户有效,并且不会随 Windows 用户配置文件同步到其他设备或远程服务器。

Roaming:
文件夹包含可漫游的应用程序数据。这些数据会跟随用户账户在网络上的不同设备间同步。例如,某些程序的用户设置(如邮件客户端的配置文件)可以在同一网络下的不同设备中保持一致。

LocalLow:
LocalLow 文件夹通常用于低权限运行的应用程序,例如 Internet Explorer 的受保护模式或某些沙盒化程序。这是比 Local 更严格的安全限制环境。

所以此时我们可以进入到该目录下查找该应用程序的数据

8.分析计算机检材,eduwcry压缩包文件的解压密码是什么?[答案:yasuomima]

直接在仿真文件里面进行查找,发现该压缩包密码管理器存在密码

9.分析计算机检材,接上题,请问恶意程序释放压缩包的md5值是多少。[答案:b576ada3366908875e5ce4cb3da6153a]

将该恶意程序拉入pestudio看看这个恶意程序是如何释放压缩包文件的

右键保存下来之后进行计算

b576ada3366908875e5ce4cb3da6153a

10.分析计算机检材,接上题,请问恶意程序记录的洋葱浏览器下载地址是多少?[答案:https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip]

在虚拟机中运行后一个个文件的进行查找

还有一些以.onion结尾的东西,应该就跟Tor有关,还有最后一个链接https://dist.torproject.org/torbrowser/6.5.1/tor-win32-0.2.9.10.zip

这个就应该是Tor的下载地址。

11.分析计算机检材,接上题,请问恶意程序解密了t.wnry后该dll的md5值是多少。[标准格式:全小写]

12.分析计算机检材,接上题,恶意程序运行起来后第一个循环调用了几次taskkill.exe。[标准格式:2]

13.分析计算机检材,接上题,请问@WanaDecryptor@.exe.lnk文件是通过什么函数创建的。[标准格式:Aabcdef]

14.分析计算机检材,接上题,恶意程序修改系统桌面壁纸是在哪个函数实现的[标准格式:sub_xxx]

15.分析计算机检材,VeraCrypt加密容器的密码是什么?[答案:qwertyuiop1]

在”E:\data-backup.dd”下这个数据备份文件

16.分析计算机检材,其中存在一个苹果手机备份包,手机备份包的密码是什么?[答案:75966]

把data-backup挂载后,会得到苹果手机压缩包;解压后使用passware kit爆破手机文件Manifest.plist

17.分析计算机检材,接上题,机主实际篡改多少条微信数据?[标准格式:1]

18.分析计算机检材,接上题,机主共存款了多少金额?[答案:98万]

考点在于小西米语音数据库 im5db;使用川哥的iTunes备份解析工具对该苹果手机备份包进行提取

https://github.com/WXjzcccc/iTunesBackupTransfer

19.分析计算机检材,在手机模拟器中勒索apk软件的sha256值是什么?[答案:340bd211955996c5d62bbde94a0bed4eb3a7965b23af52114991bca02346928e]

我们先找到手机模拟器的备份文件,在user/administrator/document

拷贝下来之后将后缀改为zip然后再继续导入x-ways进行分析,再app的目录下发现异常文件

此时的第一个app为诚信,第三个为bilibili;那么第二个这个文件就是异常文件

20.分析计算机检材,接上题,请问勒索apk软件的解锁密码是什么?[答案:anzhuo.com]

三、流量分析

四、服务器取证

1.分析服务器检材,服务器会做登录密码验证,该登录验证文件位置在?[答案:\etc\profile.d\check-system.sh]

/etc/profile.d是一个用于存放系统范围内的环境变量和启动脚本的目录。

1
2
3
4
5
这种脚本通常会放在以下几个目录和文件中:
/etc/profile
/etc/profile.d/
~/.bashrc
~/.profile

此时我们可以找到一个check文件,该文件对登录时的密码做了校验并且如果校验失败便会删除一些文件

2.分析服务器检材,服务器ssh端口是多少?[答案:12320]

此时的ssh的配置文件在\etc\ssh\sshd_config

在这里需要先提一嘴linux手动仿真并绕过密码的一个方法:单用户模式;当仿真结束后我们启动虚拟机,并按下e键;进入后我们在Linux16这一行后面加上rw single init=/bin/bash,随后按下ctrl x

首先是手动仿真,因为利用美亚的仿真会导致系统一直出现问题;后续选择了使用ftk进行仿真

然后进行绕过密码后找到那个检查脚本进行删除;改完密码后重启机器。

接下来就可以netstat -anpt

3.分析服务器检材,服务器docker内有多少个镜像。[答案:7]

4.分析服务器检材,服务器内sqlserver默认账号的密码是?[答案:]

接下来使用docker inspect 命令用于获取 Docker 容器、镜像、网络或数据卷的详细信息。

5.分析服务器检材,服务器内sqlserver存放了阿里云存储下载地址,该下载地址是?[答案:https://xinfenfa.oss-accelerate.aliyuncs.com]

我们将sqlserver启动(注意 虚拟机分配的内存大小,太小可能开不起来);然后连接数据库后进行翻找

6.分析服务器检材,服务器内sqlserver内“cmf_user_action_log”表,表内存在的用户操作日志,一共操作次数是多少?[答案:99684318]

7.分析服务器检材,该服务器正在使用的数据库的持久化目录是什么?[标准格式:/data/mongo]

可以先找中间件的配置文件

发现服务器名称;跟进去查找

发下使用的是mongo数据库,查看其配置信息

8.分析服务器检材,该网站后台正在使用的数据库有多少个集合?[答案:13]

在上面查找中间件时已经将账号密码给出来了,直接进行连接即可

9.分析服务器检材,该网站的后台登录地址是?[答案:mingadmin/common/login]

翻找数据库

10.分析服务器检材,该网站后台使用的管理员加密算法是?[答案:BCRYPT]

\opt\bl.dsnbbaj686.fit中的源码保存下来做代码审计;发现在\opt\bl.dsnbbaj686.fit\www\app\appmanager\controller\Admin.php存在密码处理的操作函数

我们直接全局搜索看看有没有对这个函数的定义

发现是BCRYPT

11.分析服务器检材,该网站最早使用超级管理员进行删除管理员操作的IP地址是?[标准格式:117.132.191.203]

可以发现针对删除管理员的操作的id为26

进行筛选

12.分析服务器检材,该网站后台上传过sha256值为“b204ad1f475c7716daab9afb5f8d61815c508f2a2b1539bc1f42fe2f212b30d1”的压缩包文件,该文件内的账单交易订单号是多少?[标准格式:20240321000000005443369778283185]

利用命令进行查找find . |grep "\.zip"

接着我们对这三个文件进行hash计算最后得到UeOupJ14.zip为目标zip

发现是一张图片

13.分析服务器检材,该网站存在网站数据库备份功能,该功能的接口地址是?[答案:/appmanager/databackup/export]

直接搜索备份

/appmanager/databackup/export

14.分析服务器检材,该网站存放银行卡信息数据表中,其中信息数量前十的公司对应旗下visa银行卡一共有多少金额?[标准格式:100.00]

15.分析服务器检材,该网站在2023年二月一共获取了多少条通信记录?[标准标准格式:100]

16.分析服务器检材,该网站的一条管理员信息存在数据篡改,请分析是哪个管理员信息遭到篡改,该管理员用户名是?答案:xYpMLuROhNl]

创建时间在登录时间之后

推荐

在这里也推荐一下川哥的工具系列:https://github.com/WXjzcccc