内存取证之windows-Volatility 3

devtools/2025/3/31 11:44:12/

一,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

  1. NTBuildLab7601.17514.amd64fre.win7sp1_rtm.

    • 7601 是 Windows 7 SP1 的内部版本号。

    • amd64fre 表示 64 位版本。

    • win7sp1_rtm 表示 Windows 7 Service Pack 1。

  2. CSDVersion1

    • 表示安装了 Service Pack 1。

  3. Major/Minor15.7601

    • 15 是 Windows 7 的内部版本号。

    • 7601 是 Windows 7 SP1 的版本号。

  4. NtMajorVersion / NtMinorVersion6 / 1

    • 6.1 对应 Windows 7。

  5. Is64BitTrue

    • 表示操作系统是 64 位。

然后使用lsadump从注册表中提取LSA密钥信息 

LSA 的主要功能

  1. 用户认证

    • LSA 负责验证用户的登录凭证(如用户名和密码)。

    • 它通过与 SAM(Security Account Manager)数据库或 Active Directory 交互来完成认证。

  2. 安全策略管理

    • LSA 管理本地安全策略,如密码策略、账户锁定策略等。

  3. 生成安全令牌

    • 在用户成功登录后,LSA 会生成一个 安全令牌(Security Token),其中包含用户的权限信息。

    • 这个令牌用于后续的权限验证和访问控制。

  4. 存储机密信息

    • 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  nthashAdministrator   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

题目描述

现对一个苹果手机进行取证,请您对以下问题进行分析解答。
姜总的快递单号是多少?


http://www.ppmy.cn/devtools/170957.html

相关文章

火绒终端安全管理系统V2.0——行为管理(软件禁用+违规外联)

火绒终端安全管理系统V2.0&#xff1a;行为管理策略分为软件禁用和违规外联两部分&#xff0c;能够管理终端用户软件的使用&#xff0c;以及终端用户违规连接外部网络的问题。 l 软件禁用 软件禁用策略可以选择软件名单的属性、添加软件名单以及设置发现终端使用禁用软件时的…

【开源宝藏】30天学会CSS - DAY3 第三课 滑动文本+变色

以下是一个逐步拆解的中文教程&#xff0c;帮助你理解并复刻这个文字平滑滑动&#xff0c;并在不同背景区域显示不同文字颜色的示例。该示例的核心是&#xff1a;在页面中有两部分背景&#xff08;左侧红色、右侧浅绿色&#xff09;&#xff0c;同一句文字在水平方向滑动时&…

Redis 全攻略:从基础操作到 Spring Boot 集成实战

一、Redis 基础入门 1. Redis 初相识 Redis 是一款基于内存的高性能键值存储数据库,它就像是一个强大的 “内存管家”。与传统数据库相比,Redis 就像你随身携带的便捷记事本,能让你快速记录和查找信息;而传统数据库则如同图书馆里的大百科全书,虽然信息全面,但查找起来…

OpenCV HighGUI 模块使用指南(Python 版)

用户让我编写一个 HighGUI 模块的使用指南&#xff0c;包括函数的使用和应用场景的实现。首先&#xff0c;我需要回顾 HighGUI 模块的主要功能&#xff1a;图像显示、视频捕获、鼠标和键盘事件。然后&#xff0c;按照用户提供的结构&#xff0c;整理每个部分的函数详解、代码示…

HTML:form表单简单介绍

定义与作用 <form>标签用于创建HTML表单&#xff0c;是用户输入信息与网页互动的一种形式&#xff0c;表单中的数据可以被发送到服务器进行处理。 基本语法 基本形式为<form action"URL" method"get|post"></form>&#xff0c;其中ac…

鸿蒙开发:远场通信服务rcp拦截器问题

前言 本文基于Api13。 上篇文章&#xff0c;简单的对rcp中的会话问题做了概述&#xff0c;本篇文章&#xff0c;我们聊一聊rcp中的拦截器问题&#xff0c;按照正常开发&#xff0c;其实拦截器中也不存在问题的&#xff0c;毕竟都是很官方的开发方式&#xff0c;但是在结合了创建…

【ArcGIS】ArcGIS10.8安装过程(失败记录)

参考 ArcGIS 10.8中文版详细安装教程&#xff08;附安装包&#xff09;_arcgis10.8-CSDN博客 双击ArcGIS_Desktop_108_172737.exe程序 解压完成 选择完全安装 选择安装目录 原:C:\Program Files (x86)\ArcGIS\ Python安装目录 原:C:\Python27\ 点击Install开始安装 安装中…

Cannot find module @rollup/rollup-win32-x64-msvc

方法1 在package.json中添加postinstall: "scripts": {"postinstall": "node -e \"const { platform } process; if (platform win32) { require(child_process).execSync(npm install rollup/rollup-win32-x64-msvc, { stdio: inherit });…