高度躲避的攻击者利用SolarWinds供应链

2020-12-14 22:24:51

我们发现了一项全球入侵运动。我们正在跟踪该活动背后的行动者,即UNC2452。

FireEye发现了一个供应链攻击,该攻击将SolarWinds Orion商业软件更新木马化,以便分发我们称为SUNBURST的恶意软件。

攻击者的入侵后活动利用多种技术来逃避检测并掩盖其活动,但这些努力也为检测提供了一些机会。

FireEye正在发布签名以检测这种威胁因素并在野外进行供应链攻击。这些可以在我们的公共GitHub页面上找到。 FireEye产品和服务可以帮助客户检测并阻止这种攻击。

FireEye发现了一个广泛的战役,我们正在追踪它为UNC2452。这场运动的幕后参与者获得了世界各地众多公共和私人组织的参与。他们通过对SolarWind的Orion IT监视和管理软件进行了木马化更新来访问受害者。这项运动可能最早在2020年春季开始,目前正在进行中。在此供应链妥协后的妥协后活动包括横向移动和数据盗窃。该活动是一名高技能演员的工作,并且在进行操作时具有很高的操作安全性。

SolarWinds.Orion.Core.BusinessLayer.dll是Orion软件框架的SolarWinds数字签名组件,其中包含一个后门,该后门通过HTTP与第三方服务器进行通信。我们正在跟踪此SolarWinds Orion插件的木马版本,即SUNBURST。

经过长达两个星期的初始休眠期后,它会检索并执行称为“作业”的命令,这些命令包括传输文件,执行文件,对系统进行配置文件,重新引导计算机以及禁用系统服务的功能。该恶意软件伪装成Orion改进程序(OIP)协议的网络流量,并将侦察结果存储在合法的插件配置文件中,从而使其能够与合法的SolarWinds活动融合。后门使用多个混淆的阻止列表来识别作为进程,服务和驱动程序运行的取证和防病毒工具。

从2020年3月至2020年5月,对多个木马更新进行了数字签名,并发布到SolarWinds更新网站,其中包括:

木马更新文件是标准的Windows Installer补丁文件,其中包括与更新相关联的压缩资源,其中包括木马SolarWinds.Orion.Core.BusinessLayer.dll组件。安装更新后,恶意DLL将由合法的SolarWinds可执行文件SolarWind.BusinessLayerHost.exe或SolarWindws.BusinessLayerHostx64.exe加载(取决于系统配置)。在长达两周的休眠期后,该恶意软件将尝试解析avsvmcloud [。] com的子域。 DNS响应将返回指向命令和控制(C2)域的CNAME记录。到恶意域的C2流量旨在模拟正常的SolarWinds API通信。已知的恶意基础结构列表可在FireEye的GitHub页面上找到。

FireEye已在全球多个实体中检测到此活动。受害者包括北美,欧洲,亚洲和中东的政府,咨询,技术,电信和采掘业实体。我们预计在其他国家和地区也将有更多的受害者。 FireEye已通知所有已知受影响的实体。

我们目前正在跟踪软件供应链危害和相关的UNC2452入侵后活动。获得初步访问权限后,该小组在侧向移动时会使用各种技术来掩饰其操作。该参与者更喜欢保持较小的恶意软件覆盖范围,而不是使用合法的凭据和远程访问来访问受害者的环境。本节将详细介绍一些值得注意的技术,并概述潜在的检测机会。

已恢复了多个SUNBURST样本,可提供不同的有效载荷。在至少一个例子中,攻击者部署了一个以前看不见的纯内存删除程序,我们将其称为TEARDROP来部署Cobalt Strike BEACON。

TEARDROP是作为服务运行的仅内存删除程序,它产生一个线程并从文件“ gracious_truth.jpg”读取,该文件可能具有伪造的JPG标头。接下来,它检查是否存在HKU \ SOFTWARE \ Microsoft \ CTF,使用自定义滚动XOR算法解码嵌入式有效负载,并使用类似于PE的自定义文件格式将嵌入式有效负载手动加载到内存中。 TEARDROP的代码与任何以前看到的恶意软件都没有重叠。我们认为,这是用来执行定制的Cobalt Strike BEACON。

缓解措施:FireEye提供了两个Yara规则来检测GitHub上可用的TEARDROP。防御者应从FireEye HX查找以下警报:MalwareGuard和WindowsDefender:

进程“ \ Device \ HarddiskVolume2 \ Windows \ System32 \ svchost.exe”(PID XXXXX)将被阻止加载非Microsoft签名的二进制文件“ \ Windows \ SysWOW64 \ NetSetupSvc.dll”

角色在其命令和控制基础结构上设置主机名,以匹配在受害者环境中找到的合法主机名。这使对手可以融入环境中,避免怀疑并逃避检测。

攻击者基础结构会在RDP SSL证书中泄漏其已配置的主机名,这可以在Internet范围内的扫描数据中识别出来。这为防御者提供了一个检测机会-查询整个Internet的扫描数据源中组织的主机名可以发现可能伪装成组织的恶意IP地址。 (注意:“ IP扫描历史记录”通常显示IP在默认(WIN- *)主机名和受害者主机名之间的切换。)将Internet扫描数据中标识的IP列表与远程访问日志进行交叉引用可能会在环境中识别该参与者的证据。每个IP地址可能只有一个帐户。

攻击者对IP地址的选择也进行了优化,以逃避检测。攻击者主要利用虚拟专用服务器使用与受害者来自同一国家的IP地址。

这也提供了一些检测机会,因为如果合法用户和攻击者使用来自不同IP地址的受损帐户,则用于远程访问的IP地址地理定位可能显示出不可能的传输速度。攻击者每个VPS提供商都使用了多个IP地址,因此,一旦识别出来自异常ASN的恶意登录,查看该ASN的所有登录可以帮助检测其他恶意活动。这可以与用于合法远程访问的ASN的基线确定和规范化一起完成,以帮助识别可疑活动。

一旦攻击者使用受损的凭据获得对网络的访问权限,他们就会使用多个不同的凭据进行横向移动。用于横向移动的凭据始终与用于远程访问的凭据不同。

企业可以使用HX的LogonTracker模块绘制所有登录活动的图形,并分析显示源系统和帐户之间一对多关系的系统。这将发现对具有多个帐户的多个系统进行身份验证的任何单个系统,这在正常业务运营期间相对罕见。

攻击者使用临时文件替换技术来远程执行实用程序:他们用实用程序替换了合法实用程序,执行了有效负载,然后还原了合法原始文件。他们通过更新现有合法任务以执行其工具,然后将计划任务返回其原始配置,来类似地操纵计划任务。他们例行地删除了他们的工具,包括一旦实现合法的远程访问就删除了后门。

防御者可以检查SMB会话的日志,以显示对合法目录的访问,并在很短的时间内遵循delete-create-execute-delete-create模式。此外,防御者可以使用频率分析来识别任务的异常修改,从而监视现有的计划任务以进行临时更新。还可以监视任务以监视执行新二进制文件或未知二进制文件的合法Windows任务。

此活动的入侵后活动在高度重视运营安全性的情况下进行,在许多情况下,每次入侵都利用专用的基础架构。这是FireEye在网络攻击中观察到的最佳操作安全性,重点在于逃避和利用固有信任。但是,可以通过持久防御来检测到它。

SolarWinds.Orion.Core.BusinessLayer.dll(b91ce2fa41029f6955bff20079468448)是Orion软件框架中由SolarWinds签名的插件组件,其中包含经过混淆的后门,该后门通过HTTP与第三方服务器进行通信。经过长达两周的初始休眠期后,它会检索并执行称为“作业”的命令,这些命令包括传输和执行文件,对系统进行配置文件以及禁用系统服务的功能。后门的行为和网络协议与合法的SolarWinds活动融为一体,例如伪装成Orion改进程序(OIP)协议并将侦察结果存储在插件配置文件中。后门程序使用多个阻止列表,以通过进程,服务和驱动程序识别取证和防病毒工具。

通过使用伪造的变量名并绑定到合法组件中,代码隐藏在纯站点中

授权的系统管理员可以通过SolarWinds网站分发的软件包获取并安装SolarWinds Orion更新。更新包CORE-2019.4.5220.20574-SolarWinds-Core-v2019.4.5220-Hotfix5.msp(02af7cec58b9a5da1c542b5a32151ba1)包含此报告中描述的SolarWinds.Orion.Core.BusinessLayer.dll。安装后,Orion软件框架执行.NET程序SolarWinds.BusinessLayerHost.exe来加载包括SolarWinds.Orion.Core.BusinessLayer.dll的插件。该插件包含许多在Orion框架内实现功能的合法名称空间,类和例程。清晰可见的类SolarWinds.Orion.Core.BusinessLayer.OrionImprovementBusinessLayer实现了基于HTTP的后门。逻辑上不相关的例程SolarWinds.Orion.Core.BusinessLayer.BackgroundInventory.InventoryManager.RefreshInternal中的代码在加载库存管理器插件时调用后门代码。

SolarWinds.Orion.Core.BusinessLayer.dll由SolarWinds签名,使用序列号为0f:e9:73:75:20:22:a6:06:ad:f2:a3:6e:34:5d:c0的证书: ed。该文件于2020年3月24日签署。

Warning: Can only detect less than 5000 characters

JSON有效负载适用于所有HTTP POST和PUT请求,并且包含键“ userId”,“ sessionId”和“ steps”。 “步骤”字段包含具有以下键的对象列表:“时间戳”,“索引”,“事件类型”,“事件名称”,“持续时间”,“成功”和“消息”。 JSON密钥“ EventType”被硬编码为值“ Orion”,而“ EventName”被硬编码为“ EventManager”。将发送到服务器的恶意软件响应消息进行DEFLATE压缩和单字节XOR编码,然后在“步骤”数组的“消息”字段之间进行拆分。每个“消息”值均经过Base64编码。并非“步骤”数组中的所有对象都构成了恶意软件消息–“时间戳”字段中的整数必须设置为0x2位,以指示恶意软件消息中使用了“消息”字段的内容。在“时间戳记”字段中清除了0x2位的步骤对象包含随机数据,并且在组合恶意软件响应时将被丢弃。

在观察到的流量中,这些HTTP响应主体试图看起来像与.NET程序集相关的良性XML,但是命令数据实际上分布在存在的许多GUID和HEX字符串中。通过使用以下正则表达式搜索十六进制字符串来从HTTP响应主体中提取命令:" \ {[0-9a-f-] {36} \}" |" [0-9a -f] {32}" |" [0-9a-f] {16}"。命令数据分布在多个字符串中,这些字符串伪装成GUID和HEX字符串。响应中的所有匹配子字符串都将针对非HEX字符进行过滤,合并在一起并进行HEX解码。第一个DWORD值显示消息的实际大小,紧随其后的是消息,其后是可选的其他垃圾字节。使用消息的第一个字节对提取的消息进行单字节XOR解码,然后对其进行DEFLATE解压缩。第一个字符是ASCII整数,它映射到JobEngine枚举,并带有由空格字符分隔的可选附加命令参数。

然后根据命令值将命令分派到JobExecutionEngine,如下所述。

设置主事件循环执行之间的延迟时间。延迟以秒为单位,并且在[.9 *< delay&gt ;, 1.1 *< delay>]之间随机变化。如果延迟< 300,它将在下一次执行循环时加倍,这意味着它应稳定在[5,10]分钟左右的时间间隔内。还有第二个无关的延迟例程,该例程会延迟[16hrs,83hrs]之间的随机间隔

分析本地系统,包括主机名,用户名,操作系统版本,MAC地址,IP地址,DHCP配置和域信息。

对指定的URL执行HTTP请求,解析结果并将组件与未知的哈希值进行比较。格式化报告并发送到C2服务器。

返回流程清单。如果未提供任何参数,则仅返回PID和进程名称。如果提供了参数,它还将返回流程所有者的父PID,用户名和域。

给定文件路径和Base64编码字符串,将Base64解码字符串的内容写入给定文件路径。使用追加模式写入。写入后延迟[1s,2s]。

在给定路径上计算文件的MD5,并以十六进制字符串形式返回结果。如果提供了参数,则为文件的预期MD5哈希值,如果计算出的MD5不同,则返回错误。

为了使社区能够检测到此供应链后门,我们将发布指标和检测结果,以帮助组织识别此后门和该威胁因素。签名是Yara,IOC和Snort格式的混合。

在此处找到的FireEye GitHub存储库中提供了检测和签名的列表。我们将发布检测,并将在我们开发新的或改进现有检测的基础上,使用重叠的检测主机和基于网络的指标来更新公共存储库。我们在此后门中发现了多个哈希,我们将发布这些哈希的更新。

SolarWinds建议所有客户立即升级到Orion Platform版本2020.2.1 HF 1,该版本目前可通过SolarWinds客户门户获得。此外,SolarWinds在此还发布了其他缓解和强化说明。

......