在渗透测试与权限维持的场景中,攻击者通常会利用任务计划来创建持久化后门,以确保恶意代码在系统重启后仍能自动执行。然而,常规的任务计划项可能会被安全工具检测到,因此攻击者需要隐匿任务计划,以规避安全监控。本文将探讨一种基于注册表修改与文件系统重定向绕过的任务计划隐藏技术。
Wow64DisableWow64FsRedirection 是 Windows 提供的一个 API,作用是临时禁用 32 位进程的文件系统重定向,这样 32 位应用访问真正的 System32
目录,而不是被重定向的 SysWOW64
目录。
1.1 函数的定义
[DllImport("kernel32.dll", SetLastError =true)]publicstaticexternintWow64DisableWow64FsRedirection(refIntPtr ptr);
ptr参数传递一个指针变量,用于存储重定向状态的句柄,后续可用于恢复重定向,成功时返回 非零值(TRUE
)。
1.2 WOW64
Windows 允许在 64 位系统 上运行 32 位应用程序,这个机制叫 WOW64,比如 C:WindowsSystem32
只有 64 位版本,Windows 采用了 文件系统重定向,让 32 位进程访问 System32
目录时,实际上访问的是 C:WindowsSysWOW64
。
通过 Wow64DisableWow64FsRedirection()
,可以让 32 位进程直接访问 System32
,而不是 SysWOW64,如下代码禁用文件系统重定向,执行64位 cmd.exe。
usingSystem;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;classProgram{[DllImport("kernel32.dll", SetLastError =true)]publicstaticexternintWow64DisableWow64FsRedirection(refIntPtr ptr);[DllImport("kernel32.dll", SetLastError =true)]publicstaticexternintWow64RevertWow64FsRedirection(IntPtr ptr);staticvoidMain(){IntPtr oldValue = IntPtr.Zero;// 禁用文件系统重定向if(Wow64DisableWow64FsRedirection(ref oldValue)!=0){ Console.WriteLine("成功禁用文件系统重定向!");// 运行 64 位 cmd.exe Process.Start("C:\Windows\System32\cmd.exe");// 恢复文件系统重定向Wow64RevertWow64FsRedirection(oldValue);}else{ Console.WriteLine("禁用失败,错误代码:"+ Marshal.GetLastWin32Error());}}}
运行后,运行
System32cmd.exe
,而不是 SysWOW64cmd.exe
。
SOFTWAREMicrosoftWindowsNTCurrentVersionScheduleTaskCacheTree 这个注册表键值用于存储 Windows 任务计划程序的任务信息。位于 TaskCache 分支下,主要作用是记录 计划任务的元数据,并维护任务的执行状态。该分支下的结构如下所示。
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionScheduleTaskCacheTree ├── Task1 ├── Task2 ├── Windows │ ├── Defender │ │ ├── Windows Defender Scheduled Scan │ │ ├── Windows Defender Cache Maintenance │ ├── UpdateOrchestrator │ ├── WPD
攻击者可以在 TaskCacheTree
中创建新的计划任务,实现权限维持。Sharp4TaskRun.exe 便是这样一款在红队操作中用于创建持久性计划任务的工具,能够通过移除注册表中的特定值来隐藏计划任务,使其在任务管理器中不可见。
要使用此技术,执行该操作的用户需要具备 NT AUTHORITY/SYSTEM 权限。
使用 Sharp4TaskRun.exe 创建一个每日触发的隐藏计划任务,计划任务将在指定时间运行。
.Sharp4TaskRun.exe /method:create /taskname:Cleanup123 /trigger:daily /starttime:20:19/program:winver.exe /description:"Some description"/author:Ivan1ee /technique:hide
其中,/technique:hide 参数会触发隐藏计划任务的功能,成功启动winver.exe,并且以SYSTEM权限启动,如下图所示。
综上所述,Sharp4TaskRun.exe 是一款在红队操作中用于创建持久性计划任务的工具,除了能创建一般的计划任务之外,还可以通过移除注册表中的特定值来隐藏计划任务,使其在任务管理器中不可见。文章涉及的工具已打包在星球,感兴趣的朋友可以加入自取。
从漏洞分析到安全攻防,我们涵盖了 .NET 安全各个关键方面,为您呈现最新、最全面的 .NET 安全知识,下面是公众号发布的精华文章集合,推荐大伙阅读!
20+专栏文章
海量资源和工具
专属成员交流群
已入驻的大咖们
欢迎加入我们
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...