2024年5月,卡巴斯基全球研究与分析团队(GReAT)发现一个新的高级持续性威胁(APT)组织,名为 CloudSorcerer,该组织一直在积极针对俄罗斯政府实体进行攻击。
这是一种用于秘密监控、数据收集和通过Microsoft Graph、Yandex Cloud和Dropbox云基础设施进行数据泄露的复杂网络间谍工具。该恶意软件利用云资源作为其命令和控制(C2)服务器,通过API使用认证令牌访问它们。此外,CloudSorcerer还使用GitHub作为其初始C2服务器。
根据安全专家的分析,CloudSorcerer的攻击技术与 2023 年报告的 CloudWizard APT 所使用的技术相似,但是其恶意软件源代码的存在明显不同之处,因此推测CloudSorcerer是一个采用了类似与公共云服务交互方法的新参与者。
恶意软件由攻击者在已感染机器上手动执行。它最初是一个用C语言编写的单一可移植执行文件(PE)二进制文件,其功能根据执行它的进程而变化。执行时,恶意软件调用GetModuleFileNameA函数来确定它正在运行的进程的名称,然后它将此进程名称与一组硬编码的字符串进行比较:browser、mspaint.exe和msiexec.exe。
根据检测到的进程名称,恶意软件激活不同的功能:
CloudSorcerer用于初始进程迁移shellcode的功能:
后门模块首先在单独的线程中收集受害机器的各种系统信息。恶意软件收集:
所有收集的数据都存储在一个特别创建的结构中。一旦信息收集完成,数据就被写入到与C2模块进程连接的命名管道。重要的是,所有数据交换都使用具有不同目的、明确定义的结构组织,如后门命令结构和信息收集结构。
接下来,恶意软件尝试从管道读取数据,如果成功,它将传入数据解析为COMMAND结构,并从其中读取一个字节,该字节代表COMMAND_ID。
根据COMMAND_ID,恶意软件执行以下操作之一:
当恶意软件接收到0x7 COMMAND_ID时,它会运行下面描述的一个额外任务:
所有收集的信息或执行任务的结果都被添加到一个特别创建的结构中,并通过命名管道发送到C2模块进程。
C2模块首先创建一个名为\\.\PIPE\[1428]的新Windows管道。接下来,它通过提供一系列负责互联网连接的Windows API函数所需的参数来配置与初始C2服务器的连接:
恶意软件设置请求类型(“GET”),配置代理信息,设置硬编码的头信息,并提供C2 URL。
然后,恶意软件连接到初始C2服务器,该服务器是位于https://github[.]com/alinaegorovaMygit的GitHub页面,恶意软件使用InternetReadFile调用将整个网页读入内存缓冲区。
GitHub仓库包含三个未修改或更新的公共项目的分叉。它们的唯一目的是使GitHub页面看起来合法且活跃。GitHub页面的作者部分显示了一个有趣的字符串:
安全专家发现一些看起来像是十六进制字符串的数据,它以相同的字节模式开始和结束——“CDOY”。在恶意软件下载整个GitHub HTML页面后,它开始解析,专门搜索字符序列“CDOY”。当找到它时,它会复制第二个分隔符“CDOY”之前的所有字符,然后将它们存储在内存缓冲区中。接下来,恶意软件解析这些字符,将它们从字符串值转换为十六进制值。然后使用硬编码的字符代码替换表对字符串进行解码——解析字符串中的每个字节都作为字符代码表中的索引,指向可替换的字节,从而形成一个新的十六进制字节数组。
解码算法
字符代码表
或者CloudSorcerer不连接到GitHub,而是尝试从hxxps://my.mail[.]ru/获取相同的数据,这是一个俄罗斯的基于云的摄影托管服务器。相册的名称包含相同的十六进制字符串。
十六进制字符串的第一个解码字节是一个魔术数字,告诉恶意软件使用哪个云服务。例如,如果字节是“1”,恶意软件使用Microsoft Graph云;如果是“0”,恶意软件使用Yandex云。后续字节形成一个承载令牌的字符串,用于与云API进行身份验证。
根据魔术数字,恶意软件创建一个结构,并设置一个偏移量到虚拟函数表,该表包含与所选云服务交互的函数子集。
Yandex和Microsoft的不同虚拟表
接下来,恶意软件通过以下方式连接到云API:
然后,恶意软件创建两个独立的线程——一个负责从Windows管道接收数据,另一个负责向它发送数据。这些线程促进了C2和后门模块之间的异步数据交换。
最后,C2模块通过读取数据、接收编码命令、使用字符代码表对它们进行解码,并将它们通过命名管道发送到后门模块与云服务进行交互。相反,它从后门模块接收命令执行结果或泄露的数据,并将它们写入云中。
GitHub页面创建于2024年5月7日,同一天有两个仓库被fork到其中。2024年5月13日,另一个仓库被fork,之后没有进一步的GitHub交互。被fork的仓库保持原样。C2仓库的名称“Alina Egorova”是一个常见的俄罗斯女性名字;然而,GitHub页面上的照片是一个男性,从公共照片库复制而来。
这个页面包含与GitHub页面相同的编码字符串。没有关于相册何时创建和发布的信息。所有者的照片与照片库中的图片相同。
使用云服务并不新鲜,我们在对CloudWizard APT的概述中报告了这样一个例子(与乌克兰冲突中的Operation Groundbait和CommonMagic有关的活动)。然而,将CloudSorcerer归因于同一攻击者的可能性很低,因为恶意软件的代码和整体功能是不同的。因此,我们目前假设CloudSorcerer是一个采用了与公共云服务交互技术的新攻击者。
俄罗斯联邦的政府组织。
CloudSorcerer恶意软件代表了一个针对俄罗斯政府实体的复杂工具集。它使用云服务如Microsoft Graph、Yandex Cloud和Dropbox作为C2基础设施,以及GitHub进行初始C2通信,展示了对网络间谍活动的精心规划方法。恶意软件根据其运行的进程动态调整其行为的能力,加上它通过Windows管道进行复杂的进程间通信的使用,进一步凸显了其复杂性。
虽然操作方式与之前报告的CloudWizard APT有相似之处,但代码和功能上的显著差异表明CloudSorcerer很可能是一个新的攻击者,可能受到之前技术的启发,但正在开发自己独特的工具。
meta: description = "Detects CloudSorcerer" author = "Kaspersky" copyright = "Kaspersky" distribution = "DISTRIBUTION IS FORBIDDEN. DO NOT UPLOAD TO ANY MULTISCANNER OR SHARE ON ANY THREAT INTEL PLATFORM" version = "1.0" last_modified = "2024-06-06" hash = "F701fc79578a12513c369d4e36c57224" strings: $str1 = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko" $str2 = "c:\\windows\\system32\\mspaint.exe" $str3 = "C:\\Windows\\system32\\msiexec.exe" $str4 = "\\\\.\\PIPE\\" condition: uint16(0) == 0x5A4D and all of ($str*) }
参考来源:https://securelist.com/cloudsorcerer-new-apt-cloud-actor/113056/