本文已参与「新人创作礼」活动,一起开启掘金创作之路
取证
内存取证
常见格式:raw文件、wmem文件、img文件、dmp文件等内存镜像文件
常用工具:volatity
拿网刃杯mspaint举例
imageinfo
分析获取内存镜像的基本信息,查看可能的系统版本
volatility -f mspaint.raw imageinfo
获取imageinfo后要指定镜像,一般是指定第一个
volatility -f mspaint.raw --profile=Win7SP1x64
pslist
查看系统正在运行的进程
volatility -f mspaint.raw --profile=Win7SP1x64 pslist
ctf中可能会有可疑的进程需要我们去获取,比如这道题的dumpit.exe。
cmdscan
命令行的历史输入记录
volatility -f mspaint.raw --profile=Win7SP1x64 cmdscan
有的时候会在cmdscan发现有用的信息,比如此题,说明了可能留有截屏信息。
cmdline
列出所有命令行下运行的程序
volatility -f mspaint.raw --profile=Win7SP1x64 cmdline
filescan
用于扫描内存中的文件
volatility -f mspaint.raw --profile=Win7SP1x64 filescan
有的时候也会结合grep使用,grep就是打印后面内容所在的那一行
比如我们知道此题中会有图片文件,所以可以
volatility -f mspaint.raw --profile=Win7SP1x64 filescan|grep png
这样我们也找到了解决此题的关键,key.png
dumpfiles
通过指定PID,dump指定文件
比如此题,我们发现Key.png肯定要dump出来,通过filescan发现其pid为
0x000000003e96e7d0
那我们可以通过这个命令将其dump出来
volatility -f mspaint.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003e96e7d0 -D ./
dump出的内容有个特点是,会以比如此题类似的格式
memdump
将某个进程dump出来。
volatility -f win7.vmem --profile=Win7SP1x64 memdump -p [PID] -D ./
在此题目中,一开始pslist的时候发现有个dumpit.exe,我们尝试将其dump出来
volatility -f mspaint.raw --profile=Win7SP1x64 memdump -p 1064 -D ./
然后得到了一个dmp文件,需要使用GIMP从中提取图像
screenshot
显示GDI样式的截屏
volatility -f raw.raw --profile=Win7SP1x64 screenshot -D ./
此题在cmdscan中提示有截屏信息。
hivelist
打印出注册表的信息
有的取证题目需要获取注册表中的一些数据,比如在陇剑杯wifi一题中就要从注册表里得到Network Adapter GUID
例题:
要求获得网卡的GUID,可以直接使用
volatility -f 镜像 --profile= filescan|grep Interfaces
也可以直接导出注册表在注册表里找。
hashdump
一般的ctf取证题目会要求获取密码的明文
通过这个命令能看到账户跟密码的md5值,可以使用somd5,cmd5,mimikatz来解密密码
也可以使用工具梭一下
例题:misc 内存取证三项
iehistroy
浏览器的浏览历史
在ctf比赛中,有的时候会在历史记录里发现一些重要文件
hashdump
通过hivelist 获取他们的Virtual的值
volatility -f Target.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a000e66410
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
CTF:1000:aad3b435b51404eeaad3b435b51404ee:be5593366cb1019400210101581e5d0d:::
目前了解到有两种方法,一个是通过cmd5或者是somd5来直接解密hash
另一种是通过 mimikatz (神器)
admin和guest通过cmd5可以解出密码是空,但是CTF账户的解不出来,只能通过这个mimikatz
使用方法
volatility -f Target.vmem --profile=Win7SP1x64 mimikatz
dumpregistry
若发现解题需要用到注册表信息的,可以使用此命令dump注册表
dump注册表信息
volatility -f Windows\ 7-dde00fa9.vmem --profile=Win7SP1x86_23418 dumpregistry --dump-dir ./
然后配合WRR.exe这个工具使用,此工具可以直接访问注册表的信息,直接把dump出来的数据打开即可
比如陇剑杯wifi题目,dump注册表后,通过此工具找到网卡的GUID
printkey
查看SAM表下的用户
volatility_2.6_win64_standalone.exe -f 1.vmem --profile=Win2003SP1x86 printkey -K "SAM\Domains\Account\Users\Names"
editbox/notepad
在XP中,正在运行的notepad程序,使用notepad指令就可以看到notepad.exe的内容,而在win7中,将不支持notepad,只能使用editbox
volatility -f mem.raw --profile=Win7SP1x64 editbox
例题:内存取证三项
看到了十六进制字符串
netscan
查看网络连接的连接情况
volatility -f mem.raw --profile=Win7SP1x64 netscan
svcscan
扫描windows服务列表
volatility -f mem.raw --profile=Win7SP1x64 svcscan
userassist
查看运行的进程和次数
volatility -f mem.raw --profile=Win7SP1x64 userassist
clipboard
剪贴板数据,加参数-v可以导出
volatility -f mem.raw --profile=WinXPSP2x86 clipboard
volatility -f mem.raw --profile=WinXPSP2x86 clipboard -v >1.txt
例题:莲城杯-mem.raw
剪切板发现rabbit加密字符串,但是只能看一半,可以用-v 导出
发现完整的加密串
malfind
malfind 查找隐藏或注入的代码/ DLL ,可以找出存在异常的进程
volatility -f mem.raw --profile=Win7SP1x64 malfind
handless
查看文件句柄,如上面malfind发现PID为2233
volatility -f mem.raw --profile=Win7SP1x64 handles -p 620 -t file
dlldump
将指定PID的进程的所有DLL导出
volatility -f mem.raw --profile=Win7SP1x64 dlldump -p [PID] -D ./
磁盘取证
Firefox密码取证
根据C:\Users\x\AppData\Roaming\Mozilla\Firefox\Profiles\xx.default-release目录下的key4.db和 logins.json文件,利用firepwd github.com/lclevy/fire…
python firepwd.py -d ..\Profiles
FTK-Imager,加载vmdk文件
其他取证工具
取证大师 magnet-axiom minicrack.com/magnet-axio… Ftk