4周勒索逾32.5万美元后,SamSam 仍在继续演进

引言

思科 Talos 团队一直和思科 IR 服务部门一起研究我们认为是勒索软件 SamSam 的一个新变体。经观测,SamSam 已出现在多个行业中如政府、医疗和工控系统。这些攻击看似并不具备高度针对性,其本质似乎更倾向于投机性。

从 SamSam 的被害人学上来看,它的影响不仅存在于商业世界,还对人产生影响,尤其是当我们考虑到医疗行业时更是如此。虽说非紧急手术总是可以重新安排,但如果某些病患的就诊历史和之前接受的医治状况非常重要的话,那么SamSam 产生的而影响就更加严重。另外,很多重要的救生医疗设备如今都被高度计算机化,勒索软件能够影响这些设备的操作,导致医疗人员难以用这些设备进行诊断并为病患看病,从而导致出现潜在的威胁生命的状况。结果,需要实施紧急操作的设备可能会因为操作该设备的计算机的无法使用而无法使用。

目前,这些攻击的初始感染向量尚不明确,Talos 正在对此展开调查。SamSam 的历史表明,攻击者可能按照此前利用一台主机随后在目标环境中横向位移的操作方式来植入并运行 SamSam 勒索软件。此前,我们从2016年发生的 SamSam 攻击中发现易受攻击的 JBoss 主机遭攻击。尽管这个新变体的感染向量尚未得到证实,但有可能被攻陷的 RDP/VNC 服务器在为攻击者首次站稳脚跟的过程中发挥了作用。

SamSam 新变体和老旧版本之间所使用的机密机制并无差别。然而,这次攻击者添加了一些字符串混淆并改进了反分析技术,导致检测和分析更加困难。

新变体是通过解密并执行一个加密勒索软件 payload 的加载器部署的,而这个加载器/payload 模型是对 SamSam 所使用的反取证方法的改进。包含这个加载器机制的样本早在2017年10月就已出现。通过监控位于 1MddNhqRCJe825ywjdbjbAQpstWBpKHmFR 的钱包,我们发现SamSam 在这轮攻击中所使用的钱包由多名受感染受害者共享。我们还证实了这个钱包收到的第一笔勒索金的时间是在2017年12月25日,对于攻击者而言真是不错的节日礼物。这一点可通过观察此处比特币区块链上的第一笔钱包交易获悉。有可能攻击者还使用了其它比特币钱包,不过目前 Talos 并未发现其它钱包的迹象。

我们认为和此前的变体一样,这个新变体的部署是高度手动化的,也就是说攻击者可能手动执行了 SamSam。每个文件的对称密钥随机生成。Tor 洋葱服务和比特币钱包地址被硬编码到 payload,而公钥存储在扩展为 .keyxml 的一个外部文件中。

另外,分析代码后我们并未发现联系 Tor 服务地址的任何自动化机制,这说明通过关联 RSA 私钥的受害者肯定或者是通过手动完成的,或者是由另外一款攻击工具实现的。

多数勒索软件都试图说服受影响用户称他们有能力在收到款项后解密数据。SamSam 也不例外,甚至还显示了如上截图中的免责声明,表示,“我们不想损失我们的可靠性,我们是‘诚实的’。”

为此,攻击者免费解密两份文件并提供额外的免费密钥解密一个服务器。SamSam 再次展示了监控并在网络中横向位移的能力,指出如果他们认为服务器是不重要的基础设施则仅提供一个密钥。和 SamSam 之前的版本一致,他们也建议可通过网站联系攻击者。

 

使用加载器机制 “runner”

攻击者已更改了部署方法论,现在他们使用的加载器机制 “runner” 来执行 payload。执行时,这个加载器会在执行目录中查找后缀为 .stubbin 的文件,这个文件包含 SamSam 加密的 .NET Assembly payload。读取文件时,加载器会解密并执行这个密码是第一个参数的 payload,然后传递剩余参数。

这个加载器是一个没有混淆的非常简单的 .NET 组件。对比初始化向量 (IV) 和代码结构,它似乎源于 Codeproject.com 网站上贴的一个例子。

从如下图片中可看出,Rijndael 加密中使用的 IV 和两个实现(鉴于反编译实现的不同,分别用十六进制和十进制表示 “配置代码 (posted code)” 和 “逆向代码 (reversed code)”)中的 IV 一样。

从代码层尤其是从函数 “Decrypt” 中来看,显然 Codeproject 来源和最新的 SamSam runner 样本中的代码结构是一样的(配置代码中的注释已删除。)

 

Payload

SamSam 此前的版本通过AES 加密字符串对恶意软件代码进行了混淆。这个新变体也具有混淆函数、类名称和字符串,其中包括目标文本扩展的列表、“帮助”文件内容和环境变量,这次使用的 DES 加密带有固定的硬编码密钥和 IV。

攻击者再次采取措施阻止恶意软件样本本身的取证恢复,而不仅仅是依靠混淆运行恶意代码,这样我们得以逆向该样本。

如此前所述,解密这个 payload 的密码作为一个参数被传递给加载器,从而减少了获取 payload 进行分析的几率。

SamSam 此前的版本同样也通过启动一个等待1秒才能从硬盘中自我删除的线程,导致难以访问 payload。

新旧样本之间主要加密例程的对比表明,这个版本的 SamSam 很可能属于同样的恶意软件家族。

虽然此前的 SamSam 版本通过 API 调用 DriveInfo.GetDrives() 来获取可用驱动的列表,但这个新版本将驱动字母硬编码。检查驱动准备好后,它会开始从非黑名单上的文件夹路径搜索目标文件。

这个新变体和此前的一些版本具有同样的目标文件扩展列表。它在不开展加密的路径列表中增加了一些新条目,其中包括用户资料 “All Users”、”default” 和启动目录。

这种做法和多数试图维持受害者机器操作性的勒索软件一致。如果设备操作遭损坏导致系统无法启动,那么受害者无法付款,然而,如果机器能够运作,只是文件/文件夹的访问权限有限,那么受害者付款以恢复重要文件和文档的意愿就大多了。

和此前的 SamSam 变体一样,这个新变体在确保当前硬盘具有足够大的空间以便创建加密文档方面十分小心,从而避免发生损坏导致加密不可恢复情况的出现。

和多数勒索软件不同,SamSam 并没有删除 Volume Shadow Copies,而是创建了原始文件的加密版本,随后该版本通过常规的 Windows API 得以删除。尽管如此,由于代码块覆写的原因,可能能够从由操作系统保存的受影响文件夹版本中恢复原始文件。

利润

Talos 团队在识别 SamSam 攻击范围的过程中分析了攻击者在每次攻击中所使用的比特币地址。截止本文发稿前,攻击者已收到约30.4个比特币,折合325,217.07 美元。如此前所述,可能攻击者使用了多个比特币钱包,然而,Talos 团队并未发现除此处所列的地址之外的其它地址。

 

建议

鉴于目前尚不知晓具体的初始威胁向量,组织机构应该部署最佳实践以降低风险。Talos 团队已在此前的博客文章中列出多种抵御和勒索软件相关威胁的最佳实践。根据最佳实践的要求,SMB 或 RDP 等协议不应面向互联网。

 

IOCS

  • 多个SHA256

  • 比特币钱包

1MddNhqRCJe825ywjdbjbAQpstWBpKHmFR

  • Tor 洋葱服务

jcmi5n4c3mvgtyt5.onion

  • 参考

https://www.codeproject.com/kb/security/dotnetcrypto.aspx?msg=1790665

  • 检测

Snort 规则:45484-45486

端点的 AMP:确保启用 TETRA 引擎和 Command Line Capture ,客户端版本是 v6.05+

 

(完)