Volatility——内存取证工具

前言

再打湖湘杯的时候遇到了内存取证的题目,想着就学一学总结一下。
volatility 框架是一款用于易失性内存取证的重量级框架。在该框架下我们可以完成许多取证的操作,获取我们想取得的信息。

工具安装

kali2020系统不携带Volatility,需要自己下载,两种方式。

snap install volatility-phocean
apt-get install volatility

题目

2020HXBCTF-passwd

下载附件解压是一个raw文件,内存取证
先查看镜像信息

volatility -f 1.raw imageinfo

可以看到,内存文件所属的操作系统它给出了三个建议性 profile,同时还提取出了CPU 等细节信息。

%title插图%num

然后看下用户信息,查SAM表
发现有一个CTF用户名,根据题目信息查找passwd
%title插图%num

想要获得passwd,还得知道 注册表system的virtual地址和SAM的virtual地址
通过 hivelist 来列出缓存在内存中的注册表
%title插图%num

.\volatility_2.6_win64_standalone.exe -f 1.raw --profile=Win7SP0x86 hashdump -y 0x8a01c008 -s 0x93fc41e8

%title插图%num

获得passwd,md5解密,在sha1加密
%title插图%num

%title插图%num

2020HXBCTF-隐藏的秘密

老规矩看一下所属的操作系统

volatility -f 1.vmem imageinfo

%title插图%num

通过 pslist 来查看其进程情况:

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

%title插图%num

发现有notepad进程,猜测有提示,尝试读取文件
%title插图%num

发现获取出来的数据为乱码,猜测应该是编码的问题,再看一下桌面的截图
%title插图%num

发现存在file.txt,尝试dump文件
%title插图%num

%title插图%num

在linux打开是乱码,用windows记事本打开解决乱码问题
%title插图%num

给的hint是让我们获取非法登录的用户名和密码,MD5加密后就是flag,那我们先获取用户,
通过hashdump可以发现有很多隐藏用户

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

%title插图%num

这是看了师傅的文章

https://guokeya.github.io/post/ccoUCoY7_/

说是修改了注册表的值。把隐藏用户的F值给覆盖成了administrator的F值
普通用户的F值和管理员的差异在于

普通用户后面是00 00了。而管理员则是 90 5D xxxx

先列出所有users

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

然后再根据这个用户的ID。去获取它对应的F值。如果第一行是02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00就返回它的所有键值

import os
data=open('user','r').read()
data=data.replace('(S)','').replace(" ","")
data=data.split("\n")
for i in data[0:-1]:
    cmd='volatility -f 1.vmem --profile=Win2003SP1x86 printkey -K "SAM\Domains\Account\Users\\'+i+'"'
    result=os.popen(cmd).read()
    if (result.split('0x00000000')[1].split('   ')[0]=='  02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00'):
        pass
    else:
        print(result)

不知名内存取证题目

解压获得的两个文件,一个是内存文件,另一个是加密文件。
这题不多说,直接上命令

volatility -f mem.vmem imageinfo   #查看profile值
volatility -f mem.vmem --profile=WinXPSP2x86 pslist   #列举进程

%title插图%num

可以发现一个TrueCrypy.exe的进程,
TrueCrypy.exe是一款加密程序,而我们可以推出,suspicion为加密的结果。
我们需要从内存dump出key来。

volatility -f mem.vmem --profile=WinXPSP2x86 memdump -p 1464 -D ./

dump出来的文件为1464.dmp。
我们需要借助Elcomsoft Forensic Disk Decryptor(Elcomsoft硬盘取证解密器,简称为EFDD)软件来获取key和破解文件 。

内存取证常用命令

%title插图%num

查看镜像信息:

volatility -f xxx.vmem imageinfo

分析在运行的进程(pslist是打印输出此时在运行的进程):

volatility -f mem.vmem --profile=WinXPSP2x86 pslist
volatility -f memory.img –profile=Win2003SP2x86 psscan

简单看一下进程,如果不知道是哪个程序的可以百度一下。根据这个我们就能知道此时哪些软件在内存中运行。

pslist可以用来列出运行的进程。如果Exit所在的一列显示了日期时间,则表明该进程已经结束了。 在图中,我们看到,存在notepad.exe, mspaint.exe,也就是取证对象(出题人)使用过记事本、画图程序。

在查看进程的显示时,注意一下记事本程序notepad.exe, 画画工具mspaint.exe以及DumpIt等使用过的软件,这些就是取证对象的操作,其中很有可能有重要信息。因此在逻辑清晰的一个做题过程中,我们需要对取证对象的操作,分别进行纵向地分析,然后回过头来结合起来进行分析。
Dumpit.exe 一款内存镜像提取工具
TrueCrypt.exe 一款磁盘加密工具
Notepad.exe windows自带的记事本
Mspaint,exe windows自带画图工具

dump内存:
把suspicion文件的相关内存dump出来,用Volatility即可完成。将TrueCrypt.exe进程(PID 2012)dump出来,结果文件为2012.dmp

volatility -f mem.vmem memdump -p 2012 --dump-dir ./

看一下剪切板中有没有数据:

volatility -f flag --profile=WinXPSP2x86 clipboard

查一下内存中缓存的文件:

volatility -f flag --profile=WinXPSP2x86 filescan
volatility -f memory.img –profile=Win2003SP2x86 filescan|grep flag

过滤一下:

volatility -f flag --profile=WinXPSP2x86 filescan | grep rar

使用Volatility中的filescan功能,保存为txt,方便后续查找分析:

volatility filescan -f xxx.raw --profile=WinXPSP2x86 > filescanInfo.txt

查看notepad.exe:
如果需要查看Notepad程序编辑的内容,需要使用Volatility的Notepad插件:

volatility notepad -f xxx.raw 

查看mspaint.exe:
查看内存操作中对画图程序操作的内容,使用插件mspaint。

可以看到mspaint进程pid号,为332,dump下来

volatility -f Advertising_for_Marriage.raw --profile=WinXPSP2x86 memdump -p 332 --dump-dir=./

通过内存取证操作(见后面列举),查找到PNG图片:

volatility filescan -f Advertising\ for\ Marriage.raw --profile=WinXPSP2x86 | grep "jpg\|jpeg\|png\|tif\|gif\|bmp"

导出图片:

volatility -f xxx.raw dumpfiles -Q 0x000000000249ae78 -D --dump-dir=./

查看文档:

volatility -f xxx.raw --profile=WinXPSP2x86 filescan | grep "doc\|docx\|rtf"

查看桌面:

volatility -f xxx.raw --profile=WinXPSP2x86 filescan | grep "Desktop"

查看命令行输入:

volatility -f xxx.raw --profile=WinXPSP2x86 cmdline

查看系统用户名:

volatility -f xxx.raw --profile=WinXPSP2x86 printkey -K "SAM\Domains\Account\Users\Names"

查看网络连接:

volatility -f mem.data --profile=WinXPSP2x86 netscan

查看屏幕截图:

mkdir win2003
volatility -f memory.img –profile=Win2003SP2x86 screenshot –dump-dir=./win2003

查看系统里的窗口列表:

volatility -f memory.img –profile=Win2003SP2x86 windows

dump 一下 explorer.exe 这个进程的内存试试,pid 为 1992。

volatility -f memory.img --profile=Win2003SP2x86 memdump -p 1992 -D ./win2003/
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇