volatility2工具的使用vol2工具篇
vol2工具
命令格式:vol.py -f [image] --profile=[profile] [plugin]
1、查看系统的操作版本,系统镜像信息
2.查看用户名密码信息,当前操作系统中的password hash,例如SAM文件内容
3.从注册表提取LSA密钥信息(已解密)
这里没有,有的镜像可疑从这里直接提取到密码,flag等
4.列出系统进程,但它不能检测到隐藏或者解链的进程
5.可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
命令没错,只是镜像中没有这个隐藏的进程
6.以树的形式查看进程列表,和pslist一样,也无法检测到隐藏或解链的进程
7.提取进程,-p是进程号,-D存储的文件夹,提取指定进程
这里是dump下来2096的进程
vol.py -f Target.mem --profile=Win7SP0x64 memdump -p xxx --dump-dir=./ //这个一样
8.查看服务,里面有内存地址,有服务名(进程名)
9.查看ie浏览器记录,这里没有浏览器记录,所以为空
10.查看网络连接,排查挖矿进程,恶意进程
11.查看历史命令记录
12.查看并过滤txt或者jpg的文件
13.提取文件
14.查看当前notepad的内容
vol.py -f Target.mem --profile=Win7SP0x64 notepad
15.查看屏幕截图
16.查看注册表单元
17.导出注册表
18.获取注册表,-K“键值” -o是索引值
19.查看运行程序相关记录
20.查看时间栈信息
21.查看剪切板信息
这里剪切板信息为空
22.恢复或被删除的文件
23.查看环境变量
24.程序版本信息
25.从内存文件中找到异常程序植入到系统的开机自启痕迹-恶意开机自启
26.使用mimikatz来查看系统密码,这里缺少插件
27.看命令行参数看它是如何启动的
28.下载内存进程exe程序,用来逆向分析,也可直接运行
29.查看数据库元数据信息
这里是提示镜像中无信息
30.检测和分析windows系统中存在API钩子
36.查看转储原子表文件内容,识别恶意窗口
37.发现潜在的恶意活动,隐藏窗口或篡改窗口资源
38.查找可能被注入或隐藏的恶意代码,看恶意进程和内存地址
39.进程虚拟地址空间的数据结构
40.如果如下则操作系统版本没错,否则会报错并提示
命令详细使用和插件解释等
操作系统查看
./vol.py -f file.dmp imageinfo
哈希/密码提取:SAM哈希、域缓存凭据和LSA密码
./vol.py --profile=Win7SP1x86_23418 hashdump -f file.dmp #获取常见的 Windows 哈希(SAM+SYSTEM) ./vol.py --profile=Win7SP1x86_23418 cachedump -f file.dmp #提取注册表中的域缓存哈希 ./vol.py --profile=Win7SP1x86_23418 lsadump -f file.dmp #提取 LSA 密码
内存转储
./vol.py -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/
进程信息
尝试查找可疑进程(通过名称)或意外的子进程(例如,cmd.exe 作为 iexplorer.exe 的子进程)。将 pslist 的结果与 psscan 的结果进行比较,以识别隐藏的进程
volatility --profile=PROFILE pstree -f file.dmp # 获取进程树(非隐藏) volatility --profile=PROFILE pslist -f file.dmp # 获取进程列表(EPROCESS) volatility --profile=PROFILE psscan -f file.dmp # 获取隐藏进程列表(恶意软件) volatility --profile=PROFILE psxview -f file.dmp # 获取隐藏进程列表
转储进程
volatility --profile=Win7SP1x86_23418 procdump --pid=3152 -n --dump-dir=. -f file.dmp
命令行
volatility --profile=PROFILE cmdline -f file.dmp # 显示进程命令行参数 volatility --profile=PROFILE consoles -f file.dmp # 通过扫描 _CONSOLE_INFORMATION 获取命令历史
环境变量
volatility --profile=PROFILE envars -f file.dmp [--pid <pid>] # 显示进程的环境变量 volatility --profile=PROFILE -f file.dmp linux_psenv [-p <pid>] # 获取进程的环境变量。runlevel 变量表示进程启动时的运行级别
Token privileges检查意外服务中的权限令牌。列出使用某些权限令牌的进程
# 获取某些进程的启用权限 volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled # 获取所有具有权限的进程 volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege|SeAssignPrimaryPrivilege|SeTcbPrivilege|SeBackupPrivilege|SeRestorePrivilege|SeCreateTokenPrivilege|SeLoadDriverPrivilege|SeTakeOwnershipPrivilege|SeDebugPrivilege"
SIDs检查每个进程拥有的 SSID。列出使用权限 SID(或使用某些服务 SID)的进程。
volatility --profile=Win7SP1x86_23418 getsids -f file.dmp # 获取每个进程拥有的 SID volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp # 获取每个服务的 SID
句柄,了解进程拥有的句柄(已打开的文件、注册表项、线程、进程等)。
volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=<pid>]
DLLs
volatility --profile=Win7SP1x86_23418 dlllist --pid=3152 -f file.dmp # 获取进程使用的 dlls volatility --profile=Win7SP1x86_23418 dlldump --pid=3152 --dump-dir=. -f file.dmp # 转储进程使用的 dlls
按进程查看字符串-检查字符串属于哪个进程
strings file.dmp > /tmp/strings.txt volatility -f /tmp/file.dmp windows.strings.Strings --string-file /tmp/strings.txt volatility -f /tmp/file.dmp --profile=Win81U1x64 memdump -p 3532 --dump-dir . strings 3532.dmp > strings_file
使用yarascan模块在进程中搜索字符串
volatility --profile=Win7SP1x86_23418 yarascan -Y "https://" -p 3692,3840,3976,3312,3084,2784
UserAssist
Windows 使用注册表中的 UserAssist 键 追踪你运行过的程序。这些键记录每个程序执行的次数以及最后一次运行的时间
volatility --profile=Win7SP1x86_23418 -f file.dmp userassist
服务
# 获取服务和二进制路径 volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp # 获取服务的名称和SID(较慢) volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp
网络
volatility --profile=Win7SP1x86_23418 netscan -f file.dmp volatility --profile=Win7SP1x86_23418 connections -f file.dmp # XP 和 2003 仅适用 volatility --profile=Win7SP1x86_23418 connscan -f file.dmp # TCP 连接 volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp # 打开的套接字 volatility --profile=Win7SP1x86_23418 sockets -f file.dmp # 扫描 TCP 套接字对象 volatility --profile=SomeLinux -f file.dmp linux_ifconfig volatility --profile=SomeLinux -f file.dmp linux_netstat volatility --profile=SomeLinux -f file.dmp linux_netfilter volatility --profile=SomeLinux -f file.dmp linux_arp # ARP 表 volatility --profile=SomeLinux -f file.dmp linux_list_raw # 使用混杂模式原始套接字的进程(进程间通信) volatility --profile=SomeLinux -f file.dmp linux_route_cache
注册表
volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist # 列出根项 volatility --profile=Win7SP1x86_23418 -f file.dmp printkey # 列出根项并获取初始子项
获取一个注册表值
volatility --profile=Win7SP1x86_23418 printkey -K "SoftwareMicrosoftWindows NTCurrentVersion" -f file.dmp # 获取“运行”二进制注册表值 volatility -f file.dmp --profile=Win7SP1x86 printkey -o 0x9670e9d0 -K 'SoftwareMicrosoftWindowsCurrentVersionRun'
转储注册表
# 转储一个 Hive volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp # 从 hivelist 获取偏移量 # 转储所有的 Hive volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp
文件系统
volatility --profile=SomeLinux -f file.dmp linux_mount volatility --profile=SomeLinux -f file.dmp linux_recover_filesystem # 如果可能,转储整个文件系统
扫描/转储文件
volatility --profile=Win7SP1x86_23418 filescan -f file.dmp # 扫描转储中的文件 volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -f file.dmp # 转储所有文件 volatility --profile=Win7SP1x86_23418 dumpfiles -n --dump-dir=/tmp -Q 0x000000007dcaa620 -f file.dmp volatility --profile=SomeLinux -f file.dmp linux_enumerate_files volatility --profile=SomeLinux -f file.dmp linux_find_file -F /path/to/file volatility --profile=SomeLinux -f file.dmp linux_find_file -i 0xINODENUMBER -O /path/to/dump/file
主文件表
volatility --profile=Win7SP1x86_23418 mftparser -f file.dmp
SSL 密钥/证书
# vol2 允许从内存中搜索和转储证书 # 此模块的选项包括:--pid, --name, --ssl volatility --profile=Win7SP1x86_23418 dumpcerts --dump-dir=. -f file.dmp
恶意软件分析
##########windows的命令########3 volatility --profile=Win7SP1x86_23418 -f file.dmp malfind [-D /tmp] # 查找隐藏和注入的代码 [转储每个可疑部分] volatility --profile=Win7SP1x86_23418 -f file.dmp apihooks # 检测进程和内核内存中的 API 挂钩 volatility --profile=Win7SP1x86_23418 -f file.dmp driverirp # 驱动 IRP 挂钩检测 volatility --profile=Win7SP1x86_23418 -f file.dmp ssdt # 检查系统调用地址是否来自意外地址 ########Linux的命令######### volatility --profile=SomeLinux -f file.dmp linux_check_afinfo volatility --profile=SomeLinux -f file.dmp linux_check_creds volatility --profile=SomeLinux -f file.dmp linux_check_fop volatility --profile=SomeLinux -f file.dmp linux_check_idt volatility --profile=SomeLinux -f file.dmp linux_check_syscall volatility --profile=SomeLinux -f file.dmp linux_check_modules volatility --profile=SomeLinux -f file.dmp linux_check_tty volatility --profile=SomeLinux -f file.dmp linux_keyboard_notifiers # 键盘记录器3
使用YARA扫描
使用此脚本从 GitHub 下载并合并所有 YARA 恶意软件规则:https://gist.github.com/andreafortuna/29c6ea48adf下面是安装方法
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules python malware_yara_rules.py volatility --profile=Win7SP1x86_23418 yarascan -y malware_rules.yar -f ch2.dmp | grep "Rule:" | grep -v "Str_Win32" | sort | uniq
其他工具
自动运行
volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns
互斥锁
volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p <PID> -t mutant
符号链接
volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan
Bash历史 用于linux
可以 从内存中读取 Bash 历史。虽然您也可以转储 .bash_history 文件,但由于它被禁用,您可以使用此 Volatility 模块。
volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash
时间线
volatility --profile=Win7SP1x86_23418 -f timeliner
驱动程序
volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan
获取剪切板内容
#Just vol2 volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp
获取Internet Explorer历史
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp
获取记事本文本
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp
截屏
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp
主引导记录
volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp
vol2工具的插件及解释
amcache:输出 AmCache 信息 apihooks:检测进程和内核内存中的 API 钩子 atoms:打印会话和窗口工作站的原子表 atomscan:扫描原子表的内存池 auditpol:输出 HKLMSECURITYPolicyPolAdtEv 中的审计策略 bigpools:使用 BigPagePoolScanner 转储大页面池 bioskbd:从实模式内存读取键盘缓冲区 cachedump:从内存中转储域缓存哈希 callbacks:输出系统范围的通知例程 clipboard:提取 Windows 剪贴板内容 cmdline:显示进程的命令行参数 cmdscan:通过扫描 _COMMAND_HISTORY 提取命令历史 connections:输出开放连接列表(仅适用于 Windows XP 和 2003) connscan:扫描 TCP 连接的内存池 consoles:通过扫描 _CONSOLE_INFORMATION 提取命令历史 crashinfo:转储崩溃转储信息 deskscan:扫描 tagDESKTOP(桌面)的内存池 devicetree:显示设备树 dlldump:从进程地址空间转储 DLL dlllist:输出每个进程加载的 DLL 列表 driverirp:检测驱动 IRP 钩子 drivermodule:将驱动对象与内核模块关联 driverscan:扫描驱动对象的内存池 dumpcerts:转储 RSA 私钥和公钥 SSL 密钥 dumpfiles:提取内存映射和缓存文件 dumpregistry:将注册表文件转储到磁盘 editbox:显示编辑控件的信息(Listbox 实验性) envars:显示进程的环境变量 eventhooks:输出 Windows 事件钩子的详细信息 evtlogs:提取 Windows 事件日志(仅限 XP/2003) filescan:扫描文件对象的内存池 gahti:转储 USER 句柄类型信息 gditimers:输出已安装的 GDI 定时器和回调 gdt:显示全局描述符表 getservicesids:获取注册表中的服务名称并返回计算的 SID getsids:输出拥有每个进程的 SID handles:输出每个进程的开放句柄列表 hashdump:从内存中转储密码哈希(LM/NTLM) hibinfo:转储休眠文件信息 hivedump:输出注册表 hive 信息 hivelist:输出注册表 hive 列表 hivescan:扫描注册表 hive 的内存池 hpakextract:从 HPAK 文件中提取物理内存 hpakinfo:输出 HPAK 文件的信息 idt:显示中断描述符表 iehistory:重建 Internet Explorer 缓存/历史记录 imagecopy:将物理地址空间复制为原始 DD 镜像 imageinfo:识别镜像的信息 impscan:扫描导入函数的调用 joblinks:输出进程作业链接信息 kdbgscan:搜索并转储潜在的 KDBG 值 kpcrscan:搜索并转储潜在的 KPCR 值 ldrmodules:检测未链接的 DLL lsadump:从注册表转储(解密的)LSA 机密 machoinfo:转储 Mach-O 文件格式信息 malfind:查找隐藏和注入的代码 mbrparser:扫描并解析潜在的主引导记录 (MBR) memdump:转储进程的可寻址内存 memmap:输出内存映射 messagehooks:列出桌面和线程窗口的消息钩子 mftparser:扫描并解析潜在的 MFT 条目 moddump:转储内核驱动到可执行文件样本 modscan:扫描内核模块的内存池 modules:输出加载的模块列表 multiscan:同时扫描多种对象 mutantscan:扫描互斥对象的内存池 notepad:列出当前显示的记事本文本 objtypescan:扫描 Windows 对象类型对象 patcher:基于页面扫描修补内存 poolpeek:可配置的内存池扫描插件 printkey:输出注册表键及其子键和值 privs:显示进程权限 procdump:转储进程到可执行文件样本 pslist:通过 EPROCESS 列表输出所有正在运行的进程 psscan:扫描进程对象的内存池 pstree:以树状显示进程列表 psxview:使用多种进程列表查找隐藏进程 qemuinfo:转储 Qemu 信息 raw2dmp:将物理内存样本转换为 windbg 崩溃转储 screenshot:根据 GDI 窗口保存伪截图 servicediff:列出 Windows 服务(类似 Plugx) sessions:列出 _MM_SESSION_SPACE(用户登录会话)的详细信息 shellbags:输出 ShellBags 信息 shimcache:解析应用兼容性 Shim 缓存注册表键 shutdowntime:从注册表输出机器的关机时间 sockets:输出开放的套接字列表 sockscan:扫描 TCP 套接字对象的内存池 ssdt:显示 SSDT 条目 strings:将物理偏移与虚拟地址匹配(可能耗时,信息量大) svcscan:扫描 Windows 服务 symlinkscan:扫描符号链接对象的内存池 thrdscan:扫描线程对象的内存池 threads:调查 _ETHREAD 和 _KTHREAD timeliner:从内存中的各种工件创建时间线 timers:输出内核定时器及相关模块 DPC truecryptmaster:恢复 TrueCrypt 7.1a 主密钥 truecryptpassphrase:查找 TrueCrypt 缓存的密码短语 truecryptsummary:输出 TrueCrypt 概要 unloadedmodules:输出已卸载的模块列表 userassist:输出 UserAssist 注册表键和信息 userhandles:转储 USER 句柄表 vaddump:转储 VAD 部分到文件 vadinfo:转储 VAD 信息 vadtree:以树状显示 VAD 树 vadwalk:遍历 VAD 树 vboxinfo:转储 virtualbox 信息 verinfo:输出 PE 镜像的版本信息 vmwareinfo:转储 VMware VMSS/VMSN 信息 volshell:在内存镜像中进入 Shell windows:输出桌面窗口(详细信息) wintree:输出 Z-Order 桌面窗口树 wndscan:扫描窗口工作站的内存池 yarascan:使用 Yara 签名扫描进程或内核内存