这是护网杯的一道取证题。
链接:https://pan.baidu.com/s/1Yx63Y5Rp-_v7td_hL01bSw
分析 easy_dump.img
得到一个六百多 MB 的 img 镜像文件。
先 file
下得不到什么。
用 volatility
内存取证分析工具,imageinfo
查看镜像信息。
1 | $ volatility -f easy_dump.img imageinfo |
1 | Volatility Foundation Volatility Framework 2.6 |
发现是 windows 内存镜像,并且可以看到版本信息。windows 版本为 Win7SP1x64,用 pllist
查看进程。
1 | $ volatility -f easy_dump.img --profile=Win7SP1x64 pslist |
1 | Volatility Foundation Volatility Framework 2.6 |
这里只列出了 explorer
、notepad
、DumpIt
,实际还有其他一些进程。
使用 iehistory
及 notepad
插件查看浏览器记录和记事本记录后并没有什么发现。
我们尝试把 notepad
这个 PID 为 2872 的进程 dump 下来看有没有什么线索。
1 | $ volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2872 -D ./data |
1 | Volatility Foundation Volatility Framework 2.6 |
通过 strings
命令查看进程中有无关于 flag 的提示。此处用到了 -e
选项:
-e –encoding = {s, S, b, l, B, L}:选择字符大小和排列顺序: s = 7-bit, S = 8-bit, {b, l} = 16-bit, {B, L} = 32-bit
1 | $ strings -e l 2872.dmp | grep flag |
1 | flag{flag is not here,but I put an strange jpg for you,hope you like it :)} |
提示 flag 在一张奇怪的图片中,用 filescan
扫描一下文件列表寻找这张图片。
1 | $ volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif' |
1 | Volatility Foundation Volatility Framework 2.6 |
找到了这张图片:phos.jpg
,记下偏移 0x000000002557b2b0
,使用 dumpfiles
把这张图片dump出来。
1 | $ volatility -f ./easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002557b2b0 --name -D ~/Documents |
分析 phos.jpg
打开这张照片没有发现任何有用信息,猜测是图片隐写。先用 binwalk
查看文件隐藏信息。
1 | $ binwalk ~/Documents/phos.jpg |
1 | DECIMAL HEXADECIMAL DESCRIPTION |
发现藏了一个 zip 压缩包,使用 DD 指令分离文件,提取这个 zip。
1 | $ dd if=~/Documents/phos.jpg of=~/Documents/t.zip skip=2238922 bs=1 |
解压之后是一个 message.img
镜像。
分析 message.img
先 file
下。
1 | $ file message.img |
1 | message.img: Linux rev 1.0 ext2 filesystem data, UUID=34d27b8e-1aa5-441f-bfd9-bdc765cc4edd (large files) |
看到是 Linux 下的 filesystem data,于是装载镜像。
1 | $ bashmkdir /mnt/cdrom |
分析 hint.txt
查看里面只有一个 hint.txt
文件,打开后发现第二个数几乎都是从 10-269 递增,然后第一位数增 1,同样第一位也是从 10 一直增到 269。但仔细查看就会发现,中间有不连续的数据存在。
1 | 29 190 |
这容易联想到是个二维码,存在和不存在的数据代表二维码上的黑点和白点。于是利用 matplotlib
画散点图。
1 | import matplotlib.pyplot as plt |
可以得到二维码:
发现扫不出来,用 ps 反向一下就可以了。
得到Here is the vigenere key: aeolus, but i deleted the encrypted message。
用数据恢复软件例如 R-studio 很容易就能恢复被删除的文件:message.swp
。
文件最后有一串字符:yispywt!nidn_xirr_lhv_sszgy.
用之前得到的密钥 aeolus
维吉尼亚密码解密即可得到 flag:
yeeeeet!just_find_and_solve.