引言
2024年下半年,俄罗斯IT行业以及多个其他国家的实体遭遇了一次显著的网络攻击。攻击者采用多种恶意技术欺骗安全系统并保持隐蔽。为绕过检测,他们通过俄罗斯和国际社交媒体平台以及其他支持用户生成内容的流行网站传递有效载荷信息。我们分析的样本与GitHub、Microsoft Learn Challenge、Quora以及俄语社交网络通信。攻击者旨在隐藏其活动,并为长期已知且广泛使用的Cobalt Strike Beacon建立复杂的执行链。
尽管该活动在2024年11月和12月最为活跃,但一直持续到2025年4月。经过两个月的沉寂,我们的安全解决方案再次检测到攻击。对手使用了新的恶意样本,这些样本仅是文章中描述的版本的略微修改。
卡巴斯基解决方案检测到此威胁并分配以下判定:
- HEUR:Trojan.Win64.Agent.gen
- HEUR:Trojan.Win64.Kryptik.gen
- HEUR:Trojan.WinLNK.Starter.gen
- MEM:Trojan.Multi.Cobalt.gen
- HEUR:Trojan.Win32.CobaltStrike.gen
初始攻击向量
初始攻击向量涉及带有恶意附件的鱼叉式网络钓鱼电子邮件。这些电子邮件伪装成来自主要国有公司(特别是石油和天然气行业)的合法通信。攻击者假装对受害者的产品和服务感兴趣,以制造可信的合法性假象,增加收件人打开恶意附件的可能性。
所有我们观察到的附件都是RAR存档,结构如下:
- Требования.lnk
- Требования
- Company Profile.pdf
- List of requirements.pdf
- Требования
Company profile.pdf和List of requirements.pdf是诱饵文件,旨在补充电子邮件中的信息。目录Требования\Требования包含名为Company.pdf和Requirements.pdf的可执行文件,设计为模仿安全的PDF文档。目录本身是隐藏的,默认对用户不可见。
当打开Требования.lnk时,Требования\Требования中的文件被复制到%public%\Downloads\并重命名:Company.pdf变为nau.exe,Requirements.pdf变为BugSplatRc64.dll。随后立即执行nau.exe。
Требования.lnk的执行序列:
|
|
恶意代理
在此攻击中,对手利用了一种常见技术:DLL劫持(T1574.001)。为部署恶意有效载荷,他们利用了合法的崩溃报告发送实用程序(原始文件名:BsSndRpt.exe)。该工具是BugSplat的一部分,帮助开发人员获取其应用程序的详细实时崩溃报告。这是攻击者从Company.pdf重命名为nau.exe的实用程序。
BsSndRpt.exe要正常运行,需要BugSplatRc64.dll。攻击者将其恶意文件保存为该名称,强制实用程序加载它而不是合法文件。
为进一步逃避检测,恶意的BugSplatRc64.dll库采用动态API解析(T1027.007)。此技术涉及在代码中模糊API函数,仅在执行期间动态解析它们。在此特定情况下,函数通过自定义哈希算法进行模糊处理,该算法与CRC(循环冗余校验)相似。
恶意样本中的大部分哈希值都是XOR加密的。此外,每次调用后,地址从内存中移除,如果需要后续调用,则重新加载API函数。
MessageBoxW函数钩子
BugSplatRc64.dll的主要目的是拦截合法实用程序进程地址空间中的API调用以执行其恶意代码(DLL替换,T1574.001)。不是调用进程所需的API函数之一,而是调用位于恶意库地址空间中的函数(我们称之为NewMessageBox)。此技术使得在沙箱环境中难以检测恶意软件,因为如果没有特定的可执行文件,库不会启动。在我们发现的大多数样本中,MessageBoxW函数调用被修改,尽管我们也发现了修改其他API调用的样本。
挂钩MessageBoxW后,库将控制权返回给合法的nau.exe进程。
NewMessageBox函数
一旦挂钩就位,每当在合法进程中调用MessageBoxW(或其他修改的函数)时,NewMessageBox就会执行。其主要作用是运行一个shellcode,该shellcode分两个阶段加载。
首先,可执行文件从恶意库中加密的地址之一检索网页的HTML内容。在我们分析的样本中,这些地址是https://techcommunity.microsoft[.]com/t5/user/viewprofilepage/user-id/2631和https://www.quora[.]com/profile/Marieformach。两个位置的信息相同。第二个地址在第一个地址失效时作为备份。
NewMessageBox从这些地址检索的HTML代码中搜索一个字符串,其开头和结尾与代码中定义的模式匹配,该模式由混合大小写字母数字字符组成。此技术允许攻击者利用各种流行网站存储这些字符串。我们在GitHub、Microsoft Learn Challenge、问答网站甚至俄罗斯社交媒体平台上的配置文件中发现了隐藏的恶意信息。
虽然我们没有发现攻击者使用真实人物社交媒体配置文件的证据,因为所有账户都是专门为此攻击创建的,符合MITRE ATT&CK技术T1585.001,但没有什么能阻止威胁行为者滥用这些平台提供的各种机制。例如,恶意内容字符串可以发布在合法用户帖子的评论中。
提取的有效载荷是一个base64编码的字符串,带有XOR加密的数据。解密后,此数据显示URL https://raw.githubusercontent[.]com/Mariew14/kong/master/spec/fixtures/verify-prs,然后下载另一个XOR加密的shellcode。
我们最初期望NewMessageBox在解密后立即执行shellcode。相反,nau.exe启动一个具有相同名称和qstt参数的子进程,其中所有上述操作再次重复,最终导致shellcode的执行。
Shellcode
对shellcode(793453624aba82c8e980ca168c60837d)的分析揭示了一个反射加载器,它将Cobalt Strike Beacon注入进程内存,然后将控制权移交给它(T1620)。
观察到的Cobalt样本与C2服务器moeodincovo[.]com/divide/mail/SUVVJRQO8QRC通信。
归因和受害者
用于检索shellcode下载地址的方法类似于我们的安全分析师在EastWind活动中观察到的C2获取模式。在这两种情况下,URL都存储在合法在线平台(如Quora或GitHub)上专门制作的配置文件中。在这两种情况下,它也使用XOR算法加密。此外,两个活动的目标部分重叠:两组攻击者都对俄罗斯IT公司表现出兴趣。
值得一提的是,虽然大多数攻击针对俄罗斯公司,但我们也在中国、日本、马来西亚和秘鲁发现了恶意活动的证据。大多数受害者是大型和中型企业。
要点
威胁行为者正在使用日益复杂和聪明的方法来隐藏长期已知的工具。这里描述的活动使用了像DLL劫持这样的技术,这在攻击者中越来越受欢迎,以及模糊恶意库中的API调用和使用合法资源(如Quora、GitHub和Microsoft Learn Challenge)来托管C2地址。我们建议组织遵循以下指南以保持安全:
- 跟踪其基础设施的状态并持续监控其外围。
- 使用强大的安全解决方案来检测和阻止嵌入在批量电子邮件中的恶意软件。
- 培训员工以提高网络安全意识。
- 使用全面系统保护企业设备,在早期阶段检测和阻止攻击。
您可以通过在文件系统中搜索未签名的文件BugSplatRc64.dll来检测此处描述的恶意软件。攻击的另一个间接迹象可能是存在崩溃报告发送实用程序,其文件名不是原始的BsSndRpt.exe。
IOC:
LNK
- 30D11958BFD72FB63751E8F8113A9B04
- 92481228C18C336233D242DA5F73E2D5
合法BugSplat.exe
- 633F88B60C96F579AF1A71F2D59B4566
DLL
- 2FF63CACF26ADC536CD177017EA7A369
- 08FB7BD0BB1785B67166590AD7F99FD2
- 02876AF791D3593F2729B1FE4F058200
- F9E20EB3113901D780D2A973FF539ACE
- B2E24E061D0B5BE96BA76233938322E7
- 15E590E8E6E9E92A18462EF5DFB94298
- 66B6E4D3B6D1C30741F2167F908AB60D
- ADD6B9A83453DB9E8D4E82F5EE46D16C
- A02C80AD2BF4BFFBED9A77E9B02410FF
- 672222D636F5DC51F5D52A6BD800F660
- 2662D1AE8CF86B0D64E73280DF8C19B3
- 4948E80172A4245256F8627527D7FA96
URL
- hxxps://techcommunity[.]microsoft[.]com/users/kyongread/2573674
- hxxps://techcommunity[.]microsoft[.]com/users/mariefast14/2631452
- hxxps://raw[.]githubusercontent[.]com/fox7711/repos/main/1202[.]dat
- hxxps://my[.]mail[.]ru/mail/nadezhd_1/photo/123
- hxxps://learn[.]microsoft[.]com/en-us/collections/ypkmtp5wxwojz2
- hxxp://10[.]2[.]115[.]160/aa/shellcode_url[.]html
- hxxps://techcommunity[.]microsoft[.]com/t5/user/viewprofilepage/user-id/2548260
- hxxps://techcommunity[.]microsoft[.]com/t5/user/viewprofilepage/user-id/2631452
- hxxps://github[.]com/Mashcheeva
- hxxps://my[.]mail[.]ru/mail/veselina9/photo/mARRy
- hxxps://github[.]com/Kimoeli
- hxxps://www[.]quora[.]com/profile/Marieformach
- hxxps://moeodincovo[.]com/divide/mail/SUVVJRQO8QRC