笔者根据对“侠盗”勒索病毒V5.3新变种全面剖析 https://paper.seebug.org/911/"这篇文章的自我理解,隐掉一些细节之后,以大白话的方式来阐述GandCrab勒索病毒的加密原理,以及数据为什么无法解密。
笔者的理解可能有错漏之处,欢迎各位大佬多多指正。
1、RSA加密算法是一种非对称加密算法。所谓非对称,就是指该算法需要一对密钥(公私钥),使用其中一个加密(公钥),则需要用另一个才能解密(私钥)。
2、Salsa加密算法是一种对称加密算法,加密和解密双方使用相同的密钥,加密后数据长度不变。
关键字解释:关键字根据自己的理解做了稍许改变。
RsaHackerPrivateKey = 病毒作者预先生成的RSA私钥,只有病毒作者知道。
RsaHackerPublicKey = 病毒作者预先生成的RSA公钥,勒索病毒体内嵌的RSA公钥。
SalsaPrivateKey = 随机生成的Key,用于Salsa20加密算法的Key
RsaLocalPrivateKey = 本地随机生成RSA私钥
RsaLocalPublicKey = 本地随机生成RSA公钥
SalsaFileKey = 随机生成的Key,用于Salsa20加密算法的Key。(就是这个Key加密的文件)
SrcUserFile = 待加密的文件数据
Data3 = 加密后的文件数据 = "随机生成的SalsaFileKey" 使用Salsa20算法加密"SrcUserFile"后形成的加密数据
RAS加密函数定义 = typedef RSA(Key,待加密数据 )
Salsa20加密函数定义 = typedef Salsa20(Key, 待加密数据 )
1、根据"勒索病毒体内嵌的RSA公钥(RsaHackerPublicKey )"使用RSA算法来加密"随机生成的SalsaPrivateKey",得到Data1
2、根据"随机生成的SalsaPrivateKey"使用Salsa20算法来加密"本地生成的RSA私钥RsaLocalPrivateKey",得到Data2
3、根据"本地生成的RSA公钥RsaLocalPublicKey "使用RSA算法来加密"随机生成的SalsaFileKey",得到Data4
4、根据"随机生成的SalsaFileKey"使用Salsa20算法来加密原始文件,得到Data3
核心:"勒索病毒体内嵌的RSA公钥(RsaHackerPublicKey )"加密了"本地生成的RSA私钥RsaLocalPrivateKey"
1、勒索进程结束后,"随机生成的SalsaPrivateKey"、"随机生成的SalsaFileKey"就已经被内存释放了。只有"作者手中的RSA私钥(RsaHackerPrivateKey)"才能解密出这两个Key。
1、根据"病毒作者手中的私钥(RsaHackerPrivateKey)"&"Data1"使用RSA算法来解密出"随机生成的SalsaPrivateKey"
2、根据"随机生成的SalsaPrivateKey"&"Data2" 使用Salsa20算法来解密出"本地生成的RSA私钥RsaLocalPrivateKey"
3、根据"本地生成的RSA私钥RsaLocalPrivateKey"&"Data4" 使用RSA算法来解密出"随机生成的SalsaFileKey"
4、根据"随机生成的SalsaFileKey"使用Salsa20算法来解密出原始文件
[公告]LV6级以上的看雪会员可以免费获得《2019安全开发者峰会》门票一张!!
最后于 2天前 被暗夜之刃编辑 ,原因:
|
|
---|---|
|
是不是? |
|
看场雪 是不是? RSA加密函数定义 = typedef RSA2048(Key, 待加密数据) Salsa20加密函数定义 = typedef Salsa20(Key, 待加密数据) 谢谢指正。原文已经修改成正确的了。 |
|
吹毛求疵,还有几个字 最后于 3天前 被看场雪编辑 ,原因: |
|
看场雪 吹毛求疵,还有几个字RSA加密函数定义 = typedef RSA2048(Key, 待加密数据)^^^ & ... 已修改,同属强迫症患者,握个爪....... |
返回