打CTF这么久,内存取证的题也就做过一次,刚好安恒四月月赛出了一题,简单记录一下。
内存取证题附件后缀一般为raw
、dmp
、img
、wmem
等,此类问题一般可以通过volatility
取证大师
等工具解决,volatility是Kali下自带的一款工具,直接调用命令即可,而取证大师则为执法人员取证工具,功能强大,一般情况下搞不到这个工具,虽然我有那个工具,但是想记录一下volatility的使用,就不用取证大师了。
关于volatility的一些常用命令
imageinfo
识别操作系统:
volatility -f example.raw imageinfo
pslist/pstree/psscan
扫描进程:
volatility -f example.raw --profile=Win7SP1x64 pslist
filescan
扫描文件:
volatility -f example.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'
cmdscan
扫描终端使用情况
dumpfile/memdump
导出文件:
```
volatility -f example.raw --profile=Win7SP1x64 memdump -p [PID] -D ./
or
volatility -f example.raw --profile=Win7SP1x64 dumpfiles -Q [Offset] -D ./
```
调用插件
volatility [plugins] -f example.raw --profile=Win7SP1x64
[2020安恒四月月赛]
首先识别一下操作系统,发现为Win7SP1x64
系统:
volatility -f Keyboard.raw imageinfo
接下来看一下进程,发现一个keyboard-log.e
文件:
volatility -f Keyboard.raw --profile=Win7SP1x64 pslist
接着扫一下文件,发现keyboard-log.e
下有一个可疑文本文件t.txt
:
volatility -f Keyboard.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'
导出该文本文件,并查看:
volatility -f Keyboard.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003d700880 -D ./
得到如下内容,ctfwikiCRYPTO ABC
提示下一行密文加密方式,搜了一下为电脑键盘 QWE加密,解密后得到veracryptpasswordiskeyboarddraobyek
,也就是提示veracrypt
的密码是keyboarddraobyek
,同时由下面的提示得知密码为大写,最终得到密码KEYBOARDDRAOBYEK
:
```
2020- 3-29 22:35:25
[BP][BP][BP][BP]hhhhh flag is not n[BP]here
2020- 3-29 22:35:30
2020- 3-29 22:36:41
ctfwikiCRYPTO ABC
CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA
2020- 3-29 22:37:23
[BP][BP]decrypto hou xiao xie geng[BP][BP] yi kan chu
解密后小写更易看出
2020- 3-29 22:39:24
But the password is in uppercase
但是密码是大写的
2020- 3-29 22:38:55
a
```
网上找了一个QWE解密脚本:
```python
def search(x):
return {'q': 'a', 'w': 'b', 'e': 'c', 'r': 'd', 't': 'e', 'y': 'f', 'u': 'g', 'i': 'h', 'o': 'i',
'p': 'j', 'a': 'k', 's': 'l', 'd': 'm', 'f': 'n', 'g': 'o', 'h': 'p', 'j': 'q', 'k': 'r',
'l': 's', 'z': 't', 'x': 'u', 'c': 'v', 'v': 'w', 'b': 'x', 'n': 'y', 'm': 'z',
}.get(x, x)
def main():
crypto = 'CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA'
crypto = crypto.lower()
for i in crypto:
print(search(i), end='')
if name == "main":
main()
```
根据上一步以及另一个附件名secret
可知该附件为一个加密磁盘,接着使用磁盘分区加密工具veracrypt
挂载,挂载后打开得到另一个磁盘,直接打开得到假flag:flag{flag_Hidden_in_zhe_but_not_me}
,接下来有两种解决方法
Strings打印字符串
strings here.vhd
NTFS隐写
首先挂载vhd
硬盘镜像文件,Win10上面直接点击这个文件就可挂载,然后发现假的flag为一个隐藏文件,取消隐藏后终端运行dir /r
,发现为NTFS隐写
,然后可以通过Ntfs Streams Editor
工具或者notepad
命令读取flag:
notepad flag.txt:hahaha.txt
[RoarCTF2019]forensic
这道题能读到很多可以信息,但是似乎都是属于另一道题的,解决该题其实需要的线索很少,看到这么多可疑信息本来很懵,后来发现挺简单。
依旧是那一套操作
首先识别操作系统,为Win7SP1x86
:
volatility -f mem.raw imageinfo
然后查进程,发现几个可疑进程:
volatility -f mem.raw --profile=Win7SP1x86 pslist
```
Name PID
TrueCrypt.exe 3260 #虚拟磁盘加密工具
notepad.exe 3524 #记事本
mspaint.exe 3620 #画图
iexplore.exe 3700 #浏览器
DumpIt.exe 3380 #内存镜像取证工具
```
TrueCrypt
是虚拟磁盘加密工具,down下来看看有没有东西:
volatility -f mem.raw --profile=Win7SP1x86 memdump -p 3260 -D ./
foremost
分离down下来的文件,发现存在flag.txt
文件,打开发现在一个压缩包里,并且压缩包是加密的:
foremost 3260.dmp
接着扫文件,发现可疑文件无标题.png
:
volatility -f mem.raw --profile=Win7SP1x86 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'
将该图片down下来,发现是一个无序字符串,疑似解压密码:
volatility -f mem.raw --profile=Win7SP1x86 dumpfiles -Q 0x000000001efb29f8 -D ./
仔细辨别并尝试解压后为得到1YxfCQ6goYBD6Q
,也可以使用掩码爆破,最终在压缩包内得到flag:
漏洞简介 vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机。 …
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论