内存取证
前言
刚接触这个板块不久,也做了几道题,这里把题合并,记录一下
volatility2 是python2的,volatility3是python3的,刚开始做的第一题是volatility3做的,但是做到后面题发现有些题vol3是不管用的,dump不下来文件,用vol就可以,反正kali里有py2和py3的环境,我干脆两个混着用了
但是个人感觉vol2的功能比较全而且稳定方便
最后,以下所有的内容都是我亲身经历,所有不一定所有的变量都一样,安装或者操作与我有误差还得去看看其他师傅的文章呢
安装
kali更新之后环境有变化,下面的安装不一定能成功,还请自行百度(
vol3
volatility3 下载安装:
kali:git clone [https://github.com/volatilityfoundation/volatility3.git](https://github.com/volatilityfoundation/volatility3.git)
此时桌面生成一个文件夹,cd到文件夹pip3 install -r requirements-minimal.txt
pip3 install -r requirements.txt
下载下面这个字符集
https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
然后解压后放到symbols目录下
然后执行python3 setup.py build
python3 setup.py install
然后安装环境requirements.txt报错时sudo apt install libsnappy-dev
安装成功
vol2
vol的安装就比较ez了
kali下安装Volatility_kali安装volatility_烟雨天青色的博客-CSDN博客
跟着这个就行了
记得在root下安装
前置姿势
官方教程:https://volatility3.readthedocs.io/en/latest/getting-started-windows-tutorial.html
PowerShell历史命令文件路径为:
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
,所以我们直接去filescanConsoleHost_history.txt
配合grep命令检索关键字
配合strings转换
一些文件修复姿势,遇到时百度
tips:
vol3要在root用户下运行,不然可能会报错,我就是报错了,重装了还是一样,后来在root运行就可以了
vol2最好在根目录运行,我在桌面运行所有命令回显的都是info信息
常用命令
vol3
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
常用插件:
layerwriter:列出内存镜像platform信息
linux.bash:从内存中恢复bash命令历史记录
linux.check_afinfo:验证网络协议的操作功能指针
linux.check_syscall:检查系统调用表中的挂钩
linux.elfs:列出所有进程的所有内存映射ELF文件
linux.lsmod:列出加载的内核模块
linux.lsof:列出所有进程的所有内存映射
linux.malfind:列出可能包含注入代码的进程内存范围
linux.proc:列出所有进程的所有内存映射
linux.pslist:列出linux内存映像中存在的进程
linux.pstree:列出进程树
mac.bash:从内存中恢复bash命令历史记录
mac.check_syscall:检查系统调用表中的挂钩
mac.check_sysctl:检查sysctl处理程序的挂钩
mac.check_trap_table:检查trap表中的挂钩
mac.ifconfig:列出网卡信息
mac.lsmod:列出加载的内核模块
mac.lsof:列出所有进程的所有内存映射
mac.malfind:列出可能包含注入代码的进程内存范围
mac.netstat:列出所有进程的所有网络连接
mac.psaux:恢复程序命令行参数
mac.pslist:列出linux内存映像中存在的进程
mac.pstree:列出进程树
mac.tasks:列出Mac内存映像中存在的进程
windows.info:显示正在分析的内存样本的OS和内核详细信息
windows.callbacks:列出内核回调和通知例程
windows.cmdline:列出进程命令行参数
windows.dlldump:将进程内存范围DLL转储
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.driverirp:在Windows内存映像中列出驱动程序的IRP
windows.driverscan:扫描Windows内存映像中存在的驱动程序
windows.filescan:扫描Windows内存映像中存在的文件对象
windows.handles:列出进程打开的句柄
windows.malfind:列出可能包含注入代码的进程内存范围
windows.moddump:转储内核模块
windows.modscan:扫描Windows内存映像中存在的模块
windows.mutantscan:扫描Windows内存映像中存在的互斥锁
windows.pslist:列出Windows内存映像中存在的进程
windows.psscan:扫描Windows内存映像中存在的进程
windows.pstree:列出进程树
windows.procdump:转储处理可执行映像
windows.registry.certificates:列出注册表中存储的证书
windows.registry.hivelist:列出内存映像中存在的注册表配置单元
windows.registry.hivescan:扫描Windows内存映像中存在的注册表配置单元
windows.registry.printkey:在配置单元或特定键值下列出注册表项
windows.registry.userassist:打印用户助手注册表项和信息
windows.ssdt:列出系统调用表
windows.strings:读取字符串命令的输出,并指示每个字符串属于哪个进程
windows.svcscan:扫描Windows服务
windows.symlinkscan:扫描Windows内存映像中存在的链接
vol2
vol要--profile
指定版本,所以这里的命令就统一了
1 |
|
命令太多,可以–info来查看所有可以用的插件
一些题目wp
[羊城杯 2021]Baby_Forenisc
这里有一个小坑,要在根目录运行命令,我在桌面运行所有命令回显的都是info信息volatility -f /home/kali/桌面/BIODOG-7711E93C-20210908-053022.raw --profile=WinXPSP2x86 iehistory
找ssh文件volatility -f /home/kali/桌面/BIODOG-7711E93C-20210908-053022.raw --profile=WinXPSP2x86 filescan |grep 'ssh.txt'
dump下来volatility -f /home/kali/桌面/BIODOG-7711E93C-20210908-053022.raw --profile=WinXPSP2x86 dumpfiles -Q 0x00000000020bf6a0 -D /home/kali/桌面
1 |
|
解base64后song552085107@qq.com
在Github上搜索此用户,找到关键项目:
https://github.com/Ha1f00L/whatsthat
访问后下载项目中的__APP__,在其中可以找到:
U2FuZ0ZvcntTMF8zYXp5XzJfY3JhY2tfbm9vYl9wbGF5ZXJ9
base64解码后就得到了flag :SangFor{S0_3azy_2_crack_noob_player}
hgame2022week4
ezWin - variables
题目这个variables
是啥变量,猜测是环境变量
使用命令python3 vol.py -f /home/kali/桌面/win10_22h2_19045.2486.vmem envars
翻找到一个环境变量
ezWin - 7zip
python3 vol.py -f /home/kali/桌面/win10_22h2_19045.2486.vmem filescan > 1.txt
查看文件
打开1.txt检索flag发现存在flag.7z文件
提取这个文件python3 vol.py -f ../win10_22h2_19045.2486.vmem dumpfiles --virtaddr 0xd0064181c950
得到
发现需要密码![](/wp/内存取证/12.png) 文件名给了提示 nt_hash 是Ntlm hash 里面有用户名和密码 `python3 vol.py -f ../win10_22h2_19045.2486.vmem windows.hashdump ` 这里一开始尝试的时候报错了 ![](/wp/内存取证/13.png) 原因是pip安装不了snappy-dev库 前面安装环境的时候` pip3 install -r requirements.txt `报错
然后就跑出账号密码了hgame{e30b6984-615c-4d26-b0c4-f455fa7202e2}
ezWin - auth
python3 vol.py -f ../win10_22h2_19045.2486.vmem windows.cmdline
一开始没啥思路,就先做了第3题,没想到这题flag是下一题的keypython3 vol.py -f ../win10_22h2_19045.2486.vmem windows.hashdump
hgame{84b0d9c9f830238933e7131d60ac6436}
Byte Bandits CTF 2023
这里比赛的时候队友已经做了,我就直接偷wp,不自己写了
Memory Dump
题目说明:
I was learning powershell when my pc suddenly crashed. Can you retrieve my bash history?
法一
之前长安杯做过PowerShell的取证题,PowerShell历史命令文件路径为%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
所以我们直接去filescanConsoleHost_history.txt
dump一下
cat 一下下
AES解密即可
法二
因为ConsoleHost_history.txt
为文本形式,所以利用strings转换一下直接搜索flag{
即可
Imageception
题目说明 :
“The painter has the universe in his mind and hands.”
-Leonardo Da Vinci
题目名称为imageception,所以直接FileScan搜索python vol.py -f ./BBCTF/Imageception.raw windows.filescan.FileScan | grep "imageception"
发现有个imageception.png
把他dump下来
[陇剑杯 2021]内存分析
tips:no space but underline
问1
网管小王制作了一个虚拟机文件,让您来分析后作答: 虚拟机的密码是_____________。(密码中为flag{xxxx},含有空格,提交时不要去掉)volatility -f /home/kali/桌面/Target.vmem --profile=Win7SP1x64_23418 lsadump
也可以用mimikatz插件volatility -f Target.vmem --profile=Win7SP1x64 mimikatz
问2
网管小王制作了一个虚拟机文件,让您来分析后作答: 虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为_____________。(解题过程中需要用到上一题答案中flag{}内的内容进行处理。本题的格式也是flag{xxx},含有空格,提交时不要去掉)。
图片要找文件volatility -f /home/kali/桌面/Target.vmem --profile Win2008R2SP1x64_23418 filescan
找到带华为的文件volatility -f /home/kali/桌面/Target.vmem --profile Win2008R2SP1x64_23418 dumpfiles -Q 0x000000007d8c7d10 -D /home/kali/桌面
dump下来
改后缀dat为exe
得到一个文件夹,里面是加密的
华为备份文件解密工具:[https://github.com/RealityNet/kobackupdec](https://github.com/RealityNet/kobackupdec)
注意:"C:Desktop\kobackupdec-master\..."
为上面解压出来的文件夹路径,"C:Desktop\kobackupdec-master\backup"
要在命令添加backup
来储存解密后的文件 python kobackupdec.py -vvv "W31C0M3_T0_THiS_34SY_F0R3NSiCX" "C:Desktop\kobackupdec-master\..." "C:Desktop\kobackupdec-master\backup"
flag{TH4NK Y0U FOR DECRYPTING MY DATA}
HUBUCTF 2022 新生赛-vmem
内存取证,vol3文件dump不下来,只能用vol2
vol2安装:https://blog.csdn.net/qq_42947816/article/details/119395804volatility -f /home/kali/桌面/Windows7.vmem imageinfo
volatility -f /home/kali/桌面/Windows7.vmem --profile=Win2008R2SP1x64_23418 filescan|grep 'flag
提取文件volatility -f /home/kali/桌面/Windows7.vmem --profile=Win2008R2SP1x64_23418 dumpfiles -Q 虚拟地址 -D 保存位置
如:volatility -f /home/kali/桌面/Windows7.vmem --profile=Win2008R2SP1x64_23418 dumpfiles -Q 0x000000005eb84f20 -D /home/kali/桌面/1
flag1:the first part of flag is : NSSCTF{W0w_y0u_G3t
flag2:
flag3:
1 |
|
异或一下
1 |
|
NSSRound#1 Basic]cut_into_thirds
题目说明:华强觉得这flag不甜,就把flag刀成了三份,分给了“基地”家族的老二、老四和老六。请将找到的三块按顺序用“-”连接,flag格式为NSSCTF{uuid}volatility -f /home/kali/桌面/cut_into_thirds.raw --profile=Win7SP1x64 pslist
列出当前进程volatility -f /home/kali/桌面/cut_into_thirds.raw --profile=Win7SP1x64 procdump -p 1164 -D /home/kali/桌面/
运行一下导出的程序part2:GRRGGYJNGQ4GKMBNMJRTONI=
base32:4bca-48e0-bc75
volatility -f /home/kali/桌面/cut_into_thirds.raw --profile=Win7SP1x64 filescan
由前面知道可疑文件0x0000000012191a20 16 0 R--rw- \Device\HarddiskVolume2\Users\CTF\Desktop\LookAtMe.zip
dump下来part1:3930653363343839
lsa解密不成功
我mimikatz没装成功,呜呜呜太菜了MTEwOTFmNWI3ZTNh
-> base64:11091f5b7e3a
NSSCTF{90e3c489-4bca-48e0-bc75-11091f5b7e3a}
[蓝帽杯 2022 初赛]计算机取证
1
现对一个windows计算机进行取证,请您对以下问题进行分析解答。 从内存镜像中获得taqi7的开机密码是多少?
7f21caca5685f10d9e849cc84c340528
也可以用Passware Kit Forensic
2
现对一个windows计算机进行取证,请您对以下问题进行分析解答。 制作该内存镜像的进程Pid号是多少?
1 |
|
MagnetRAMCaptu是镜像制作工具,该进程pid为2192
3
1 |
|
在取证大师内存分析工具可以导出1.dmp的Bitlocker key密钥
利用这个密钥可以解码G.E01文件,取证大师有解密工具
得到:
然后利用里面的pass.txt字典来爆出文件密钥
打开得到
flag{b27867b66866866686866883bb43536}
4
1 |
|
取证大师
挂载加密文件并解密
得到:
爆破一下
flag{1349934913913991394cacacacacacc}