解读:
这篇文章介绍了一种利用自带易受攻击的驱动程序(BYOVD)技术的新方法,通过结合使用Windows符号链接,可以利用更多的驱动程序来进行系统攻击。文章详细探讨了如何通过文件写入功能和符号链接来绕过EDR(端点检测与响应)系统,特别是在Windows 11操作系统上禁用Windows Defender的实现方式。这项技术的核心创新在于,无需依赖传统的漏洞驱动程序,攻击者可以通过任何具有文件写入功能的驱动程序,配合符号链接,达成更为高效的攻击。这种新方式将为攻击者提供更多的攻击途径,也使得防护措施面临更大的挑战。
一、引言
在本文中,我将向您介绍一种全新的利用 BYOVD 技术的方法。我发现,通过与 Windows 符号链接结合使用,我们可以利用更多驱动程序,只要这些驱动程序具有我们可以在特定时间点主动触发的文件写入功能。这将使 BYOVD 技术提升到一个全新的水平,同时也扩大了可能被利用的驱动程序的数量。
为了说明这项新技术,我将演示使用它来删除 Windows 11 上的 Windows Defender 的实用概念。
二、核心
1.“自带易受攻击的驱动程序”(BYOVD)技术
自带易受攻击的驱动程序 (BYOVD) 是一个安全术语,指的是攻击者利用合法但易受攻击的驱动程序来控制系统的一种技术。本质上,他们自带已知漏洞的驱动程序,从而绕过安全措施并以提升的权限执行恶意代码。
BYOVD 技术已成为威胁行为者青睐的策略。现实生活中使用 BYOVD 技术的网络犯罪团伙的一些示例包括:
-
Kasseika 勒索软件 组织利用 Martini 驱动程序终止进程,包括防病毒产品、安全工具、分析工具和系统实用工具。
-
Water Bakunawa 使用 EDRKillShifter 来逃避检测并破坏安全监控流程。
-
BlackByte 勒索软件团伙使用 BYOVD 技术利用 MSI Afterburner RTCore64.sys 驱动程序中的漏洞。这使他们能够绕过安全产品并禁用安全解决方案所依赖的 1,000 多个驱动程序。
自带漏洞驱动程序技术的局限性在于,我们必须找到具有可利用漏洞的驱动程序。这些驱动程序通常位于 Microsoft 的漏洞驱动程序阻止列表中。随着阻止列表的定期更新,随着时间的推移,可用于内核漏洞利用的具有漏洞的驱动程序数量将越来越少。
2. 利用 Windows 符号链接利用任意驱动程序的文件写入功能
A. EDR 收集日志的数据传输流程
我们知道,端点检测和响应(EDR)会在机器上安装一个 Minifilter ,通过这个Minifilter来收集进程、文件等相关的事件,当然它们会一直运行在内核模式下。
使用 Filter Manager 简化 I/O 堆栈
Minifilter 是一种拦截和监控文件系统操作的驱动程序。EDR 解决方案使用 Minifilter 来捕获文件创建、修改、删除和访问等事件。
EDR Minifilter 通常不会直接将收集到的日志发送到服务器。相反,它们会收集数据并将其传递给在端点上运行的用户模式服务。此用户模式服务负责处理、分析并将数据传输到服务器
这种操作模型的实现将有助于减轻 Minifilter 的负载,并避免在 Minifilter 必须执行解析和数据分析时出现潜在的内核漏洞的更大问题。
对于盲 EDR,通常只有两种方法:
-
一是攻击EDR的Minifilter:找到一种方法将其从操作系统中卸载,从而阻止Windows加载Minifilter。
-
第二步就是瞄准用户态服务,找到一种方法来终止这个服务的进程。此时,EDR将无法再向分析服务器发送日志。
B. 利用驱动程序的文件写功能破坏EDR的用户态服务
由于EDR的用户态服务是随Windows一直启动的,因此该服务的可执行文件会一直处于使用状态,无法被覆盖,所以我们要么先终止该服务的进程,要么在该服务执行前进行文件写入。
如果我们遵循终止 EDR 服务进程的方法,我们将像往常一样恢复到 BYOVD 利用过程:即利用驱动程序的内核漏洞来杀死 EDR 进程。
因此,在本文中我将重点介绍如何销毁EDR服务的可执行文件,具体来说,主要步骤如下:
-
步骤1:搜索能够在加载时写入文件而不需要 I/O 控制代码(IOCTL)的 Minifilter ,特别是那些调用 ZwWriteFile API 的 Minifilter。
-
步骤2 :对这些 Minifilter 进行逆向工程或调试,以确定正在写入的文件路径。
-
步骤3:为Minifilter注册一个内核服务,以便它在启动时加载。
-
步骤4:从Minifilter的输出文件创建到EDR服务的可执行文件的符号链接。
-
步骤5:重新启动Windows,检查EDR服务的可执行文件是否已被破坏。
在步骤 1 中,您可以使用ZwCreateFile函数,但是由于 ZwWriteFile肯定会在某个时刻 调用ZwCreateFile ,因此如果ZwWriteFile已经被调用,则目标文件肯定会被覆盖。
在步骤3中,必须确保这个新注册的服务始终在与EDR的可执行文件相关的服务之前加载和执行。
如何保证它总是先执行?
创建取得比赛胜利的钥匙的魔力在于注册表路径:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlServiceGroupOrder
此注册表项定义系统启动期间服务组的加载顺序。服务组是操作系统按特定顺序加载的服务集合,以确保系统稳定性和正常运行。
该键包含一个名为“ List ” 的值,该值是一个多字符串 (REG_MULTI_SZ) 值。此列表中的每个字符串代表一个服务组名称。
-
软链接重定向到存储文件的位置。 -
当您打开软链接时,您会被重定向到目标位置。 -
软链接可以指向文件和目录。
实际的例子,如果你在 D:Documents中 有一个名为example.txt的文件,并且你想在 C:UsersYourUserLinks中创建指向它的符号链接,则你可以使用以下命令:
mklink "C:UsersYourUserLinksexample.txt" "D:Documentsexample.txt"
PROCMON24的 “组”名为“ FSFilter 活动监视器”,“类型”为 1,这意味着它将作为在内核级别运行的 Minifilter。
至于 Windows Defender,WinDefend 服务将调用反恶意软件服务可执行文件 (MsMpEng.exe)。
WinDefend服务 注册表没有“ Group ”值,这意味着它将在“ ServiceGroupOrder ”列表的最后加载。
服务“类型”值:
-
0x01:内核设备驱动程序。
-
0x02:文件系统驱动程序。
-
0x04:适配器驱动程序。
-
0x08:识别器驱动程序。
-
0x10:Win32 自身进程。服务在其自身进程中运行。
-
0x20:Win32 共享进程。该服务与其他服务共享一个进程。
从以上信息中,我可以得出结论,PROCMON24将始终在WinDefend之前加载。这意味着当PROCMON24运行时,反恶意软件服务可执行文件尚未处于活动状态,从而允许潜在的覆盖。
Process Monitor 会将启动过程的事件记录到文件“ C:WindowsProcmon.pmb ”中。此时,为了禁用 Defender,在启用“启动日志记录”功能后,我将创建一个符号链接,如下所示:
mklink C:WindowsProcmon.pmb "C:ProgramDataMicrosoftWindows DefenderPlatform4.18.24090.11-0MsMpEng.exe"
创建符号链接后,为了激活反恶意软件服务可执行文件的覆盖和销毁,从而直接删除 Windows Defender,我将重新启动 Windows。
重启 Windows 后,我将通过检查反恶意软件服务可执行文件来检查是否成功关闭 Windows Defender。如果该文件已被更改,它将失去其签名,并且 Windows 服务管理器将无法运行它。或者,在更好的情况下,它将失去 PE 文件格式并成为 Process Monitor 的日志文件。
反恶意软件服务可执行文件已被覆盖
现在,我已成功禁用 Windows Defender。反恶意软件服务可执行文件已被破坏,因为PROCMON24已覆盖其内容。在服务管理器中检查,WinDefend 不再处于“正在运行”状态。
服务控制管理器 将在事件日志中 报告无法运行 WinDefend服务:
原文始发于微信公众号(Ots安全):BYOVD 更上一层楼。使用 Windows 符号链接进行盲 EDR
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论