eazy_dump

这是hctf2018的一道取证题。
链接:https://pan.baidu.com/s/1RUpt-IXUIpqH6SW91jRCcg


分析mem.data

得到一个200多MB的文件:mem.data,还是使用我们的老朋友volatility内存取证工具。
首先用imageinfo查看镜像信息:

1
$ volatility -f mem.data imageinfo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Volatility Foundation Volatility Framework 2.6
INFO : volatility.debug : Determining profile based on KDBG search...
Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_23418
AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
AS Layer2 : FileAddressSpace (/root/Documents/CTF/hctf2018/misc/eazy_dump/mem.data)
PAE type : No PAE
DTB : 0x187000L
KDBG : 0xf80004035070L
Number of Processors : 4
Image Type (Service Pack) : 0
KPCR for CPU 0 : 0xfffff80004036d00L
KPCR for CPU 1 : 0xfffff880009ee000L
KPCR for CPU 2 : 0xfffff88004568000L
KPCR for CPU 3 : 0xfffff880045dd000L
KUSER_SHARED_DATA : 0xfffff78000000000L
Image date and time : 2018-11-07 08:26:52 UTC+0000
Image local date and time : 2018-11-07 16:26:52 +0800

发现这可能是Win7SP1x64的系统。
然后用pslist扫描进程。

1
$ volatility -f mem.data --profile=Win7SP1x64 pslist

1
2
3
4
5
6
7
Volatility Foundation Volatility Framework 2.6
Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit
------------------ -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0xfffffa8003344390 wordpad.exe 1804 1696 3 120 1 0 2018-11-07 08:15:35 UTC+0000
0xfffffa8000d9ab30 MineSweeper.ex 312 1696 9 208 1 0 2018-11-07 08:15:39 UTC+0000
0xfffffa8002de1560 mspaint.exe 2768 1696 6 122 1 0 2018-11-07 08:16:05 UTC+0000
0xfffffa8000cfeb30 cmd.exe 2824 1356 0 -------- 0 0 2018-11-07 08:26:51 UTC+0000 2018-11-07 08:26:52 UTC+0000

发现了wordpad记事本、MineSweeper扫雷、mspaint画图、cmd这几个可能有线索的进程。用memdump全部dump下来进行分析:

1
$ volatility -f mem.data --profile=Win7SP1x64 memdump -p 1804,2768,312,2824 -D ./data

1
2
3
4
5
6
7
8
9
Volatility Foundation Volatility Framework 2.6
************************************************************************
Writing wordpad.exe [ 1804] to 1804.dmp
************************************************************************
Writing mspaint.exe [ 2768] to 2768.dmp
************************************************************************
Writing MineSweeper.ex [ 312] to 312.dmp
************************************************************************
Writing cmd.exe [ 2824] to 2824.dmp

经过分析之后并没有什么线索。


获取dump内存时的屏幕信息

这时候要换一种思路,试试能不能获得dump该内存时的屏幕信息,寻找线索。
可以用到linux下的一款图形工具gimp
将刚刚dump下来的进程后缀名改为data,随意打开一个,例如mspaint.data。一般电脑屏幕的分辨率是1920x1080,按此更改图片的宽和高。调整偏移值大小,然后细微调整,在46981633处得到完整的图片。

注意这里宽不能有一点偏差,否则无法获得正确信息,高无所谓。

可以看到运行了扫雷、记事本和画图。记事本中有im so boring,后面可能还有一些内容,被扫雷挡住无法看到。画图中完全不知有什么内容。


分析wordpad

strings -e l单字小头位序的方式输出进程wordpadim so boring前后的字符串查找线索。

1
$ strings -e l 1804.data | grep -C 5 im\ so\ boring

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ijaya
Vani
DokChampa
DaunPenh
im so boring ...... art??
im so boring ...... art??
Malgun Gothic
Shonar Bangla
im so boring ......
btw ..
ike my art??
btw ..
do you like my art??
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

可以看到do you like my art??的提示,线索指向了mspaint


分析mspaint

通过桌面图片可以得到mspaint的画布宽为1457
然后用gimp打开mspaint.data,设置宽为1457,高度随意。不断调整偏移值最后在152281183处得到图片:

最终得到flag:
hctf{big_brother_is_watching_you}