打开题目,看下描述,大概能知道的意思是公司收到了一个自称是来自微软官方的文件,文件名为windows_updata.exe,看起来非常像更新的补丁,因此进行了安装,结果文件都被加密了。
下载下来给的文件,一共包含两个文件,分别是login.xlsx.enc以及windows_update.exe。
看题目的描述,感觉这是不是被勒索加密了?前面的login.xlsx.enc就是原文件login.xlsx被加密了。因此我们需要知道这个exe文件做了啥。但是问题是,我不会逆向啊!
所以我就去看别人怎么做的,找到了管管上的这个教程。
有兴趣的可以去搜一下,同时由于需要ghidra等环境,而我又没有,因此我将结合这个视频简单讲讲,事先声明,我不懂逆向,只能说出自己的理解,还望各位批评指正。
使用ghidra重新还原出代码,顺着思路找,最终找到了加密函数encryptFile函数,这个函数如下:
这个函数定义了四个变量,local_17,local_f,d,c。看第14行知道这个local_c其实是一个控制循环次数的标志位。同时local_17,f,d这三个变量是"SUPERSECURE"这个字符的三个部分。在while循环中,我们应该尝试还原出其中的param_1才对。
可以通过以下代码进行恢复
from pwn import *
key = list(b"SUPERSECURE")
encrypted = read('login.xlsx.enc')
count = 0
flag = []
for byte in encrypted:
flag.append(byte - key[count % len(key)])
count = count + 1
print(flag)
注意记得安装pwntools。
在运行这个代码后,我们能得到一些正负数,通过使用cyberchef,我们能看出这应该是一个excel文件。哎,到这好像对上了。
下载下来的xlsx文件,我们打开,拿到了flag