part1
点击上方蓝字关注我们
将二进制空间安全设为"星标⭐️"
第一时间收到文章更新
技术背景
为了隐藏其在受感染系统中的活动,APT(高级持续性威胁)组织使用各种技术来绕过防御机制。这些技术大多众所周知,并且可被EPP(端点保护平台)解决方案以及EDR(端点检测与响应)威胁监控和响应工具检测。例如,在Windows系统中,网络犯罪分子可能使用内核级rootkit,特别是恶意驱动程序来隐藏其活动。然而,在最新版本的Windows中,内核模式驱动程序只有在经过微软数字签名的情况下才能被加载。攻击者绕过这一保护机制的方法是使用具有合法签名但包含漏洞函数的合法驱动程序,在内核上下文中执行恶意操作。监控工具会跟踪此类驱动程序的安装,并检查执行安装的应用程序。但如果是安全软件自身执行了不安全操作怎么办?这类软件通常被监控工具信任,因此不会引起怀疑。
在2024年初, 在调查与ToddyCat相关的事件时,在多个设备的temp
目录下发现了一个名为version.dll
的可疑文件。
这是一个用C++编写的64位DLL,实为一个复杂的工具,被命名为TCESB。此前在ToddyCat攻击中未曾见过,目的是悄无声息地执行恶意Payload,绕过设备上安装的防护和监控工具。
卡巴斯基产品将此工具识别为:
-
Trojan.Win64.ToddyCat.a
-
Trojan.Win64.ToddyCat.b
DLL代理技术
静态分析显示该DLL导出的所有函数实际上都从系统文件version.dll
(版本检查和文件安装库)中导入了同名函数。
但仅凭DLL代理不足以执行恶意代码。加载该DLL的应用程序本身必须存在安全漏洞,例如不安全的DLL搜索路径漏洞:在加载动态库时首先在当前目录搜索,而非系统目录。若当前目录中存在伪装的恶意DLL,应用程序就会加载该DLL而非原始文件。微软已发布官方建议来防止这种不安全的DLL加载。
ESET扫描器漏洞
我们花了些时间才找出是哪个文件加载了TCESB工具。通过分析出现恶意DLL的系统目录,在某台设备上发现与TCESB同一目录下有一个无扩展名的可执行文件ecls
。以此可以推断攻击者在传输文件时因文件名错误复制了两份,其中一份执行恶意活动后被删除,另一份残留在系统中。
该文件是ESET EPP(端点保护平台)解决方案的一部分——命令行启动的扫描器(ESET Command line scanner)。动态分析显示,扫描器以不安全方式加载version.dll
,会优先在当前目录中查找,再搜索系统目录。攻击者利用此漏洞实现恶意DLL的加载。
研究人员将该漏洞报告给ESET并通过协作式漏洞披露流程提交。ESET注册了CVE-2024-11859编号,并在2025年1月21日发布补丁修复漏洞。4月4日,该漏洞的信息出现在ESET安全通告中。
在虚拟环境中运行TCESB后,我们看到ESET命令行扫描器进程的地址空间中存在两个version.dll
文件——一个是系统库,另一个是TCESB的恶意DLL。
工具基本功能
为确定该恶意工具的主要功能,检查了DLL中的字符串。
这些字符串未被混淆。搜索显示,大部分字符串来自一个开源的恶意工具EDRSandBlast,其设计目的就是绕过安全解决方案。卡巴斯基将其识别为:HEUR:HackTool.Win64.EDRSandblast.a
。ToddyCat在此基础上创建了TCESB DLL,并对原始代码进行修改以扩展其功能。
该工具可修改操作系统内核结构,以关闭通知例程,例如有关系统中新建进程或加载事件的通知。
搜索内核内存中的结构地址
为了定位用于禁用通知例程的内核结构,TCESB会识别其运行环境中的Windows内核版本,调用函数GetNtoskrnlVersion()
。
接着它从两个数据源之一获取结构偏移信息:CSV文件或PDB文件。
工具首先查找其资源区内的CSV文件。该表格包含多个流行内核版本及其对应的偏移信息。TCESB逐行搜索匹配的内核版本。
我们比对了EDRSandBlast开源库中的CSV文件及其更新历史,发现TCESB所含的CSV内容与EDRSandBlast 2022年8月13日的版本一致,而EDRSandBlast在2023年10月6日之后添加的行在TCESB中未包含,说明TCESB开发者是基于该时间段使用的EDRSandBlast代码。
如果CSV未包含当前版本所需结构的信息,TCESB则尝试从PDB文件中读取。它会访问C:WindowsSystem32ntoskrnl.exe
文件,提取内核版本信息后插入下列URL模板:
https://msdl.microsoft.com/download/symbols/%s/%08X%04hX%04hX%016llX%X/%s
通过该地址向微软调试信息服务器发送GET请求以下载PDB文件,保存至当前目录后解析所需结构偏移。
漏洞驱动程序(BYOVD)
为了修改内核中存储系统事件通知回调的结构,TCESB采用了“自带漏洞驱动(BYOVD)”技术。它通过设备管理器接口安装漏洞驱动,使用包含安装信息的INF文件。
该驱动为Dell的DBUtilDrv2.sys
,存在CVE-2021-36276漏洞。此驱动用于更新PC的驱动程序、BIOS和固件。
加载恶意Payload
一旦漏洞驱动安装成功,TCESB进入循环状态,每两秒检测一次当前目录中是否存在特定命名的Payload文件——该文件可能不会立即存在,以便操作员确认工具运行无误后再传输。文件一旦被发现,就会被送往解密函数。
分析了两个TCESB样本。尽管未获取到Payload本体,但其文件名分别为kesp
与ecore
,均无扩展名。
工具代码表明,Payload文件的数据使用AES-128加密。
读取的数据被加载到内存中并执行。
总结
本文中发现了一个由 ToddyCat APT 组织试图在受感染系统中用于隐蔽执行的复杂工具。该工具利用了一系列漏洞,同时基于一个已知的开源恶意软件的旧版本,并在此基础上进行了修改,以扩展其功能。
原文始发于微信公众号(二进制空间安全):绕过数字签名,利用安全软件上下文执行恶意代码
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论