写在前面的话
GandCrab勒索软件于1月首次出现,并在其短时间中迅速发展。此恶意软件的第一个版本(1.0和1.1)有一个错误,将密钥留在内存中,因为作者没有正确使用加密函数中的标志。一家反恶意软件公司在罗马尼亚警方和欧洲刑警组织的帮助下,在NoMoreRansom.org上发布了一款免费解密工具。
恶意软件作者在俄罗斯论坛上证实了黑客攻击:
GandCrab的第二个版本很快出现并改进了恶意软件服务器的安全性。为了防止被反击,勒索软件的第一个版本有一个要加密的文件扩展名列表,但第二个版本和更高版本已经用排除列表替换了这个列表。除列表中的文件之外的所有文件都已加密。
感染方式
GandCrab使用几种感染方式:1.利用安全性较弱的远程桌面连接。2.带有链接或附件的钓鱼邮件。3.用户下载并启动包含恶意软件的合法程序。4.利用RigEK等工具包。与其他勒索软件一样,GandCrab的目标是加密受感染系统上的所有或多个文件,勒索用户。开发人员需要以加密货币(主要是DASH)付款,因为它很难追踪。恶意软件具有多样性。我们已经看到.exe格式的变体(主要形式)以及DLL格式。
版本4.0
版本4.0中最大的变化就是用于加密文件的算法。早期版本使用RSA和AES; 最新版本使用Salsa20。主要原因是速度。RSA是一种功能强大但速度慢的算法。Salsa20很快。勒索软件会检查系统的语言,如果受感染的机器以俄语或某些其他前苏联语言运行,则不会删除payload:
GandCrab会加密除了以下文件扩展名的任何文件:
勒索软件不会加密这些文件夹中的文件:
GandCrab保留未加密的文件:
勒索软件在加密文件之前会生成一对RSA密钥。加密过程为每个文件生成一个随机Salsa20密钥和一个随机IV,用它们加密文件,并用一对RSA密钥(在开头创建公共RSA密钥)加密该密钥和IV。私钥在注册表中使用另一个Salsa20密钥加密,并使用嵌入在恶意软件中的RSA公钥加密IV。加密后,文件密钥和IV将以8字节的新字段附加到文件的内容中,从而增加原始文件大小。这种方法使GandCrab成为一款非常强大的勒索软件,因为没有嵌入公钥的私钥,就无法解密文件。如果没有新的RSA私钥,我们无法解密附加到文件的Salsa20密钥和IV。最后,勒索软件会删除受感染计算机上的所有卷影并删除自身。
版本4.1
此版本保留了Salsa20算法,修复了一些bug,并添加了一个新功能。例如,此版本的一个示例具有以下加密域的硬编码列表。(这只是此列表的一小部分。)
勒索软件从列表中选择一个域,并使用以下单词之一创建随机路径:
之后它随机选择另一个单词添加到它创建的URL:然后它创建一个文件名,从以下列表中随机选择三个或四个组合:最后,恶意软件将文件名与随机选择的扩展名连接起来:
此时,恶意软件使用POST将加密信息发送到嵌入列表中所有域的新生成的URL,重复生成每个域的路径和名称的过程。此版本中的另一个重要更改是尝试混淆对VirtualAlloc
和VirtualFree
等函数的调用。
版本4.1.2
此版本已出现一些变体。两家安保公司透露了一种预防先前版本感染的工具。该工具会在勒索软件感染系统之前在具有特殊名称的文件夹中创建特殊文件。该文件的名称来自Windows逻辑单元硬盘值的序列号。恶意软件使用此名称进行简单计算,并在%appdata% or %program files%
(基于操作系统)中使用扩展名.lock
创建它。
GandCrab作者反应神速,马上就作出改变,其中一家安全公司也不甘,制作一个免费工具来作为回应,但在几小时内,作者又发布了另一个版本4.1.2并更改了文本。恶意软件不再创建任何文件,而是使用此特殊名称创建互斥对象。互斥锁保留并在名称中保留.lock
扩展名。
所以该杀毒工具不适用于第二版4.1.2和4.2版,但它确实适用于以前的版本。
版本4.2
此版本会检测是否处于虚拟机环境,一但检测到虚拟机就会停止运行。
恶意软件计算主Windows安装逻辑单元的空闲空间,并最终计算出一个值。如果此值想对于勒索软件是正确的,则它会正常运行。如果该值小于0x1E
,则等待一小时以启动正常进程。如果该值大于0x1E
,则勒索软件完成其执行。
版本4.2.1
这个版本出现在8月1日。与之前版本不同的是,这是一条发给安全公司的短信,以及一个0day漏洞的链接,攻击该公司的一个产品。该漏洞攻击了这家公司的一个产品。代码是一个Visual Studio项目,可以很容易地重新编译。在Visual Studio中加载项目后,该代码有俄文文件夹。
版本4.3
此版本也出现在8月1日。此版本与以前的版本有以下变化:1.它删除了用于检测虚拟机的代码以及4.2版中的其他一些东西。这段代码有一些bug——无法检测到某些虚拟机。2.它针对防病毒公司的一种产品的发起攻击,该产品通过版本4.1.2的第一版发布了针对4.0版的杀毒工具。而代码出现的位置是在恶意软件加密文件之后和删除之前。
这些函数中的新代码使静态分析更加复杂。介绍一个很有效的技巧:勒索软件进行了一个delta
调用(将delta偏移的地址放在堆栈的顶部)并添加0x11
(特殊代码的大小,意味着恶意软件作者正在使用宏)到ESP寄存器中的值。ESP现在指向特殊代码块之后的地址,并在该块的操作码中间跳转。这种技术使它看起来像另一条指令,在本例中是“pop eax”
,它从堆栈顶部(ESP寄存器)添加0x11
后提取值。代码稍后在EAX中无条件跳转到此地址。这样勒索软件遵循其正常的代码流程。
结论
GandCrab是任何个人或企业的领先勒索软件威胁。作者使用多种方式传播它—— 包括漏洞利用工具包,钓鱼邮件,木马程序。开发人员主动更新和改进代码,以使分析更加困难。该代码不是专业编写的,并且仍然存在漏洞,但该产品在地下论坛中得到了很好的推广,并且价值也在不断增加。
*参考来源mcafee,由周大涛编译,转载请注明来自FreeBuf.COM