0x00 详解

题目给出了加密压缩包Who_am_I.zip和raw文件。

使用imageinfo确定题目的操作系统为Win7SP1x64。

文件搜索。查看桌面文件发现可疑内容:

volatility -f Yusa-PC.raw --profile=Win7SP1x64 filescan|grep Desktop

Sakura-公告:

全体成员注意,我们将在11月20号,对地球发起总攻,请做好准备。

Sakura-备忘录:

2021.11.15:请组织内的人务必删除所有不必要的联系方式,防止我们的计划出现问题。

Sakura-logo:是一朵可爱的小粉花,没什么特别的。

因为多次出现“Sakura”,我就对其进行了搜索:

volatility -f Yusa-PC.raw --profile=Win7SP1x64 filescan|grep Sakura

有一个可疑的Sakura-didi,导出后发现其是一个加密的压缩包,需要密码。

接下来全局搜索了压缩文件,找到了加密的key.zip。

volatility -f Yusa-PC.raw --profile=Win7SP1x64 filescan|grep -E "zip|rar"

现在得到了三个加密压缩文件了(彩蛋、 key.zip、 Sakura-didi ),还有题目给出的加密的Who_am_I.zip,非常难受,就高搜了一下:

volatility -f Yusa-PC.raw --profile=Win7SP1x64 filescan|grep Yusa

运气很好发现了隐藏的信息^^

接下来看看Contacts文件夹里都有啥:

别的文件没有什么用,找到了这个:

Mystery Man.contact:

LF2XGYPPXSGOPO4E465YPZMITLSYRGXGWS7OJOEL42O2LZFYQDSLRKXEXO56LCVB566IZ2FPW7S37K7HQK46LLUM42EJB354RTSL3IHFR6VONHEJ4S4ITZNEVHTJPNXJS62OHAECGZGCWWRVOBUXMNKMGJTTKTDZME2TKU3PGVMWS5ZVGVYUKYJSKY2TON3ZJU2VSK3WGVGHK3BVGVJW6NLBGZCDK33NKQ2WE6KBGU3XKRJVG52UQNJXOVNDKTBSM42TK4KFGVRGK3BVLFLTGNBUINBTKYTFNQ2VSVZTGVNEOOJVLJBU4NKMGZSDKNCXNY2UY4KHGVGHSZZVG52WMNSLMVCTKWLJLI2DIQ2DMEZFMNJXG54WCT2EJF3VSV2NGVGW2SJVLJVFKNCNKRIXSWLNJJUVS6SJGNMTERLZJ5KFM3KNK5HG2TSEM46Q====

一遍Base32一遍base64得:

这是你会用到的key,可以用它打开组织给你的工具。工具命名依照了传统规则。key:820ac92b9f58142bbbc27ca295f1cf48

尝试了下解开了Sakura-didi。是一个尺寸很小的bmp,比赛时也就做到这里了。

接下来安装mimikatz插件,得到登录账户的明文密码。

使用该密码解得Who_am_I.zip,打开是意义不明的乱码。

接下来查看查看进程的命令行参数,发现可疑程序StikyNot.exe,该程序是Windows Tablet PC 便笺工具,很可能存在有用的信息:

volatility -f Yusa-PC.raw --profile=Win7SP1x64 memdump -p 2228 -D ./

导出,使用十六进制编辑器打开该文件,找到{\rtf1开头,da;}}结尾的一段粘出来,再找到{\*\generator开头,par..}结尾的一段。把两段贴出来黏在一起,保存为rtf格式:

使用核心密码打开key.zip,得到exp。fp和fs读取文件的位置互换一下即可得到flag。

from PIL import Image
import struct
pic = Image.open('key.bmp')
fp = open('Who_am_I', 'rb')
fs = open('flag', 'wb')

a, b = pic.size
list1 = []
for y in range(b):
    for x in range(a):
        pixel = pic.getpixel((x, y))
        list1.extend([pixel[1], pixel[0], pixel[2], pixel[2], pixel[1], pixel[0]])

data = fp.read()
for i in range(0, len(data)):
    fs.write(struct.pack('B', data[i] ^ list1[i % a*b*6]))
fp.close()
fs.close()

0x01 彩蛋

egg1

桌面的新建文件夹.txt。

egg2

volatility -f Yusa-PC.raw --profile=Win7SP1x64 filescan|grep egg

Volatility Foundation Volatility Framework 2.6
0x000000003f2ae290      1      0 R--r-- \Device\HarddiskVolume2\Users\Yusa\Desktop\Sakura文件\Sakura-egg5
0x000000003f82fdc0      1      0 R--r-- \Device\HarddiskVolume2\Program Files\Reference Assemblies\Microsoft\Framework\egg2

egg3

在信件里:

egg4

volatility -f Yusa-PC.raw --profile=Win7SP1x64 cmdscan

**************************************************
CommandProcess: conhost.exe Pid: 1344
CommandHistory: 0x3ffde0 Application: cmd.exe Flags: Allocated, Reset
CommandCount: 1 LastAdded: 0 LastDisplayed: 0
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x5c
Cmd #0 @ 0x3ea130: egg4 eXVzYeWnkOWnkOacieWlveWkmuWlveWkmueahOWwj+Woh+Wmu++8jOa4o+eUtw==
Cmd #37 @ 0x3f61c0: >
Cmd #38 @ 0x380158: ?
**************************************************

base64解码即可。

egg5

\Desktop\Sakura文件\Sakura-egg5

volatility -f Yusa-PC.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000003f2ae290 -n --dump-dir=./

得到加密的压缩文件,查看屏幕截图,得到密码:

volatility -f Yusa-PC.raw --profile=Win7SP1x64 screenshot --dump-dir=./