前言
当时是因为帮朋友看题目才拿到的,第一眼就看出是”wannaren病毒“改的,不得不感叹现在ctf题目热度更新还是挺快的。
逆向
下载有四个文件:
%20![图片描述]
点击clickme.exe会更改壁纸,没有实际病毒,问题不大。
wannareverse.exe先运行一下clickme.exe:
中间的循环体是生成一个32位的AES密钥,用来加密文件。
本来想动态调试拿到密钥就完事了,但是sub_40BA70返回的不是定值,密钥一直在变。
sub_402D00函数是加密flag.txt文件,先检查目标有没有文件:
之后就是用AES加密目标文件,创建flag.txt并增加一个Encry后缀:
这里面调用算法直接用find 插件可以很快辨别。
用RSA加密AES的密钥之后再写入到加密文件的头:
加密的公钥可以在wannaren.exe里面看到,都是硬编码的:
clickme.exe其他功能不介绍了,拿来当demo倒是挺好玩的,主要使用它提供的私钥:
0x0A是换行。
现在有了公私钥,看一下加密之后的文件头:
可以使用在线的网站解密:https://oktools.net/rsa得到密钥,示例:
得到AES的密钥:30776159143604297789676442413079。
然后用这个密钥去解密文件剩下的内容就可以:
脚本:
from Crypto.Cipher import AES
from hashlib import md5
ciper =[0x5C, 0xBC, 0xEA,
0x89, 0xBA, 0x2B, 0x18, 0x27, 0x79, 0x3F, 0x13, 0x0A, 0x8A,
0x97, 0xB4, 0x9B, 0xCD, 0x78, 0x9B, 0xD8, 0x35, 0x92, 0x05,
0x45, 0x4C, 0x22, 0xA5, 0x69, 0x37, 0xEB, 0x6E, 0x2B, 0x0E,
0xBD, 0x84, 0x0F, 0x91, 0x61, 0x38, 0xF6, 0xF1, 0xBA, 0x99,
0x19, 0x41, 0x72, 0x07, 0x91, 0xF0, 0x26, 0x68, 0x06, 0x61,
0x26, 0x5C, 0x20, 0x35, 0xDD, 0xCF, 0xFC, 0x77, 0x57, 0x54,
0x81, 0xF2, 0xF2, 0xE4, 0xAF, 0xBF, 0xA2, 0x1D, 0x29, 0xAE,
0x6C, 0x08, 0x3B, 0x76, 0x1B, 0x66, 0xB8, 0xFE, 0x72, 0xCB,
0xD6, 0x94, 0xC3, 0xD5, 0x6A, 0xE7, 0x0C, 0x7A, 0x28, 0xDC,
0xBC, 0xAC, 0x80]
key = b"30776159143604297789676442413079"
aes = AES.new(key, AES.MODE_ECB)
c = aes.decrypt(ciper)
print(c)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-6-28 12:35
被菜鸟m号编辑
,原因: