记一次CTF简单内存取证

  • A+

打CTF这么久,内存取证的题也就做过一次,刚好安恒四月月赛出了一题,简单记录一下。

内存取证题附件后缀一般为rawdmpimgwmem 等,此类问题一般可以通过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

RAM Forensics1.png

接下来看一下进程,发现一个keyboard-log.e文件:

volatility -f Keyboard.raw --profile=Win7SP1x64 pslist

RAM Forensics2.png

接着扫一下文件,发现keyboard-log.e下有一个可疑文本文件t.txt

volatility -f Keyboard.raw --profile=Win7SP1x64 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'

RAM Forensics3.png

导出该文本文件,并查看:

volatility -f Keyboard.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003d700880 -D ./

RAM Forensics4.png

得到如下内容,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

RAM Forensics5.png

NTFS隐写

首先挂载vhd硬盘镜像文件,Win10上面直接点击这个文件就可挂载,然后发现假的flag为一个隐藏文件,取消隐藏后终端运行dir /r,发现为NTFS隐写,然后可以通过Ntfs Streams Editor工具或者notepad命令读取flag:

notepad flag.txt:hahaha.txt

RAM Forensics6.png

[RoarCTF2019]forensic

这道题能读到很多可以信息,但是似乎都是属于另一道题的,解决该题其实需要的线索很少,看到这么多可疑信息本来很懵,后来发现挺简单。

依旧是那一套操作

首先识别操作系统,为Win7SP1x86

volatility -f mem.raw imageinfo

RAM Forensics10.png
然后查进程,发现几个可疑进程:

volatility -f mem.raw --profile=Win7SP1x86 pslist
```

Name PID

TrueCrypt.exe 3260 #虚拟磁盘加密工具

notepad.exe 3524 #记事本

mspaint.exe 3620 #画图

iexplore.exe 3700 #浏览器

DumpIt.exe 3380 #内存镜像取证工具

```

RAM Forensics11.png

TrueCrypt是虚拟磁盘加密工具,down下来看看有没有东西:

volatility -f mem.raw --profile=Win7SP1x86 memdump -p 3260 -D ./

foremost分离down下来的文件,发现存在flag.txt文件,打开发现在一个压缩包里,并且压缩包是加密的:

foremost 3260.dmp

RAM Forensics13.png

接着扫文件,发现可疑文件无标题.png

volatility -f mem.raw --profile=Win7SP1x86 filescan | grep -E 'txt|png|jpg|gif|zip|rar|7z|pdf|doc'

RAM Forensics12.png

将该图片down下来,发现是一个无序字符串,疑似解压密码:

volatility -f mem.raw --profile=Win7SP1x86 dumpfiles -Q 0x000000001efb29f8 -D ./

RAM Forensics14.png

仔细辨别并尝试解压后为得到1YxfCQ6goYBD6Q,也可以使用掩码爆破,最终在压缩包内得到flag:

RAM Forensics15.png

相关推荐: CVE-2021-21972 RCE复现

漏洞简介 vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机。 …