电子数据取证

活取证:

抓取文件metadata(访问记录)、创建时间线、命令历史、日志文件、哈希摘要、内存等等

采用未受感染的程序进行取证

U盘、网络 收集证据

死取证:

关机后对硬盘进行镜像操作

电子取证比赛考察范围

Windows

macOS

UNIX/Linux

移动终端

网络数据取证 等等

Linux取证场景

日志检查

系统的开关机,用户登录,各种的服务的启动、关闭、故障,用户的操作历史等等,都会在本地或者其他地方留下痕迹

容器检查

容器虚拟化可以方便地在服务器上部署服务群集。VM、Docker、K&s(Kubernetes),虚拟机->容器虚拟化->虚拟集群

文件分析

分析应用程序的工作目录,寻找引用属性、配置,从而进行场景复现和证据收集

Linux FHS

说明 目录
/ 根目录,根目录下一般只有以下文件夹,没有文件
/bin 存放了系统命令的可执行文件,例如cat、vi,相当于Windows的系统环境变量PATH?
/home 用户文件夹,例如/home/user1,/home/user2
/usr 存放了用户应用的可执行文件、代码、动态链接库等等,相当于Windows的用户环境变量PATH
/usr/bin 用户安装的应用可执行文件
/usr/doc linux文档
/usr/include 头文件目录
/usr/lib 存放动态链接库、软件包配置文件
/usr/man 执行man命令显示的帮助文档
/usr/src 源代码,例如linux内核源码:/user/src/linux
/usr/local 本机单独增加的命令、动态链接库
/root root用户的用户文件夹被单独拿出来放到root目录里,不在home目录里
/etc 存放了系统配置,例如release
/opt 可选应用程序的安装目录
/dev 存放设备文件(分字符设备和块设备)
/boot 系统引导
/lib 存放跟文件系统中的应用程序所需要的共享库级内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。
/tmp 临时文件夹
/var/log 日志
/lost+found 意外丢失的文件
/proc 虚假的目录,磁盘中并不存在,其中的内容是系统映射出来的信息

日志

用户登录与操作历史

wtmp文件:记录了用户登录历史和登陆时间

btmp文件:记录了未能成功登录的用户名、时间、来源

.bash_history:在每个用户的用户文件夹中,记录了该用户使用Bash执行过的命令

Others

FTP的登录记录

MySQL的登陆记录

修改root密码

方案一:

添加grub启动参数 rw init=/bin/sh 或者 sysroot/bin/sh

chroot & passwd

虚拟机方面

使用取证大师挂载到本地,然后在添加设备中添加RAID硬盘组本地磁盘进行重组

image-20211013002605156

导入虚拟机时注意使用转化好的虚拟磁盘(需要全部导入,并且一般选取其中最大的可能包含操作系统的放在首位导入)

image-20211013002917659

image-20211013003021252

对其中 ro进行改写为 rw init=sysroot\bin\sh, 即可绕过密码进入系统

后输入chroot sysroot/ 更换根目录

之后就可以用passwd来设置新密码

输入exit后reboot来重启

方案二:

挂在可启动的系统上

Chroot & passwd

image-20211013004758124

一些命令

ls -lh

cat ect/hostname

fdisk -l 可以查看挂载那些硬盘

fdisk -l 1 less 可以查看有哪些设备

mdadm –help 获取帮助

mdadm –detail /dev/md5

lvm 下 lvdisplay

SHA256相关:

计算原始磁盘或镜像的SHA256值

对应例题:

10、检材 2 的原始磁盘 SHA256 值为()

30、检材 3 的原始磁盘 SHA256 值为()

42、检材 4 的原始磁盘 SHA256 值为()

2019长安杯 1、计算“检材 1.E01”镜像的 SHA256 值是多少( )

解题方法:

FMP -> 证据文件 -> 点击你所需要计算的磁盘并使其变蓝 -> 右键哈希值计算

计算文件的SHA256值

对应例题:

2019长安杯 59、计算“检材 4.E01”文件的 sha256 值( )

题解方法:

出题方给我们检材的时候同时会给出一个txt文件,里面记录着各个检材文件的sha256值,一般直接将其作为答案

image-20211022163219449

检验方法:

为了保证出题方所给的材料没有损坏,可以在windows自带的PowerShell中输入
1
Get-FileHash 文件路径 -Algorithm 校验的Hash值类型| Format-List

如果不带-Algorithm参数,也就是不指明验证的Hash值类型,那么默认验证的就是SHA256值。

操作系统方面

系统版本和内核版本

对应例题:

1、检材 1 的操作系统版本是()

31、检材 3 所在的计算机的操作系统版本是()

2、检材 1 中,操作系统的内核版本是()

11、检材 2 所在计算机的 OS 内部版本号是()

linux系统解题方法:

使用火眼仿真系统,进入操作系统即可看到系统版本和内核版本(账号设置为root,密码自动调整为123456,可以完成登录)

image-20211022170603576

第二行为内核版本,只需要输入 3.10.0 即可

在终端输入 cat /proc/version

image-20211022170931078

在终端输入 uname -a

image-20211022171017953

均可得到内核版本,其中的时间为系统版本发布时间

在终端输入 cat /etc/redhat-release ,这种方法只适合Redhat系的Linux

image-20211022171538770

windows系统题解方法:

使用美亚取证大师,取证结果 -> 系统痕迹 -> 系统信息 -> 产品名称

image-20211022172043461

可以直接获得系统版本的名称

但是当前build无法直接作为系统OS版本的答案,内容不全,需要进入火眼仿真中查看

开始 -> 设置 ->关于 ,可以找到操作系统版本

image-20211022172740597

计算机开关机时间

对应例题

12、检材 2 所在计算机最后一次正常关机的时间为()

解题思路

最简单的办法, 取证大师 -> 案件概览 -> 最后一次正常关机时间

image-20211022201502698

程序安装时间

对应例题

13、检材 2 中,VMware 程序的安装时间为()

解题思路

取证大师 -> 取证结果 -> 系统痕迹 -> 安装软件 -> 虚拟机软件 -> 安装时间

image-20211022201320946

程序启动次数

对应例题

14、检材 2 中,Vmware.exe 程序总计启动过()

解题思路

取证大师 -> 取证结果 -> 系统痕迹 -> 应用程序运行痕迹 -> VMWARE.EXE -> 第六次运行时间,可知程序总共运行了6次

image-20211022202227731

磁盘逻辑卷方面

逻辑区块地址(仅对于此问题用火眼较好):

对应例题:

3、检材 1 中磁盘包含一个 LVM 逻辑卷,该 LVM 开始的逻辑区块地址(LBA)是()

解题方法:

弘联火眼:

在终端上输入 fdisk -l得到关于磁盘的信息,start即为逻辑区块地址

image-20211022184301739

在终端上输入 lvdisplay可以获得逻辑卷的详情信息

image-20211022184533882

美亚取证:

找到对应磁盘的检材,查看摘要

image-20211022184825104

但是这个内存物理地址的单位是字节(Byte),而一个逻辑区块占用512位,所以要将这个值除以512。 1074790400/512=2099200

docker相关

启动相关

image-20211022185911875

使用docker相关命令时,会遇到报错,原因时docker服务尚未启动

docker相关指令(详情见长安杯2019题解)

在终端输入 service docker start即可启动docker,其他命令正常使用
输入 docker version 可以获得版本信息
输入 docker images 查看本地所有的镜像
docker ps 显示正在运行中的容器节点
docker ps -a 显示所有的容器节点
输入 docker info 可以看到关于docker配置的相关信息
输入docker inspect [容器ID] 可以查看该容器的详情信息
输入 stat [文件名] 可以查看文件时间状态
输入 more .bash_history 查看历史操作记录

可以输入 docker exec -it [容器ID前两位即可] /bin/bash , 查找相关文件的容器内部路径

输入 find / -name [名字] 可以搜索所需要的配置文件(.conf结尾)或 日志文件(.log结尾)

服务器相关思路

访问流程

嫌疑人 -> 检材服务器 -> 内部容器 -> web网页

一般使用工具

nginx

通过查看nginx的相关文件获得题目所需信息

配置文件:大概目录 /etc/nginx/conf.d/

日志文件:大概目录 /var/log/nginx/access.log

网站对应web对外开放端口

对应例题:

4、检材 1 中网站“www.kkzjc.com”对应的 Web 服务对外开放的端口是()

解题思路

直接在取证大师中搜索www.kkzjc.com,得到txt文本。找到开放端口

image-20211022192049614

服务器对外开放域名

对应例题:

5、 检材 1 所在的服务器共绑定了()个对外开放的域名

解题思路

由于题目的连贯性,上题对应的网址应也视作域名,在其文本目录下发现其他三个域名的文本文档,故域名数为3

远程登陆检材所在服务器

对应例题:

7、嫌疑人曾经远程登录过检材 1 所在的服务器,分析并找出其登录使用的 IP 地址是()

6、检材 1 所在的服务器的原始 IP 地址是()

9、嫌疑人曾经从题 7 的 IP 地址,通过 WEB 方式远程访问过网站,统计出检材 1 中该 IP 出现的次数为()

解题思路

在终端上输入 last ,可以显示近期用户或终端的登录情况

image-20211022192944701

可以获取嫌疑人的登陆使用的ip地址

在终端上输入 docker logs [容器ID],可以获得服务器与容器联系的相关信息

image-20211022194258171

image-20211022194024673

在其中可以找到两个IP地址 大意为 192.168.99.222(嫌疑人IP)访问了192.168.99.3(服务器的原始IP地址):8091(端口)

由于这上面显示的信息太多,在终端输入docker logs 08 | grep 192.168.99.222 | wc -l 。得到答案

反向代理转发后台网络的IP地址

对应例题:

8、检材 1 所在的服务器,其主要功能之一为反向代理。找出“www.kkzjc.com”转发的后台网站所使用的 IP 地址是()

解题思路

进入docker容器,找到nginx的配置文件,查看得到ip地址

image-20211022193517236

浏览器历史记录

访问服务器网站

对应例题

15、嫌疑人通过 Web 方式,从检材 2 访问检材 1 所在的服务器上的网站时,连接的目 标端口是()

17、嫌疑人从检材 2 上访问该网站时,所使用的域名为()

解题思路

取证大师 -> 上网记录

image-20211022203336124

域名填写答案 www.sdhj.com即可

手机取证

寻找手机备份文件,用火眼手机证据分析软件分析

一般该类备份文件被置于最显眼的地方,文件名设置为手机操作系统+日期的组合,如apple_20200920,便于寻找,

嫌疑人常用软件

微信、QQ都可以看一看,说不定有意想不到的收获

例题分析

18、检材 2 中,嫌疑人所使用的微信 ID 是()

19、分析检材 2,嫌疑人为推广其网站,与广告位供应商沟通时使用的通联工具的名称 为(

20、分析检材 2,嫌疑人使用虚拟货币与供应商进行交易,该虚拟货币的名称是()

21、上述交易中,对方的收款地址是()

比较简单就不写解题思路了(懒)

虚拟机的密码

对应例题

24、检材 2 中,嫌疑人使用的虚拟机的虚拟磁盘被加密,其密码为()

解题步骤

导出虚拟机相关文件

导出后缀名为vmx(爆破主要对此文件进行,为虚拟机的配置文件),vmdk(虚拟机的快照库,为主要文件)

密码爆破

https://github.com/axcheron/pyvmx-cracker

进入上述链接下载代码 pyvmx-cracker.py

复制虚拟机的 .vmx 文件进入,改名为 1.vmx —(方便打字,可不做)

python .\pyvmx-cracker.py -v 1.vmx -d wordlist.txt

即可爆破出密码

密码消除

用Vmware打开该配置文件,点击编辑虚拟机设置,选到选项,访问控制里点击移除加密

剩下的就可以交给取证大师和火眼仿真啦

程序使用方面

邮件

对应例题

25、检材 2 中,嫌疑人发送给广告商的邮件中的图片附件的 SHA256 值为();(忽略 邮件状态) (答案格式:“abcdefg” 小写字母

26、检材 2 中,嫌疑人给广告商发送广告图片邮件的发送时间是()(忽略邮件状态) (答案格式:“2020-01-01 21:35” 精确到分钟,半角符号

27、检材 2 中,嫌疑人的邮箱密码是() (答案格式:“abcde123456” 字母符号数字组合,区分大小写)

解题思路

取证大师分析虚拟机镜像,即可得到附件,账号密码等

image-20211022220406786

网站重构

系统登陆问题

我在做题的时候对检材三使用火眼仿真创建虚拟机失败,但得知Administrator账户为空密码,故转用Vm虚拟机打开,使用空密码登陆时要求用户重设密码,但多次设置均显示密码强度不够,一番尝试后发现 ./123ASD 可以,并成功登录系统。

找到部署的网站信息

对应例题

32、检材 3 中,部署的网站名称是()

33、检材 3 中,部署的网站对应的网站根目录是()

34、检材 3 中,部署的网站绑定的端口是()

35、检材 3 中,具备登陆功能的代码页,对应的文件名为()

36、检材 3 中,请对网站代码进行分析,网站登录过程中,代码中对输入的明文密码 作了追加()字符串处理

37、检材 3 中,请对网站代码进行分析,网站登录过程中,代码中调用的动态扩展库 文件的完整名称为()

38、检材 3 中,网站登录过程中,后台接收到明文密码后进行加密处理,首先使用的 算法是 Encryption 中的()函数

39、检材 3 中,分析该网站连接的数据库地址为()

40、检材 3 中,网站连接数据库使用的密码为()(不会!!!!!)

41、检材 3 中,网站连接数据库服务器的端口是()

解题思路

找到 开始 -> 管理工具 -> Internet 信息服务(IIS)管理器 打开

image-20211023120842632

选中 网站 -> card -> 高级设置 里面可以查看 网站根目录绑定的端口

image-20211023121052964

我们进入网站的根目录,下面找到网站的配置文件web.config ,打开后发现具备登录功能的代码页(login)

image-20211023121520019

打开后发现有行代码为 x.value+=’0v0’ 故可获得答案

image-20211023121646330

顺便找到了动态拓展库

image-20211023122030821

紧接上题,我们在根目录的 bin 文件夹打开上述的动态拓展库,

仅仅是文本打开,并且靠运气找到加密函数(我也不信)

image-20211023123317933

一开始想法局限于VM虚拟机,想着怎样把文件拖出来到计算机里分析,后来才意识到取证大师可以导出虚拟机内的文件。。。,之后用dotPeek分析即可

image-20211023123923803

我也不知道为什么一定是DBManager.dll ,但是的确从里面找到了

server=192.168.1.174、端口1433、uid=sa、pwd=31415926

(密码用加密函数加密后表示为BASE64编码,需要继续研究,就先不深究了)

image-20211023124323866

part4 (摘自大佬的WP,冲不下去了哭)

充满玄学的一部分

向天高呼保佑,有几率进入下一步

设置检材4的数据库

1
2
3
4
5
6
7
8
9
// 启动docker服务
systemctl start docker
// 列出所有在运行的容器信息
docker ps // 没东西,说明没启动,需要自己启动一下
// 显示所有的容器,包括未运行的
docker ps -a
// 启动docker里面的容器
docker start 3f
docker ps

img/image-20201127125042696

part3连接数据库部分可以得知,我们的数据库ip是192.168.1.174

所以关闭该虚拟机的DHCP服务

img/image-20201127125519549

编辑下述文件修改静态ip

1
/etc/sysconfig/network-scripts/ifcfg-eth数字

修改/添加内容

1
2
3
4
5
BOOTPROTO="static" #dhcp改为static 
ONBOOT="yes" #开机启用本配置
IPADDR=192.168.1.174 #静态IP
GATEWAY=192.168.1.1 #默认网关
NETMASK=255.255.255.0 #子网掩码

img/image-20201127125931153

重启网络服务

1
service network restart

这步失败了,改了好久都不能重启服务成功,干脆直接重启虚拟机了

结果意外好了><

查看ip

1
ip addr

像下图这样就说明静态ip设置成功了

img/image-20201127133110453

设置检材3的服务器

网络配置使其与检材4位于同一网段,开启DHCP服务,使其可以ping通

img/image-20201127133622279

网页进入ip/dl,即可看到重构的网页

img/image-20201127140235443

主机

  1. 连接数据库

    img/image-20201127143808886

    从检材PC可知,嫌疑人使用的用户是 liwente1314520

  1. TD_User表中将其密码改为123456

    • 逆向dll时,可知存在数据库里的密码经过如下处理

      1
      2
      3
      字符串拼接: "密码"+"OvO"
      加密: 使用DBManager.dll中的加密方法加密
      md5: 加密后计算md5值,并存入数据库
    • 下图进行拼接和加密

      img/image-20201127144737619

    • 下图md5计算

      img/image-20201127144814666

    • 下图修改表中的值

      img/image-20201127145245384

  1. 将服务器现在的ip添加到TD_Webs

    同样是从dll逆向出来得知,执行登录操作时会检测域名

    img/image-20201127145103070

重启服务

  • 检材3

    cmd–services.msc (本地服务设置)

    img/image-20201127145625474

  • 检材4

    1
    docker restart 容器id

    然后就可以用 liwente1314520 123456 登录网站了

42.的原始磁盘 SHA256

img/image-20201126195142183

43.嫌疑用户的推广链接中参数里包含的 ID 是

img/image-20201127151654651

44.该网站后台的代理用户数量

统计一下个数即可

img/image-20201127151811242

45.该网站注册用户中共有过几个代理

上题中的用户数是未删除的个数,注册过的也就包括了之前注册,但是删掉了的用户数

img/image-20201127151905956

46.2019 年 10 月 1 日后补发成功的金额总值

数量略多,需要导出,使用excel或其他软件处理计算

img/image-20201127152103903

47.对“TX_IpLog”表进行分析,所有在“武汉市”登录的次数为

img/image-20201127152253898

48.该嫌疑人下属代理“liyun10”账户下的余额有多少元

img/image-20201127152510630

img/image-20201127152550329

img/image-20201127152634952

49.接上题,该用户的推广 ID 是

img/image-20201127152724022

50.接上题,该代理商户的最后一次登陆时间是

img/image-20201127152827440

疑难杂症

16、接 15 题,该端口上运行的进程的程序名称(Program name)为() (答案格式:“avahi-deamon” 字母和半角符号组合)

22、上述交易中,嫌疑人和供应商的交易时间是() (答案格式:“2020-01-01 21:35:54” 精确到秒,半角符号

23、上述交易中,嫌疑人支付货币的数量为() (答案格式:“8888” 纯数字

28、检材 2 中,嫌疑人使用了()远程管理工具,登录了检材 1 所在的服务

29、检材 2 中,嫌疑人使用上述工具连接服务器时,使用的登录密码为() (答案格式:“aBcd#123”