前言
当时是因为帮朋友看题目才拿到的,第一眼就看出是”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是换行。
现在有了公私钥,看一下加密之后的文件头:

可以使用在线的网站解密:707K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6G2K9%4c8G2L8$3I4K6i4K6u0W2L8X3g2@1i4K6u0r3M7Y4y4S2i4@1f1#2i4@1u0q4i4K6V1%4i4@1f1#2i4K6R3^5i4@1t1H3i4@1f1#2i4@1q4r3i4K6R3$3i4@1f1&6i4K6V1J5i4@1p5#2i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1%4i4@1p5@1i4@1u0m8i4@1f1@1i4@1u0q4i4K6S2n7i4@1g2r3i4@1u0o6i4K6W2m8

得到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)
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2020-6-28 12:35
被菜鸟m号编辑
,原因: