简述:
在勒索病毒进程中暴力检索密钥指针所在结构体的size、flag 等特征信息以找到疑似密钥的指针,然后取出指针指向的疑似密钥对一对加密文档和与之对应的未加密文档 进行测试。当对未加密文档进行解密,解密出数据和未加密文档匹配,那这个疑似密钥—就是勒索使用的密钥了。
原理:
内存里残留了CSP 使用的 key_data_s 结构体,在该结构体中
struct key_data_s
{
void *unknown; // XOR-ed
uint32_t alg;
uint32_t flags;
uint32_t key_size;
void* key_bytes;
};
而勒索采用的是AES256 ,那 alg = 0x00006610,keysize=0x00000020, flags= 0x1
则特征值对应:106600000100000020000000
于是乎在内存中检索匹配该串,紧接着的就是key_bytes
原作者过程:
-
在未被破坏的勒索现场使用ProcessExplorer 挂起勒索进程
-
使用procdump 获取勒索进程快照
-
使用python 脚本 检索快照中匹配的可能密钥
-
使用可能的密钥对加密文件进行解密验证以获取密钥
-
使用解密密钥来解密目标文件夹下的加密文件
模仿者:
-
遍历进程内存,匹配特征找密钥指针
a 进程遍历:
b 检索特征寻找可能的key指针:
c 获取可能密钥:
-
解密测试以获取真正密钥
苛刻条件
- 现场不能被破坏 – 勒索进程内存空间还在
- 有一对验证密钥的文件 – 未加密文档和与之对应的加密文档
解密工具及参考资料
该勒索分析参考:https://www.freebuf.com/articles/others-articles/249109.html
淫技思路出处: https://github.com/JavierYuste/AvaddonDecryptor
模仿 JavierYuste 的大厂:https://www.nomoreransom.org/zh/decryption-tools.html
模仿 JavierYuste 的大厂:https://www.nomoreransom.org/zh/decryption-tools.html
关键结构体参考:https://forums.codeguru.com/showthread.php?79163-Structure-of-HCRYPTKEY-Data