0x00 已知条件
给了一个“+_+.rar.977e2c637dc492fb9a7cf7595c852044”,去掉多余的后缀得到“+_+.rar”,该压缩包里是Winpcap抓的包,用Wireshark可以查看。
发现主要是57370端口(控制端)和2333端口(被控端)间的通信。通过"$"不难猜到是shell交互。
上图是其中一个数据帧的载荷部分,可以看出2333端口是reverse shell,通过追踪TCP流可以看到完整的shell指令交互过程,如下图,除了cat脚本的部分外都是对目录的访问(类似红框内的操作)。
0x01 条件分析
最重要的部分是上面打印的function.py里的内容,可以看出这是一个AES加解密脚本,经过运行发现message是它给出的一个样例example,解密结果如下图,是flag的格式。
蓝色框是加密结果,而红色框是解密结果。但是该结果得到的只是一堆"x",显然仍需要寻找。
将shell的交互数据拉到最下面,可以发现"flag"这个文件cat出来是一个显然加密过的字符串:
“mbZoEMrhAO0WWeugNjqNw3U6Tt2C+rwpgpbdWRZgfQI3MAh0sZ9qjnziUKkV90XhAOkIs/OXoYVw5uQDjVvgNA==”
根据字符串末尾的两个等号和function.py脚本中import过base64库,猜测该字符串是由base64编码的。
下面对该字符串连续进行base64解码和调用脚本中的decrypt函数进行解密,得到结果。(注意仅base64解码后的结果形式与上图蓝色框类似,故想到调用脚本函数继续解密)