深入分析Solorigate恶意软件激活阶段:从SUNBURST到TEARDROP/Raindrop
2021-02-14 10:35:00 Author: www.4hou.com(查看原文) 阅读量:227 收藏

0x00 前言

自发现Solorigate恶意软件以来已经有一个多月的时间,我们仍在持续调查以发掘新的细节。事实证明,这是近十年以来最复杂和最持久的入侵攻击之一。我们对威胁数据的持续分析表明,Solorigate背后是非常熟练的攻击团伙,他们精心策划并组织了攻击,在保证持久性的同时仍然非常难以琢磨。这些攻击者似乎非常了解安全运营的相关知识,在执行恶意活动的同时尽可能少地留下线索。在这篇文章中,我们将分享针对该恶意活动的最新信息,让大家深入了解攻击过程。我们希望帮助防御者持续提高能力,发现攻击者最早期的活动痕迹并保护其网络免受威胁。

我们已经发布过对Solorigate后门恶意软件(Fireeye也将其称为SUNBURST)的深入分析,Solorigate后门恶意软件是SolarWinds产品的一部分,受感染的DLL已经在网络上部署,作为SolarWinds产品的一部分,允许攻击者获得对受影响设备的后门访问权限。我们还详细介绍了攻击者在受感染终端上使用的模拟键盘输入的技术,其第二阶段Payload非常强大,是一种定制化的Cobalt Strike Loader,被FireEye命名为TEARDROP,被Symantec命名为Raindrop的变种。

在复杂的Solorigate攻击链中,现在还缺少的一环是如何从Solorigate DLL后门转到Cobalt Strike Loader。我们的调查表明,攻击者尽全力确保将这两个组件尽可能地分开,以逃避检测。这篇文章重点关注这一过程,基于有限的线索展开了详细的分析。为了深入发掘这一过程,我们使用了Microsoft 365 Defender强大的跨域光学系统(Cross-Domain Optics),以一个完整全面的视角绘制出了整条攻击链。

我们还将分享针对攻击者在最初的侦查、数据收集和渗出的过程中所使用的其他技术的深入研究,这些研究成果可以进一步补充此前相关分析文章(例如FireEye和Volexity)中披露的TTP。

0x01 缺失的环节:从Solorigate后门到Cobalt Strike植入工具

根据SolarWinds在最近的文章中披露的攻击时间表,具有完整功能的Solorigate DLL后门在2020年2月底编译,并在3月下旬期间分发到系统。这篇文章还说,攻击者于2020年6月从SolarWinds的编译环境中删除了Solorigate后门代码。

考虑到上述时间表,以及Solorigate后门被设计为保持休眠至少两周以上的事实,我们推断攻击者花费了一个月左右的时间去选择受害者,并准备特制的Cobalt Strike植入工具和命令与控制(C2)基础架构。这也就意味着,真正的模拟键盘操作很可能在2020年5月就已经开始了。

而之所以攻击者在6月从SolarWinds二进制文件中删除了后门生成功能和被篡改的代码,可能是因为在那时他们已经得到了足够数量的有效目标,他们的目标已经从第一阶段(部署并激活后门,以便在指定的受害者网络上运行)转移到了第二阶段(继续使用Cobalt Strike植入工具模拟键盘操作以进行攻击)。

Solorigate攻击时间表:

1.png

但是,攻击者是如何从Solorigate后门(SUNBURST)转到Cobalt Strike Loader(TEARDROP/Raindrop)的呢?在此过程中触发了什么代码?防御者应该寻找哪些指标?

Solorigate攻击的第一阶段和第二阶段之间的过渡:

2.png

像Solorigate的幕后黑手这样成熟的攻击团伙,其目标是持续扩散和保持隐蔽,这样就能够最大限度地延长被发现的时间,收集到更多有价值的信息。对于组织而言,最重要的是能够查看整个环境中的取证数据,以了解攻击者在网络中跨越的距离,以及在网络中停留的时间,从而确认是否已经针对所发生的攻击作出了适当的补救和应对。最好的方式是使用扩展的检测与响应(XDR)解决方案,该解决方案可以帮助组织回放过去发生的事件,以寻找可能揭示网络上有攻击者存在的活动。如果不使用XDR解决方案(例如Microsoft 365 Defender),遭遇攻击的组织可能很难进行应急响应。

根据我们对Microsoft 365 Defender数据的分析,我们发现了一些线索,进一步证明了攻击者的高水平攻击过程,以及为了防止被发现所做出的努力。为了更好地说明这一点,下图展示了突破口维度的攻击链。

从Solorigate后门到Cobalt Strike的过渡:

3.png

我们花费了很长的时间来研究Microsoft Defender的遥测数据以及来自运行后门版本SolarWinds DLL计算机的数据。这些主机中的绝大多数都会与最初随机生成的DNS域名.avsvmcloud.com进行通信,但并不活跃(Step #1)。但是,在5月和6月,我们看到在一少部分案例中,最初的DNS网络通信是紧跟在与其他合法域名的443端口(HTTPS)进行通信的网络活动(Step #7)之后的。于是我们针对这几台主机进行了深入调查。

我们知道,Solarigate后门仅会根据某些特定的配置文件进行激活,并且一旦激活,执行的进程(通常是SolarWinds.BusinessLayerHost.exe)会在磁盘上创建两个文件(Step #2):

(1)一个VBScript文件,通常以现有的服务或文件夹来命名,以此混淆在计算机的合法活动之中;

(2)第二阶段DLL植入程序,即自定义的Cobalt Strike 加载程序,通常在每台计算机上进行单独地编译,并写入到%WinDir%中,与合法的子文件夹(例如C:\Windows)进行混淆。

此时,攻击者已经准备好激活Cobalt Strike植入工具。但是,攻击者显然认为一个强大的SolarWinds后门价值不菲,所以他们尽可能将Cobalt Strike Loader的运行与SolarWinds进程分开。他们希望,即使用户检测到了Cobalt Strike植入工具并清除,被篡改的SolarWinds二进制文件和供应链攻击活动也不会暴露。

攻击者通过让SolarWinds进程为进程dllhost.exe创建映像执行文件选项(IFEO)调试器注册表值(Step #3)来实现这一目标。这是一个用于持久化的MITRE ATT&CK已知技术,但在启动特定进程时也有可能被滥用,以触发恶意代码的执行。在创建注册表值之后,攻击者只需等待偶发的dllhost.exe执行,这个过程会在系统上自然发生。一旦执行,就会触发wscript.exe中的进程启动,该进程的wscript.exe被配置为运行在Step #4投放的VBScript文件。

VBScript依次运行rundll32.exe,随后使用一个干净的父子进程树(与SolarWinds进程完全无关)激活Cobalt Strike DLL(Step #5)。最后,VBScript删除先前创建的IFEO值,以清除执行的任何痕迹(Step #6),并删除与HTTP代理相关的下述注册表项:

HKEY_CURRENT_USER\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoDetect
HKEY_CURRENT_USER\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL

0x02 分析定制的Cobalt Strike Loader

在我们的调查中,我们发现了一些第二阶段的恶意软件,包括TEARDROP、Raindrop和Cobalt Strike Beacon的其他自定义加载程序。在横向移动阶段,自定义加载工具DLL大多会投放在现有Windows主目录中。以下是一些示例路径(在这篇文章末尾列出了其他路径):

· C:\Windows\ELAMBKUP\WdBoot.dll

· C:\Windows\Registration\crmlog.dll

· C:\Windows\SKB\LangModel.dll

· C:\Windows\AppPatch\AcWin.dll

· C:\Windows\PrintDialog\appxsig.dll

· C:\Windows\Microsoft.NET\Framework64\sbscmp30.dll

· C:\Windows\Panther\MainQueueOnline.dll

· C:\Windows\assembly\GAC_64\MSBuild\3.5.0.0__b03f5f7f11d50a3a\msbuild.dll

· C:\Windows\LiveKernelReports\KerRep.dll

这些文件的名称类似于合法的Windows文件和目录名称,再次证明了攻击者是如何试图融入环境并掩人耳目:

· C:\Windows\ELAMBKUP\WdBoot.sys(合法)

· C:\Windows\ELAMBKUP\WdBoot.dll(非法)

· C:\Windows\Registration\CRMLog(合法)

· C:\Windows\Registration\crmlog.dll(非法)

· C:\Windows\SKB\LanguageModels(合法)

· C:\Windows\SKB\LangModel.dll(非法)

· C:\Windows\AppPatch\AcRes.dll(合法)

· C:\Windows\AppPatch\AcWin.dll(非法)

· C:\Windows\PrintDialog\appxsignature.p7x(合法)

· C:\Windows\PrintDialog\appxsig.dll(非法)

· C:\Windows\Microsoft.NET\Framework64\sbscmp10.dll(合法)

· C:\Windows\Microsoft.NET\Framework64\sbscmp30.dll(非法)

· C:\Windows\Panther\MainQueueOnline0.que(合法)

· C:\Windows\Panther\MainQueueOnline.dll(非法)

· C:\Windows\assembly\GAC_64\MSBuild\3.5.0.0__b03f5f7f11d50a3a\MSBuild.exe(合法)

· C:\Windows\assembly\GAC_64\MSBuild\3.5.0.0__b03f5f7f11d50a3a\msbuild.dll(非法)

在对Solorigate进行调查期间观察到的TEARDROP、Raindrop和其他定制的Cobalt Strike Beacon Loader很可能都是使用定制的Artifact Kit模板生成的。每个自定义加载工具都可能加载Beacon反射加载工具,或者先初始加载工具,随后再加载Beacon反射加载工具。反射式DLL加载是一种无需使用Windows Loader即可将DLL加载到进程内存的技术。

在Solorigate攻击中观察到的Cobalt Strike Beacon Loader的两种结构不同的变种:

4.png

在接下来的章节中,我们将讨论在Solorigate的分析过程中发现的Cobalt Strike Beacon变种。

0x03 Cobalt Strike Beacon变种分析

3.1 变种1:TEARDROP

迄今为止,我们已经分析了两个版本的第二阶段定制化Cobalt Strike Beacon Loader,被称为TEARDROP(Microsoft检测为Trojan:Win64/Solorigate.SA!dha):

(1)一个包含ServiceMain函数(通常命名为NetSetupServiceMain)的服务DLL,由exe加载;

(2)一个标准非服务DLL,由exe加载。

不论加载方式如何,这两个版本均包含恶意代码触发器的导出函数。恶意代码在导出函数创建的新线程中执行。执行后,恶意代码会尝试打开扩展名为.jpg的文件(例如:festive_computer.jpg、upbeat_anxiety.jpg、gracious_truth.jpg和confident_promotion.jpg)。我们需要进一步分析,以确定每个样本引用的.jpg文件的目的和作用。该代码还会检查Windows注册表项SOFTWARE\Microsoft\CTF是否存在,一旦发现其存在或者可访问就会终止。接下来,代码继续进行解码,然后执行嵌入式自定义初始加载工具。

变种1自定义加载工具的结构:

5.png

这个自定义加载工具的变种所使用的初始加载工具通常是使用Cobalt Strike Artifact Kit模板生成的(例如bypass-pipe.c)。

从Artifact Kit的bypass-pipe.c模板编译的初始加载工具中反编译的函数:

6.png

我们分析其真实形态,发现定制化Artifact Kit生成的初始加载工具是一个DLL,已经像Shellcode那样进行了转换和加载。初始加载工具负责加载下一阶段的组件,即Beacon反射式加载工具/DLL(Cobalt Strike Beacon被编译为反射式DLL)。反射式加载工具最终在内存中初始化并执行Beacon。

3.2 变种2:其他自定义加载工具

在我们的调查中,我们发现了一些额外的针对Cobalt Strike Beacon的定制化加载工具,这些加载工具似乎是使用定制化Cobalt Strike Artifact Kit模板生成的。与TEARDROP(通过导出函数触发恶意代码)不同,这些变种中的恶意代码是直接从DLL的入口点触发的,DLL的入口点会创建一个新的线程以执行恶意代码。

这些变种2自定义Loader中还包含攻击者引入的导出(使用不同名称),其作用仅仅是每分钟调用Sleep()函数。

变种2加载工具的定制化导出函数示例:

7.png

此外,与TEARDROP不同,这些变种不包含自定义的预加载工具,这意味着加载工具DLL会进行模糊处理,并随后在内存中执行Cobalt Strike反射式DLL。

变种2自定义加载工具的结构:

8.png

这些自定义加载工具可以进一步分为两种类型:

(1)类型A:一组较大的DLL,可以从DLL的DATA段解码并加载Cobalt Strike 反射式加载工具(Microsoft检测为Trojan:Win64/Solorigate.SC!dha);

(2)类型B:一组较小的DLL,从DLL的CODE段解混淆并加载反射式加载工具(Symantec命名为Raindrop,Microsoft检测为Trojan:Win64/Solorigate.SB!dha)。

定制化加载工具的两个子类型:

9.png

类型A和类型B加载工具的最终目标是解混淆,并在内存中加载Cobalt Strike反射式加载工具。类型A使用简单的rolling XOR方法进行解码,而类型B加载工具(Raindrop)则使用了AES-256加密算法(每个样本都使用唯一密钥)、LZMA压缩和单字节XOR解码例程对内存中嵌入的反射式加载工具进行混淆处理。在去混淆结束后,这两个变种都会将反射式加载工具加载到内存中,然后在内存中执行Cobalt Strike Beacon。

3.3 分析Solorigate Cobalt Strike加载工具

通过分析自定义加载工具的元数据和时间线,并对每个Beacon Payload中提取的配置数据进行分析,我们得到以下发现:

(1)自定义加载工具DLL在UTC 8:00 AM至5:00 PM之间被引入受感染的系统。在一次入侵中,BusinessLayerHost.exe在10:00 AM左右将第二阶段自定义加载工具(TEARDROP)引入环境。

(2)磁盘上的自定义加载工具DLL的编译时间戳为2020年7月至2020年10月,而嵌入的反射式DLL的编译时间戳为2016年3月至2017年11月。之所以看到2016-2017年的编译时间戳,可能是由于攻击者使用了包含编译时间戳值(compile_time)的自定义Malleable C2配置文件。最开始我们觉得攻击者似乎没有为自定义加载工具DLL的编译时间打上时间戳,但通过对受感染系统的调查分析biasing,在某些案例中,自定义加载工具DLL引入系统的时间戳早于自定义加载工具的时间戳(即DLL似乎在未来的某个时间进行了编译)。

(3)变种1和变种2自定义加载工具DLL都配置有PE版本信息,这些版本信息将自身伪装成Windows(例如DLL)、7-Zip(例如7z.dll)、Far Manager(例如Far.dll)、LibIntl(例如libintl3.dll)和其他合法应用程序。变种2的自定义加载工具主要是从合法应用程序的开源代码(例如7-Zip和Far Manager)编译而成的,也就是在这些应用程序的开源代码中添加了恶意代码。在某些场景中,自定义加载工具的样本里面还包含了一些开发过程遗留下来的痕迹。例如,从篡改后的Far Manager开源代码编译的加载工具中,我们看到了以下C++头(.hpp)的文件路径(C:\build\workspace\cobalt_cryptor_far (dev071)\farmanager\far\platform.concurrency.hpp)。

在自定义Cobalt Strike加载工具示例中观察到的C++头文件(.hpp)的文件路径:

10.png

(4)每个自定义加载工具DLL都包含一个指定的PE导出函数,该函数将触发加载工具的恶意功能(变种1)或调用Sleep()函数(变种2)。下面是这些PE导出函数的不完整列表(每个加载工具仅体现了一个)。请注意,这些导出名称中有一些包含“Tk”前缀,可以作为威胁狩猎的潜在指标。

__GetClasterInf    
FreeSetupRevoke  
Tk_GetRootCoords
TkComputeAnchor     
TkpSetMainMenubar  
__RtlProjectObj
GetLimitStroke    
Tk_IntersectTextLayout      
TkDebugBorder
TkSelPropProc     
__TkGlobal   
NetSetupServiceMain
Tk_NameOf3DBorder  
TkFindStateString       
TkWinCancelMouseTimer
_XInitImageFuncPtrs   
RestVirtAlloc  
Tk_PostscriptImage
TkGetDefaultScreenName
TkWinClipboardRender     
CreateLocalThread
SetTkPrv      
Tk_QueryAllocMem    
TkGrabState
XClearWindow    
CreateProcessTVI  
Tk_GetElementBox
Tk_SizeOfImage  
TkpSetKeycodeAndState    
XCreateBitmapFromData

(5)除了攻击者在横向移动阶段将自定义加载工具放置在每个系统的唯一位置之外,我们调查期间发现的大多数Beacon和反射式加载工具样本中还配置了唯一的C2域名、唯一的水印ID、唯一的PE编译时间戳、PE原始名称、DNS Idle IP(例如:84[.]200[.]70[.]40、208[.]67[.]220[.]220、208[.]67[.]222[.]222、9[.]9[.]9[.]9和8[.]8[.]4[.]4)、唯一的User-Agent和HTTP POST/GET URI、休眠时间和噪音因子。非常值得关注的是,没有两个Beacon样本使用同一个C2域名、水印或上述配置值。除了某些内部字段外,大多数Beacon配置字段都可以通过Malleable C2 Profile机型自定义。如果攻击者确实使用了自定义的Malleable C2配置文件(如上表所示),则对于在同一网络内进行不同横向移动过程的Beacon实例,这些配置文件会存在较大的差异。如上所述,每个Beacon实例都携带唯一的水印值。通过对水印值的分析,我们发现所有水印值都以数字“3”开头,例如:

0x30343131  
0x34353633  
0x38303535  
0x38383238
0x32323638  
0x35373331  
0x38353138  
0x38383430

(6)就后漏洞利用(Post-exploitation)的工具而言,我们观测到的Beacon实例配置中使用了不同的“spawnto”值,Cobalt Strike根据这个值生成临时进程,并将后漏洞利用相关的组件或特征注入到生成的进程中。这个详细信息对于搜索exe进程创建事件可能很有价值。以下是我们观察到的Beacon实例使用的一些路径:

%WINDIR%\System32\conhost.exe
%WINDIR%\System32\control.exe
%WINDIR%\System32\dllhost.exe
%WINDIR%\System32\help.exe
%WINDIR%\System32\LogonUI.exe
%WINDIR%\System32\msiexec.exe
%WINDIR%\System32\print.exe
%WINDIR%\SysWOW64\audiodg.exe
%WINDIR%\SysWOW64\help.exe
%WINDIR%\SysWOW64\msiexec.exe
%WINDIR%\SysWOW64\msinfo32.exe
%WINDIR%\SysWOW64\print.exe
%WINDIR%\SysWOW64\WerFault.exe

0x04 其他攻击、反取证和隐蔽策略

如前所述,Solorigate幕后是技术实力较强的攻击团伙,他们遵循了安全运营(OpSec)的最佳实践来最大程度地减少痕迹,从而避免被发现。

在我们通过Microsoft 365 Defender丰富的遥测镜头深入分析攻击者的战术、技术和过程(TTP)的探索中,观察到了一些值得揭示的技术,可以帮助其他防御者更好地应对此事件,同时也可以使用Microsoft 365 Defender高级威胁狩猎或Azure Sentinel查询之类的工具来查找历史上是否存在恶意活动的痕迹。

我们之所以说攻击者具备专业的安全运营方法和反取证行为特征,主要基于以下原因:

(1)攻击者针对每个受感染主机都使用了单独的指标。如上一章所述,在每台机器上的每个Cobalt Strike DLL植入工具都是唯一的,并且不惜一切代价避免文件夹名称、文件名称、导出函数名称、C2域名/IP、HTTP请求、时间戳、文件元数据、配置和子进程的重复使用。对于不可执行的实体,也同样采用了这种极致的差异化方式,例如WMI持久性过滤器名称、WMI过滤器查询、用于7-Zip压缩文件的密码和输出日志文件的名称。对于每个受感染的计算机都遵循这种策略,无疑是一项异常复杂的工作,通常是其他攻击者无法做到的。这样一来,攻击者就可以有效地防止网络中受感染的资产之间或不同受害者之间共享威胁情报。

(2)伪装并融入环境。攻击者使用的工具和二进制文件(例如ADFIND合法工具)均会被重命名为与计算机上现有程序和文件高度相似的名称。这种混淆策略不仅应用在文件上,还应用在其他元素上。例如,创建的WMI持久性筛选器的名称和查询,与受感染组织中存在的其他脚本名称匹配。

(3)在进行频繁且持续的模拟键盘操作之前,攻击者使用AUDITPOL禁用事件日志记录,然后再重新启用。

(4)以类似的方式,在运行容易产生告警的网络遍历活动(例如频繁的NSLOOKUP或LDAP查询)之前,攻击者精心设置了特殊的防火墙规则,以最大程度减少某些协议的传出数据包。在完成网络侦查后,还有条不紊地删除了此前设置的防火墙规则。

(5)在未经准备的前提下不会进行任何横向移动。为了增加其恶意活动的隐蔽性,攻击者首先遍历了目标主机上运行的远程进程和服务,并决定仅在禁用某些安全服务后再进行横向移动。

(6)我们相信,攻击者使用Timestomping来修改组件的时间戳,并且还使用了专业的擦除工具让防御者难以从被攻击环境中查找和恢复DLL注入工具。

下面列举了一些值得关注的独特TTP。在大多数情况下,命令和工具都是通过从Cobalt Strike主要父进程启动的中间“cmd.exe /C”进程来执行的。我们正在积极与MITRE合作,以确保在ATT&CK框架的后续更新中增加在此次事件中发现的新技术。

FireShot Capture 003 - Deep dive into the Solorigate second-stage activation_ From SUNBURST _ - www.microsoft.com.png

0x05 总结

随着我们持续深入地了解Solarigate攻击,我们会更加清楚地了解到攻击者的技能水平,以及他们计划开展何种攻击行动来实施近期历史上最为复杂的攻击之一。复杂的攻击链再加上漫长的操作过程,这意味着防御解决方案需要对攻击者的活动具有全面、跨域的监测能力,同时有能力记录并提供长达数月的历史数据,使用强大的威胁狩猎工具,以便能及早开展调查。

像Solorigate这样的攻击事件,突显了组织需要使用高级安全解决方案(例如Microsoft 365 Defender和Azure Sentinel),并以“假设已经被攻陷”的前提来开展安全响应。Microsoft 365 Defender借助多个功能的实力进行跨域保护,从而尽可能提供全面的防御能力。Azure Sentinel会从包括Microsoft 365 Defender在内的多个数据源收集数据,并将数据结合在一起,以广泛寻找攻击者的活动。

在我们对2020年5月至2020年11月期间由已知Solorigate恶意活动产生的安全事件的持续取证分析中,我们看到Microsoft Defender生成了以下告警。如果检查在此时间段内是否产生了下述事件告警,或许可以将这些告警事件作为Solorigate恶意活动的一个潜在检测指标。

Microsoft Defender for Endpoint的告警:

(1)由签名的可执行文件执行的低信誉任意代码;

(2)可疑的Atosev行为被阻止;

(3)可疑的远程WMI执行;

(4)WMI事件筛选器被绑定到可疑事件使用者。

Microsoft Defender for Identity的告警:

(1)用户和IP地址侦查;

(2)可疑的Kerberos SPN暴露。

在2020年6月,Microsoft Defender针对终端上Solorigate相关的恶意活动产生的告警:

11.png

Solorigate攻击活动的披露及后续调查揭示了更多细节和情报,这些情报可以让我们改进现有的检测方式并建立新的检测方式。如果希望获得有关检测与Solorigate研究的更全面信息,安全运营团队可以参考“Using Microsoft 365 Defender to protect against Solorigate”

同时,网络管理员可以根据Solorigate和类似的复杂网络攻击进行网络加固,建议可以阅读“Increasing resilience against Solorigate and other sophisticated attacks with Microsoft Defender”

要从Microsoft获得最新信息和指南,请访问 https://aka.ms/solorigate

0x06 威胁指标(IoC)

6.1 自定义Cobalt Strike Beacon Loader(SHA-256)

118189f90da3788362fe85eafa555298423e21ec37f147f3bf88c61d4cd46c51
1817a5bf9c01035bcf8a975c9f1d94b0ce7f6a200339485d8f93859f8f6d730c
1ec138f21a315722fb702706b4bdc0f544317f130f4a009502ec98345f85e4ad
2a276f4b11f47f81dd2bcb850a158d4202df836769da5a23e56bf0353281473e
327f1d94bc26779cbe20f8689be12c7eee2e390fbddb40b92ad00b1cddfd6426
3985dea8e467c56e8cc44ebfc201253ffee923765d12808aaf17db2c644c4c06
557f91404fb821d7c1e98d9f2f5296dc12712fc19c87a84602442b4637fb23d4
5cf85c3d18cd6dba8377370883a0fffda59767839156add4c8912394f76d6ef0
5f8650ca0ed22ad0d4127eb4086d4548ec31ad035c7aec12c6e82cb64417a390
674075c8f63c64ad5fa6fd5e2aa6e4954afae594e7b0f07670e4322a60f3d0cf
6ff3a4f7fd7dc793e866708ab0fe592e6c08156b1aa3552a8d74e331f1aea377
7c68f8d80fc2a6347da7c196d5f91861ba889afb51a4da4a6c282e06ef5bdb7e
915705c09b4bd108bcd123fe35f20a16d8c9c7d38d93820e8c167695a890b214
948bfdfad43ad52ca09890a4d2515079c29bdfe02edaa53e7d92858aa2dfbe4c
955609cf0b4ea38b409d523a0f675d8404fee55c458ad079b4031e02433fdbf3
b348546f4c6a9bcafd81015132f09cf8313420eb653673bf3d65046427b1167f
b35e0010e0734fcd9b5952ae93459544ae33485fe0662fae715092e0dfb92ad3
b820e8a2057112d0ed73bd7995201dbed79a79e13c79d4bdad81a22f12387e07
be9dbbec6937dfe0a652c0603d4972ba354e83c06b8397d6555fd1847da36725
c5a818d9b95e1c548d6af22b5e8663a2410e6d4ed87df7f9daf7df0ef029872e
c741797dd400de5927f8b5317165fc755d6439749c39c380a1357eac0a00f90c
c7924cc1bc388cfcdc2ee2472899cd34a2ef4414134cbc23a7cb530650f93d98
c96b7a3c9acf704189ae8d6124b5a7b1f0e8c83c246b59bc5ff15e17b7de4c84
cbbe224d9854d6a4269ed2fa9b22d77681f84e3ca4e5d6891414479471f5ca68
cdd9b4252ef2f6e64bccc91146ec5dc51d94e2761184cd0ffa9909aa739fa17e
dbd26ccb3699f426dc6799e218b91d1a3c1d08ad3006bc2880e29c755a4e2338
e60e1bb967db273b922deeea32d56fc6d9501a236856ef9a3e5f76c1f392000a
f2d38a29f6727f4ade62d88d8a68de0d52a0695930b8c92437a2f9e4de92e418
f61a37aa8581986ba600286d65bb76100fb44e347e253f1f5ad50051e5f882f5
f81987f1484bfe5441be157250b35b0a2d7991cf9272fa4eacd3e9f0dee235de

6.2 自定义Cobalt Strike Beacon Loader文件路径

C:\Windows\ms\sms\sms.dll
C:\Windows\Microsoft.NET\Framework64\sbscmp30.dll
C:\Windows\AUInstallAgent\auagent.dll
C:\Windows\apppatch\apppatch64\sysmain.dll
C:\Windows\Vss\Writers\Application\AppXML.dll
C:\Windows\PCHEALTH\health.dll
C:\Windows\Registration\crmlog.dll
C:\Windows\Cursors\cursrv.dll
C:\Windows\AppPatch\AcWin.dll
C:\Windows\CbsTemp\cbst.dll
C:\Windows\AppReadiness\Appapi.dll
C:\Windows\Panther\MainQueueOnline.dll
C:\Windows\AppReadiness\AppRead.dll
C:\Windows\PrintDialog\PrintDial.dll
C:\Windows\ShellExperiences\MtUvc.dll
C:\Windows\PrintDialog\appxsig.dll
C:\Windows\DigitalLocker\lock.dll
C:\Windows\assembly\GAC_64\MSBuild\3.5.0.0__b03f5f7f11d50a3a\msbuild.dll
C:\Windows\Migration\WTR\ctl.dll
C:\Windows\ELAMBKUP\WdBoot.dll
C:\Windows\LiveKernelReports\KerRep.dll
C:\Windows\Speech_OneCore\Engines\TTS\en-US\enUS.Name.dll
C:\Windows\SoftwareDistribution\DataStore\DataStr.dll
C:\Windows\RemotePackages\RemoteApps\RemPack.dll
C:\Windows\ShellComponents\TaskFlow.dll

6.3 Cobalt Strike Beacon

aimsecurity[.]net
datazr[.]com
ervsystem[.]com
financialmarket[.]org
gallerycenter[.]org
infinitysoftwares[.]com
mobilnweb[.]com
olapdatabase[.]com
swipeservice[.]com
techiefly[.]com

0x07 高级威胁狩猎查询

与Solorigate相关的高级狩猎查询(AHQ)已经发布到GitHub的AHQ仓库中。要查找与本文相关的漏洞利用活动,可以通过Microsoft Defender for Endpoint运行以下高级搜索进行查询。

7.1 7-Zip的滥用

查找7zip的异常使用或运行进程。在Microsoft Defender for Endpoint中进行查询。

DeviceProcessEvents
| where InitiatingProcessFileName in~("rundll32.exe", "dllhost.exe")
and InitiatingProcessCommandLine != ""
and InitiatingProcessCommandLine !contains " "
| extend RundllTime = Timestamp
| join DeviceProcessEvents on $left.DeviceId == $right.DeviceId
| where InitiatingProcessFileName hasprefix "7z"
or InitiatingProcessCommandLine has "-mx9"
| extend DateDiff = datetime_diff("day", Timestamp, RundllTime)
| where DateDiff < 2

7.2 自定义Cobalt Strike的存在

寻找是否存在自定义Cobalt Strike。在Microsoft Defender for Endpoint中进行查询。

DeviceProcessEvents
| where FileName =~ "rundll32.exe"
| where InitiatingProcessIntegrityLevel in ("High", "System")
| where ProcessCommandLine matches regex
@'(?i)rundll32\s+c\:\\windows(\\[^\\]+)+\.dll\s+[a-zA-Z0-9_]{3,}'

7.3 命令与控制

查找命令与控制连接。在Microsoft Defender for Endpoint中进行查询。

DeviceNetworkEvents
| where InitiatingProcessParentFileName =~ "rundll32.exe"
| where InitiatingProcessFileName =~ "dllhost.exe"
and InitiatingProcessCommandLine != ""
and InitiatingProcessCommandLine !contains " "

查找已知命令与控制域名的相关网络连接。在Microsoft Defender for Endpoint中进行查询。

DeviceNetworkEvents
| where RemoteUrl in~('aimsecurity.net',
'datazr.com',
'ervsystem.com',
'financialmarket.org',
'gallerycenter.org',
'infinitysoftwares.com',
'mobilnweb.com',
'olapdatabase.com',
'swipeservice.com',
'techiefly.com')

本文翻译自:https://www.microsoft.com/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop-and-raindrop/如若转载,请注明原文地址


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