19年长安杯电子数据取证复现

文章发布时间:

最后更新时间:

案情简介

在一起电诈案件中,受害者称自己的银行卡被他人冒用,曾收到假冒公安的短信,因为自己在一个 P2P 网站中理财,假冒公安称该网站已被列外非法网站,要自己到公安备案网站填写自己的信息,并帮助自己追回本金,因此信以为真,在网站上填写了自己的信息和绑定的银行卡信息;办案机关推测嫌疑人可能是获取了 P2P 网站中的注册用户信息,从而进行定向诈骗,因此调取了 P2P 理财网站的服务器,现委派你对该服务器进行电子数据取证。

检材一

你获得该 P2P 理财网站服务器硬盘镜像文件“检材 1.E01”,根据这个镜像文件,回答下列问题

  1. image-20221013160530221

5EE0B3809807BF8A39453695C5835CDDFD33F65B4F5BEE8B5670625291A6BC1C-> C

  1. image-20221013161110250

火眼中查看即可知 CentOS Linux release 7.6.1810 (Core) -> D

  1. image-20221013161150255
1
uname -a

image-20221013161330404

A

  1. image-20221013161349738
1
fdisk -l

image-20221013161557416

B

  1. image-20221013161626098

关于LVM

上图可知LVM分区从2099200开始 -> C

  1. image-20221013162040061

火眼证据里面分区详情有对此的描述 D

image-20221013162607008

如果不确定分区0和分区1,可以在仿真中查看LVM逻辑卷的详细信息

1
lvdisplay

image-20221013163143371

  1. image-20221013163234973

前面我们已经知道了root逻辑卷的扇区数为35643392,每个扇区数为512byte,相乘得到18,249,416,704 -> C

  1. image-20221013163637363

首先看下对外开的端口,有docker

image-20221013163744016

看下是否有正在运行的docker

image-20221013163916000

有个映射到80的,并且内部服务中间件为nginx,可以大致确定外端口应该就是8091 -> D

  1. image-20221013164018945
1
docker images | wc -l

image-20221013164155658

C 错了错了,还得去掉表头 应该是B

  1. image-20221013164215554
1
docker version

image-20221013164543404

C

  1. image-20221013164748050
1
docker ps -a | wc -l

11 -1 = 10 -> A

  1. image-20221013165016914

C

或者可以直接docker info一目了然

image-20221013170418557

  1. image-20221013165037697

image-20221013165135600

D

  1. image-20221013165153036

B 错了错了。。 仔细看这个容器并没有外映射主机端口 D

  1. image-20221013165420518

image-20221013165457128

根据COMMAND和端口可以推断出是ssh -> B

  1. image-20221013165620045

找外映射是39999 -> C

  1. image-20221013165730881

image-20221013165756982

C

  1. image-20221013165916803

根据容器的IMAGE找镜像 -> D

image-20221013170031715

  1. image-20221013170104133

B

  1. image-20221013170148698

ssh的排除一下,16的里面就是个空nginx

可以定位到53里面

1
docker exec -it 53 /bin/bash

image-20221013170915221

B

  1. image-20221013170935598

针对docker文件结构 参考羊学长http://www.ga1axy.top/index.php/archives/65/

1
docker inspect 53

​ 根据学长的说明,应该就是指的GraphDriver字段中对应的UpperDir层

image-20221013190005910

A

  1. image-20221013190319838

nginx常见日志路径/var/log/nginx,但这道题不是

一个个找,可以发现是 C

image-20221013191224001

  1. image-20221013191248453

image-20221013191516187

在后面日志host中可以看到(结合端口号)192.168.184.128 后面看着像是在猜密码(案情提到了嫌疑人应该是拿到了网站注册用户信息)-> D

  1. image-20221013191934491

网络模式详解:https://www.cnblogs.com/zuxing/articles/8780661.html

同样,我们还是可以通过下面命令中的Networks字段来定位连接模式

1
docker inspect 53

image-20221013193351552

53容器是bridge

我们来观察详细的桥接模式信息

1
docker network inspect bridge

image-20221013193531472

A

  1. image-20221013193600812

B ??? 不太懂逻辑

  1. image-20221013194248727

刚才日志的头部即可看到 C

  1. image-20221013194446066

image-20221013195159709

所以应该是 A

错了错了,既然是nodejs起的Web服务,那么应该就是server/index.js。原来config下的那个是vue的配置文件

有个README文件,可以看到一些提示

image-20221013195549026

  1. image-20221013195636689

C

  1. image-20221013200456193

    在/server/db.js中可以看到 D

    image-20221013201105637

  2. image-20221013201136502

同上 D

  1. image-20221013201159555

同上 A

  1. image-20221013201213439

同上 D

  1. image-20221013201227996

同上 B

  1. image-20221013201309446

这一般就是查看shell的历史记录,默认写入~/.bash_history(注意有好几个.bash_history,要的是主机里的)

image-20221013202627708

可以看到加密的就是自己 A

你获得了该 P2P 理财网站数据库服务器硬盘镜像文件“检材 2.E01”,根据这个镜像文件,回答下列问题

检材二

mongodb

1
2
3
4
5
6
7
8
# mongodb.conf
/etc/mongod.conf

# 数据库文件位置
dbpath=/var/lib/mongodb

#日志文件的路径
logpath=/var/log/mongodb/mongodb.log
  1. image-20221013203739156

我们已经知道了数据库是mongodb

默认数据文件路径 /var/lib/mongodb/

image-20221013204106204

D

  1. image-20221013204154965

C

  1. image-20221013204746356

从配置文件可以找 -> C

image-20221013204852185

启动mongo服务

1
mongod --dbpath /var/lib/mongo
  1. image-20221013204937618

数据库中找不到任何东西,只能从日志分析入手。直接看感觉好乱,配合一下检材一的代码

image-20221013215413460

首先关注一下api.js中给出的登录/注册业务代码,存在username和password字段,并且结合前面服务器的ip

image-20221013215626052

由此我们定位到了用户表名为user

  1. image-20221013215926711

结合前面注册用户时取出的数据校验方式可知没有加解密,而是直接进行的比较,因此未加密 -> A

  1. image-20221013232108472

image-20221013232048030

可以看到用户表,被修改过用户密码 -> B

  1. image-20221013232200921

直接全局搜索针对数据库的操作,删库db.dropDatabase() -> C

image-20221013233256392

  1. image-20221013233319525

D

  1. image-20221013233356684

这个看日志贼烦,换个思路,直接去看登录所在服务器的时间即可。嫌疑人的ip是192.168.184.133

image-20221013233727808

D

  1. image-20221013233913587

18:09:37.393+0800 -> A

检材三

经调查,你扣押获得了一台嫌疑人使用过的 VPN 服务器,并用服务器硬盘制作成“检材 3.E01”镜像文件,根据该镜像文件,回答下列问题

  1. image-20221014205519350

在历史记录中可以找到启动的协议服务 -> B

image-20221014205628617

  1. image-20221014205640677
1
timedatectl

image-20221014205714540

D

  1. image-20221014205741354

同样直接在历史记录里找 -> A

image-20221014205831237

  1. image-20221014205921664

肯定在配置文件中记录了(得细心看注释。注意,配置文件应该是/etc/pptd.conf(非option那个

image-20221014211142292

并且为了验证,我们可以去看一下wtmp文件的访问记录,确实有ppp协议的访问

image-20221014211423199

  1. image-20221014211448328

image-20221014211546967

B

  1. image-20221014211746879

这会看的才是option文件 -> D

image-20221014211823184

  1. image-20221014212059247

巧了,历史记录也有 C

  1. image-20221014212243268

这个就得去日志里翻一下了,时间已经给出来了 -> A

image-20221014212532613

  1. image-20221014212550614

白给,D

  1. image-20221014212651234

nnd,是题目写错了,应该是172.16.80.188 那就直接是B

image-20221014213235827

  1. image-20221014213857344

还是得看日志

注意是北京时间,我们所在时区与北京时区相比慢2小时,所以需要+2

image-20221014214920674

D

  1. image-20221014215013115

这个还是看历史记录,直接定位效率比较高 -> B

image-20221014215427354

  1. image-20221014215451696

image-20221014215533713

还要保存下来,看看那个被rm了

image-20221014215627769

两个相比对,可以知道是D

  1. image-20221014215658035

最后保存下来的有两个数据包,都是是基于tcp协议,我们都看一眼

image-20221014215847692

  1. image-20221014224143042

呜呜不太会wireshark,大致搜了一下,A

image-20221014224217636

你抓获了嫌疑人,并扣押了嫌疑人笔记本电脑,制作笔记本硬盘镜像文件“检材 4.E01”,请根据镜像文件,回答下列问题

  1. image-20221015204135796

火眼仿真镜像,可以看到账户信息

image-20221015204231943

对于哈希,直接计算即可1E646DEC202C96B72F13CC3CF224148FC4E19D6FAAAF76EFFFC31B1CA2CDD200 D

  1. image-20221015204350456

image-20221015204459359

A

  1. image-20221015204551035

image-20221015204813762

C

  1. image-20221015204846078

image-20221015204937090

C

  1. image-20221015205003834

image-20221015205304794

A

  1. image-20221015205534505

image-20221015205901431

桌面上有三个软件,点开看看就知道 -> A

  1. image-20221015205946517

    结合一下 -> D

image-20221015210137763

  1. image-20221015211810241

image-20221015211848627

D

  1. image-20221015211912859

image-20221015212002159

D

更准确的话应该去浏览器历史记录里找(不一定 但是这次是在谷歌历史记录里有

image-20221015212123979

  1. image-20221015212751780

A

  1. image-20221015212836724

连接至服务器应该就是用的xshell,我们在其中可以找到会话文件

image-20221015213908763

然后去定位一下该文件的活动时间即可 -> A

image-20221015214245629

  1. image-20221015214303250

image-20221015214427944

时间上很相近 B

image-20221015222032016

用修改时间去减去创建时间吧? C

  1. image-20221015222110609

有点坑,文件显示路径在D盘,但是仿真以后发现D盘都没了。。。

这道题得去源IP服务器上找到那个文件再计算哈希。。(在检材一

image-20221015224456522

077D894557EDF44E5792E0214E0F1C46B9B615BE11AC306BCCE2AF9D666F47D5 -> D

  1. image-20221015224534961

找到一个ios备份

image-20221015225037068

提取出来分析,竟然还要密码,桌面上一直有个便签排上用场了

image-20221015225218760

image-20221015225449463

C

  1. image-20221015225505800

image-20221015225917449

B

  1. image-20221015225931076

image-20221015230016175

image-20221015230040693

A

  1. image-20221015230053575

    1649840939 -> A

  2. image-20221015230132587

image-20221015230220857

C

  1. image-20221015230253121

image-20221015230423070

一个是880,一共两笔交易,那就是买了两个 -> B

两个软件的下载链接

image-20221015230534241

另一个是加密程序

image-20221015230604437

image-20221015230739148

image-20221015230837881

image-20221015230959514

image-20221015231027718

D

  1. image-20221015231040021

image-20221015231214696

C

  1. image-20221015231227037

思路突然断了,回去看看题干受害者称自己的银行卡被他人冒用,曾收到假冒公安的短信,想起来了,nnd这么多题,前面都快忘了

image-20221015231704778

C

  1. image-20221015231719939

这个肯定是在另一台设备上了,备份软件上还有虚拟机的文件,打开后看下历史记录,可以发现这个设备上有个网站

image-20221015232549696

看到存在数据库文件,导出来看看

image-20221015232918987

打开以后发现信息不全,感觉是没恢复快照的缘故,因为我们可以知道受害者的手机号,但是和数据库匹配不上

image-20221015233609692

image-20221015235630286

好麻烦,不太会搞&&&&&&&&&&&&&&&&&

  1. image-20221016003003659

回到刚才的浏览器历史记录 -> C

image-20221016003158952

从时间线看也是这样

image-20221016004237758

  1. image-20221016003222817

考的都是回忆,之前xshell有过会话建立文件,且也有密钥文件

image-20221016003914608

时间上相近,且连接确实建立了,说明用的就是 B

image-20221016003745038

  1. image-20221016004301111

    确实是综合题,转头还要看以前的线索。这道题的线索在嫌疑人的vpn服务器上,他曾经抓过数据包,那么发邮件的话肯定会走代理,也就会被截取到,怪不得有两个数据报,前面那个没啥tcp信息

    可以看到时间为 A

    image-20221016005753933

  2. image-20221016010015937

上题 B

  1. image-20221016010055600

这个就很难了,所有能重构网站的线索都是分散的,我们只能靠着wp一点点来呜呜呜

首先存放网站的镜像在检材4的C盘底下,经过了bitLocker加密

image-20221016010555450

  1. BitLocker为我们第一个需要的文件,首先在火眼分析上找发现源文件已不在,因而我们的思路转变为找密钥文件

  2. 在QQ消息中有个线索,因此我们知道了密钥文件一定是备份了另存在其他地方,结合邮件那就能确定肯定是邮件发出去了,那我们就把邮件导出来

    image-20221016011205722

  3. 以IMF的方式导出文件,得到了四个EML格式的文件

    image-20221016011455884

  4. 打开后其中有一个邮件附带了密钥文件,下载下来,解压,发现还需要解压密码。。。

    image-20221016011717902

  5. 那么思路继续转为解压缩包,其中检材4的另一个线索给了我们,也就是桌面上的字典文件,拿个工具跑一下

    image-20221016011908581

  6. 工具爆破压缩包

网上下不到什么好的win爆破软件(全是收费+广告),最后还得靠kali

https://blog.csdn.net/weixin_46081055/article/details/119594510

这里利用hashcat+rar2john破解

首先通过rar2john将rar中的密码哈希提取出来,可以看到hash算法是RAR5

image-20221016231051497

然后就是用hashcat配合我们的字典爆破,nnd 好像kali的hashcat有问题,换win跑

image-20221016232413262

最后换成16进制即可,得到!VCHWEDfdfd2IOA564356:":"

得到BitLocker,赶紧去解压硬盘494208-639155-079684-230648-428923-176902-004312-663696

可以看到得到了三个文件

image-20221016233109578

其中db应该是对应检材二的数据库服务器文件,也就是网站重构需要的数据库部分;decrypt文件解压,解压密码又是我们熟悉的niuroumian6

看了wp发现没人重构出来网站,都是通过零零散散的线索拼凑出来的答案。

比如这道题我们在分析检材二的时候曾查过数据库日志,里面曾对用户名为admin的账号密码作过修改,因此答案就是C

  1. image-20221016235330762

we.tar解压后得到了网站的模板图片

image-20221016235738873

image-20221016235757402

D

  1. image-20221016235906645

这个被加密数据库就是db,计算即可8dcf2f71482bb492b546eec746c714be9324ea254778bf5cbb9e5115b30c77a2

A

  1. image-20221017000133832

首先应该明确该ddos程序就是指的嫌疑人购买的runit

  1. image-20221017000731164

逆向方面的让队友来吧。。。

  1. image-20221017000807822

我们找到后解压查看,可以看到就是个密钥文件

image-20221017001035181

  1. image-20221017001052546

image-20221017001400725

C

  1. image-20221017001417436

还是找历史记录,前面我们已经知道其来自edge

https://pan.forensix.cn/seafhttp/files/8fdf1982-e323-4efe-ae28-2bba21b5162c/runit -> D

  1. image-20221017001546438

image-20221017001631929

B

  1. image-20221017001658144

​ md,只能在时间线上找到 -> B

image-20221017002248597

  1. image-20221017002313572

image-20221017002427531

完成应该就是修改时间 -> C

  1. image-20221017002522653

    考察细心了,有好几个浏览器呢

    这个是谷歌的, 没有匹配上的

image-20221017002655188

这个是edge,有匹配上的 -> A

image-20221017002955879

  1. image-20221017003042561

浏览器上找不到了,按照选项来看 -> B

image-20221017003441323

  1. image-20221017003459687

D

终于做完了… 感觉是目前做的最难的一套,综合考察能力很强。对逆向和重构还不是很会