内存取证例题
几道内存取证的题目拿来做一下。
[V&N2020 公开赛]内存取证
开局给了给了一个raw文件。
先看一下镜像文件的基本信息。
volatility -f mem.raw imageinfo
这步一般是为了得到文件的profile。
直接一点,搜一搜有没有名为flag的文件
volatility -f mem.raw --profile=Win7SP0x86 filescan | grep flag
看一看当时运行了哪些进程。
volatility -f mem.raw --profile=Win7SP0x86 pslist
0x83c0ad40 TrueCrypt.exe 3364 3188 7 388 1 0 2020-02-18 19:52:44 UTC+0000 0x837f5d40 notepad.exe 3552 1964 2 61 1 0 2020-02-18 19:53:07 UTC+0000 0x82a7e568 iexplore.exe 3640 1964 16 468 1 0 2020-02-18 19:53:29 UTC+0000 0x847c8030 iexplore.exe 3696 3640 25 610 1 0 2020-02-18 19:53:29 UTC+0000 0x848a7030 mspaint.exe 2648 1964 18 383 1 0 2020-02-18 19:54:01 UTC+0000
发现几个比较关键的应用,notepad是文本编辑器,iexplore是ie浏览器,mspaint是xp系统自带的画板。TrueCrypt是一款免费,开源的支持Windows Vista/XP/2000 and Linux的绿色虚拟加密磁盘工具,可以在硬盘上创建一个或多个虚拟磁盘,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。 TrueCrypt提供多种加密算法,如AES-256、Blowfish(448-bitkey)、CAST5、Serpent、Triple DES等,其他特性还包括支持FAT32和NTFS分区、隐藏卷标和热键启动。
先看一下ie浏览器记录。
volatility -f mem.raw --profile=Win7SP0x86 iehistory | grep 'https://'
比较显眼就是访问了百度网盘,当我访问的时候发现分享的文件已经被取消了,但是在buu上面附件还是给了,一个OVL文件。
看一下文本编辑器写了些什么。
volatility -f mem.raw --profile=Win7SP0x86 editbox
还是指向百度网盘,并且有这次有提取码。
接下来看一下mspaint里面有什么,通过pid把这块的内存dump下来。
volatility -f mem.raw --profile=Win7SP0x86 memdump -p 2648 --dump-dir=./
将2648.dmp的后缀改成data,然后用gimp打开,通过调整位移、高度、宽度来尝试还原图片。
先将高度拉到和画板一样高,长度盲猜1440,然后慢慢调位移。
当发现有字母显示出来了,就别动位移了,慢慢调整宽度。
截图放到word里面,垂直翻转,识别一下字母。
但是这个字符串并不是flag。
接下来就是TrueCrypt这个软件了,现在大概思路就出来了,OVL是用TrueCrypt来加密后的一个磁盘,现在需要对这个磁盘进行解密。
在解密前先把TrueCrypt像dump mspaint一样把那块内存dump下来。
解密需要用到一个软件叫Elcomsoft Forensic Disk Decryptor,可以用来破解这个磁盘文件的key值。
上面选择加密后的磁盘文件,下面选择dump出来的内存。
点成Unmount,在自己电脑的E盘发现key(其实我电脑本身是没有E盘的,这里是临时分区出这个盘放key值的)
知道了key值,接下来用VeraCrypt挂载一下。
发现flag文件,压缩包是加密的。还记得上面搞出来的字符串吗?
解压出来就看到flag了。
BMZCTF 内存取证三项
题目内容:
一天下午小白出去吃饭,临走之前还不忘锁了电脑,这时同寝室的小黑想搞点事情,懂点黑客和社工知识的小黑经过多次尝试获得了密码成功进入电脑,于是便悄悄在电脑上动起手脚了,便在桌面上写着什么,想给小白一个惊喜,同时还传送着小白的机密文件,正巧这时小白刚好回来,两人都吓了一跳,小黑也不管自己在电脑上留下的操作急忙离开电脑,故作淡定的说:“我就是随便看看”。
1.小黑写的啥,据说是flag?
2.那么问题来了,小白的密码是啥?
3.小黑发送的机密文件里面到底是什么
还是给了一个镜像文件,第一步先查看镜像的基本信息。
volatility -f mem.raw imageinfo
知道profile之后,扫描一下有没有带有flag字样的文件。
没扫到任何东西,扫一下进程。
0xff5ee020 notepad.exe 280 1416 1 50 0 0 2016-11-14 12:20:27 UTC+0000 0xff5c5020 cmd.exe 1568 1416 1 34 0 0 2016-11-14 12:23:34 UTC+0000
发现了两个比较可疑的进程,一个是notepad,一个是cmd。
先看一下笔记本记录了些什么内容。
volatility -f mem.raw Profile=WinXPSP2x86 editbox
发现了一串16进制的字符串,太熟悉了。
666C61677B57336C6563306D655F376F5F466F72336E356963737D
666c6167,是flag的16进制的ascii码对应的值。16进制转字符串,出现第一个flag。
flag{W3lec0me_7o_For3n5ics}
根据题目要求,第二个是要知道小白电脑的开锁密码,获取内存中的系统密码,我们可以使用 hashdump 将它提取出来 。
volatility -f mem.raw –profile=WinXPSP2x86 hashdump
Volatility Foundation Volatility Framework 2.5 Administrator:500:1e27e87bd14ec8af43714428b303e3e4:1e581aafa474dfadfdf83fc31e4fd4ea::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: HelpAssistant:1000:687255e91a0f559b6d75553dbd51f785:b6125736bdd2d5f154fdce59f52e39f1::: SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:fb41f8d1334fba131974c39bfab09512:::
这里1e581aafa474dfadfdf83fc31e4fd4ea其实就是开锁密码的hash之后的密文。
怎么破解出来的,网上的师傅们都是跑什么彩虹表,我就不研究了。感觉是出题人没考虑好,因为这个密文解不出来,很难受,就硬考字典全?第三问其实也给了提示。
看一下cmd执行过哪些命令。
volatility -f mem.raw Profile=WinXPSP2x86 cmdscan
向另一台主机发送了一个压缩包,先找到这个压缩包。
volatility -f mem.raw Profile=WinXPSP2x86 filescan | grep 'P@ss'
把这个文件dump下来。
volatility -f mem.raw Profile=WinXPSP2x86 dumpfiles -Q 0x0000000002c61318 -D ./
file之后发现是zip格式的压缩包,被加密,根据上面的hint,密码是生日,那就是8位纯数字的密码,用压缩包爆破工具爆破一下。
压缩包里面就是flag。