事件简述
SolarWinds是一家国际IT管理软件供应商,其Orion软件更新服务器上存在一个被感染的更新程序,这导致美国多家企业及政府单位网络受到感染,根据软件装机量来看,目前该事件对国内影响较小。
此次供应链攻击事件引发的关联事件是12月8日Fireeye发布被黑客攻击公告,可能泄露了一系列用于评估的网络安全测试工具。12月13日,Fireeye发布公告,证实入侵事件是因为SolarWinds公司软件更新包中存在后门。与该后门相关的事件被Fireeye称为UNC2452,目前并未指出其与已知APT组织的关联。
事件分析及防护
攻击者渗透进入SolarWinds网络环境的方法还没有定论,但结合以往多次的供应链攻击事件推断,攻击者可能已经获取了SolarWinds内网高级权限,创建了高权限账户,维持了多个入口点。通过在SolarWinds的产品中植入后门代码,攻击者可以跟随产品更新进入到SolarWinds的大部分客户网络环境中。同时,由于SolarWinds的令牌已经被用户所信任,攻击者可以伪造SolarWinds令牌,欺骗并绕过防护,在目标网络环境中建立高权限账户,等待时机,完成攻击目标。
由于攻击者获取的是正规厂商的证书并利用其对自身进行签名,这使得所有信任该证书的机构都存在被入侵的风险。特别是在云服务中,攻击者可能通过此伪造的令牌绕过并登录其他公司的环境,进而完成更大范围的入侵活动。
因此我们认为在目前环境下,仍然需要加强账户验证、证书、令牌验证,校验访问源,这也是零信任的基础思想。对于使用SolarWinds产品的客户来说,应及时排查系统中异常的资源访问记录,确定访问源,排查是否已完全信任SolarWinds证书。如已部署边界防护设备,应及时联动威胁情报产品,快速获取IOC拦截潜在的攻击。
此次事件也将引导其他攻击者或威胁组织开始重视并利用正规厂商证书在云服务中进行探查和攻击,云服务厂商也应对此类攻击进行响应和处理。
后门分析
SolarWinds.Orion.Core.BusinessLayer.dll是Orion软件框架的SolarWinds数字签名组件,其中包含一个后门,该后门通过HTTP与第三方服务器进行通信。该文件从SolarWinds提供的更新包中提取得到。
该后门通过一系列时间校验来判断是否开始执行,并且通过校验hash值来保证自身执行环境是真实的目标环境。
首先是当前进程名称的hash值需要等于17291806236368054941,其次是获取文件修改时间,如果文件修改时间在当前时间的12到14天前时,该后门才会继续检查其默认配置项,通过读取config文件中的字段来判断是否可以执行后门的功能。
在完成一系列检查后,将通过DGA算法生成控制域名,该生成算法没有固定的生成结果,其生成方法如下:
- 获取DNS解析时间,用于延迟生成域名的时间,根据DNS解析返回状态不同,延时时间在1-3分钟、30-120分钟、420-540分钟不等;
- 使用UserID和预置的子域随机生成字串,并从中截取固定长度作为DGA域;
在控制域名解析请求返回CNAME域时,且该域可用,则继续解析获取真实的控制IP地址,当控制域名解析出真正的IP地址后,该恶意程序会主动连接到控制服务器。生成的控制域名子域举例如下:
- .appsync-api.eu-west-1.avsvmcloud .com
- .appsync-api.us-west-2.avsvmcloud .com
- .appsync-api.us-east-1.avsvmcloud . com
- .appsync-api.us-east-2.avsvmcloud . com
当成功连接到控制服务器后,控制服务器提供了功能全面的控制命令完成攻击。
指令详情如下:
指令 | 枚举序号 | 内容 |
Idle | 0 | 无操作 |
Exit | 1 | 终止当前线程 |
SetTime | 2 | 设置主事件循环执行之间的延迟时间 |
CollectSystemDescription | 3 | 搜集主机名,用户名,操作系统版本,MAC地址,IP地址,DHCP配置和域信息 |
UploadSystemDescription | 4 | 上传信息 |
RunTask | 5 | 使用给定的文件路径和参数启动新进程 |
GetProcessByDescription | 6 | 无参数情况下仅返回当前进程PID和进程名称,如果提供了参数,额外返回当前进程的父PID,用户名和域 |
KillTask | 7 | 终止指定进程 |
GetFileSystemEntries | 8 | 给定路径和可选的匹配模式,将递归列出文件和目录 |
Writefile | 9 | 将base64编码后的内容写入指定文件 |
FileExists | 10 | 测试指定的文件路径是否存在 |
DeleteFile | 11 | 删除指定的文件路径 |
GetFileHash | 12 | 计算给定文件的MD5,如果计算出的MD5不同,则返回错误 |
ReadRegistryValue | 13 | 读取注册表值 |
SetRegistryValue | 14 | 设置注册表值 |
DeleteRegistryValue | 15 | 删除注册表值 |
GetRegistrySubKeyAndValueNames | 16 | 返回指定注册表路径下的子项和值名称的列表 |
Reboot | 17 | 重启系统 |
以上是该后门的所有功能列举,攻击者通过指令可以完成对目标机器的完全操控,任意启动进程,执行下发的文件,快速在内网中构建出攻击阵地,并向内渗透。同时该后门支持对文件hash进行校验,避免了误操作或者上传无效文件。设置注册表项则是为了提供持久驻留功能,保证系统重启后仍能正常执行后门功能。该后门支持获取进程信息,有利于监控当前计算机是否被人使用,且是否具有价值,同时也可以作为检测依据,避免自动化分析系统引导出恶意行为及流量,有利于隐藏自身。后门提供了等待时间调整的接口,在被监测到异常行为后攻击者可以选择长时间静默,躲避监测,降低了暴露后丢失据点的可能性。
可以看到攻击者精心构造了整个后门,功能非常完善,且触发条件十分苛刻,有效的避免了被沙箱等自动化分析工具检出。
IoC
所有的IoC及特征均由Fireeye披露在Github上:
https://github.com/fireeye/sunburst_countermeasures
域名 |
6a57jk2ba1d9keg15cbg.appsync-api.eu-west-1.avsvmcloud[.]com |
7sbvaemscs0mc925tb99.appsync-api.us-west-2.avsvmcloud[.]com |
gq1h856599gqh538acqn.appsync-api.us-west-2.avsvmcloud[.]com |
ihvpgv9psvq02ffo77et.appsync-api.us-east-2.avsvmcloud[.]com |
k5kcubuassl3alrf7gm3.appsync-api.eu-west-1.avsvmcloud[.]com |
mhdosoksaccf9sni9icp.appsync-api.eu-west-1.avsvmcloud[.]com |
域名 | IP |
deftsecurity[.]com | 13.59.205.66 |
freescanonline[.]com | 54.193.127.66 |
thedoccloud[.]com | 54.215.192.52 |
websitetheme[.]com | 34.203.203.23 |
highdatabase[.]com | 139.99.115.204 |
incomeupdate[.]com | 5.252.177.25 |
databasegalore[.]com | 5.252.177.21 |
panhardware[.]com | 204.188.205.176 |
zupertech[.]com | 51.89.125.18 |
zupertech[.]com | 167.114.213.199 |
文件hash:
MD5 | 文件名称 |
02af7cec58b9a5da1c542b5a32151ba1 | CORE-2019.4.5220.20574-SolarWinds-Core-v2019.4.5220-Hotfix5.msp |
08e35543d6110ed11fdf558bb093d401 | Solarwinds Worldwide, LLC |
2c4a910a1299cdae2a4e55988a2f102e | SolarWinds.Orion.Core.BusinessLayer.dll |
846e27a652a5e1bfbd0ddd38a16dc865 | SolarWinds.Orion.Core.BusinessLayer.dll |
b91ce2fa41029f6955bff20079468448 | SolarWinds.Orion.Core.BusinessLayer.dll |
4f2eb62fa529c0283b28d05ddd311fae | OrionImprovementBusinessLayer.2.cs |
56ceb6d0011d87b6e4d7023d7ef85676 | app_web_logoimagehandler.ashx.b6031896.dll |