使用命令:Volatility -f<文件名> --profile=<配置文件><插件>[插件参数]
一般思路步骤
- 列举进程 查找需要的信息
- Volatility -f name --profile=Winxpap2x86 pslist
- 创建文件夹 把需要保存的文件提取
将内存中的某个进程数据以dup的格式保存出来
volatility -f mem.vmem --profile=WinXPSP2x86 -p [PID] -D [dump 出的文件保存的目录]
- mkdir ctf
- volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 1464 -D ctf/
- 使用EFDD将获取的key(dump的文件)和破解文件结合得到flag
二般思路步骤
- 老规矩查看内存文件的信息 imageinfo
- 得到配置文件后,进行查询:查看开放端口以及连接情况 netscan、查看系统注册表(获取主机名、IP地址等)hivelist、都注册表信息printkey
- 查看剪切板中的信息(获取复制剪切内容)clipboard
- 查看进程信息 plist 包括正在运行的 暂停运行的会在后面显示展厅时间、显示隐藏/终止的进程 psscan、把进程以树的形式显示pstree 与o保存
- 查看dll文件(但发现可疑进程,可进行深入探究) dlllist -p[PID]
- 查看ie历史 iehistory
- Filescan 或者和grep使用查找需要的文件 然后n保存
- Cmdscan
- 查看进程命令行参数(具体一些可疑进程的参数指令)cmdline
- 查看notepad文件(在pslist中查看进程中的notepad.exe.中的内容) notepad
- 有时候得到信息不一定就是他,毕竟老套娃了 我们可能需要获取密码 hash hashdum
- 保存文件dmp
- 回到注册表,打印对应的表的数据 hivedump -o 虚拟地址
- filescan文件 然后转储内存中的文件 打印出filescan出来的文件 dumpfiles -q 偏移地址 -D路径
- Pslist查看进程 可以转储内存中的进程的exe文件 procdump -p -D路径
常用命令
volatility -f name imageinfo 查看文件/内存镜像的信息 比如系统版本、硬件构架等
Volatility --info 查看已添加profile和插件信息
volatility -f example.raw --profile=Win7SP1x64 filescan | grep -E'txt|png|jpg|gif|zip|rar|7z|pdf|doc' 扫描文件
volatility -f example.raw --profile=Win7SP1x64 filescan | grep TMP_User #搜索指定文件夹下的文件
volatility -f zy.raw --profile=WinXPSP2x86 dumpfiles -Q 0x2456028 --dump-dir=./ 使用dumpfiles提取文件 -Q的参数为 内存地址--dump-dir的参数为导出文件的目录
Volatility -f name --profile=?? Volshell 包含许多shell命令 其中 例如dt(“_PEB”)
Volatility -f name --profile=Winxpap2x86 hivelist 列举缓存在内存的注册表
Volatility -f name --profile=Winxpap2x86 hivedump -o 注册表的virtual地址 打印出注册表中的数据
Volatility -f name --profile=Winxpap2x86 printkey -K “SAM\Domains\Account\Users\Names”获取SAM表中的用户,可以看到有四个用户(查看系统用户名)
获取最后登录系统的账户:
volatility -f mem.vmem --profile=WinXPSP2x86 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
提取出内存中记录的 当时正在运行的程序有哪些,运行多少次,最后一次运行的时间等信息:
volatility -f mem.vmem --profile=WinXPSP2x86 userassist
volatility -f mem.vmem kdbgscan 和imageinfo只适用于windows的镜像 可以扫描文件的profile值 通常结果多个,但只有一个是完全正确的
可以使用二进制编译器hexeditor将保存的dmp文件打开并进行取证工作
Hexeditor 1736.dmp
或者
你还可以使用 strings 这个工具将它的字符串打印出来。
例:
strings 1736.dmp > 1736.txt
strings 1608.dmp > 1736.txt | grep shellcode
提取内存中保留的 cmd 命令使用情况
volatility -f mem.vmem --profile=WinXPSP2x86 cmdscan
volatility -f mem.vmem --profile=WinXPSP2x86 cmdline
获取到当时的网络连接情况
volatility -f mem.vmem --profile=WinXPSP2x86 netscan
获取 IE 浏览器的使用情况 :
volatility -f mem.vmem --profile=WinXPSP2x86 iehistory
获取内存中的系统密码,我们可以使用 hashdump 将它提取出来
volatility -f mem.vmem --profile=WinXPSP2x86 hashdump -y (注册表 system 的 virtual 地址 )-s (SAM 的 virtual 地址)
volatility -f mem.vmem --profile=WinXPSP2x86 hashdump -y 0xe1035b60 -s 0xe16aab60
最大程度上将内存中的信息提取出来,那么你可以使用 timeliner 这个插件。它会从多个位置来收集系统的活动信息 。
volatility -f mem.vmem --profile=WinXPSP2x86 timeliner
volatility -f mem.vmem --profile=Win7SP1x86 timeliner | grep Company_Files #查找指定文件夹下的文件的访问详细情况,可以导出 > 文件
显示每个进程的加载dll列表
Volatility -f name -profile = Win7SP0x86 dlllist> dlllist.txt
常见的插件
查看当前展示的 notepad 文本
volatility notepad -f file.raw --profile=WinXPSP2x86
查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容
volatility hashdump -f file.raw --profile=WinXPSP2x86
查看所有进程
volatility psscan -f file.raw --profile=WinXPSP2x86
扫描所有的文件列表
volatility filescan -f file.raw --profile=WinXPSP2x86
扫描 Windows 的服务
volatility svcscan -f file.raw --profile=WinXPSP2x86
查看网络连接
volatility connscan -f file.raw --profile=WinXPSP2x86
查看命令行上的操作,查看终端输入历史
volatility cmdscan -f file.raw --profile=WinXPSP2x86
根据进程的 pid dump出指定进程到指定的文件夹dump_dir
volatility memdump -p 120 -f file.raw --profile=WinXPSP2x86 --dump-dir=dump_dir
dump 出来的进程文件,可以使用 foremost 来分离里面的文件,用 binwak -e 经常会有问题,需要重新修复文件
对当前的窗口界面,生成屏幕截图
volatility screenshot -f file.raw --profile=WinXPSP2x86 --dump-dir=out
复制剪切板:
volatility -f name --profile=Win7SP1x64 clipboard
volatility -f name --profile=Win7SP1x64 dlllist -p 3820
flag字符串扫描
strings -e l 2616.dmp | grep flag
安全进程扫描
volatility -f name --profile=Win7SP1x64 psscan
根据注册表查询信息
1.计算机安装windows的时间
在Microsoft路径下寻找系统信息。
volatility -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bd898e8 printkey -K "WOW6432Nod\Microsoft"
printkey: 打印注册表项及其子项和值
-o 指定注册表的virtual地址
一般系统信息存在于
我们可以指定 -o virtual 地址去printkey 获取key
之后一步一步来即可
InstalledDate对应的键值,但是可以通过Last updated进行大致判断。正常的系统信息会记录在如下路径:(HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionInstallDate)。
2.计算机名称
在注册表SYSTEM里面存在计算机名称
具体位置:ControlSet001\Control\ComputerName\ComputerName
我们可以使用命令:注册表解析
volatility -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bc1a1c0 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
3.查看tcp
volatility -f memdump.mem --profile=Win7SP1x86_23418 timeliner | grep TCP
4.外接存储设备的取证 -USB
1.首先使用命令volatility -h | grep service查找与设备相关的命令。
volatility -h | grep service
2.然后使用设备扫描命令查询是否有USB使用痕迹。
volatility -f memdump.mem --profile=Win7SP1x86_23418 svscan | grep usb
3.在虚拟地址内存中查找key,在注册表中查询USB设备使用情况(注册表中与USB设备相关的路径为:ControlSet001\Enum\USBSTOR
路径:ControlSet001\Enum\USBSTOR
volatility -f memdump.mem --profile=Win7SP1x86_23418 -o 0x8bc1a1c0 printkey -K "ControlSet001\Enum\USBSTOR"
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。
知识延伸
1、 本文未用到dll,注册表等取证使用方法,其他取证方法我附上网址供大家学习
Cyber Security Posters | SANS Institute
2、制作内存镜像
DumpIt 是一款绿色免安装的 windows 内存镜像取证工具。利用它我们可以轻松地将一个系统的完整内存镜像下来。
只要双击打开DumpIt.exe输入y等待一会出现Success就是dump成功。
默认情况下,文件名是主机名(主机名),其后是执行映像过程的日期。该文件默认保存为“raw”格式
解题一:
使用volatility提取文件中的密码文件dump,结合EFDD将题目的文件和dump来得到flag
步骤大致为先看进程 pslist,从进程名中提取相关的内存文件
解题二:
大概还有使用testdisk对删除的文件的恢复 或者创建
输入:testdisk xxx 即可进入软件内部操作
Proceed:继续
Quit:退出,关闭
[ Analyse ] 分析正确的分区结构并找到丢失的分区表
[ Advanced ] 文件系统工具
[ Geometry ] 更改硬盘类型
[ Options ] 修改高级选项
[ Quit ] 返回到硬盘检测
[ Type ] :改变文件系统的类型,这种修改并不会真正改变硬盘上的真正格式。
[Superblock] :列出超级块,这是文件系统的基本元数据。
[ List ] :列出所有文件,并复制(恢复)出来
[Image Creation] :对当前分区创建镜像文件
[ Quit ]:退出,返回
红色文件就表示已经删除的文件。当然你也可以选择一个红色的目录,表示恢复整个目录。
解题思路三:
wireshark解题
扩展:从内存还原文字
1、微软的一款dump工具 procdump
//这个工具很有用,大部分应用在内存取证,查找sam
procdump -ma notepad.exe notepad.dmp # 参数m代表内存 a是all
2、strings工具
strings notepad.dmp > notepad.txt
先procdump dump下来,strings查看
扩展:从内存还原图片
procdump -ma mspaint.exe mspaint.dmp # 把画板程序dump出来
把后缀名改成.data
mv mspaint.dmp mspaint.data
在gimp中打开mspaint.data,通过不断调节各项参数进行图片显示
从内存中提取明文密码
procdump -ma lsass.exe lsass.dmp #dump下来先
待续