当前位置:   article > 正文

内存取证-volatility工具的使用 (史上更全教程,更全命令)_volatility内存取证

volatility内存取证

目录

内存取证-volatility工具的使用

一,简介

二,安装Volatility

1.windows下 

2. Linux下(这里kali为例)

三 、安装插件

四,工具介绍help

五,命令格式

​编辑

六,常用命令插件

❤可以先查看当前内存镜像中的用户printkey -K “SAM\Domains\Account\Users\Names”

❤查看用户名密码信息(密码是哈希值,需要john爆破) hashdump

❤如果john爆破不出来,就使用 lasdmp 查看强密码 lsadmp

❤查看进程pslist

❤查看已知进程pslist

❤隐藏或解链的进程psscan

❤查看服务 查询服务名称svcscan

❤查看浏览器历史记录,获取当前系统浏览器搜索过的关键词 iehistory

❤查看网络连接 获取当前系统 ip netscan 

❤查看网络连接connscan

❤查看网络连接connections

❤查看命令行操作,显示cmd历史命令 cmdscan

❤查看进程命令行参数(具体一些可疑进程的参数指令)cmdline

❤扫描所有的文件列表 filescan

❤查看文件内容dmpfiles

❤查看当前展示的notepad内容 notepad

❤显示有关编辑控件(曾经编辑过的内容)的信息 editbox

❤提取进程memdump

❤屏幕截图screenshot

❤查看注册表配置单元hivelist

❤查看注册表键名hivedmp

❤查看注册表键值printkey

❤ 获取主机名 printkey

❤列出用户名 pringkey

❤查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。serassist

❤最大程序提取信息timeliner

❤查看剪贴板信息clipboard

❤显示关于计算机及其操作系统的详细配置信息(插件)systeminfo

❤恢复被删除的文件mftparser

❤查看环境变量envars

❤列出某一进程加载的所有dll文件dlllist

❤程序版本信息 verinfo

❤产看进程树,可以轻松了解各进程之间的关系:父进程与子进程 pstree

❤从内存文件中找到异常程序植入到系统的开机自启痕迹 shimcache

七,内存取证的大致思路

八,例题讲解

题目一

解析

 1.从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password} 形式提交(密码为 6 位);   

2.获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交;

3.获取当前系统浏览器搜索过的关键词,作为 Flag 提交;

4.当前系统中存在挖矿进程,请获取指向的矿池地址,以 Flag{ip:端口}形式 提交;

5.恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

 加油各位( •̀ ω •́ )y 期待与君再相逢


内存取证-volatility工具的使用

一,简介

Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

Volatility是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows,linux,mac osx,android等系统内存取证。Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。

二,安装Volatility

在不同系统下都有不同的软件版本

官网地址:官方地址https://www.volatilityfoundation.org/26

根据自己需求下载

 另外不同的版本下,也存在着一定命令上的差异,使用时一定需注意

支持的内存格式还是很多的,符合日常需求

1.windows下 

直接下载解压就好了

打开cmd 直接输入命令·即可  (cmd必须是当前目录,除非你设了环境变量)

2. Linux下(这里kali为例)

Volatility2.6需要python2,pip安装模块也需要2版本,具体命令根据实际情况调整。

源码包(这是github,比较快,也可以下上面官网的,步骤是一样的)

源码包https://github.com/volatilityfoundation/volatility

下载解压

unzip volatility-master.zip

 安装依赖环境(distorm3 crypto

crypto

 pip2 install pycryptodome

#如果安装失败,可使用以下命令切换国内源

pip2 install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple

distorm3下载地址

GitHub - vext01/distorm3: distorm3


 

下载解压

 unzip distorm3-master.zip  

进行编译

 python2 setup.py install

 可选插件
Distorm3(反编译库):pip install distorm3
Yara(恶意软件分类工具):pip install yara
PyCrypto(加密工具集):pip install pycrypto
PIL(图片处理库):pip install pil
OpenPyxl(读写excel文件):pip install openpyxl
ujson(JSON解析):pip install ujson

安装Volatility

在解压后的Volatility目录下进行编译

 python2 setup.py install

检验

三 、安装插件


安装mimikatz

将mimikatz.py复制到volatility-master/volatility/plugins/目录下,使用时需要添加参数--plugins=./volatility-master/volatility/plugins。
运行时可能会出现如下错误,这是因为没有安装construct 模块:

Volatility Foundation Volatility Framework 2.6
*** Failed to import volatility.plugins.mimikatz (ImportError: No module named construct)
ERROR   : volatility.debug    : You must specify something to do (try -h)


安装construct模块。
pip install construct 
 

四,工具介绍help

输入vol.py  --h 查看官方做出的帮助

翻译如下

  1. Volatility Foundation Volatility Framework 2.6
  2. 用法: Volatility - 内存取证分析平台
  3. Options:
  4. -h, --help 列出所有可用选项及其默认值
  5. 默认值可以在配置文件中设置
  6. (/etc/volatilityrc)
  7. --conf-file=/home/kali/.volatilityrc
  8. 基于用户的配置文件
  9. -d, --debug 调试Volatility
  10. --plugins=PLUGINS 要使用的其他插件目录(冒号分隔)
  11. --info 打印所有注册对象的信息
  12. --cache-directory=/home/kali/.cache/volatility
  13. 存放缓存文件的目录
  14. --cache 使用缓存
  15. --tz=TZ 设置 (Olson) 时区以使用 pytz(如果已安装)或 tzset 显示时间戳
  16. -f FILENAME, --filename=FILENAME
  17. 打开图像时使用的文件名
  18. --profile=WinXPSP2x86
  19. 要加载的配置文件的名称(使用 --info 查看支持的配置文件列表)
  20. -l LOCATION, --location=LOCATION
  21. 从中加载地址空间的 URN 位置
  22. -w, --write 启用写支持
  23. --dtb=DTB DTB 地址
  24. --shift=SHIFT Mac KASLR 移位地址
  25. --output=text 以这种格式输出(支持特定于模块,请参阅下面的模块输出选项)
  26. --output-file=OUTPUT_FILE
  27. 在此文件中写入输出
  28. -v, --verbose 详细信息
  29. -g KDBG, --kdbg=KDBG 指定一个 KDBG 虚拟地址(注意:对于 64 位 Windows 8 及更高版本,这是 KdCopyDataBlock 的地址)
  30. --force 强制使用可疑配置文件
  31. -k KPCR, --kpcr=KPCR 指定特定的 KPCR 地址
  32. --cookie=COOKIE 指定 nt!ObHeaderCookie 的地址(仅适用于 Windows 10
  33. 支持的插件命令:
  34. amcache 查看AmCache应用程序痕迹信息
  35. apihooks 检测内核及进程的内存空间中的API hook
  36. atoms 列出会话及窗口站atom表
  37. atomscan Atom表的池扫描(Pool scanner)
  38. auditpol 列出注册表HKLMSECURITYPolicyPolAdtEv的审计策略信息
  39. bigpools 使用BigPagePoolScanner转储大分页池(big page pools)
  40. bioskbd 从实时模式内存中读取键盘缓冲数据(早期电脑可以读取出BIOS开机密码)
  41. cachedump 获取内存中缓存的域帐号的密码哈希
  42. callbacks 打印全系统通知例程
  43. clipboard 提取Windows剪贴板中的内容
  44. cmdline 显示进程命令行参数
  45. cmdscan 提取执行的命令行历史记录(扫描_COMMAND_HISTORY信息)
  46. connections 打印系统打开的网络连接(仅支持Windows XP 和2003)
  47. connscan 打印TCP连接信息
  48. consoles 提取执行的命令行历史记录(扫描_CONSOLE_INFORMATION信息)
  49. crashinfo 提取崩溃转储信息
  50. deskscan tagDESKTOP池扫描(Poolscaner)
  51. devicetree 显示设备树信息
  52. dlldump 从进程地址空间转储动态链接库
  53. dlllist 打印每个进程加载的动态链接库列表
  54. driverirp IRP hook驱动检测
  55. drivermodule 关联驱动对象至内核模块
  56. driverscan 驱动对象池扫描
  57. dumpcerts 提取RAS私钥及SSL公钥
  58. dumpfiles 提取内存中映射或缓存的文件
  59. dumpregistry 转储内存中注册表信息至磁盘
  60. editbox 查看Edit编辑控件信息 (Listbox正在实验中)
  61. envars 显示进程的环境变量
  62. eventhooks 打印Windows事件hook详细信息
  63. evtlogs 提取Windows事件日志(仅支持XP/2003)
  64. filescan 提取文件对象(file objects)池信息
  65. gahti 转储用户句柄(handle)类型信息
  66. gditimers 打印已安装的GDI计时器(timers)及回调(callbacks)
  67. gdt 显示全局描述符表(Global Deor Table)
  68. getservicesids 获取注册表中的服务名称并返回SID信息
  69. getsids 打印每个进程的SID信息
  70. handles 打印每个进程打开的句柄的列表
  71. hashdump 转储内存中的Windows帐户密码哈希(LM/NTLM)
  72. hibinfo 转储休眠文件信息
  73. hivedump 打印注册表配置单元信息
  74. hivelist 打印注册表配置单元列表
  75. hivescan 注册表配置单元池扫描
  76. hpakextract 从HPAK文件(Fast Dump格式)提取物理内存数据
  77. hpakinfo 查看HPAK文件属性及相关信息
  78. idt 显示中断描述符表(Interrupt Deor Table)
  79. iehistory 重建IE缓存及访问历史记录
  80. imagecopy 将物理地址空间导出原生DD镜像文件
  81. imageinfo 查看/识别镜像信息
  82. impscan 扫描对导入函数的调用
  83. joblinks 打印进程任务链接信息
  84. kdbgscan 搜索和转储潜在KDBG值
  85. kpcrscan 搜索和转储潜在KPCR值
  86. ldrmodules 检测未链接的动态链接DLL
  87. lsadump 从注册表中提取LSA密钥信息(已解密)
  88. machoinfo 转储Mach-O 文件格式信息
  89. malfind 查找隐藏的和插入的代码
  90. mbrparser 扫描并解析潜在的主引导记录(MBR)
  91. memdump 转储进程的可寻址内存
  92. memmap 打印内存映射
  93. messagehooks 桌面和窗口消息钩子的线程列表
  94. mftparser 扫描并解析潜在的MFT条目
  95. moddump 转储内核驱动程序到可执行文件的示例
  96. modscan 内核模块池扫描
  97. modules 打印加载模块的列表
  98. multiscan 批量扫描各种对象
  99. mutantscan 对互斥对象池扫描
  100. notepad 查看记事本当前显示的文本
  101. objtypescan 扫描窗口对象类型对象
  102. patcher 基于页面扫描的补丁程序内存
  103. poolpeek 可配置的池扫描器插件
  104. printkey 打印注册表项及其子项和值
  105. privs 显示进程权限
  106. procdump 进程转储到一个可执行文件示例
  107. pslist 按照EPROCESS列表打印所有正在运行的进程
  108. psscan 进程对象池扫描
  109. pstree 以树型方式打印进程列表
  110. psxview 查找带有隐藏进程的所有进程列表
  111. qemuinfo 转储 Qemu 信息
  112. raw2dmp 将物理内存原生数据转换为windbg崩溃转储格式
  113. screenshot 基于GDI Windows的虚拟屏幕截图保存
  114. servicediff Windows服务列表(ala Plugx)
  115. sessions _MM_SESSION_SPACE的详细信息列表(用户登录会话)
  116. shellbags 打印Shellbags信息
  117. shimcache 解析应用程序兼容性Shim缓存注册表项
  118. shutdowntime 从内存中的注册表信息获取机器关机时间
  119. sockets 打印已打开套接字列表
  120. sockscan TCP套接字对象池扫描
  121. ssdt 显示SSDT条目
  122. strings 物理到虚拟地址的偏移匹配(需要一些时间,带详细信息)
  123. svcscan Windows服务列表扫描
  124. symlinkscan 符号链接对象池扫描
  125. thrdscan 线程对象池扫描
  126. threads 调查_ETHREAD 和_KTHREADs
  127. timeliner 创建内存中的各种痕迹信息的时间线
  128. timers 打印内核计时器及关联模块的DPC
  129. truecryptmaster Recover 恢复TrueCrypt 7.1a主密钥
  130. truecryptpassphrase 查找并提取TrueCrypt密码
  131. truecryptsummary TrueCrypt摘要信息
  132. unloadedmodules 打印卸载的模块信息列表
  133. userassist 打印注册表中UserAssist相关信息
  134. userhandles 转储用户句柄表
  135. vaddump 转储VAD数据为文件
  136. vadinfo 转储VAD信息
  137. vadtree 以树形方式显示VAD树信息
  138. vadwalk 显示遍历VAD树
  139. vboxinfo 转储Virtualbox信息(虚拟机)
  140. verinfo 打印PE镜像中的版本信息
  141. vmwareinfo 转储VMware VMSS/VMSN 信息
  142. volshell 内存镜像中的shell
  143. windows 打印桌面窗口(详细信息)
  144. wintree Z顺序打印桌面窗口树
  145. wndscan 池扫描窗口站
  146. yarascan 以Yara签名扫描进程或内核内存

输入vol.py --info可查看插件。

翻译如下

  1. Volatility Foundation Volatility Framework 2.6
  2. Profiles
  3. --------
  4. VistaSP0x64 - Windows Vista SP0 x64 的配置文件
  5. VistaSP0x86 - Windows Vista SP0 x86 的配置文件
  6. VistaSP1x64 - Windows Vista SP1 x64 的配置文件
  7. VistaSP1x86 - Windows Vista SP1 x86 的配置文件
  8. VistaSP2x64 - Windows Vista SP1 x86 的配置文件
  9. VistaSP2x86 - Windows Vista SP2 x64 的配置文件
  10. Win10x64 - Windows 10 x64 的配置文件
  11. Win10x64_10586 - Windows 10 x64 的配置文件 (10.0.10586.306 / 2016-04-23)
  12. Win10x64_14393 - Windows 10 x64 的配置文件 (10.0.14393.0 / 2016-07-16)
  13. Win10x86 - Windows 10 x86 的配置文件
  14. Win10x86_10586 - Windows 10 x86 的配置文件 (10.0.10586.420 / 2016-05-28)
  15. Win10x86_14393 - Windows 10 x86 的配置文件 (10.0.14393.0 / 2016-07-16)
  16. Win2003SP0x86 - Windows 2003 SP0 x86 的配置文件
  17. Win2003SP1x64 - Windows 2003 SP0 x86 的配置文件
  18. Win2003SP1x86 - Windows 2003 SP1 x86 的配置文件
  19. Win2003SP2x64 - Windows 2003 SP1 x86 的配置文件
  20. Win2003SP2x86 - Windows 2003 SP2 x86 的配置文件
  21. Win2008R2SP0x64 - Windows 2008 R2 SP0 x64 的配置文件
  22. Win2008R2SP1x64 - Windows 2008 R2 SP1 x64 的配置文件
  23. Win2008R2SP1x64_23418 - Windows 2008 R2 SP1 x64 的配置文件 (6.1.7601.23418 / 2016-04-09)
  24. Win2008SP1x64 - Windows 2008 SP1 x64 的配置文件
  25. Win2008SP1x86 - Windows 2008 SP1 x86 的配置文件
  26. Win2008SP2x64 - Windows 2008 SP2 x64 的配置文件
  27. Win2008SP2x86 - Windows 2008 SP2 x86 的配置文件
  28. Win2012R2x64 - Windows Server 2012 R2 x64 的配置文件
  29. Win2012R2x64_18340 - Windows Server 2012 R2 x64 的配置文件 (6.3.9600.18340 / 2016-05-13)
  30. Win2012x64 - Windows Server 2012 x64 的配置文件
  31. Win2016x64_14393 - Windows Server 2016 x64 的配置文件 (10.0.14393.0 / 2016-07-16)
  32. Win7SP0x64 - Windows 7 SP0 x64 的配置文件
  33. Win7SP0x86 - Windows 7 SP0 x86 的配置文件
  34. Win7SP1x64 - Windows 7 SP1 x64 的配置文件
  35. Win7SP1x64_23418 - Windows 7 SP1 x64 的配置文件 (6.1.7601.23418 / 2016-04-09)
  36. Win7SP1x86 - Windows 7 SP1 x86 的配置文件
  37. Win7SP1x86_23418 - Windows 7 SP1 x86 的配置文件 (6.1.7601.23418 / 2016-04-09)
  38. Win81U1x64 - Windows 8.1 更新 1 x64 的配置文件
  39. Win81U1x86 - Windows 8.1 更新 1 x86 的配置文件
  40. Win8SP0x64 - Windows 8 x64 的配置文件
  41. Win8SP0x86 - Windows 8 x86 的配置文件
  42. Win8SP1x64 - Windows 8.1 x64 的配置文件
  43. Win8SP1x64_18340 - Windows 8.1 x64 的配置文件 (6.3.9600.18340 / 2016-05-13)
  44. Win8SP1x86 - Windows 8.1 x86 的配置文件
  45. WinXPSP1x64 - Windows XP SP1 x64 的配置文件
  46. WinXPSP2x64 - Windows XP SP2 x64 的配置文件
  47. WinXPSP2x86 - Windows XP SP2 x86 的配置文件
  48. WinXPSP3x86 - Windows XP SP3 x86 的配置文件
  49. Address Spaces
  50. --------------
  51. AMD64PagedMemory - 标准 AMD 64 位地址空间
  52. ArmAddressSpace - ARM 处理器的地址空间
  53. FileAddressSpace - 这是一个直接文件 AS.
  54. HPAKAddressSpace - 此 AS 支持 HPAK 格式
  55. IA32PagedMemory - 标准 IA-32 分页地址空间
  56. IA32PagedMemoryPae - 此类实现 IA-32 PAE 分页地址空间
  57. LimeAddressSpace - Lime 的地址空间
  58. LinuxAMD64PagedMemory - Linux 特定的 AMD 64 位地址空间
  59. MachOAddressSpace - mach-o 文件的地址空间以支持 atc-ny 内存读取器
  60. OSXPmemELF - 这个 AS 支持 VirtualBox ELF64 coredump 格式
  61. QemuCoreDumpElf - 这个 AS 支持 Qemu ELF32 和 ELF64 核心转储格式
  62. VMWareAddressSpace - 此 AS 支持 VMware 快照 (VMSS) 和保存状态 (VMSS) 文件
  63. VMWareMetaAddressSpace - 此 AS 支持带有 VMSN/VMSS 元数据的 VMEM 格式
  64. VirtualBoxCoreDumpElf64 - 这个 AS 支持 VirtualBox ELF64 coredump 格式
  65. Win10AMD64PagedMemory - Windows 10 特定的 AMD 64 位地址空间
  66. WindowsAMD64PagedMemory - Windows 特定的 AMD 64 位地址空间
  67. WindowsCrashDumpSpace32 - 这个 AS 支持 windows 崩溃转储格式
  68. WindowsCrashDumpSpace64 - 此 AS 支持 windows Crash Dump 格式
  69. WindowsCrashDumpSpace64BitMap - 此 AS 支持 Windows BitMap Crash Dump 格式
  70. WindowsHiberFileSpace32 - 这是 Windows 休眠文件的休眠地址空间
  71. Plugins
  72. -------
  73. amcache - 打印 AmCache 信息
  74. apihooks - 检测进程和内核内存中的 API 挂钩
  75. atoms - 打印会话和窗口站原子表
  76. atomscan - 原子表的池扫描器
  77. auditpol - 从 HKLM\SECURITY\Policy\PolAdtEv 打印出审计策略
  78. bigpools - 使用 BigPagePoolScanner 转储大页面池
  79. bioskbd - 从实模式内存中读取键盘缓冲区
  80. cachedump - 从内存中转储缓存的域哈希
  81. callbacks - 打印系统范围的通知例程
  82. clipboard - 提取 Windows 剪贴板的内容
  83. cmdline - 显示进程命令行参数
  84. cmdscan - 通过扫描 _COMMAND_HISTORY 来提取命令历史记录
  85. connections - 打印打开的连接列表 [仅限 Windows XP 和 2003]
  86. connscan - 用于 tcp 连接的池扫描器
  87. consoles - 通过扫描 _CONSOLE_INFORMATION 提取命令历史记录
  88. crashinfo - 转储崩溃转储信息
  89. deskscan - tagDESKTOP(台式机)的 Poolscaner
  90. devicetree - 显示设备树
  91. dlldump - 从进程地址空间转储 DLL
  92. dlllist - 打印每个进程加载的 dll 列表
  93. driverirp - 驱动程序 IRP 挂钩检测
  94. drivermodule - 将驱动程序对象关联到内核模块
  95. driverscan - 驱动程序对象的池扫描器
  96. dumpcerts - 转储 RSA 私有和公共 SSL 密钥
  97. dumpfiles - 提取内存映射和缓存文件
  98. dumpregistry - 将注册表文件转储到磁盘
  99. editbox - 显示有关编辑控件的信息(列表框实验)
  100. envars - 显示进程环境变量
  101. eventhooks - 在 Windows 事件挂钩上打印详细信息
  102. evtlogs - 提取 Windows 事件日志(仅限 XP/2003)
  103. filescan - 文件对象的池扫描器
  104. gahti - 转储 USER 句柄类型信息
  105. gditimers - 打印已安装的 GDI 计时器和回调
  106. gdt - 显示全局描述符表
  107. getservicesids - 获取 Registry 中的服务名称并返回计算的 SID
  108. getsids - 打印拥有每个进程的 SID
  109. handles - 打印每个进程的打开句柄列表
  110. hashdump - 从内存中转储密码哈希 (LM/NTLM)
  111. hibinfo - 转储休眠文件信息
  112. hivedump - 打印注册表
  113. hivelist - 打印注册表配置单元列表
  114. hivescan - 注册表配置单元的池扫描程序
  115. hpakextract - 从 HPAK 文件中提取物理内存
  116. hpakinfo - 有关 HPAK 文件的信息
  117. idt - 显示中断描述符表
  118. iehistory - 重建 Internet Explorer 缓存/历史
  119. imagecopy - 将物理地址空间复制为原始 DD 映像
  120. imageinfo - 识别图像的信息
  121. impscan - 扫描对导入函数的调用
  122. joblinks - 打印进程作业链接信息
  123. kdbgscan - 搜索和转储潜在的 KDBG 值
  124. kpcrscan - 搜索和转储潜在的 KPCR 值
  125. ldrmodules - 检测未链接的 DLL
  126. limeinfo - 转储 Lime 文件格式信息
  127. linux_apihooks - 检查用户态 apihooks
  128. linux_arp - 打印 ARP 表
  129. linux_aslr_shift - 自动检测 Linux ASLR shift
  130. linux_banner - 打印 Linux 横幅信息
  131. linux_bash - 从 bash 进程内存中恢复 bash 历史记录
  132. linux_bash_env - 恢复进程的动态环境变量
  133. linux_bash_hash - 从 bash 进程内存中恢复 bash 哈希表
  134. linux_check_afinfo - 验证网络协议的操作函数指针
  135. linux_check_creds - 检查是否有进程共享凭证结构
  136. linux_check_evt_arm - 检查异常向量表以查找系统调用表挂钩
  137. linux_check_fop - 检查 rootkit 修改的文件操作结构
  138. linux_check_idt - 检查 IDT 是否已被更改
  139. linux_check_inline_kernel - 检查内联内核挂钩
  140. linux_check_modules - 将模块列表与 sysfs 信息进行比较(如果可用)
  141. linux_check_syscall - 检查系统调用表是否已更改
  142. linux_check_syscall_arm - 检查系统调用表是否已更改
  143. linux_check_tty - 检查 tty 设备的钩子
  144. linux_cpuinfo - 打印每个活动处理器的信息
  145. linux_dentry_cache - 从 dentry 缓存中收集文件
  146. linux_dmesg - 收集 dmesg 缓冲区
  147. linux_dump_map - 将选定的内存映射写入磁盘
  148. linux_dynamic_env - 恢复进程的动态环境变量
  149. linux_elfs - 在进程映射中查找 ELF 二进制文件
  150. linux_enumerate_files - 列出文件系统缓存引用的文件
  151. linux_find_file - 列出并从内存中恢复文件
  152. linux_getcwd - 列出每个进程的当前工作目录
  153. linux_hidden_modules - 雕刻内存以查找隐藏的内核模块
  154. linux_ifconfig - 收集活动接口
  155. linux_info_regs - 就像 GDB 中的“信息寄存器”。 它打印出所有
  156. linux_iomem - 提供类似于 /proc/iomem 的输出
  157. linux_kernel_opened_files - 列出从内核中打开的文件
  158. linux_keyboard_notifiers - 解析键盘通知器调用链
  159. linux_ldrmodules - 将 proc 映射的输出与 libdl 中的库列表进行比较
  160. linux_library_list - 列出加载到进程中的库
  161. linux_librarydump - 将进程内存中的共享库转储到磁盘
  162. linux_list_raw - 列出具有混杂套接字的应用程序
  163. linux_lsmod - 收集加载的内核模块
  164. linux_lsof - 列出文件描述符及其路径
  165. linux_malfind - 寻找可疑的进程映射
  166. linux_memmap - 转储 linux 任务的内存映射
  167. linux_moddump - 提取加载的内核模块
  168. linux_mount - 收集挂载的 fs/devices
  169. linux_mount_cache - 从 kmem_cache收集挂载的 fs/devices
  170. linux_netfilter - 列出 Netfilter 钩子
  171. linux_netscan - 雕刻网络连接结构
  172. linux_netstat - 列出打开的套接字
  173. linux_pidhashtable - 通过 PID 哈希表枚举进程
  174. linux_pkt_queues - 将每个进程的数据包队列写入磁盘
  175. linux_plthook - 扫描 ELF 二进制文件的 PLT 以获取非需要图像的挂钩
  176. linux_proc_maps - 收集进程内存映射
  177. linux_proc_maps_rb - 通过映射红黑树为 linux 收集进程映射
  178. linux_procdump - 将进程的可执行映像转储到磁盘
  179. linux_process_hollow - 检查进程空心的迹象
  180. linux_psaux - 收集进程以及完整的命令行和开始时间
  181. linux_psenv - 收集进程及其静态环境变量
  182. linux_pslist - 通过遍历 task_struct->task 列表来收集活动任务
  183. linux_pslist_cache - 从 kmem_cache 收集任务
  184. linux_psscan - 扫描进程的物理内存
  185. linux_pstree - 显示进程之间的父/子关系
  186. linux_psxview - 使用各种进程列表查找隐藏进程
  187. linux_recover_filesystem - 从内存中恢复整个缓存文件系统
  188. linux_route_cache - 从内存中恢复路由缓存
  189. linux_sk_buff_cache - 从 sk_buff kmem_cache 中恢复数据包
  190. linux_slabinfo - 在运行的机器上模拟 /proc/slabinfo
  191. linux_strings - 将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
  192. linux_threads - 打印进程的线程
  193. linux_tmpfs - 从内存中恢复 tmpfs 文件系统
  194. linux_truecrypt_passphrase - 恢复缓存的 Truecrypt 密码
  195. linux_vma_cache - 从 vm_area_struct 缓存中收集 VMA
  196. linux_volshell - 内存映像中的 Shell
  197. linux_yarascan - Linux 内存映像中的 shell
  198. lsadump - 从注册表中转储(解密的)LSA 机密
  199. mac_adium - 列出 Adium 消息
  200. mac_apihooks - 检查进程中的 API 挂钩
  201. mac_apihooks_kernel - 检查系统调用和内核函数是否被挂钩
  202. mac_arp - 打印 arp 表
  203. mac_bash - 从 bash 进程内存中恢复 bash 历史记录
  204. mac_bash_env - 恢复 bash 的环境变量
  205. mac_bash_hash - 从 bash 进程内存中恢复 bash 哈希表
  206. mac_calendar - 从 Calendar.app 获取日历事件
  207. mac_check_fop - 验证文件操作指针
  208. mac_check_mig_table - 列出内核 MIG 表中的整体
  209. mac_check_syscall_shadow - 查找影子系统调用表
  210. mac_check_syscalls - 检查系统调用表条目是否被挂钩
  211. mac_check_sysctl - 检查未知的 sysctl 处理程序
  212. mac_check_trap_table - 检查 mach 陷阱表条目是否被钩住
  213. mac_compressed_swap - 打印 Mac OS X VM 压缩器统计数据并转储所有压缩页面
  214. mac_contacts - 从 Contacts.app 获取联系人姓名
  215. mac_dead_procs - 打印终止/取消分配的进程
  216. mac_dead_sockets - 打印终止/取消分配的网络套接字
  217. mac_dead_vnodes - 列出释放的 vnode 结构
  218. mac_devfs - 列出文件缓存中的文件
  219. mac_dmesg - 打印内核调试缓冲区
  220. mac_dump_file - 转储指定文件
  221. mac_dump_maps - 转储进程的内存范围,可选地包括压缩交换中的页面
  222. mac_dyld_maps - 从 dyld 数据结构中获取进程的内存映射
  223. mac_find_aslr_shift - 查找 10.8+ 图像的 ASLR 移位值
  224. mac_get_profile - 自动检测 Mac 配置文件
  225. mac_ifconfig - 列出所有设备的网络接口信息
  226. mac_interest_handlers - 列出 IOKit 兴趣处理程序
  227. mac_ip_filters - 报告任何挂钩的 IP 过滤器
  228. mac_kernel_classes - 列出内核中加载的 c++ 类
  229. mac_kevents - 显示进程的父/子关系
  230. mac_keychaindump - 恢复可能的钥匙串密钥。 使用chainbreaker打开相关的keychain文件
  231. mac_ldrmodules - 将 proc 映射的输出与 libdl 中的库列表进行比较
  232. mac_librarydump - 转储进程的可执行文件
  233. mac_list_files - 列出文件缓存中的文件
  234. mac_list_kauth_listeners - 列出 Kauth Scope 监听器
  235. mac_list_kauth_scopes - 列出 Kauth 范围及其状态
  236. mac_list_raw - 列出具有混杂套接字的应用程序
  237. mac_list_sessions - 枚举会话
  238. mac_list_zones - 打印活动区域
  239. mac_lsmod - 列出加载的内核模块
  240. mac_lsmod_iokit - 列出通过 IOkit 加载的内核模块
  241. mac_lsmod_kext_map - 列出加载的内核模块
  242. mac_lsof - 列出每个进程打开的文件
  243. mac_machine_info - 打印有关样本的机器信息
  244. mac_malfind - 寻找可疑的进程映射
  245. mac_memdump - 将可寻址内存页转储到文件中
  246. mac_moddump - 将指定的内核扩展写入磁盘
  247. mac_mount - 打印挂载的设备信息
  248. mac_netstat - 列出每个进程的活动网络连接
  249. mac_network_conns - 列出来自内核网络结构的网络连接
  250. mac_notesapp - 查找 Notes 消息的内容
  251. mac_notifiers - 检测将钩子添加到 I/O 工具包中的 rootkit(例如 LogKext)
  252. mac_orphan_threads - 列出不映射回已知模块/进程的线程
  253. mac_pgrp_hash_table - 遍历进程组哈希表
  254. mac_pid_hash_table - 遍历 pid 哈希表
  255. mac_print_boot_cmdline - 打印内核启动参数
  256. mac_proc_maps - 获取进程的内存映射
  257. mac_procdump - 转储进程的可执行文件
  258. mac_psaux - 在用户区打印带有参数的进程 (**argv)
  259. mac_psenv - 在用户空间打印带有环境的进程 (**envp)
  260. mac_pslist - 列出正在运行的进程
  261. mac_pstree - 显示进程的父/子关系
  262. mac_psxview - 使用各种进程列表查找隐藏进程
  263. mac_recover_filesystem - 恢复缓存的文件系统
  264. mac_route - 打印路由表
  265. mac_socket_filters - 报告套接字过滤器
  266. mac_strings - 将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
  267. mac_tasks - 列出活动任务
  268. mac_threads - 列出进程线程
  269. mac_threads_simple - 列出线程及其开始时间和优先级
  270. mac_timers - 报告内核驱动程序设置的定时器
  271. mac_trustedbsd - 列出恶意的trustedbsd 策略
  272. mac_version - 打印 Mac 版本
  273. mac_vfsevents - 列出过滤文件系统事件的进程
  274. mac_volshell - 内存映像中的外壳
  275. mac_yarascan - 扫描内存中的 yara 签名
  276. machoinfo - 转储 Mach-O 文件格式信息
  277. malfind - 查找隐藏和注入的代码
  278. mbrparser - 扫描并解析潜在的主引导记录 (MBR)
  279. memdump - 转储进程的可寻址内存
  280. memmap - 打印内存映射
  281. messagehooks - 列出桌面和线程窗口消息挂钩
  282. mftparser - 扫描并解析潜在的 MFT 条目
  283. moddump - 将内核驱动程序转储到可执行文件示例
  284. modscan - 内核模块的池扫描器
  285. modules - 打印加载模块的列表
  286. multiscan - 一次扫描各种对象
  287. mutantscan - 互斥对象的池扫描器
  288. netscan - 扫描 Vista(或更高版本)图像的连接和套接字
  289. notepad - 列出当前显示的记事本文本
  290. objtypescan - 扫描 Windows 对象类型对象
  291. patcher - 基于页面扫描修补内存
  292. poolpeek - 可配置的池扫描器插件
  293. pooltracker - 显示池标签使用的摘要
  294. printkey - 打印注册表项及其子项和值
  295. privs - 显示进程权限
  296. procdump - 将进程转储到可执行文件示例
  297. pslist - 按照 EPROCESS 列表打印所有正在运行的进程
  298. psscan - 进程对象的池扫描器
  299. pstree - 将进程列表打印为树
  300. psxview - 使用各种进程列表查找隐藏进程
  301. qemuinfo - 转储 Qemu 信息
  302. raw2dmp - 将物理内存样本转换为 windbg 故障转储
  303. screenshot - 保存基于 GDI 窗口的伪截图
  304. servicediff - 列出 Windows 服务(ala Plugx)
  305. sessions - 列出 _MM_SESSION_SPACE 的详细信息(用户登录会话)
  306. shellbags - 打印 ShellBags 信息
  307. shimcache - 解析应用程序兼容性 Shim Cache 注册表项
  308. shutdowntime - 从注册表打印机器的 ShutdownTime
  309. sockets - 打印打开的套接字列表
  310. sockscan - tcp 套接字对象的池扫描器
  311. ssdt - 显示 SSDT 条目
  312. strings - 将物理偏移量与虚拟地址匹配(可能需要一段时间,非常冗长)
  313. svcscan - 扫描 Windows 服务
  314. symlinkscan - 符号链接对象的池扫描器
  315. thrdscan - 线程对象的池扫描器
  316. threads - 调查 _ETHREAD 和 _KTHREADs
  317. timeliner - 从内存中的各种工件创建时间线
  318. timers - 打印内核定时器和相关的模块 DPC
  319. truecryptmaster - 恢复 TrueCrypt 7.1a 主密钥
  320. truecryptpassphrase - TrueCrypt 缓存密码短语查找器
  321. truecryptsummary - TrueCrypt 总结
  322. unloadedmodules - 打印已卸载模块的列表
  323. userassist - 打印 userassist 注册表项和信息
  324. userhandles - 转储 USER 句柄表
  325. vaddump - 将 vad 部分转储到文件中
  326. vadinfo - 转储 VAD 信息
  327. vadtree - 遍历 VAD 树并以树格式显示
  328. vadwalk - 走 VAD 树
  329. vboxinfo - 转储 virtualbox 信息
  330. verinfo - 从 PE 图像中打印出版本信息
  331. vmwareinfo - 转储 VMware VMSS/VMSN 信息
  332. volshell - 内存映像中的 Shell
  333. win10cookie - 查找 Windows 10 的 ObHeaderCookie 值
  334. windows - 打印桌面窗口(详细信息)
  335. wintree - 打印Z顺序桌面Windows树
  336. wndscan - 用于窗口站的池扫描仪
  337. yarascan - 使用 Yara 签名扫描进程或内核内存
  338. Scanner Checks
  339. --------------
  340. CheckPoolSize - 检查池块大小
  341. CheckPoolType - 检查池类型
  342. KPCRScannerCheck - 检查自引用指针以查找KPCR
  343. MultiPrefixFinderCheck - 每页检查多个字符串,在偏移处完成
  344. MultiStringFinderCheck - 每页检查多个字符串
  345. PoolTagCheck - 此扫描程序检查池标记的出现

五,命令格式

volatility -f [image] --profile=[profile] [plugin]

volatility -f [对象] --profile=[操作系统] [插件参数]

在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统 命令imageinfo即可获取镜像信息。

    Volatility -f xxx.vmem imageinfo

在查到操作系统后如果不确定可以使用以下命令查看

volatility - f xxx.vmem --profile= [操作系统] volshell

举个例子 像这种什么都找不到 什么都

 像这种就是合格的

当我们确定操作系统就可以利用插件去做题了

六,常用命令插件

可以先查看当前内存镜像中的用户printkey -K “SAM\Domains\Account\Users\Names”

volatility -f 1.vmem –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”

查看用户名密码信息(密码是哈希值,需要john爆破) hashdump

volatility -f 1.vmem --profile=Win7SP1x64 hashdump

查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)

如果john爆破不出来,就使用 lasdmp 查看强密码 lsadmp

volatility -f 1.vmem --profile=Win7SP1x64 lsadump

查看进程pslist

volatility -f 1.vmem --profile=Win7SP1x64 pslist

pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以

查看已知进程pslist

volatility -f 1.vmem --profile=Win7SP1x64 pslist -p 2588

隐藏或解链的进程psscan

volatility -f 1.vmem --profile=Win7SP1x64 psscan

psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程

查看服务 查询服务名称svcscan

volatility -f 1.vmem --profile=Win7SP1x64 svcscan

svcscan:扫描 Windows 的服务

查看浏览器历史记录,获取当前系统浏览器搜索过的关键词 iehistory

volatility -f 1.vmem --profile=Win7SP1x64 iehistory

查看网络连接 获取当前系统 ip netscan 

volatility -f 1.vmem --profile=Win7SP1x64 netscan

有一些版本 这个命令是使用不了 这里我们就要使用(connscan,connections)

查看网络连接connscan

volatility -f 1.vmem --profile=Win7SP1x64 connscan

connscan:查看网络连接

查看网络连接connections

volatility -f 1.vmem --profile=Win7SP1x64 connections

connections:查看网络连接

查看命令行操作,显示cmd历史命令 cmdscan

volatility -f 1.vmem --profile=Win7SP1x64 cmdscan

cmdscan:可用于查看终端记录

查看进程命令行参数(具体一些可疑进程的参数指令)cmdline

volatility -f 1.vmem --profile=Win7SP1x64 cmdline

扫描所有的文件列表 filescan

volatility -f 1.vmem --profile=Win7SP1x64 filescan

linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’

       volatility -f 1.vmem --profile=Win7SP1x64 filescan grep "flag.txt"

cat system.txt|grep -i computername

查看文件内容dmpfiles

volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./

需要指定偏移量 -Q 和输出目录 -D

dumpfiles:导出某一文件(指定虚拟地址)

查看当前展示的notepad内容 notepad

volatility -f 1.vmem --profile=Win7SP1x64 notepad

查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)

显示有关编辑控件(曾经编辑过的内容)的信息 editbox

volatility -f 1.vmem --profile=Win7SP1x64 editbox

editbox:显示有关编辑控件(曾经编辑过的内容)的信息 查看内存中记事本的内容

提取进程memdump

volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./

memdump:提取出指定进程,常用foremost 来分离里面的文件  

需要指定进程-p [pid] 和输出目录 -D

memdump -p 332 -D XX/   

提取进程   -p 进程号 -D 当前输出路径(导出为332.dmp)

dump出来的进程文件,可以使用 foremost 来分离里面的文件,用 binwak -e 不推荐

strings -e l 2040.dmp | grep flag 查找flag

屏幕截图screenshot

volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./

screenshot:保存基于GDI窗口的伪截屏

查看注册表配置单元hivelist

volatility -f 1.vmem --profile=Win7SP1x64 hivelist

hivelist: 列出所有的注册表项及其虚拟地址和物理地址

查看注册表键名hivedmp

volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410

查看注册表键值printkey

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"

 获取主机名 printkey

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\ComputerName\ComputerName"

列出用户名 pringkey

volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"

查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。serassist

volatility -f 1.vmem --profile=Win7SP1x64 userassist

最大程序提取信息timeliner

volatility -f 1.vmem --profile=Win7SP1x64 timeliner

timeliner: 将所有操作系统事件以时间线的方式展开

查看剪贴板信息clipboard

volatility -f 1.vmem --profile=Win7SP1x64 clipboard

clipboard:查看剪贴板信息

显示关于计算机及其操作系统的详细配置信息(插件)systeminfo

volatility -f 1.vmem --profile=Win7SP1x64 systeminfo

systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)

恢复被删除的文件mftparser

volatility -f 1.vmem --profile=Win7SP1x64 mftparser

mftparser:恢复被删除的文件

查看环境变量envars

volatility -f 1.vmem --profile=Win7SP1x64 envars

envars:查看环境变量

列出某一进程加载的所有dll文件dlllist

volatility -f 1.vmem --profile=Win7SP1x64 dlllist -p 2588

dlllist: 列出某一进程加载的所有dll文件

需要指定进程-p [pid]

程序版本信息 verinfo

volatility -f 1.vmem --profile=Win7SP1x64 verinfo

列出PE|程序版本信息

产看进程树,可以轻松了解各进程之间的关系:父进程与子进程 pstree

volatility -f 2008.raw –profile=Win2008R2SP1x64 pstree

进程PPID比PID还大,那就可能这个进程有异常程序

从内存文件中找到异常程序植入到系统的开机自启痕迹 shimcache

volatility -f 2008.raw –profile=Win2008R2SP1x64 shimcache

七,内存取证的大致思路

首先确定镜像是何种操作系统的,命令imageinfo即可获取镜像信息。

需要获取的是计算机在这一时刻运行了哪些进程。

Volatility提供了众多的分析进程的命令,如pstree、pesscan、pslist……

filescan命令可以对打开的文件进行扫描。

命令dumpfile和memdump命令将相关数据导出,然后对导出的数据进行二进制分析。

简单说只要熟悉Volatility工具的常用命令,并能够对结合其他类型的知识(图片隐写、压缩包分析等)对提取出的文件进行分析,便可轻松解决。

但当然具体问题具体分析吗  但插件就上面的 

八,例题讲解

这里我们就找两个典型例题 讲解一下哦

题目一

46届世界技能大赛湖北省选拔赛 也是今年金砖比赛的样题

链接:https://pan.baidu.com/s/1tYgIicCqJExmaMLYa3YeSA 
提取码:lulu 

你作为 A 公司的应急响应人员,请分析提供的内存文件按照下面的要求找到 相关关键信息,完成应急响应事件。

1、从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password} 形式提交(密码为 6 位);   

2、获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交;

3、获取当前系统浏览器搜索过的关键词,作为 Flag 提交;

4、当前系统中存在挖矿进程,请获取指向的矿池地址,以 Flag{ip:端口}形式 提交;

5、恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

上题已经看到进程

解析

 1.从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password} 形式提交(密码为 6 位);   

      不管什么题内存取证的第一步肯定是去判断当前的镜像信息,分析出是哪个操作系统   使用参数  imageinfo 查看系统信息

      volatility -f 1.vmem imageinfo

操作系统我们一般取第一个就可以了

接下来就可以输入参数

可以先查看当前内存镜像中的用户

volatility -f 1.vmem –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names”

 使用hashdump获取sam

volatility -f 1.vmem --profile=Win7SP1x64 hashdump

 可以通过john工具来进行爆破,但是好像跑不出来结果。应该是设定了强密码。于是只能使用了lasdump命令来查看

volatility -f 1.vmem --profile=Win7SP1x64 lsadump

 

 

  flag{admin.dfsddew}

2.获取当前系统 ip 地址及主机名,以 Flag{ip:主机名}形式提交;

 Netscan 可以查ip

volatility -f 1.vmem --profile=Win7SP1x64 netscan

 Ip:192.168.85.129

主机名需要通过查询注册表,先用hivelist

Volatility -f  1.vmem --profile=Win7SP1x64 hivelist

 然后我们需要一步一步去找键名

volatility -f 1.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey

 volatility -f 1.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001"

继续

volatility -f 1.vmem --profile=Win7SP1x64  -o 0xfffff8a000024010 printkey -K "ControlSet001\Control "

继续

volatility -f 1.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName"

再来

volatility -f 1.vmem --profile=Win7SP1x64 -o 0xfffff8a000024010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"

得到主机名WIN-9FBAEH4UV8C

也可以直接通过 hivedump查询相应的键名 但比较慢

volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a000024010 > system.txt

3.获取当前系统浏览器搜索过的关键词,作为 Flag 提交;

这里使用iehistory

volatility -f 1.vmem --profile=Win7SP1x64 iehistory

  flag{admin@file:///C:/Users/admin/Desktop/flag.txt}

4.当前系统中存在挖矿进程,请获取指向的矿池地址,以 Flag{ip:端口}形式 提交;

volatility -f 1.vmem --profile=Win7SP1x64 netscan 

唯一一个已建立的

  flag{54.36.109.161:2222}

5.恶意进程在系统中注册了服务,请将服务名以 Flag{服务名}形式提交。

上一题中已经知道了进程号为2588

volatility -f 1.vmem --profile=Win7SP1x64 pslist -p 2588

查到父进程是3036

然后在通过通过svcscan可以查询服务名称,找到对应服务名

volatility -f 1.vmem --profile=Win7SP1x64 svcscan

 flag{VMnetDHCP}

 加油各位( •̀ ω •́ )y 期待与君再相逢

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号