我们最近发现了一个APT
我们正在调用的活动Operation Dragon Castling
。该活动的目标是似乎在投注的公司South East Asia
,更具体地说是位于Taiwan
、Philippines
和的公司Hong Kong
。有了适度的信心,我们可以将活动归因于一个Chinese speaking APT group
,但不幸的是不能将攻击归因于特定的群体,并且不确定攻击者的目标是什么。
MulCom backdoor
我们发现此 APT 组 (the )使用的模块之一与他们的报告和报告中FFRat
描述的示例之间存在显着的代码相似性。基于此,我们怀疑 FFRat 代码库正在几个中国对手团体之间共享。不幸的是,这还不足以归因,因为 FFRat 本身从未被可靠地归因。BlackBerry Cylance Threat Research Team2017
Palo Alto Networks2015
在这篇博文中,我们将描述这些攻击中使用的恶意软件和 APT 组织植入的后门,以及其他用于获得持久性和访问受感染机器的恶意文件。我们还将讨论我们看到的用于传播恶意软件的两种感染媒介:受感染的安装程序和对易受攻击的合法应用程序的利用,WPS
Office
.
我们在 WPS Office 更新程序 wpsupdate.exe 中发现了一个新漏洞 ( CVE-2022-24934 ),我们怀疑攻击者滥用了该漏洞。
我们要感谢台湾TeamT5
为我们提供与感染媒介相关的 IoC。
在上图中,我们描述了恶意文件之间的关系。有些关系可能不准确,例如我们不完全确定 MulCom 后门是否由CorePlugin
. 但是,我们坚信它是此次活动中使用的恶意文件之一。
我们已经看到此活动中使用了多种感染媒介。其中,攻击者向其中一家目标公司的支持团队发送了一封带有受感染安装程序的电子邮件,要求检查其软件中的错误。在这篇文章中,我们将描述我们看到的另一个向量:一个虚假的WPS Office
更新包。我们怀疑攻击者利用了 WPS 更新程序中的错误,该程序 wpsupdate.exe
是 WPS Office 安装包的一部分。我们已就我们发现的漏洞 ( ) 联系了 WPS Office 团队,该漏洞CVE-2022-24934
已得到修复。
在我们的调查中,我们发现 WPS 更新程序过程中存在可疑行为。在分析二进制文件时,我们发现了一个潜在的安全问题,允许攻击者使用更新程序与攻击者控制的服务器进行通信,以在受害者的系统上执行操作,包括下载和运行任意可执行文件。HKEY_CURRENT_USER
要利用该漏洞,需要修改注册表项,通过这样做,攻击者可以获得系统持久性并控制更新过程。在我们分析的案例中,恶意二进制文件是从域 下载的update.wps[.]cn
,该域属于Kingsoft
,但服务 IP ( 103.140.187.16
) 与公司无关,因此我们假设它是攻击者使用的虚假更新服务器。
下载的二进制文件(setup_CN_2052_11.1.0.8830_PersonalDownload_Triale.exe - B9BEA7D1822D9996E0F04CB5BF5103C48828C5121B82E3EB9860E7C4577E2954
) 丢弃两个文件进行旁加载:一个签名的QMSpeedupRocketTrayInjectHelper64.exe - Tencent Technology (a3f3bc958107258b3aa6e9e959377dfa607534cc6a426ee8ae193b463483c341)
和一个恶意的 DLLQMSpeedupRocketTrayStub64.dll.
76adf4fd93b70c4dece4b536b4fae76793d9aa7d8d6ee1750c1ad1f0ffa75491
第一阶段是与 C&C ( mirrors.centos.8788912[.]com
) 通信的后门。在联系 C&C 服务器之前,后门会执行几个准备操作。它挂钩了三个函数:GetProcAddress
, FreeLibrary
, LdrUnloadDll
. 为了获得 C&C 域,它将自身映射到内存并1064
从末尾的偏移量开始读取数据。域名未以任何方式加密,而是以明文形式以宽字符串形式存储在二进制文件中。
JScript
然后它为一个名为 item 的类初始化一个对象ScriptHelper
。dropper 使用ImpersonateLoggedOnUser
API 调用来重用令牌,explorer.exe
因此它可以在同一用户下有效地运行。此外,它还用于RegOverridePredefKey
将当前用户重定向HKEY_CURRENT_USER
到HKEY_CURRENT_USER
模拟用户。为了与 C&C 通信,它构造了一个带有一些系统信息(例如注册表值)的 UserAgent 字符串。Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1;.NET CLR 2.0). The information that is exfiltrated is: Internet Explorer version, Windows version, the value of the “User Agent\Post Platform”
之后,示例构造JScript
代码来执行。代码的头部包含两个变量的定义:server
带有 C&C 域名和硬编码的key
. 然后它将 HTTPGET
请求发送到/api/connect,
响应应该是加密的JScript
代码,该代码被解密,附加到构造的标头并使用JScript
之前创建的类执行。
在分析时,C&C 没有响应,但从遥测数据我们可以得出结论,它正在从hxxp://mirrors.centos.8788912.com/upload/ea76ad28a3916f52a748a4f475700987.exe
to下载下一阶段%ProgramData%\icbc_logtmp.exe
并执行它。
a428351dcb235b16dc5190c108e6734b09c3b7be93c0ef3d838cf91641b328b3
第二个 dropper 是一个运行程序,在执行时,它会尝试通过COM Session Moniker Privilege
Escalation提升权限,然后删除一些二进制文件,这些二进制文件与以下资源 ID 一起存储:(
MS17-012
)
资源 ID | 文件名 | 描述 |
---|---|---|
1825 | smcache.dat | C&C 域名列表 |
1832 | 日志文件 | 加载器 (CoreX) 64 位 |
1840 | bdservicehost.exe | 用于侧载 64 位的签名 PE |
1841 | 不适用 | 侧载的文件名 |
1817 | 安装文件 | 工作路径 |
1816 | 主机配置文件 | 用于Host标头,用于 C&C 通信 |
1833 | bdservicehost.exe | 用于侧载 32 位的签名 PE – N/A |
1831 | 日志文件 | 加载程序(32 位) - 不适用 |
加密的有效载荷具有以下结构:
加密密钥是一个从 offset 开始的宽字符串0x8
。加密数据从 offset 开始0x528
。为了解密数据,使用CryptHashData
API 创建密钥的 SHA256 哈希,然后与硬编码的 IV一起使用API 和算法 0123456789abcde
解密数据。之后,解密的数据用. 为了验证解密是否顺利,计算数据的 并与原始资源数据偏移处的值进行比较。当所有的有效载荷都被放到磁盘上时,执行以运行下一阶段。CryptDecrypt
AES256RtlDecompressBufferCRC320x4
bdservicehost.exe
97c392ca71d11de76b69d8bf6caf06fa3802d0157257764a0e3d6f0159436c42
DLL在Loader (CoreX)
前一阶段被侧载(Dropper 2)
并充当释放器。与 类似Dropper 1
,它挂钩GetProcAddress
和FreeLibrary
API 函数。这些钩子执行这个库的主要代码。主代码首先检查它是否被加载regsvr32.exe
,然后从其资源中检索加密数据。此数据被放入与 相同的文件夹中syscfg.dat
。然后使用 AES-256 加载并解密该文件,并使用以下设置选项:
qwertyui12345678
<key>#<IV>
. 所以你可能会看到cbfc2vyuzckloknf#8o3yfn0uee429m8d
AES-256 设置参数
主代码继续检查进程ekrn.exe
是否正在运行。ekrn.exe
是 ESET 内核服务。如果 ESET 内核服务正在运行,它将尝试重新映射ntdll.dll
. 我们假设这是用来绕过ntdll.dll
挂钩的。
服务检查后,它会解压并执行 shellcode,然后加载一个 DLL 进行下一阶段。DLL 作为 shellcode 的一部分存储,未加密。shellcode 枚举ntdll.dll
所有函数(windows 原生 API 系统调用)名称的散列并构建一个数组,Zw*
然后按它们的 RVA 对它们进行排序。Zw*
通过这样做,shellcode利用了函数的RVA顺序等于相应系统调用的顺序这一事实,因此Zw*
该数组中函数的索引是系统调用号,可以使用系统调用指令进行调用。因此,可以基于用户空间中 API 的挂钩来绕过安全解决方案。最后,加载并执行嵌入式核心模块DLL。
f3ed09ee3fe869e76f34eee1ef974d1b24297a13a58ebff20ea4541b9a2d86c7
核心模块是一个单独的 DLL,负责设置恶意软件的工作目录、加载配置文件、更新其代码、加载插件、向 C&C 服务器发送信标并等待命令。
它具有级联结构,分为四个步骤:
第一部分专门介绍初步检查和一些规避技术。首先,核心模块验证 DLL 是由spdlogd.exe
(用于持久性的可执行文件,见下文)运行还是不是由它运行。rundll32.exe.
如果此检查失败,则执行终止。DLL 通过挂钩GetProcAddress
和FreeLibrary
函数继续执行主函数,类似于之前的感染阶段。
GetProcAddress 挂钩包含一个有趣的调试输出“in googo”。
然后,恶意软件会创建一个Sample
带有自定义回调函数的新窗口(名为 )。带有 ID 的消息0x411
被发送到窗口,通过SendMessageW
该消息导致上述回调执行 main 函数。回调函数也可以处理0x412
消息 ID,即使它没有绑定特定的功能。
导出函数 Core2 发送消息 0x411
导出函数 Ldr2 发送消息 0x412
窗口回调仅包含消息 0x411 的实现,但也检查了 0x412
第二步,模块尝试自我更新、加载配置文件并设置其工作目录(WD)。
恶意软件首先寻找一个名为的文件new_version.dat
——如果它存在,它的内容被加载到内存中,在一个新线程中执行并“run code ok”
打印出一个调试字符串。我们没有遇到这个文件,但根据它的名称和上下文,这很可能是一个自我更新功能。
加载配置文件inst.dat
并设置工作目录。首先在以下三个位置查找核心模块配置文件inst.dat:
C:\ProgramData\
它包含恶意软件工作目录的明文路径。如果未找到,则使用硬编码的目录名称并创建目录。工作目录是恶意软件用来删除或读取其在后续执行阶段使用的任何文件的位置。
加载配置文件smcache.dat
。
设置工作目录后,示例将从其中加载配置文件smcache.dat
。该文件包含用于与 C&C 服务器通信的域、协议和端口号(步骤 4 中的详细信息)以及一个“comment”
字符串。此字符串可能用于识别活动或个人受害者。它用于在受害者的计算机上创建一个空文件(见下文),并在与 C&C 服务器通信时作为初始信标的一部分发送。我们将其称为 “comment string”
smcache.dat 是因为我们已经看到了字符串内容所在的几个版本, “the comment string here”
并且它也存在于另一个配置文件中,其名称comment.dat
具有 INI 文件格式并在键 COMMENT 下包含此字符串.
创建log
文件
在样本找到并读取 smcache.dat 之后,它会根据受害者的用户名和 smcache.dat 中的注释字符串创建一个文件。如果注释字符串不存在,它将使用默认的硬编码值(例如M86_99.lck
)。根据扩展名,它可能是某种日志,但我们还没有看到恶意软件的任何部分写入其中,因此它只能用作锁定文件。成功创建文件后,恶意软件会创建一个互斥锁并继续下一步。
接下来,恶意软件收集有关受感染环境的信息(例如用户名、DNS 和 NetBios 计算机名称以及操作系统版本和架构)并设置其内部结构,最显着的是一个 “call objects”
. 调用对象是每个与特定函数相关联的“dispatcher”
结构,并使用硬编码的 4 字节键保存到映射中的结构中。这些键稍后用于根据来自 C&C 服务器的命令调用函数。
键值 (ID) 似乎是结构化的,其中前三个字节在给定样本中始终相同,而最后一个字节对于我们看到的所有核心模块样本中的给定用法始终相同。例如,调用函数的函数在我们看到的核心模块的某些版本和其他版本中RevertToSelf
由数字标识。这表明 ID 号的前三个字节与核心模块版本相关,或者更可能是基础设施版本,而最后一个字节是函数的实际 ID。 0x202103260x19181726
ID(最后一个字节) | 功能说明 |
---|---|
0x02 | 未实现的功能 |
0x19 | 检索内容smcache.dat并将其发送到 C&C 服务器 |
0x1A | 将数据写入smcache.dat |
0x25 | 模拟登录用户或 explorer.exe 进程 |
0x26 | 调用的函数RevertToSelf |
0x31 | 接收数据并将其复制到新分配的可执行缓冲区中 |
0x33 | 接收核心插件代码,将其放在磁盘上,然后加载并调用它 |
0x56 | 将值写入comment.dat |
Webdav
在初始化调用对象时,核心模块还尝试通过调用hxxps://dav.jianguoyun.com/dav/
使用用户名12121jhksdf
和密码连接到 URL 。该地址在分析时没有响应,但属于中文文件共享服务。我们的假设是,这要么是获取插件代码的一种方式,要么是核心模块本身的更新版本。121121212
WNetAddConnection3Wjianguoyun[.]com
插件
核心模块包含一个函数,该函数接收带有插件 DLL 数据的缓冲区,将其保存到kbg<tick_count>.dat
恶意软件工作目录中具有该名称的文件中,将其加载到内存中,然后调用其导出的函数InitCorePlug
。MoveFileExW
磁盘上的插件文件通过参数调用设置为在重启时删除MOVEFILE_DELAY_UNTIL_REBOOT
。有关插件的更多信息,请参阅专用插件部分。
在最后一步,恶意软件将遍历 smcache.dat 配置文件中包含的 C&C 服务器,并尝试访问每一个服务器。配置文件的结构smcache.dat
如下:
smcache.dat
配置文件的结构
协议字符串可以有九个可能的值之一:
TCP
HTTPS
UDP
DNS
ICMP
HTTPSIPV6
WEB
SSH
HTTP
根据与特定 C&C 域相关的协议,恶意软件会建立连接,向 C&C 发送信标并等待命令。
在这篇博文中,我们将主要关注 HTTP 协议选项,因为我们已经看到它被攻击者使用。
在使用 HTTP 协议时,核心模块首先打开两个持久化请求句柄——一个用于请求,POST
一个用于GET
请求,两者都对“/connect”
. POST
通过在请求中发送一个空缓冲区并检查请求的 HTTP 状态代码来测试这些句柄GET
。InternetWriteFile
在此之后,恶意软件通过使用先前打开的请求句柄调用 API 将初始信标发送到 C&C 服务器,并通过调用从请求POST
句柄中读取数据。GET
InternetReadFile
HTTP 数据包顺序
HTTP POST 信标
核心模块使用以下(大部分是硬编码的)HTTP 标头:
Accept: */*
x-cid: {<uuid>}GET/POST
– 为每个请求对生成新的 uuidPragma: no-cache
Cache-control: no-transform
User-Agent: <user_agent>
– 从注册表生成或硬编码(见下文)Host: <host_value>
– C&C 服务器域或来自 hostcfg.dat 的值(见下文)Connection: Keep-Alive
Content-Length: 4294967295
(最大 uint,仅在 POST 请求中)用户代理标头
User-Agent 字符串由注册表构造,与Dropper 1
模块中的方式相同(包括访问注册表时的登录用户模拟),或者如果注册表访问失败,则使用硬编码字符串:“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)”
.
主机头
设置此标头时,恶意软件会查找包含 的资源或如果找不到资源则 ID 1816
调用的文件。hostcfg.dat
如果找到资源或文件,则将其内容用作Host
所有 C&C 通信的 HTTP 标头中的值,而不是在smcache.dat
. 它不会更改发出请求的实际 C&C 域——这表明 C&C 服务器可能位于反向代理后面。
初始信标
恶意软件发送到 C&C 服务器的第一个数据包包含 base64 编码的 LZNT1 压缩缓冲区,包括新生成的 uuid(不同于 x-cid 标头中使用的 uuid)、受害者的用户名、操作系统版本和架构、计算机 DNS和 BIOS 名称以及在smcache.dat
或中找到的注释字符串 comment.dat
。如果此文件存在,则from 的值comment.dat
优先。
在我们分析的核心模块示例中,读取值的函数中实际上存在拼写错误 comment.dat
——它查找的是键 “COMMNET”
而不是“COMMENT”
.
在此之后,恶意软件进入一个循环,以其中一个调用对象的 ID 值的形式等待来自 C&C 服务器的命令。 发送到 C&C 服务器的每条消息都包含一个硬编码的四字节数字值,其结构与调用对象映射中用作键的值相同。我们看到的与发送到 C&C 服务器的消息相关的 ID 号是:
ID(最后一个字节) | 用法 |
---|---|
0x1B | 给 C&C 的消息,其中包含smcache.dat 内容 |
0x24 | 给 C&C 的消息,其中包含调试字符串 |
0x2F | 给 C&C 的一般信息 |
0x30 | 给 C&C 的消息,具体目的不明 |
0x32 | 向 C&C 发送与插件相关的消息 |
0x80 | 到 C&C 服务器的初始信标 |
关于协议的有趣观察,除了 HTTP 协议:
GET
请求和 cookie 标头中经过 Base64 编码的数据来发送初始信标Magic-Code: hhjjdfgh
我们观察到的核心示例经常通过OutputDebugStringA
和OutputDebugStringW
/或将调试字符串发送到 C&C 服务器来输出调试字符串。核心模块使用的调试字符串的例子有:它的文件路径在开始执行时,“run code ok”
在自我更新之后,“In googo”
在 的钩子中GetProcAddress
,“recv bomb”
以及“sent bomb”
在主 C&C 通信函数中等。
我们遇到了仅包含明文字符串的核心模块示例,但也遇到了某些字符串的示例,这些示例通过使用唯一(每个示例)硬编码密钥对它们进行异或运算来混淆。
即使在包含混淆字符串的样本中,也存在许多明文字符串,并且似乎没有逻辑来决定哪些字符串将被混淆,哪些不会。例如,大多数格式字符串都被混淆了,但重要的 IoC(如凭证或文件名)却没有。
为了说明这一点:从 comment.dat 文件中检索值的函数中的大多数字符串都被混淆了,并且调用GetPrivateProfileStringW
由GetProcAddress
API 动态解析,但是写入同一配置文件的函数中的所有字符串都是明文和可以直接调用WritePrivateProfileStringW
.
总体而言,核心模块代码非常健壮,并包含许多针对不同场景的故障保护和选项(例如,用于 C&C 通信的可能协议的数量),但是,我们可能只看到了这种仍在积极开发中的恶意软件样本有许多功能尚未实现,仅用作占位符。
在下面的部分中,我们将描述用于Core Module (Proto8)
扩展其功能的插件的功能。
我们将描述三个具有各种功能的插件,例如:
0985D65FA981ABD57A4929D8ECD866FC72CE8C286BA9EB252CA180E280BD8755
该插件是由上述无文件核心模块 ( ) 加载的 DLL 二进制文件Proto8
。它通过添加管理其他插件的方法来扩展恶意软件的功能。这些附加插件导出"GetPlugin"
核心插件执行的功能。
这部分使用与核心模块相同的基于命令 ID 的调用约定(见上文),添加了三个新方法:
ID(最后一个字节) | 功能说明 |
---|---|
0x2B | 将有关插件位置的信息发送到 C&C 服务器 |
0x2C | 删除插件 |
0x2A | 加载插件 |
核心模块使用的所有插件二进制文件都存储在名称下的工作目录中 kbg<tick_count>.dat
。加载后Core Plugin
,它首先从工作目录中删除所有插件——见下图。
2ABC43865E49F8835844D30372697FDA55992E5A6A13808CFEED1C37BA8F7876
我们调用的 DLLZload
是由Core Plugin
. 它导出四个函数:“GetPlugin”
、“Install”
和。该插件的主要功能是设置持久性、创建后门用户帐户以及将自身隐藏在受感染的系统上。我们将专注于导出的函数和默认函数,因为它们包含最有趣的功能。“core_zload””zload”zloadcore_zloadDllMain
这个函数相当简单,它的主要目标是执行另一个二进制文件。它首先检索Zload
插件二进制文件所在目录的路径,并在其中(<root_folder>)
创建一个新的子文件夹 "mec"
。在此之后,它重命名并将三个文件移动到其中:
Zload
文件本身为 <root_folder>\mec\logexts.dll
<root_folder>\spdlogd.exe
作为<root_folder>\mec\spdagent.exe
和<root_folder>\kb.ini
作为 <root_folder>\mec\kb.ini
文件被重命名和移动后,它通过执行二进制文件<root_folder>\mec\spdagent.exe
(最初<root_folder>\spdlogd.exe
)创建一个新进程。
该函数负责通过将自身注册到安全支持提供者 (SSP) 列表中来实现持久性。Local Security Authority (LSA)
Windows SSP DLL在系统启动时被加载到进程中。mimikat_ssp/AddSecurityPackage_RawRPC
此函数的代码与 github 上的源代码非常相似。
默认的 DllMain 函数利用了几种持久性和规避技术。它还允许攻击者在受感染的系统上创建后门帐户并降低整体系统安全性。
该插件首先检查其 DLL 是否由进程“lsass.exe”
或 “spdagent.exe”
. 如果 DLL 是由 加载的“spdagent.exe”
,它将调整当前进程的令牌权限。
如果它被加载“lsass.exe”
,它将“kb<num>.dll”
从配置文件中检索路径“kb.ini”
并将其写入注册表项下HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\WinSock2\\Parameters
AutodialDLL
。这确保了持久性,因为它会在“kb<num>.dll”
每次ws2_32.dll
调用 Winsock 2 库 ( ) 时加载 DLL。
为避免被检测到,插件首先检查“avp.exe”
(卡巴斯基反病毒软件)的运行进程列表,“NortonSecurity.exe”
如果发现其中任何一个则退出。如果在系统上找不到这些进程,它会继续通过将自己的进程名称更改为 来隐藏自己“explorer.exe”
。
该插件还具有绕过 UAC 机制并通过CMSTP COM
接口提升其进程权限的能力,例如CMSTPLUA {3E5FC7F9-9A51-4367-9063-A120244FBEC7}
.
接下来,插件执行注册表操作(详细信息可在附录中找到),通过以下方式降低系统的保护:
“Null Session”
用户列出域中的用户和组“Null Session”
用户访问共享文件夹完成此步骤后,插件将WebClient
服务启动类型更改为“Automatic”
. “DefaultAccount”
它使用名称和密码创建一个新用户,“Admin@1999!”
然后将其添加到“Administrator”
和“Remote Desktop Users”
组中。它还会在登录屏幕上隐藏新帐户。
作为最后一步,插件检查正在运行的进程列表中的进程名称“360tray.exe”
,如果都没有找到,则“360sd.exe”
执行该文件。"spdlogd.exe"
4C73A62A9F19EEBB4FEFF4FDB88E4682EF852E37FFF957C9E1CFF27C5E5D47AD
MecGame 是另一个可以由Core Plugin
. 它的主要目的类似于前面描述的Zload
插件——它执行二进制文件“spdlogd.exe”
并通过注册一个 RPC 接口来实现持久性UUID {1052E375-2CE2-458E-AA80-F3B7D6EA23AF}
。这个 RPC 接口代表一个函数,它解码和执行 base64 编码的 shellcode。
该MecGame
插件有多种执行 spdlogd.exe 的方法,具体取决于可用权限的级别。它还使用名称MSSYS.lck
或<UserName>-XPS.lck
根据加载它的进程的名称创建一个锁定文件,并删除文件atomxd.dll
和 logexts.dll
.
它可以作为具有服务名称的服务安装,也可以由通过库“inteloem”
连接到 Internet 的任何可执行文件加载。Winsock2
ABA89668C6E9681671A95B3D7A08AAE2A067DEED2D835BA6F6FD18556C88A5F2
此 DLL 是一个后门模块,它导出四个函数:“OperateRoutineW”
、“StartRoutineW”
和; 主要的恶意功能是。“StopRoutineW””WorkRoutineW”“StartRoutineW”
为了正确执行,后门需要通过文件映射名称为“Global\\4ED8FD41-2D1B-4CC3-B874-02F0C60FF9CB”
或的共享对象访问配置数据"Local\\4ED8FD41-2D1B-4CC3-B874-02F0C60FF9CB”
。不幸的是,我们没有遇到配置数据,因此我们缺少一些信息,例如该模块使用的 C&C 服务器域。
此后门支持 15 个命令(尽管其中一些未实现),由以下数字标识符引用:
命令编号 | 功能说明 |
---|---|
1 | 从执行的命令发送收集的数据。仅当使用代理的身份验证通过 NTLM 完成时才使用 |
2 | 查找有关进程的域名、用户名和安全标识符的信息explorer.exe。它找出所有远程桌面会话的用户名、域名和计算机名。 |
3 | 枚举根磁盘 |
4 | 枚举文件并找出它们的创建时间、上次访问时间和上次写入时间 |
5 | 创建具有重复令牌的进程。令牌是从列表中的进程之一获得的(见附录)。 |
6 | 枚举文件并找出创建时间、上次访问时间、上次写入时间 |
7 | 重命名文件 |
8 | 删除文件 |
9 | 创建目录 |
101 | 发送通过GetLastError API 函数获取的错误代码 |
102 | 枚举特定文件夹中的文件并找出它们的创建时间、上次访问时间和上次写入时间 |
103 | 上传文件到 C&C 服务器 |
104 | 未实施(保留) |
105/106/107的组合 | 创建目录并从 C&C 服务器下载文件 |
MulCom
后门能够通过 HTTP 和 TCP 协议进行通信。它与 C&C 服务器交换的数据分别通过 RC4 和 aPack 算法进行加密和压缩,使用从配置数据对象加载的 RC4 密钥。
它还能够使用 Basic、NTLM、Negotiate 等方案进行代理服务器身份验证,或者通过 SOCKS4 和 SOCKS5 协议进行身份验证。
在通过代理服务器成功认证后,后门发送由常量异或的数据0xBC
。该数据是具有以下结构的集合:
数据结构
这个后门的另一个有趣的功能是使用分层的 C&C 服务器。如果在配置对象中启用了这个选项(不是默认选项),第一个请求会去第一层C&C服务器,它返回第二层的IP地址。任何后续通信都直接进入第二层。
如前所述,我们发现MulCom
DLL 和FFRat
(aka FormerFirstRAT
) 之间存在一些代码相似之处。
我们已经描述了一个强大的模块化工具集,该工具集最有可能被一个针对东南亚赌博相关公司的中文 APT 组织使用。FFRat
正如我们在这篇博文中提到的,样本和MulCom
后门之间存在显着的代码相似之处。根据 Palo Alto Network 的报告,该报告已与公开相关联,该报告又与中文攻击者常用的后门FFRat
和"FormerFirstRAT''
工具相关联。 DragonOK groupPoisonIvyPlugX
我们还描述了两种不同的感染媒介,其中一种武器化了易受攻击的 WPS Office 更新程序。我们认为这种感染媒介所代表的威胁非常高,因为 WPS Office 声称在全球拥有 12 亿安装量,并且此漏洞可能允许以简单的方式在任何这些设备上执行任意代码。我们已就我们发现的漏洞与 WPS Office 联系,该漏洞已得到修复。
我们的研究指出了一些悬而未决的问题,例如可靠的归因和攻击者的动机。
360sd.exe
360rp.exe
360Tray.exe
360Safe.exe
360rps.exe
ZhuDongFangYu.exe
kxetray.exe
kxescore.exe
KSafeTray.exe
KSafe.exe
audiodg.exe
iexplore.exe
MicrosoftEdge.exe
MicrosoftEdgeCP.exe
chrome.exe
注册表路径HKEY_LOCAL_MACHINE | 注册表项 |
---|---|
SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System | LocalAccountTokenFilterPolicy = 1 FilterAdministratorToken = 0 |
SYSTEM\\CurrentControlSet\\Control\\Lsa | LimitBlankPasswordUse = 0 EveryoneIncludesAnonymous = 1 RestrictAnonymous = 0 |
System\\CurrentControlSet\\Services\\LanManServer\\Parameters | RestrictNullSessAccess = 0 NullSessionPipes = RpcServices |
默认硬编码 WD 名称(在 C:\ProgramData\
或 中创建%TEMP%
):
spptools
NewGame
TspSoft
InstallAtomx
用于测试权限game_<tick_count>.log
的文件: – 写入 WD 路径,然后删除该文件。
用于 WD 访问的硬编码安全描述符:. “D:(A;;GA;;;WD)(A;OICIIO;GA;;;WD)”
锁定文件名格式:“<working_dir>\<victim_username>-<comment_string>.log”
Global\sysmon-windows-%x
(%x 是受害者用户名的 MD5 哈希的 CRC32)
Global\IntelGameSpeed-%x
(%x 是受害者用户名的 MD5 散列的 CRC32
Global\TencentSecuriryAgent-P01-%s
(%s 是受害者的用户名)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。