ToddyCat是一个相对较新的复杂APT组织,卡巴斯基研究人员最早在2020年11月检测到该组织的活动,当时该威胁组织正在对目标的Microsoft Exchange服务器进行一系列攻击,去年的一篇文章曾描述过它。
之后,该组织于2020年12月开始活动,并对欧洲和亚洲的知名对象发动了多起攻击。
在去年,我们发现了一组新的全新加载程序,并收集了有关其开发后活动的信息,这使我们能够扩展对该组织的了解,并获得有关攻击者的TTP(战术,技术和程序)的新信息。接下来,我们将描述他们的新工具集,用于窃取和泄露数据的恶意软件,以及该组织用于横向移动和进行间谍活动的技术。
工具集
标准的加载器
加载程序是64位库,由rundll32.exe调用,或者用合法的和签名的可执行文件进行侧加载,这些组件在感染阶段用于加载Ninja木马作为第二阶段。我们已经看到了这些新加载器的三种变体:
第一个变体的文件名为update.dll或x64.dll,通常使用合法的rundll32.exe Windows实用程序加载,大多数恶意代码驻留在DllMain中,但下一个阶段是通过导出的Start函数调用的,其他两个变体应该与合法的VLC.exe媒体播放器一起加载,这被滥用来加载恶意库。
加载程序通过从同一目录中应该存在的另一个文件加载加密的有效负载来启动其活动,然后使用异或对加载的数据进行解码,其中异或项是使用一种不寻常的技术生成的。恶意软件使用静态种子(static seed)通过shuffle和add操作生成256字节的XOR_KEY块。
使用另一个嵌入的64字节IDX块作为索引再次对生成的XOR_KEY块进行改组,以获得特定的256字节XOR键,XOR密钥用于解密文件内容,并将结果值加载到内存中。
Update A和VLC A在其进程地址空间中加载下一阶段,解密的有效负载应该是一个库,该库导出具有特定名称的函数:“Start”或“_”,具体要看变体。
变体VLC B创建一个新的wusa.exe (Windows Update Standalone Installer)进程,这是一个位于System32目录下的合法Windows程序。然后,它将解密的有效负载注入远程进程地址空间的地址空间,并使用CreateRemoteThread函数运行它。
定制的加载程序
调查时,我们注意到在攻击某些目标时,攻击者用另一种变体替换了标准加载程序,我们称之为定制加载程序,因为加密文件是为特定系统量身定制的。
该代码与标准加载器变体VLC a类似,主要区别在于加密文件的位置和文件名(%CommonApplicationData%\Local\user.key
)以及用于获取最终有效负载的解密方案。使用上面提到的相同算法,其中使用XOR_SEED生成256字节的XOR_KEY块,然后使用另一个嵌入的64字节IDX块将其混合,在混合两个块之前,恶意软件会收集PhysicalDrive0的存储属性,从而获得硬盘的型号。
用于获取存储属性的代码片段
并使用GetVolumeNameForVolumeMountPointA函数来检索“C:\”卷GUID。
用于获取卷GUID的代码片段
这两个值连续用作修改IDX块的异或项。这种方法表明存储在 user.key的加密有效负载是为目标系统量身定制的。
据观察,定制加载器用于保持长期持久性。用于实现此目标的技术与攻击者的Samurai后门所使用的技术相同,后者允许攻击者将恶意软件隐藏在svchost.exe地址空间中。
在这种情况下,攻击者创建以下注册表项:
此注册表项旨在强制合法的svchost.exe进程在系统启动期间加载FontCacheSvc服务。进程的命令行看起来像这样:
C:\Windows\system32\svchost.exe -k fontcsvc -s fontachesvc
攻击者还创建一个新的服务,该服务被配置为加载定制的加载程序,该加载程序通常存储在文件名apibridge.dll中。
Ninja
由前面描述的组件加载的最后一个阶段是Ninja代理。这是一种用c++编写的复杂恶意软件,可能是ToddyCat开发的未知利用后工具包的一部分。我们之前介绍过。
代理是一个提供各种功能的强大工具,包括但不限于:
运行进程的枚举和管理;
文件系统管理;
管理多个反向shell会话;
向任意进程注入代码;
在运行时加载附加模块(可能是插件);
代理功能,用于在C2和远程主机之间转发TCP数据包。
代理的最新版本支持与上一个报告中描述的相同的命令,但是配置不同。虽然以前的版本使用XOR项0xAA混淆了嵌入式配置,但新版本使用NOT二进制操作来实现相同的目的。
尽管配置中包含的信息保持不变,但互斥对象名称已移到HTTP标头之后。
LoFiSe
这是一个用于查找和收集目标系统上感兴趣文件的组件。LoFiSe这个名字来源于这个工具使用的互斥对象名称(' MicrosoftLocalFileService '),该工具本身是一个名为DsNcDiag.dll的DLL文件,使用DLL侧加载技术启动。使用软件包“Pulse Secure Network Connect 8.3”中具有数字签名和原始名称为“nclauncher.exe”的合法可执行文件作为加载程序。以下路径和文件名在被攻击的系统上是已知的:
C:\Program Files\Windows Mail\AcroRd64.exe C:\Program Files\Windows Mail\DsNcDiag.dll C:\Program Files\Common Files\VLCMedia\VLCMediaUP.exe C:\Program Files\Common Files\VLCMedia\DsNcDiag.dll
启动后,LoFiSe开始跟踪文件系统中的更改。系统中的所有驱动器都被监控。在收到文件创建或修改事件后,该工具执行几次检查。过滤大小大于6400000字节( 6mb)的文件。某些文件夹中的文件也会被过滤。这些都是在其完整路径中包含ProgramData的文件,或者已经存储在LoFiSe工作目录中的文件。
以下是工具存储文件的工作目录,具体取决于版本:
C:\Programdata\Microsofts\ C:\windows\temp\
在下一阶段,根据以下掩码检查文件扩展名:
如果文件通过了所有的检查并且适合收集,LoFiSe就会计算它的MD5哈希值,并用它来检查以前复制的文件,并将此信息存储在数据库中。在该工具的所有已知版本中,数据库文件称为Date.db,并在工作目录中创建。数据库中添加了两个表:
数据库中的文件路径
其他存储数据
如果MD5文件不在表中,它将被添加到工作目录中。
每隔三个小时,LoFiSe将工作目录中的所有文件收集到一个有密码保护的ZIP-archive中,并将其放入一个单独的文件夹中以供进一步窃取:
准备收集数据时产生的日志
DropBox上传器
这是一个通用的DropBox上传器,任何人都可以使用它将数据上传到流行的文件托管服务。这个工具可能不是todddycat唯一使用的,但我们观察到该组织使用它来窃取被盗的文件,
这个小实用程序接受DropBox用户访问令牌作为参数。然后,它解析当前工作目录并上传具有以下扩展名的文件:
调查中,我们还发现了其他几个类似的样品,这些样品由不同的包装商保护,只在东南亚检测到。然而,在某些示例中,该工具是在没有明显被ToddyCat感染的系统上发现的。
Pcexter
这是另一个用于将存档文件泄露到微软OneDrive的上传程序。该工具作为名为Vspmsg.dll的DLL文件传播,该文件使用DLL侧加载技术执行,作为加载器,该工具使用来自Visual Studio的合法可执行文件VSPerfCmd,该文件用于收集性能数据。这些可执行文件在受攻击系统上的已知路径如下:
c:\windows\temp\googledrivefs.exeC:\windows\temp\vspmsg.dll c:\program files\windows mail\securityhealthsystray64.exec:\program files\windows mail\vspmsg.dll c:\program files\common files\vlcmedia\vlcmediastatus.exec:\program files\common files\vlcmedia\vspmsg.dll
这个工具需要以下参数:
启动后,Pcexter等待事件“Global\SystemLocalPcexter”触发,然后开始使用给定的掩码在指定目录中搜索文件。这是LoFiSe工具在创建要发送的存档时设置的事件。
Pcexter使用OneDrive OAuth 2.0授权,检索访问令牌并通过POST方法发送文件:
其他工具
被动UDP后门
这是一个很小的被动后门,用UDP数据包接收命令,攻击者通常在执行此后门之前通过任务远程执行以下命令。
该命令在目标主机上创建一个名为SGAccessInboundRule的新防火墙规则。它允许后门在端口49683上接收UDP数据包。执行该命令后,攻击者执行后门:
后门的逻辑很简单:它将UDP套接字绑定到指定端口,解压缩接收到的数据,并使用WinExec函数执行结果字符串。命令执行后,后门会返回一条包含当前系统时间和已执行命令的消息,以此反馈命令的执行情况。但是,后门程序不提供该命令的输出。
这个后门的确切目的目前尚不清楚,但有可能是为了在检测到其他植入程序时提供额外的持久性。
CobaltStrike
在调查过程中,我们观察到攻击者在部署Ninja代理之前使用了CobaltStrike。具体来说,我们观察到一个用c++编写的加载器的使用,它位于:
C:\ProgramData\Microsoft\mf\windef.dll
恶意软件加载一个名为“BIN”的嵌入式资源。使用异或算法和嵌入在代码中的密钥:B0 9A E4 EA F7 BE B7 B0对资源内容进行反混淆。
由此产生的有效负载是CobaltStrike信标,配置为与以下URL通信:
hxxps://www.githubdd.workers[.]dev/fam/mfe?restart=false
攻击开始大约10分钟后,系统检测到ToddyCat Ninja。
Post-exploitation
调查发现,为了实现这一目标,攻击者使用上面描述的加载程序和木马等工具渗透企业网络。之后,它就开始收集连接到同一网络主机的信息,以查找可能具有感兴趣文件的目标。
该组织执行发现活动,通过利用标准操作系统管理实用程序(如net和ping)枚举域帐户和DC服务器:
在确定潜在目标后,该组织通过使用受攻击的域管理凭据在本地安装网络共享来横向移动:
攻击者注意随着时间的推移轮换使用的凭据,相同的凭据不太可能长期使用。
复制脚本后,将创建一个计划任务,执行并立即删除网络共享,所有这些都是针对每个目标主机循环进行的:
计划任务通常可以包含单个发现命令、二进制调用或负责执行收集活动的PS1或BAT脚本。
在横向移动期间,单命令计划任务的输出保存在特定的文件中,以便攻击者将远程驱动器挂载为本地共享时可以捕获它:
在运行脚本的情况下,命令如下:然后,我们观察到PS1脚本中发现的相同的PowerShell命令被包装在BAT脚本中,这可能是为了避免被检测到。
然而,有些文件夹似乎比其他文件夹更受欢迎:
攻击者会对同一会话重用相同的任务名,这样的名字通常会引起较少的怀疑,例如“one”和“tpcd”,而脚本名称可以从两个到四个随机的键盘观察字符变化,具有更高的熵。
在活动结束时,挂载一个临时共享,然后在泄漏主机上删除:
数据收集和泄露
如上所述,一旦确定了感兴趣的目标,收集阶段就开始了。攻击者通常从许多不同的主机收集文件,并将它们存储在档案中,然后使用公共文件存储服务从目标网络中泄漏出来。
数据窃取方案
我们已经描述了一些工具,例如LoFiSe,专门用于识别和收集感兴趣的文件,但是在调查过程中,我们还发现了ToddyCat使用的其他脚本,这些脚本使用WMI枚举目标主机磁盘上的文件,并收集最近修改的具有.pdf, .doc, .docx, .xls 和.xlsx扩展名的文档。
在这些情况下,使用诸如7zip或RAR实用程序之类的工具执行压缩,特定的工具可能是根据基础设施中已经可用的工具来选择的。与LoFiSe不同,集合脚本将枚举文档的路径存储在纯文本TXT文件中。文档压缩可以直接在目标主机或泄漏主机上完成。
下面是在目标主机上运行的BAT脚本的内容:
在上面的示例中,文件被文件在一个tmp_文件夹中;我们还观察到使用根据主机名参数化名称的文件夹,例如:
要收集的文件也是根据它们最后的写入时间来选择的。文件的最后修改日期应该大于一定天数。这个数字通常作为脚本参数传递,并且可以硬编码。
在主驱动器和辅助驱动器上选择数据源时,收集脚本使用不同的策略。对于默认的Windows主驱动器,脚本遍历用户配置文件目录(C:\Users)。这种方法增加了捕获有价值数据的可能性,同时减少了所需的处理时间,并最大限度地减少了收集不需要文件的机会。在处理外部设备和其他非主存储介质时,脚本会选择一种更方便的策略,即选择根目录(\)。虽然主驱动器始终可用,但辅助驱动器可能并不总是可访问,从而限制了收集机会。为了减少这一限制,攻击者偶尔会扩展时间范围,将辅助驱动器和可移动驱动器上的旧文件包括在其作用域中(如BAT代码片段所示)。
以下是PS1脚本的结构:
攻击者试图通过保护脚本并将脚本代码嵌入到PE “.text”部分中的特定释放器来传播它们以逃避防御。
PowerShell脚本里面的可执行文件
滴管接收两个参数;第一个是启动执行时必须提供的密码字符串,第二个是通过命令行实际传输到PS脚本的数字。启动后,dropper创建一个名为pro.ps1 的文件,并通过PowerShell执行它:
在其他示例中,我们观察到脚本变体的设计仅仅是为了收集数据并将文件复制到特定的文件夹中,但没有将它们包含在压缩文件中。在这些示例中,攻击者使用标准的远程任务执行技术在远程主机上执行脚本。然后使用xcopy实用程序将收集到的文件手动传输到泄漏主机,最后使用7z二进制文件进行压缩:
然后,该活动继续使用上述Pcexter或Dropbox上传器进行实际泄漏:
文章翻译自:https://securelist.com/toddycat-keep-calm-and-check-logs/110696/如若转载,请注明原文地址