庖丁解牛:SolarWinds供应链攻击事件还原及技术分析
2021-04-13 18:47:20 Author: www.4hou.com(查看原文) 阅读量:201 收藏

2020年12月,全球多家网络安全公司发布报告,声称SolarWinds公司旗下Orion平台遭到黑客入侵。该次入侵一是影响范围广,33,000余名Orion客户有一多半都安装了带后门的Orion软件,其中不乏美国重要政府部门及各知名企业;二是隐蔽性持久性好,攻击者使用ATT&CK上的持久术等技术使得攻击“隐身”,更不易被发现;三是引入了强大的“Red team”平台,此渗透测试平台在以往的攻击中也有集成应用,极具代表性。此次攻击被各大媒体称为近十年来最复杂、最持久的攻击之一。丁牛网安实验室高度关注相关情况和技术方法,归纳总结Fireeye、Symantec等公司相关报告并对所涉及的具备代表性的渗透测试平台进行实验,具体整理分析如下:

一、背景情况

SolarWinds Inc.是一家美国软件开发公司,拥有庞大的客户群体,囊括几乎所有美国500强企业和美国国务院、商务部、财政部等重要政府机构。Orion是SolarWinds旗下的平台型软件,主要用于帮助企业管理网络、系统和信息技术基础设施,是一个强大的、可扩展的基础架构监视和管理平台。

2020年12月,知名网络安全公司Fireeye发布报告称Orion平台遭到黑客组织入侵,并详细分析了该次攻击的技术方法和波及范围。随后,赛门铁克等安全公司跟进报告,分析了其各个攻击阶段的技术特点。

该次攻击一个显著特点是,在第二阶段使用的恶意软件是为了引出第三阶段定制的Cobalt Strike工具。Cobalt Strike是一套功能齐全的渗透测试工具,由Raphael Mudge于2012年创建,是第一批公开的“Red Team”C&C框架之一,于2020年被HelpSystems正式收购,成为许多美国政府,大型企业和咨询组织的首选“Red Team”平台。

二、攻击阶段

根据目前权威报告情况,此次攻击可分为三个阶段:

image.png

图1 攻击阶段

第一阶段

Sunspot:攻击者使用Sunspot将Sunburst后门插入到SolarWinds Orion IT管理平台的软件版本中,用Sunburst代码替换源代码;

Sunburst:一旦安装了Sunburst后门,Sunspot就会持续监视Orion build操作并劫持它,以通过Sunburst后门将其他恶意代码插入Orion库中。这样,攻击者就将恶意代码插入了Orion版本更新程序包中,分发给成千上万的客户。

第二阶段

TEARDROP&RAINDROP的角色主要为Cobalt Strike的loader。下表是对两个恶意软件的对比情况:

表1 TEARDROPRAINDROP对比

image.png

截止2021年1月18日,赛门铁克发现了4个RAINDROP样本。前三个与TEARDROP类似,Cobalt Strike被配置为使用HTTPS作为通信协议;第四个使用SMB作为通信协议。

第三阶段

攻击者使用Cobalt Strike进行攻击,每个implant在每台机器上都是唯一的。

三、Cobalt Stike工具分析

Cobalt Strike详细功能如图2所示。

image.png

图2 Cobalt Strike Features

本次攻击中,使用到了该工具的Covert Communication功能模块。Malleable C2 profile是一个简单的程序,指定如何传输数据并将数据嵌入通信中,后续对应提取恢复数据方式。Cobalt Strike Linux版包括一个c2lint程序,检查通信配置文件方法。可先检查配置文件,然后将其加载到Cobalt Strike中。

1.HTTP/HTTPS Beacon

一个HTTP用例,客户端可以发送Base64编码的请求,服务器响应HTTP GET,内容为二进制blob编码的任务,如图3所示。在后续通信过程中,客户端发送任务执行信息,服务器做任意回复,此时,客户端并不使用服务器回复的信息。同时,也提供了http-post、http-strager等方式来对信息进行处理。

image.png

图3 A Beacon HTTP Transaction Walk-through

Self-signed Certificates with SSL Beacon

Malleable C2 profiles可以为Beacon C2服务器self-signed SSL certificate指定参数,如通用名称、组织名称等信息。

image.png

Valid SSL Certificates with SSL Beacon

可以为Beacon选择一个有效的 SSL 证书,使用Malleable C2 profile为密钥库指定一个keystore file和一个password。密钥库包含签名私钥、根证书、中间证书及域证书(SSL证书供应商提供)。Java Keystore file与Malleable C2 profile在一个文件夹中。

image.png

2.SMB Beacon

SMB Beacon使用named pipe与父Beacon进行交流,Windows将named pipe封装在SMB协议中,因此叫SMB Beacon。

特点如下:这种对等通信对同一台主机上的 Beacon 和跨网络的 Beacon 都有效;需要使用link [host] [pipe]进行SMB Beacon的连接;具有SMB Beacon的主机必须接受445端口的连接;只能连接由同一个Cobalt Strike管理的Beacon;断开连接使用unlink [ip address] [session PID](要取消链接的Beacon的进程ID);断开链接不会消失,会进入等待状态。

3.DNS Beacons

DNS Beacons是Cobalt Strike一项很棒的功能, DNS 请求发送到由攻击者搭建的MANS(Malicious Authoritative Name Server)作为权威 DNS 服务器进行解析,DNS 应答告诉Beacon 休眠/连接到服务器下载任务/如何从服务器下载任务。只有在有任务时,DNS Beacon才会check in。使用信标的mode命令更改当前信标的数据通道。

四、Cobalt Strike实验复现

1.HTTP Beacon实验

服务器端运行“sudo ./teamserver ip 密码”,在主控端创建一个HTTP listen(选择其中http选项),此时,服务器端显示增加了一个Listener,如图4所示。

image.png

图4 C2服务器端监听状态

在主控端选择Attack,创建一个Windows Executable,如图5所示。

image.png

图5 Windows上创建的可执行载荷

将此Executable放到目标主机上运行,即可在主控端界面上显示上线,如图6所示。

image.png

图6 受害主机上线

与此同时,在受害(目标)主机上运行Wireshark,抓到了其发出的GET流量(图7上)。同时也发现了鲁大师之类的软件也在获取用户信息,如图7下。

image.png

image.png

图7 受害主机流量

2.DNS Beacon实验

与上述实验类似,在服务器上运行服务端程序,在主控端创建一个DNS Listen。同样,在主控端生成一个用于攻击的载荷,此次,生成一个powershell,如图8所示。

image.png

图8 Powershell Delivery

切换到目标主机,在目标主机上运行该powershell。在主控端上即可显示上线,如图9所示。既然受害主机已经被控制,运行getuid命令,即可传回命令的执行结果。

image.png

图9 受害主机受控并回传信息

同时,也可以获取指定目录下的文件。使用ls命令,可以获得受害设备上的文件列表,如图10所示。选择其中一个文件,例如“give.bat”,对其进行回传。

image.png

图10 受害设备文件列表

在主控端输入“download 文件名”命令让受害设备回传文件,如图11所示,后续显示complete即回传完成。

image.png

图11 命令受害设备回传文件

此时,查看服务器download列表,可以发现刚刚受害主机回传的文件,如图12。内容与图13受害设备上该文件情况一致,验证确实回传成功。

image.png

图12 服务器接收到回传文件

image.png

图13 受害设备上该文件情况

与此同时,在受害设备上抓取流量,查看流量情况。可以发现在整个过程中受害设备发送的流量情况,如图14所示。

image.png

图14 受害设备发出的流量

通过实验抓取流量发现,使用Cobalt Strike 3开源版本生成Windows exe在受害设备上运行后,可以在主控端报活,但并不发出DNS流量;生成powershell在受害设备上运行后,运行结果回传会有DNS流量产生。通过查看官网发现,Cobalt4.0版本才是DNS-Only,在版本3中可能还有一部分使用HTTP通信。同时,在实验过程中,输入命令时可能需要几次才能成功,文件、命令传输较慢,在另一方面也证明,其具备良好的隐蔽性。

五、攻击隐身术

1.Teardrop—Transition from Solorigate (Sunburst) to Cobalt Strike

攻击者显然认为强大的SolarWinds后门价值不菲,为了防止被发现,他们尽可能将Cobalt Strike 的执行与SolarWinds进程分开。如图15所示,大多数通信都会采用1步骤,进行DNS通信,但并不活跃。随后进行2步骤,产生以现有文件/服务命名的VBScript及Teardrop,此处的Teardrop的用处是作为一个Cobalt Strike loader存在。步骤3,使SolarWinds进程为进程dllhost.exe创建映像文件执行选项(IFEO)注册表值,通过此步骤,来实现“隐身”目的,这是用于持久性的MITRE ATT&CK中的技术。创建注册表值后,攻击者只需等待偶尔执行dllhost.exe(这可能在系统上自然发生)。此执行将触发wscript.exe的进程启动,该进程的wscript.exe配置为VBScript文件。VBScript依次运行rundll32.exe,使用干净的父/子进程树(与SolarWinds进程完全断开连接)激活Cobalt Strike。

image.png

图15 Transition from Sunburst to Cobalt Strike

2.Raindrop—使用7-Zip隐藏Raindrop

7-Zip是目前最普及的开源压缩程序,主要用在Microsoft Windows操作系统,Linux与FreeBSD下面有移植版本p7zip可以使用。主要的竞争对手是WinZip以及WinRAR。为了隐藏恶意功能,攻击者使用7-ZIP源代码的修改版将Raindrop编译为DLL文件(7-ZIP.dll)。7-ZIP仅用作掩护,没有以任何方式使用。

参考文献:

1.Highly Evasive Attacker Leverages SolarWinds Supply Chain to Compromise Multiple Global Victims With SUNBURST Backdoor,https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html,2020.

2.Raindrop: New Malware Discovered in SolarWinds Investigation,https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/solarwinds-raindrop-malware,2021.

3.Deep dive into the Solorigate second-stage activation: From SUNBURST to TEARDROP and Raindrop,https://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/,2021.

4.Cobalt Strike,https://www.cobaltstrike.com/,2021.

5.SolarWinds hackers used 7-Zip code to hide Raindrop Cobalt Strike loader,https://www.bleepingcomputer.com/news/security/solarwinds-hackers-used-7-zip-code-to-hide-raindrop-cobalt-strike-loader/,2021.

6.SolarWinds: The more we learn, the worse it looks,https://www.zdnet.com/article/solarwinds-the-more-we-learn-the-worse-it-looks/,2020.

如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/MNg1
如有侵权请联系:admin#unsafe.sh