长安杯2020例题笔记
电子数据取证
活取证:
抓取文件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硬盘组本地磁盘进行重组
导入虚拟机时注意使用转化好的虚拟磁盘(需要全部导入,并且一般选取其中最大的可能包含操作系统的放在首位导入)
对其中 ro进行改写为 rw init=sysroot\bin\sh, 即可绕过密码进入系统
后输入chroot sysroot/ 更换根目录
之后就可以用passwd来设置新密码
输入exit后reboot来重启
方案二:
挂在可启动的系统上
Chroot & passwd
一些命令
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值,一般直接将其作为答案
检验方法:
为了保证出题方所给的材料没有损坏,可以在windows自带的PowerShell中输入
1 | Get-FileHash 文件路径 -Algorithm 校验的Hash值类型| Format-List |
如果不带-Algorithm参数,也就是不指明验证的Hash值类型,那么默认验证的就是SHA256值。
操作系统方面
系统版本和内核版本
对应例题:
1、检材 1 的操作系统版本是()
31、检材 3 所在的计算机的操作系统版本是()
2、检材 1 中,操作系统的内核版本是()
11、检材 2 所在计算机的 OS 内部版本号是()
linux系统解题方法:
使用火眼仿真系统,进入操作系统即可看到系统版本和内核版本(账号设置为root,密码自动调整为123456,可以完成登录)
第二行为内核版本,只需要输入 3.10.0 即可
在终端输入 cat /proc/version
在终端输入 uname -a
均可得到内核版本,其中的时间为系统版本发布时间
在终端输入 cat /etc/redhat-release
,这种方法只适合Redhat系的Linux
windows系统题解方法:
使用美亚取证大师,取证结果 -> 系统痕迹 -> 系统信息 -> 产品名称
可以直接获得系统版本的名称
但是当前build无法直接作为系统OS版本的答案,内容不全,需要进入火眼仿真中查看
开始 -> 设置 ->关于 ,可以找到操作系统版本
计算机开关机时间
对应例题
12、检材 2 所在计算机最后一次正常关机的时间为()
解题思路
最简单的办法, 取证大师 -> 案件概览 -> 最后一次正常关机时间
程序安装时间
对应例题
13、检材 2 中,VMware 程序的安装时间为()
解题思路
取证大师 -> 取证结果 -> 系统痕迹 -> 安装软件 -> 虚拟机软件 -> 安装时间
程序启动次数
对应例题
14、检材 2 中,Vmware.exe 程序总计启动过()
解题思路
取证大师 -> 取证结果 -> 系统痕迹 -> 应用程序运行痕迹 -> VMWARE.EXE -> 第六次运行时间,可知程序总共运行了6次
磁盘逻辑卷方面
逻辑区块地址(仅对于此问题用火眼较好):
对应例题:
3、检材 1 中磁盘包含一个 LVM 逻辑卷,该 LVM 开始的逻辑区块地址(LBA)是()
解题方法:
弘联火眼:
在终端上输入 fdisk -l
得到关于磁盘的信息,start即为逻辑区块地址
在终端上输入 lvdisplay
可以获得逻辑卷的详情信息
美亚取证:
找到对应磁盘的检材,查看摘要
但是这个内存物理地址的单位是字节(Byte)
,而一个逻辑区块占用512位,所以要将这个值除以512。 1074790400/512=2099200
docker相关
启动相关
使用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文本。找到开放端口
服务器对外开放域名
对应例题:
5、 检材 1 所在的服务器共绑定了()个对外开放的域名
解题思路
由于题目的连贯性,上题对应的网址应也视作域名,在其文本目录下发现其他三个域名的文本文档,故域名数为3
远程登陆检材所在服务器
对应例题:
7、嫌疑人曾经远程登录过检材 1 所在的服务器,分析并找出其登录使用的 IP 地址是()
6、检材 1 所在的服务器的原始 IP 地址是()
9、嫌疑人曾经从题 7 的 IP 地址,通过 WEB 方式远程访问过网站,统计出检材 1 中该 IP 出现的次数为()
解题思路
在终端上输入 last
,可以显示近期用户或终端的登录情况
可以获取嫌疑人的登陆使用的ip地址
在终端上输入 docker logs [容器ID]
,可以获得服务器与容器联系的相关信息
在其中可以找到两个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地址
浏览器历史记录
访问服务器网站
对应例题
15、嫌疑人通过 Web 方式,从检材 2 访问检材 1 所在的服务器上的网站时,连接的目 标端口是()
17、嫌疑人从检材 2 上访问该网站时,所使用的域名为()
解题思路
取证大师 -> 上网记录
域名填写答案 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” 字母符号数字组合,区分大小写)
解题思路
取证大师分析虚拟机镜像,即可得到附件,账号密码等
网站重构
系统登陆问题
我在做题的时候对检材三使用火眼仿真创建虚拟机失败,但得知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)管理器 打开
选中 网站 -> card -> 高级设置 里面可以查看 网站根目录 和 绑定的端口
我们进入网站的根目录,下面找到网站的配置文件web.config ,打开后发现具备登录功能的代码页(login)
打开后发现有行代码为 x.value+=’0v0’ 故可获得答案
顺便找到了动态拓展库
紧接上题,我们在根目录的 bin 文件夹打开上述的动态拓展库,
仅仅是文本打开,并且靠运气找到加密函数(我也不信)
一开始想法局限于VM虚拟机,想着怎样把文件拖出来到计算机里分析,后来才意识到取证大师可以导出虚拟机内的文件。。。,之后用dotPeek分析即可
我也不知道为什么一定是DBManager.dll ,但是的确从里面找到了
server=192.168.1.174、端口1433、uid=sa、pwd=31415926
(密码用加密函数加密后表示为BASE64编码,需要继续研究,就先不深究了)
part4 (摘自大佬的WP,冲不下去了哭)
充满玄学的一部分
向天高呼保佑,有几率进入下一步
设置检材4的数据库
1 | // 启动docker服务 |
从part3连接数据库部分可以得知,我们的数据库ip是192.168.1.174
所以关闭该虚拟机的DHCP服务
编辑下述文件修改静态ip
1 | /etc/sysconfig/network-scripts/ifcfg-eth数字 |
修改/添加内容
1 | BOOTPROTO="static" #dhcp改为static |
重启网络服务
1 | service network restart |
这步失败了,改了好久都不能重启服务成功,干脆直接重启虚拟机了
结果意外好了><
查看ip
1 | ip addr |
像下图这样就说明静态ip设置成功了
设置检材3的服务器
网络配置使其与检材4位于同一网段,开启DHCP服务,使其可以ping通
网页进入ip/dl
,即可看到重构的网页
主机
连接数据库
从检材PC可知,嫌疑人使用的用户是 liwente1314520
在TD_User表中将其密码改为123456
逆向dll时,可知存在数据库里的密码经过如下处理
1
2
3字符串拼接: "密码"+"OvO"
加密: 使用DBManager.dll中的加密方法加密
md5: 加密后计算md5值,并存入数据库下图进行拼接和加密
下图md5计算
下图修改表中的值
将服务器现在的ip添加到TD_Webs中
同样是从dll逆向出来得知,执行登录操作时会检测域名
重启服务
检材3
cmd–services.msc (本地服务设置)
检材4
1
docker restart 容器id
然后就可以用 liwente1314520 123456 登录网站了
42.的原始磁盘 SHA256
43.嫌疑用户的推广链接中参数里包含的 ID 是
44.该网站后台的代理用户数量
统计一下个数即可
45.该网站注册用户中共有过几个代理
上题中的用户数是未删除的个数,注册过的也就包括了之前注册,但是删掉了的用户数
46.2019 年 10 月 1 日后补发成功的金额总值
数量略多,需要导出,使用excel或其他软件处理计算
47.对“TX_IpLog”表进行分析,所有在“武汉市”登录的次数为
48.该嫌疑人下属代理“liyun10”账户下的余额有多少元
49.接上题,该用户的推广 ID 是
50.接上题,该代理商户的最后一次登陆时间是
疑难杂症
16、接 15 题,该端口上运行的进程的程序名称(Program name)为() (答案格式:“avahi-deamon” 字母和半角符号组合)
22、上述交易中,嫌疑人和供应商的交易时间是() (答案格式:“2020-01-01 21:35:54” 精确到秒,半角符号
23、上述交易中,嫌疑人支付货币的数量为() (答案格式:“8888” 纯数字
28、检材 2 中,嫌疑人使用了()远程管理工具,登录了检材 1 所在的服务
29、检材 2 中,嫌疑人使用上述工具连接服务器时,使用的登录密码为() (答案格式:“aBcd#123”