导语:不是新CVE,但绝对值得红队收藏。daem0nc0re更新了PrivFu里的命名管道模拟PoC,新增
-m 2触发方式——通过任务计划程序把SYSTEM拽到你的命名管道里。当Print Spooler被禁、其他Potato家族失效时,这条路就是逃生通道。
一、PoC更新速览
PrivFu项目里的NamedPipeImpersonation PoC原本支持三种触发方式:-m 0 用cmd.exe做服务,-m 1 释放嵌入式dropper服务,-m 2(新增)用Windows任务计划程序触发SYSTEM进程连接命名管道。
更新的核心价值在第三条:蓝队关掉Print Spooler、封堵DCOM反射类诱饵进程后,任务计划程序仍然忠实执行任务。这种触发链路绕过了传统Potato家族依赖的spooler/DCOM客户端反射限制。
二、技术原理与 -m 2 关键代码
攻击链的技术基础是SeImpersonatePrivilege(Windows模拟权限)。任何服务账户默认都拥有这个权限,包括IIS、SQL Server、各种Windows服务运行时身份。完整流程拆成五个原子动作:
- 创建命名管道服务器:调用CreateNamedPipe在
\.pipePrivFuPipe上建一个允许Everyone连接的命名管道 - 触发SYSTEM进程连接:通过任务计划程序创建SYSTEM权限任务,让其进程主动连接我们的管道
- 读取消息:连接建立后必须先ReadFile读取至少一个字节,否则ImpersonateNamedPipeClient返回ERROR_CANNOT_IMPERSONATE
- 模拟客户端:调用ImpersonateNamedPipeClient,线程上下文切换为SYSTEM身份
- 复制令牌启动进程:OpenThreadToken拿模拟令牌,DuplicateTokenEx转成TokenPrimary,最后CreateProcessAsUser启动目标命令

-m 2 的实现藏在一个PowerShell模板里:
public static string PoshTemplate { get; } =
"$d = [System.IO.Pipes.PipeDirection]::Out; " +
"$c = [System.IO.Pipes.NamedPipeClientStream]::new("localhost", "{0}", $d); " +
"$c.Connect(3000); $c.Write(@(0x00), 0, 1); $c.Dispose()";
模板生成PowerShell代码:连接 \localhostpipePrivFuPipe 并写入空字节。localhost明确客户端走本地命名管道,Out方向满足”先ReadFile再ImpersonateNamedPipeClient”的前置条件。CreateSystemExecTask用任务计划程序COM接口创建SYSTEM权限任务,task.Run(null)后立即 folder.DeleteTask,整个”创建-运行-删除”压缩在一个调用里,跑完不留任务残留。
三、PoC执行效果
完整跑一遍的关键输出标记:
[+] SeImpersonatePrivilege is enabled successfully.
[*] Created Named Pipe Server @ \.pipePrivFuPipe
[*] Trying to create and start a SYSTEM task.
[+] SYSTEM task is created, run and deleted successfully.
[+] Impersonated as "NT AUTHORITYSYSTEM" (SID: S-1-5-18).
[+] SYSTEM shell is executed successfully.
SID: S-1-5-18就是SYSTEM的标识符。弹出的shell跑在SYSTEM上下文中,可以执行任何管理员都搞不定的操作。
四、检测与防御
对蓝队来说,PoC更新比新CVE更难处理——没有补丁可打,纯粹依赖滥用既有合法机制。三个可落地的检测点:
Sysmon告警:监控Event ID 17/18(命名管道创建/连接),重点关注非系统进程创建的命名管道;Event ID 1中powershell.exe以-EncodedCommand启动并带短生命周期可疑参数;Event ID 4698(计划任务创建)+ 4699(删除)短时间内成对出现是强信号。
任务计划程序日志:开启Microsoft-Windows-TaskScheduler/Operational审核日志,任何非管理员创建即运行的SYSTEM任务都该拉警报。把IIS应用程序池身份设为”应用程序池标识”而非本地服务账户,让SeImpersonatePrivilege不进入执行上下文。

EDR侧需要hook ImpersonateNamedPipeClient的前置条件——单进程短时间内”创建命名管道+读取消息+ImpersonateNamedPipeClient+DuplicateTokenEx+CreateProcessAsUser”这一串API调用本身就是高保真指纹。
五、总结
SeImpersonatePrivilege滥用攻击从2017年的RottenPotato开始玩了快十年,PrintSpoofer、GodPotato、EfsPotato这些变种把可触发点扫了一遍。但任务计划程序这条链路因为过于”普通”反而一直被忽视——哪个Windows系统能不开Task Scheduler服务?
PoC源码已经在GitHub公开(仓库 daem0nc0re/PrivFu)。红队拿来当备用提权路径,蓝队把这套指纹加入EDR规则——攻防博弈里没有一招鲜吃遍天的工具,只有持续演进的对抗。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容