众所周知,受害者机器在感染勒索病毒后,一般情况下勒索病毒只需要加密文件的头部或个字节,因为文件格式,关键数据结构等都是写在头部,所以勒索病毒加密的速度通常会很快,主要加密包括Word、Excel、PPT、文档、图片、压缩包、数据库、源码等等,通常会要求用户支付赎金才可以解密相关数据,如下图为wanacry的勒索界面,那勒索病毒常用的加密算法什么呢,为什么我们通常在无法支付赎金的情况下无法对数据进行解密呢,接下来进行依次探究。
二、常用的加密算法勒索病毒通常采用对称加密技术和非对称加密技术相结合的方式来实现对用户文件加密和解密密钥的保管,通常将高级加密标准(AdvancedEncryptionStandard,AES)与RSA算法相结合。公开密钥密码体制要求密钥成对出现,一个用于加密,另一个用于解密,并且不可能从其中一个推导出另一个。
1、对称加密算法及AES
对称加密算法使用的加密密钥和解密密钥为同一密钥。在对称加密算法中,数据明文被发送者通过使用加密密钥和加密算法进行加密后,将密文发给接收者,接收者使用加密密钥及加密算法的逆运算进行解密,获得明文。
高级加密标准(AdvancedEncryptionStandard,AES),是对称加密算法在计算机加密应用场景中较为广泛、成熟的一种加密方式。它的加密过程主要包括“字节代换”“行位移”“列混合”“轮密钥加”四步,通过使用密钥轮对明文进行逐轮加密实现密文的可靠性。在勒索病毒的工作过程中,AES通常被用作对计算机文件进行“绑架”加密,是加密过程中的第一把锁。
2、非对称加密算法及RSA
非对称加密算法的加密密钥与解密密钥是不同的,通常分别称为“公钥”和“私钥”。在非对称加密算法中,根据密钥生成算法可以生成两个有一定关联性但互相之间难以推导的密钥对。将“公钥”公布给发送者,而“私钥”由接收者保留。发送者使用“公钥”通过加密算法对明文加密后,仅需将加密后的密文发给接收者,接收者使用“私钥”通过解密算法对密文进行解密还原。非对称加密算法的优点在于很好地保护了“私钥”,增强加密的可靠性。
RSA算法是计算机加密应用场景中非对称加密算法应用比较广泛的一种,其通过生成两个极大素数,通过使用欧拉函数、欧几里得算法分別获取“公钥”和“私钥”所需相应元素,对明文或密文使用“公钥”或“私钥”分块进行幂运算和取模运算,以完成加密或解密。同时,对极大整数做因数分解的数学难题决定了RSA算法的可靠性。有研究表明,在当前普通计算机性能条件下,破解位RSA密钥耗时约两年,破解位(十进制位)密钥耗时需80年,而大多数勒索病毒采用RSA算法生成的密钥长度为位[2]。
三、部分病毒加密方法1、Wannacry采取两级基于位RSA算法的非对称加密方法,和一级基于位AES的对称加密方法完成对受害者计算机文件的“绑架”过程,具体如下。
(1)病毒作者预先使用RSA算法生成密钥对(私钥C1和公钥P1),将私钥C1保存,以用作受害者支付赎金后发给受害者的解密密钥;将公钥P1放置于勒索病毒内,跟随勒索病毒感染受害者计算机。
(2)勒索病毒成功入侵受害者计算机后,生成互斥副本确保仅感染受害者计算机一次后,病毒将被删除,并遍历受害者计算机文件目录。
(3)勒索病毒使用RSA算法生成密钥对(私钥C2和公钥P2),并使用步骤1生成的公钥P1对私钥C2进行加密生成加密私钥Cc2,并将Cc2上传至病毒作者计算机。
(4)勒索病毒使用AES算法根据步骤1遍历目录的文件数量生成相应数量密钥C3,各密钥C3不相同;使用密钥C3依照遍历的目录对用户文件进行加密,生成“人质”文件。
(5)勒索病毒使用公鑰P2对不同的私钥C3进行加密生成不同的加密私钥Cc3,并删除密钥C3。
(6)将各Cc3写入对应“人质”文件的文件头位置,生成新的“人质”文件。
(7)删除“人质”文件的原文件、病毒文件、公钥P1、公钥P2、私钥C2、加密私钥Cc2。
对应的解密过程:
(1)支付赎金获取私钥c2;
(2)利用私钥C2解密CC3获取私钥C3;
(3)利用C3对加密的数据进行解密;
2、LockyLocky勒索软件是另一款需要从CC服务器申请公钥的勒索软件,是年2月开始传播,由于Locky需要从攻击者的CC服务器申请公钥,而CC服务器很快就挂掉了,使Locky无法与其CC服务器进行通信,导致无法申请到密钥。Locky勒索软件选用RSA算法和AES算法作为其加密算法
(1)RSA算法用于加密随机生成的AES密钥,RSA算法的公钥在Locky勒索软件运行时从攻击者CC服务器中获取;
(2)AES算法用于加密受害者的用户文件,其主要由aesenc指令实现,该指令具有较高的执行效率:
解密过程:
首先需要从攻击者CC服务器中拿到RSA私钥,用于解密AES密钥,进而使用AES密钥完成用户文件的解密工作即可;
3、PetyaPetya勒索软件的加密算法,可简述为ECDH算法和SALSA20算法。其中,ECDH算法采用secpk1曲线,用于加密SALSA20算法的密钥;
SALSA20算法用于加密主文件表,该算法运行在操作系统引导之前的16位环境之中;
当完成上述加密步骤之后,程序会显示出其勒索页面并索要赎金。
解密过程:
Petya勒索软件的解密算法仅包含一步,即从攻击者CC服务器中拿到SALSA20的密钥,用之解密主文件表,最后将引导区还原为正常引导,即可完成其解密流程。
4、Unlock92Unlock92勒索软件采用的勒索软件为两次RSA算法,每个Unlock92勒索软件都内置一个RSA公钥;
该公钥用于加密一个随机生成的RSA私密。而这个随机生成的RSA公私密钥对,用于加密用户的全部个人文件:
由于RSA算法运行速率较慢,Unlock92的作者并未对完整的用户文件全部进行加密,而是选择每个用户文件的前0x字节进行加密。
解密过程:
从攻击者手中拿到对应于样本内置RSA公钥的私钥,然后通过拿到的私钥解密随机RSA私钥,最后用解密的来的RSA私钥解密用户文件即可;
四、小结勒索病毒通过AES加密算法生成密钥对计算机源文件进行加密,并将AES密钥保存在本地,正常情况下受害者找出该密钥则可以完成对文件的解密,而勒索病毒作者为了保障该密钥不被用户使用,选择了双层RSA加密算法完成对该密钥的再次加密,并保留最后一层RSA算法的私钥在病毒作者计算机内,最终使得解密密钥与受害者完全隔离。
通过对勒索病毒的加密算法进行分析可发现,攻击者基本是采用二层甚至是三层加密方法,在加密结束后会删除计算机上产生的私钥、源文件、病毒文件等,多数的病毒采用RSA加密算法,RSA算法破解的难点主要是基于大整数因子分解的困难性上。也就是说,在没有解决因子分解问题的情况下可能解决RSA问题,因此RSA算法并不是完全基于大整数因子分解的困难性上的。基于秘钥破解的难度可采用如下措施规避风险:
在遭受勒索病毒后,可尝试若通过数据恢复技术来恢复看能否恢复删除的私钥或相关文件,也许可以完成加密文件的解密操作,挽回损失;
已对重要数据经常采取离机备份;
毒用户可以使用安全厂商发布的平台或工具来对加密文件进行解密操作。可以启发人们的是,受害者可将中毒文件暂时封存,待密钥破解或公布后,再进行解密恢复。
参考链接: