导语:近日,安全公司CheckPoint在一份报告中,介绍了一种新型的勒索软件——Ryuk,根据分析,该勒索软件背后的团队已经在短短两周内获得了价值超过64万美元的比特币。
近日,安全公司CheckPoint在一份报告中,介绍了一种新型的勒索软件——Ryuk,根据分析,该勒索软件背后的团队已经在短短两周内获得了价值超过64万美元的比特币。
CheckPoint指出,此次类型的攻击比此前的勒索软件示例更具针对性,从开发阶段到加密过程,直到要求赎金,Ryuk的目标是那些有能力支付大量资金以使其网站重回正轨的企业。一旦被感染,这些公司就必须在两周内支付勒索者提出的比特币需求,否则受感染的文件将被自动删除。并且,赎金会因为勒索被忽视而每天增加。CheckPoint表示,可能会有更多的企业成为Ryuk攻击的受害者。
针对Ryuk勒索软件的分析
在过去的两周里,Ryuk疯狂的袭击了全球各个组织。不过到目前为止,该攻击针对的目标都是资金雄厚的企业,同时对每家受感染企业的数百台PC、存储和数据中心进行了感染。
虽然目前,Ryuk的技术含量相对较低,但它确实已经成功攻击了三家美国大型企业和全球其他大型组织。为此,一些组织为了取回他们的文件已经支付了巨额赎金。虽然赎金数量也会根据因受害者而异(范围在15 比特币到50 比特币之间),但累计起来,其幕后黑手已经获得了价值超过64万美元的比特币。
奇怪的是,在分析过程中,CheckPoint发现Ryuk的攻击活动及其内部的一些运行原理与HERMES勒索软件类似,目前它通常被认为是臭名昭着的朝鲜APT组织Lazarus开发的。该组织长期对韩国、美国进行渗透攻击,此外还对全球的金融机构进行攻击,堪称全球金融机构的最大威胁。该组织最早的攻击活动可以追溯到2007年。据国外安全公司的调查显示,Lazarus组织与2014年索尼影业遭黑客攻击事件,2016年孟加拉国银行数据泄露事件,2017年美国国防承包商、美国能源部门及英国、韩国等比特币交易所被攻击等事件有关。而2017年席卷全球的最臭名昭著的安全事件“Wannacry”勒索病毒也被怀疑是该组织所为。所以根据种种迹象,CheckPoint相信,Ryuk的幕后团队很可能就是Lazarus。不过也有可能是其他攻击团队,获得了HERMES的源代码。总之Ryuk与HERMES是脱不了干系的。
在下面的分析中,研究人员复盘了Ryuk参与的一些具有高度针对性的攻击,并将它与HERMES勒索软件进行了详细比较。研究人员还讨论了Ryuk在获取赎金后的销赃行为,研究人员通过追踪资金的往来痕迹,确认了Ryuk的开发者是如何将赎金钱包进行拆分和转移,来掩盖他们收到的付款痕迹。
Ryuk概述
与常见的勒索软件不同,Ryuk是通过大规模垃圾邮件活动和漏洞利用工具包进行传播的,专门用于自定义攻击。实际上,其自定义后的勒索方案是专门为小规模操作而构建的,因为Ryuk的攻击目标只针对被感染目标的关键资产和资源。所以,Ryuk的感染和传播过程都是由攻击者手动执行的。
当然,这意味着攻击者需要进行广泛的网络映射、黑客攻击和凭证收集,并在每次攻击之前进行。
两种版本的Ryuk的赎金说明
虽然在收集的样本中没有发现差异,但攻击者在向受害者发送赎金说明时,却呈现出了两种版本。一个是篇幅较长、措辞得体、优美的赎金说明,该版本的说明直接带来了50比特币(约32万美元)的赎金。而另一个则是篇幅较短、措辞直白严厉的赎金说明,该版本的说明带来了22.4万美元的赎金,其中赎金从15-35比特币不等。据分析,这可能意味着两种类型的攻击。
措辞得体、优美的赎金要求
篇幅较短、措辞直白严厉的赎金说明
Ryuk和HERMES的详细比较
HERMES勒索软件于2017年10月首次被捕获,准确地说,是在它攻击台湾远东国际银行(FEIB)的时候被发现的。根据分析,那次攻击就是朝鲜APT组织Lazarus发起的,在这次复杂的SWIFT攻击中,有6000万美元被盗,不过后来又被追回。至此之后,HERMES就被定义为专门针对网上银行的勒索软件了。
然而,毫无疑问,就Ryuk而言,过去两周内发生的攻击绝不仅仅是一场小打小闹,而是其未来攻击的铺垫。事实上,由于其幕后团队已获取的赎金相当诱人,所以Ryuk的攻击绝不会就此作罢。
研究人员对Ryuk和HERMES的技术特点进行了比较后,发现编写Ryuk的人要么拥有HERMES勒索软件的源代码,要么就是Lazarus本身。
底层代码的比较
在检查Ryuk的代码时,一个有趣的发现是它的加密逻辑类似于之前Malwarebytes概述的HERMES勒索软件。
实际上,如果研究人员比较加密单个文件的函数,就会发现它们的结构有很多相似之处,如下面的调用流程图所示。
Ryuk和Hermes中加密函数的调用流程图
事实上,似乎Ryuk的开发者甚至都懒得更改加密文件中的标记,因为用于生成、放置和验证该标记的代码是用来确定文件是否已经加密,这些标记在这两种恶意软件中都是相同的。
Ryuk和Hermes的标记生成
Ryuk和Hermes的标记检查
另外,调用上述例程的函数在两种情况下都执行非常类似的操作。例如,两者都将类似的文件夹列入白名单(例如“Ahnlab”,“Microsoft”,“$Recycle.Bi”等),以避免对存储在其中的文件进行加密。此外,两者都在同一路径中编写了一个名为“window.bat”的批处理脚本,并使用类似的脚本删除shadow volume和备份文件。同样,在这两种情况下,都有文件被拖到磁盘(“PUBLIC”和“UNIQUE_ID_DO_NOT_REMOVE”),它们在名称和用途上类似。
还应该注意的是,所有上述执行逻辑都保存在Ryuk的32位和64位版本中,研究人员都存有各自的样本(见附录)。如果代码跨越了不同体系结构,还有如此的相似性,只能说明底层源代码相同。
技术分析
DROPPER木马程序
Ryuk的DROPPER木马程序简单明了。它包含勒索软件的32位和64位模块,在dropper的二进制文件中会被连续地嵌入。在执行开始时,dropper使用srand函数和GetTickCount函数(用于生成种子)生成一个5位字母的随机文件名。
然后,根据受害者计算机上的Windows版本,将上述有效载荷文件写入一个目录。如果是windowsxp或windows2000版本,载荷文件将创建在“\Documents and Settings\Default User\”目录中,否则将将创建在“\users\Public\” 目录中。
如果文件创建失败,则dropper会尝试使用自己的名称将其写入自己的目录中,并将字母“V”作为名称的最后一个字符,以方便区分。
文件创建成功后,dropper会检查进程是否在Wow64下运行,并根据检查结果写入合适的有效载荷(32位或64位)。
最后,在执行终止之前,dropper会调用ShellExecuteW来执行刚刚编写的Ryuk勒索软件载荷。
二进制进程
在执行二进制进程时,Ryuk勒索软件先进行几秒钟的睡眠,然后检查它是否以参数执行。如果以参数执行,二进制进程就会被用作DeleteFileW删除文件的路径。基于恶意软件的dropper代码,此参数将是dropper本身的路径。接下来,Ryuk将在预定义的服务和进程名称列表上执行taskkill和和net stop命令,来终止40多个进程并停止180多个服务,而这些服务和进程主要属于杀毒软件、数据库、备份和文档编辑软件。
被终止的进程和服务的部分列表
持久性攻击和枚举进程
为了确保在重新启动后恶意软件能够继续执行,Ryuk使用了一种直接持久性攻击技术,并使用以下命令将自身写入Run注册表项:
‘reg add /C REG ADD “HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” /v “svchos” /t REG_SZ /d’
然后它将尝试调用SeDebugPrivilege权限,以便在后续操作中具有扩展的功能,并通过形成一系列结构来为后来的注入做准备。数组中的每个条目都表示系统中正在运行的进程,并包含进程的名称、PID和表示其所有者的帐户类型的编号(如下图所示)。在将上述进程列表放在一起后,Ryuk将进行一次遍历并尝试将代码注入每个遍历过的进程的地址空间,不过“explorer.exe”,“csrss.exe”,“lsaas.exe”或不是由NT授权运行的进程除外。
表示系统中正在运行的进程的数组条目
在下一篇文章中,我会接着介绍Ryuk和Hermes的其他技术相似之处(注入方法、加密方案),并对幕后团队的销赃行为进行分析,感兴趣的读者可以继续关注我。