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

文章发布时间:

最后更新时间:

案情背景

2021年4月25日,上午8点左右,警方接到被害人金某报案,声称自己被敲诈数万元;经询问,昨日金某被嫌疑人诱导果聊,下载了某果聊软件,导致自己的通讯录和果聊视频被嫌疑人获取,对其进行敲诈,最终金某不堪重负,选择了报警;警方从金某提供的本人手机中,定向采集到了该果聊软件的安装包—zhibo.apk(检材一),请各位回答下列问题:(题目中需要通过分析出来的答案对检材二三四五解压,解压密码为IP的情况,需要在密码后增加-CAB2021)

检材一

  1. image-20220721234752723

利用雷电智能分析APP即可

image-20220721234825350

3fece1e93be4f422c8446b77b6863eb6a39f19d8fa71ff0250aac10f8bdde73a

  1. image-20220721234916791

见上图 plus.H5B8E45D3

或者在AndroidManifest.xml

image-20220722000424563

  1. image-20220721235043331

image-20220721235207131

应用唯一标识就是给apk打包的专业厂商对应的调证值,方便公安取证时溯源找到对应厂商,每个厂商对应唯一

H5B8E45D3

  1. image-20220722001219294

image-20220722001135949

BACDE

  1. image-20220722002012089

利用软件自带的抓包分析工具观察HTTPS数据包

image-20221010173838447

同时可以观察请求体中所带的数据内容

image-20221010173901338

初步分析有手机号码、验证码,还有一些后续才能发现

  1. image-20221010174058361

POST

  1. image-20221010174117116

从包中也可以得到www.honglian7001.com

  1. image-20221010174217333

apk逆向分析,由框架编写,主要业务逻辑并不在JAVA,而是在js代码当中。整个源码核心相关内容在资源文件当中

image-20221010175609846

index.html中的js脚本存在加密混淆,加密方式为sojson.v4

image-20221010175757703

找个在线网站进行反混淆,可得到整个脚本源代码

全局搜索变量名apiserver

image-20221010180237478

http://www.honglian7001.com/api/uploads/

同时,可以看到代码里还含有对定位权限的相关提示输出逻辑,说明了第五题也会向后台回传定位信息

image-20221010181209196

  1. image-20221010180322089

往后找短信发送业务代码

image-20221010180449124

可以分析出来,接口地址为http://www.honglian7001.com/api/uploads/apisms

  1. image-20221010180600555

由于是运行时产生的数据库,所以需要利用到运行时的hook技术,在关键函数中hook出有效信息。这里即是数据库文件以及下一题中提到的初始密码

nnd,弘连给的软件hook不出来,报错系统进程找不到,只能去源码里翻了

在类io.dcloud.WebAppActivity中能找到一个方法(其实不太能分析出是否是运行时产生的,不过从名字ad来看可能是),其中新增数据库名为test.db

image-20221010192641950

  1. image-20221010192947468

从前面密码生成逻辑可以看出,字节数组先转成16进制,再截取第2-3位并求MD5

1
2
3
4
5
6
from hashlib import md5
import binascii

b = bytearray([97, 98, 99, 100, 101, 102])
result = md5(binascii.hexlify(b)[1:3])
print(result.hexdigest())

得到c74d97b01eae257e44aa9d5bade97baf

检材二

  1. image-20221010194750175

E6873068B83AF9988D297C6916329CEC9D8BCB672C6A894D393E68764391C589

  1. image-20221010200216791

案发时间为2021-04-25 8:00之前,我们挂载镜像后输入last查看登录记录

image-20221010201114596

可以看到为192.168.110.203

  1. image-20221010201155419

目前还不知道,后面可发现该服务器就是根据不同的条件来转发请求到其他服务器,也就是负责负载均衡的职能

  1. image-20221010201858122

在取证分析的history命令历史记录中多次出现可疑目录

image-20221010202357726

image-20221010202432386

看着像node.js编写的一套网站,在README.txt中给出了相关指示信息

image-20221010202630312

可以看到服务器配置端口在了80

  1. image-20221010202655337

node.js启动命令可以百度,或者历史记录里也有

image-20221010202735066

node app.js

  1. image-20221010202836105

这里可以定位至controller目录下,关注ADProxy.js

image-20221010203443192

可以看到判断的条件是源IP地址的第3位

  1. image-20221010203815170

经上一题分析,可以看到会分发到_proxy50对应的对象上,也就是IP:192.168.110.111

image-20221010203900478

  1. image-20221010203945665

    同上可知,有3台目标服务器

  2. image-20221010204019966

考察日志审计,我们继续去看logs目录,日志文件还挺多的。初步定位在2021-4-24这一天

image-20221010204137801

查看一下2021-4-24-6-26.log

image-20221010204400539

可以看到所有流量都转发到了192.168.110.113那台服务器上,出现多次192.168.110.142/192.168.110.203/192.168.110.252,需要进一步排查具体时间

192.168.110.252

  1. image-20221010205113513

由上题可知转发到了192.168.110.113

检材三

根据前面转发服务器的IP可以将目标镜像定位到web3.E01,挂载分析

如何判断?访问镜像的每一个网卡信息所写的静态IP来判断(未开启DHCP)

image-20221010231051158

配置文件位置/etc/sysconfig/network-scripts

  1. image-20221010213956305

205C1120874CE0E24ABFB3BB1525ACF330E05111E4AD1D323F3DEE59265306BF

  1. image-20221010215214231

这道题没法马上出,在检材4中可以找到,先放一放。因为取证软件直接帮我们绕过了开机密码(

在检材4中的Xshell里我们可以看到连接记录中保存了用户名和连接密码honglian7001

image-20221012183421140

  1. image-20221010215921338

宝塔的一些字符在虚拟机上直接显示不出来,设置一下DHCP的网段,使得和主机相通,利用Xshell进行连接

​ 然后输入bt即可打开宝塔面板的管理界面,根据指示获得信息

image-20221010234529917

用户名就是 hl123

  1. image-20221010234835795

首先了解一下宝塔面板的整个目录结构,可知重要的服务功能集中在/www/server/panel/tools.py

image-20221011181436876

查看该文件即可定位到重置密码函数处set_panel_pwd,这里我们也可以看到重置密码固定了id的值为1,也就是只能修改默认用户的密码

image-20221011181904235

  1. image-20221011181941782

从上一题的代码可以分析到使用的哈希算法为md5

  1. image-20221011182135471

再来看这段代码,密码经过md5后又和参数uid,一起传入函数public.password_salt

image-20221011182627730

同时在头引用里可以看到该函数所在文件的路径,分析可得路径是/www/server/panel/class/public.py

image-20221011182736857

提取出该文件,定位函数代码位置

image-20221011182938940

可以看到里面还有两层md5哈希,所以总共执行了3次md5

  1. image-20221011183207770

password_salt中同样调用了chdck_salt(),我们看下

image-20221011184110435

盐的值存在了数据库里,且盐值字段可定位到sqlite_master.users.salt字段

我们在/www/server/panel/class/db.py文件中可以找到数据库文件的位置

image-20221011202042799

打开db文件找到对应的字段即可,v87ilhAVumZL

image-20221011202803742

  1. image-20221011202849566

我们知道宝塔面板相应站点的根目录为/www/wwwroot,查看一下

结合前面检材一所找到的域名我们知道绝对路径应该是/www/wwwroot/www.honglian7001

我们可以手动测试一下宝塔管理面板,由于默认密码登录失效,需要我们重新修改一下密码

image-20221011203336892

登录后访问管理页面,里面存在一个搭建的TP5框架网站。

  1. image-20221011203630583

由于面板上并未看到有数据库的管理,所以数据库一定是在另一台服务器上。实现了一个站库分离的架构

在网站app/database.php中我们可以找到数据库的相关配置,其中就有IP地址192.168.110.115(还能排除一个IP)

image-20221011204128212

  1. image-20221011204228661

参考前一题,可知wxrM5GtNXk5k5EPX

  1. image-20221011204337318

在宝塔面板中我们直接去访问网站会报错,因为并没有成功连接上数据库服务器,导致网站并未完整运行起来。数据库的部分在检材5。我们目前还是只能做代码层面的分析,路由里没有直接写后台相关的路径,但是观察目录结构可以发现主要业务代码都是在/admin目录下,所以可以推断出后台界面的入口为/admin

关于salt值,在app/admin/common.php中可以找到lshi4AsSUrUOwWV

image-20221011210917632

  1. image-20221011210952306

这个不得不重构网站了,因为密码内容肯定在数据库里存着,我们挂载上检材5重建数据库。

挂载上容器后发现里面有三个raid文件,看来是要工具进行raid重组数据库

直接用工具R-Studio一把梭

image-20221011213438141

直接创建镜像文件然后仿真软件加载试试。注意创建镜像的时候应选择逐字节镜像,不然会仿真失败

验证一下IP是否没问题

image-20221011215405446

重构网站成功!

image-20221011215622026

我们已经知道了数据库的用户名和密码,直接连即可

image-20221011224045137

然而对照前面的代码我们知道admin密码是经过加密存储在数据库当中。我们虽然可以通过改密码的方式来绕过登录,但是这里想要直接获得密码明文信息的话只能通过日志分析的方式

首先日志时间定位到2021-04-24,可以看到值为security

image-20221011224911463

  1. image-20221011224954808

    看上面代码可以知道进行了3次哈希计算

  1. image-20221011225049624

登录后台,一共6002条

image-20221011225156971

同时每台设备能获得到的信息,我们也能准确获得,从而确定了检材一中的答案

image-20221011225459650

  1. image-20221011225549279

这个还没法确定具体的时间,所以无法准确定位,只能锁定在这4台设备上

image-20221012150122070

由检材4聊天记录中可以定位到具体直播软件的安装时间,基本上信息泄露出去也在这个点上

对比时间相距最小的,我们可以知道手机号为18644099137

image-20221012183640666

  1. image-20221011230240455

检材四

关于BitLocker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BitLocker 驱动器加密恢复密钥 

要验证这是否为正确的恢复密钥,请将以下标识符的开头与电脑上显示的标识符值进行比较。

标识符:

3BC73D1D-E5B0-4592-B9D6-42D0A306B625

如果以上标识符与电脑显示的标识符匹配,则使用以下密钥解锁你的驱动器。

恢复密钥:

511126-518936-161612-135234-698357-082929-144705-622578

如果以上标识符与电脑显示的标识符不匹配,则该密钥不是解锁你的驱动器的正确密钥。
请尝试其他恢复密钥,或参阅 https://go.microsoft.com/fwlink/?LinkID=260589 以获得其他帮助。

我们直接强行加载镜像,火眼分析在未加密分区中可以找到恢复密钥的文件

image-20221012152542182

然后根据密钥重新加载镜像即可

  1. image-20221012145651723

E9ABE6C8A51A633F809A3B9FE5CE80574AED133BC165B5E1B93109901BB94C2B

  1. image-20221012153322424

参见上面,511126-518936-161612-135234-698357-082929-144705-622578

  1. image-20221012154612236

火眼仿真可以直接出12306

image-20221012154630488

  1. image-20221012154647326

Chrome浏览器中,我们找到了后台网站的相关历史记录

image-20221012154811902

  1. image-20221012154836169

应该指的是Demon用户,存在一个zip文件,计算哈希即可

0DD2C00C8C6DBDEA123373F91A3234D2F07D958355F6CD7126E397E12E8ADBB3

image-20221012154943333

  1. image-20221012155054244

image-20221012155825954

什么是IMEI?

1
2
3
4
国际移动设备识别码(International Mobile Equipment Identity,IMEI),即通常所说的手机序列号、手机“串号”。
IMEI用于在移动电话网络中识别每一部独立的手机等行动通讯装置,相当于移动电话的身份证,储存在移动设备中,可用于监控被窃或无效的移动设备。
所有的设备都有唯一的IMEI么?
IMEI用于标示一台独立的设备,双卡类的手机因为有两个SIM卡插槽,被归类为两台设备,因此如果您使用的是双SIM卡的手机,你会看到两个IMEI号,每一个SIM卡插槽一个。

868668044204431

  1. image-20221012165343100

从开头的背景描述中我们得知受害者姓金,然后快速定位几个聊天软件,可以得知是伊对

image-20221012165601342

  1. image-20221012165639079

看聊天记录就知道啦https://cowtransfer.com/s/a6b28b4818904c

image-20221012165722877

  1. image-20221012165838264

直接定位即可 wxid_op8i06j0aano22

image-20221012170032485

  1. image-20221012170055719

image-20221012170202413

1649840939

  1. image-20221012170339435

通过分析PC机我们能获得的信息其实不多,嫌疑人主要是通过PC机来连接一些数据库和服务器,以及网站管理相关,结合前面我们获得到了一个压缩包文件,大小为8.73G,很明显又是一个容器。提取出来进行分析,解压密码即为本机的开机密码12306

火眼仿真挂载

image-20221012185816855

仿真之后查看用户痕迹可以发现两个可疑文件,再结合桌面上的VeraCrypt,我们无理由不怀疑这个小白鼠也是个容器文件,而key.rar为对应的密钥文件,我们尝试挂载

image-20221012190456852

挂载后便可以看到对应的受害者有各种的目录,也就是说这个小白鼠.txt就是我们要找的容器文件,计算一下hash

image-20221012191013010

1
certutil -hashfile "xxx" SHA256

9C4BE29EB5661E6EDD88A364ECC6EF004C15D61B08BD7DD0A393340180F15608

  1. image-20221012191556238

首先,我们在管理容器中拿到了郭先生的通讯录信息,进而我们去后台网站比对一下即可

image-20221012191656395

15266668888

粗心了粗心了,文件名就是。。。

image-20221012191855095

  1. image-20221012191906249

从前面目录可知有5个受害者信息

  1. image-20221012191938278

解压后是一个转账的图片,计算一下哈希值即可

image-20221012192134614

cd62a83690a53e5b441838bc55ab83be92ff5ed26ec646d43911f119c15df510

  1. image-20221012192211295

首先最直接的转账在这个容器里 2000

其次是几个聊天记录里的转账

QQ 600 还有两笔,其中一笔指的就是容器中的账单

image-20221012192402352

另外一笔比较隐晦,在检材五的数据库服务器中有记录 1000

image-20221012193031062

微信 2000

image-20221012192449838

伊对 1000

image-20221012192608020

共计 1000+2000+1000+600+2000=6600