一,Volatility 3下载
1.安装Volatility 3。
要求:python3.7以上的版本,我的是3,11,这里不说python的安装方法
使用 pip 安装 Volatility 3:
pip install volatility3
安装完成后,验证安装:
vol --help
2.安装依赖项
pip install yara-python pycryptodome openpyxl
3.安装符号表
vol --symbols
提示:Volatility 3的默认安装位置是Python 的 site-packages
目录中
二,插件介绍(部分)
系统信息
windows.info:显示操作系统的基本信息。
vol -f <内存镜像文件路径> windows.info
进程列表
windows.pslist:列出所有进程。
vol -f <内存镜像文件路径> windows.pslist
网络连接
windows.netscan:列出网络连接和套接字。
vol -f <内存镜像文件路径> windows.netscan
文件扫描
windows.filescan:扫描内存中的文件对象。
vol -f <内存镜像文件路径> windows.filescan
注册表分析
windows.registry.hivelist:列出注册表 hive 文件。
vol -f <内存镜像文件路径> windows.registry.hivelist
恶意软件检测
windows.malfind:检测潜在的内存注入代码。
vol -f <内存镜像文件路径> windows.malfind
常用依赖项命令
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内存映像中存在的链接
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内存映像中存在的进程
三,例题。
[陇剑杯 2021]内存分析(问1)
网管小王制作了一个虚拟机文件,让您来分析后作答:
虚拟机的密码是_____________。(密码中为flag{xxxx},含有空格,提交时不要去掉)。得到的flag请使用NSSCTF{}格式提交。
先使用windows.info功能查看虚拟硬盘的电脑信息
vol -f Target.vmem windows.info
得到操作系统的版本是
即Win7SP1x64
NTBuildLab:
7601.17514.amd64fre.win7sp1_rtm.
7601
是 Windows 7 SP1 的内部版本号。
amd64fre
表示 64 位版本。
win7sp1_rtm
表示 Windows 7 Service Pack 1。CSDVersion:
1
表示安装了 Service Pack 1。
Major/Minor:
15.7601
15
是 Windows 7 的内部版本号。
7601
是 Windows 7 SP1 的版本号。NtMajorVersion / NtMinorVersion:
6
/1
6.1
对应 Windows 7。Is64Bit:
True
表示操作系统是 64 位。
然后使用lsadump从注册表中提取LSA密钥信息
LSA 的主要功能
用户认证:
LSA 负责验证用户的登录凭证(如用户名和密码)。
它通过与 SAM(Security Account Manager)数据库或 Active Directory 交互来完成认证。
安全策略管理:
LSA 管理本地安全策略,如密码策略、账户锁定策略等。
生成安全令牌:
在用户成功登录后,LSA 会生成一个 安全令牌(Security Token),其中包含用户的权限信息。
这个令牌用于后续的权限验证和访问控制。
存储机密信息:
LSA 存储一些机密信息,如:
用户的密码哈希(NTLM 或 LM 哈希)。
自动登录密码(如果启用了自动登录)。
服务账户的凭据。
命令:
vol -f Target.vmem windowws.hashdump
得到
User RID LM Hash NTLM Hash
Administrator 500 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
Guest 501 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
CTF 1000 aad3b435b51404eeaad3b435b51404ee be5593366cb1019400210101581e5d0d
//LM Hash:aad3b435b51404eeaad3b435b51404ee 是 LM 哈希的默认空值,表示未启用 LM 哈希。
NTLM Hash:31d6cfe0d16ae931b73c59d7e0c089c0 是 NTLM 哈希的默认空值,表示用户未设置密码或密码为空。
CTF 用户:be5593366cb1019400210101581e5d0d 是 CTF 用户的 NTLM 哈希值,表示该用户设置了密码
hashcat无法破解上面的ntml的hash值,使用如下命令提取
vol -f Target.vmem windows.lsadump.Lsadump //lsadump 插件(用于提取 LSA 密钥和凭据)
得到密码为: Hflag{W31C0M3 T0 THiS 34SY F0R3NSiCX}
[陇剑杯 2021]内存分析(问2)
题目描述
网管小王制作了一个虚拟机文件,让您来分析后作答:
虚拟机中有一个某品牌手机的备份文件,文件里的图片里的字符串为_____________。(解题过程中需要用到上一题答案中flag{}内的内容进行处理。本题的格式也是flag{xxx},含有空格,提交时不要去掉)。得到的flag请使用NSSCTF{}格式提交。
接上题,可以看到密码是ctf用户的,那么我们后面的虚拟机文件也应该是ctf用户的,过滤ctf用户的文件
vol -f Target.vmem filescan | Select-String "Desk"
得到含有华为的文件,甚至你可以直接看见有图片的字样,即image和picture
那么虚拟机应该就是华为,过滤一下
vol -f Target.vmem filescan | Select-String "HUAWEI"
将上面的exe文件导出来,得到两个文件
.\volatility_2.6_win64_standalone.exe -f C:\Users\顺\Desktop\内存分析\Target.vmem --profile=Win7SP1x64 dumpfiles -Q 0x000000007d8c7d10 -D C:\Users\顺\Desktop\内存分析\output
注:之前版本的导不出来,不知道为什么导是这个样子 ,操作成功,没有结果,有懂的师傅解释一下,我换了volatility_2.6_win64_standalone这个版本就成功了,命令稍微有点区别,但是大差不差。
PS E:\取证工具\取证工具包\volatility\volatility3> vol -f Target.vmem windows.dumpfiles --virtaddr 0x7fe72430
Volatility 3 Framework 2.11.0
WARNING volatility3.framework.layers.vmware: No metadata file found alongside VMEM file. A VMSS or VMSN file may be required to correctly process a VMEM file. These should be placed in the same directory with the same file name, e.g. Target.vmem and Target.vmss.
Progress: 100.00 PDB scanning finished
Cache FileObject FileName Result
将下面的dat文件分离,得到压缩包,解压,得到一个文件
将上面的文件用华为的解密软件解密
py .\kobackupdec.py -vvv W31C0M3_T0_THiS_34SY_F0R3NSiCX "D:\desktop\HUAWEI P40_2021-aa-bb xx.yy.zz" "D:\desktop\VVV"
[蓝帽杯 2022 初赛]计算机取证_1
题目描述
现对一个windows计算机进行取证,请您对以下问题进行分析解答。
从内存镜像中获得taqi7的开机密码是多少?
压缩包密码为93ce7ea39bdd7baa137f1e9b963b7ee5
该题目复现环境尚未取得主办方及出题人相关授权,如果侵权,请联系管理员删除。
得到的flag请使用NSSCTF{}形式提交
内存镜像,用volatility先看看计算机的信息,看到是Win7SP1x64
.\volatility_2.6_win64_standalone.exe -f 1.dmp imageinfo
提取一下hash
vol -f 1.dmp windows.hashdump.Hashdump
Volatility 3 Framework 2.11.0
Progress: 100.00 PDB scanning finished
User rid lmhash nthash
Administrator 500 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
Guest 501 aad3b435b51404eeaad3b435b51404ee 31d6cfe0d16ae931b73c59d7e0c089c0
taqi7 1000 aad3b435b51404eeaad3b435b51404ee 7f21caca5685f10d9e849cc84c340528
naizheng 1002 aad3b435b51404eeaad3b435b51404ee d123b09e13b1a82277c3e3f0ca722060
qinai 1003 aad3b435b51404eeaad3b435b51404ee 1c333843181864a58156f3e9498fe905
解密一下taqi7的密码,得到正确的密码
[蓝帽杯 2022 初赛]计算机取证_2
现对一个windows计算机进行取证,请您对以下问题进行分析解答。
制作该内存镜像的进程Pid号是多少?
压缩包密码为93ce7ea39bdd7baa137f1e9b963b7ee5
直接查看进程,进程号是2192
vol -f 1.dmp windows.pslist //查看进程
vol -f 1.dmp windows.psscan //扫描所有进程
[蓝帽杯 2022 初赛]计算机取证_3
题目描述
现对一个windows计算机进行取证,请您对以下问题进行分析解答。
bitlokcer分区某office文件中存在的flag值为?(答案参考格式:NSSCTF{abcABC123})
[蓝帽杯 2022 初赛]计算机取证_4
题目描述
现对一个windows计算机进行取证,请您对以下问题进行分析解答。
TrueCrypt加密中存在的flag值为?(答案参考格式:flag{abcABC123})
[蓝帽杯 2022 初赛]网站取证_1
题目描述
据了解,某网上商城系一团伙日常资金往来用,从2022年4月1日起使用虚拟币GG币进行交易,现已获得该网站的源代码以及部分数据库备份文件,请您对以下问题进行分析解答。
请从网站源码中找出木马文件,并提交木马连接的密码。
既然是源码,可以先用webshell扫描一下
有两个漏洞
一个是eval
另一个是一句话木马,答案是后面这个
[蓝帽杯 2022 初赛]网站取证_2
题目描述
据了解,某网上商城系一团伙日常资金往来用,从2022年4月1日起使用虚拟币GG币进行交易,现已获得该网站的源代码以及部分数据库备份文件,请您对以下问题进行分析解答。
请提交数据库连接的明文密码
既然有数据库文件,直接搜索database
这里的密码没有直接保存,而是有一个函数,看看这个函数的内容
运行一下看看
注:encrypt这段代码只能在 PHP 5.x 或 PHP 7.0.x 的版本中运行。
<?php
function my_encrypt(){
$str = 'P3LMJ4uCbkFJ/RarywrCvA==';
$str = str_replace(array("/r/n", "/r", "/n"), "", $str);
$key = 'PanGuShi';
$iv = substr(sha1($key),0,16);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,"",MCRYPT_MODE_CBC,"");
mcrypt_generic_init($td, "PanGuShi", $iv);
$decode = base64_decode($str);
$dencrypted = mdecrypt_generic($td, $decode);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$dencrypted = trim($dencrypted);
return $dencrypted;
}
echo my_encrypt();
结果
[蓝帽杯 2022 初赛]网站取证_3
题目描述
请提交数据库金额加密混淆使用的盐值。
该题目复现环境尚未取得主办方及出题人相关授权,如果侵权,请联系管理员删除。
在bak.sql文件中,直接搜索money,可以定位到 Table structure for tab_channel_order_list,上面的内容是和钱有关于的
下一步是去文件里面找相关的数据库备份文件 ,搜索关键词,在channelorder.php里面找到了加密的key
[蓝帽杯 2022 初赛]网站取证_4
题目描述
请计算张宝在北京时间2022-04-02 00:00:00-2022-04-18 23:59:59累计转账给王子豪多少RMB?(换算比例请从数据库中获取,答案参考格式:123.45)
在bak.sql中可以找到代表人物的数据库编号,王子豪是5,张宝是3
换算比例按时间应该是,因为在bak.sql里面搜索RMB只有这几条信息
交易数据在
按照时间和换算比例可以得到总钱数,需要脚本以及去掉加盐。
NSSCTF{15758353.76}
[蓝帽杯 2022 初赛]手机取证_1
题目描述
现对一个苹果手机进行取证,请您对以下问题进行分析解答。
627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是?(
[蓝帽杯 2022 初赛]手机取证_2
题目描述
现对一个苹果手机进行取证,请您对以下问题进行分析解答。
姜总的快递单号是多少?