尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
从源码到实战:OperatorsKit中InjectPoolParty的线程池注入原理
从源码到实战OperatorsKit中InjectPoolParty的线程池注入原理【免费下载链接】OperatorsKitCollection of Beacon Object Files (BOF) for Cobalt Strike项目地址: https://gitcode.com/gh_mirrors/op/OperatorsKitOperatorsKit是一个专注于Cobalt Strike Beacon Object Files (BOF)开发的开源项目其中InjectPoolParty模块提供了通过Windows线程池实现shellcode注入的高级技术。本文将从核心原理到实战应用深入解析这一模块如何利用系统原生机制实现隐蔽的代码执行。线程池注入现代对抗中的技术优势在传统注入技术如CreateRemoteThread普遍被EDR监控的背景下线程池注入凭借其系统原生性和低检测性成为高级渗透测试的优选方案。InjectPoolParty模块通过三种不同的线程池利用方式TP_TIMER/TP_DIRECT/TP_WORK实现无创建线程API调用的代码注入有效规避常规安全检测。核心优势解析无明显恶意API调用避免使用CreateRemoteThread等敏感函数系统行为模拟利用Windows线程池管理机制行为更接近正常进程多向量注入支持提供三种不同注入路径适应不同环境场景InjectPoolParty的技术实现架构InjectPoolParty的核心实现位于KIT/InjectPoolParty/injectpoolparty.c文件中主要包含四大功能模块进程句柄劫持、内存操作、线程池结构操作和注入向量管理。关键数据结构定义模块通过injectpoolparty.h定义了多种Windows内核结构的映射如线程池对象FULL_TP_POOL、工作项FULL_TP_WORK和定时器FULL_TP_TIMER等这些结构是实现线程池劫持的基础typedef struct _FULL_TP_POOL { struct _TPP_REFCOUNT Refcount; union _TPP_POOL_QUEUE_STATE QueueState; struct _TPP_QUEUE* TaskQueue[3]; struct _TPP_TIMER_QUEUE TimerQueue; // 更多结构成员... } FULL_TP_POOL, * PFULL_TP_POOL;这些结构定义使模块能够直接操作进程内存中的线程池数据为后续的代码注入铺平道路。进程句柄劫持技术InjectPoolParty通过HijackProcessHandle函数实现目标进程句柄的获取这是实现跨进程注入的关键步骤HANDLE HijackProcessHandle(PWSTR targetType, HANDLE targetProcess, DWORD accessRights) { // 通过NtQueryInformationProcess枚举进程句柄 // 匹配目标类型如TpWorkerFactory、IRTimer // 复制具有所需访问权限的句柄 }该函数利用NtQueryInformationProcess获取进程句柄表通过对象类型匹配如TpWorkerFactory筛选出可用于注入的线程池相关句柄避免直接打开敏感句柄带来的检测风险。三种注入向量的实现原理InjectPoolParty提供三种不同的线程池注入方式适应不同的系统环境和防御机制。TP_WORK工作项队列注入实现路径RemoteTpWorkInsertion函数核心原理通过操作线程池工作项队列将shellcode作为工作项插入执行队列关键步骤读取目标进程的线程池结构信息创建恶意工作项FULL_TP_WORK并设置回调为shellcode地址修改队列链表指针将恶意工作项插入高优先级任务队列pTpWork-Task.ListEntry.Flink TargetTaskQueueHighPriorityList; pTpWork-Task.ListEntry.Blink TargetTaskQueueHighPriorityList;这种方式利用系统线程池调度机制使shellcode在正常工作线程中执行具有极高的隐蔽性。TP_TIMER定时器事件注入实现路径RemoteTpTimerInsertion函数核心原理通过构造定时器对象将shellcode作为定时回调执行与工作项注入相比定时器注入增加了时间维度控制可用于实现延迟执行或周期性任务LARGE_INTEGER ulDueTime { 0 }; ulDueTime.QuadPart Timeout; // 设置超时时间 NtSetTimer2_t pNtSetTimer2 (NtSetTimer2_t)GetProcAddress(...); pNtSetTimer2(hTimer, ulDueTime, 0, Parameters);TP_DIRECTI/O完成端口注入实现路径RemoteTpDirectInsertion函数核心原理利用I/O完成端口机制将shellcode作为I/O完成回调执行这种方式通过ZwSetIoCompletion设置I/O完成端口的回调函数当有I/O操作完成时触发shellcode执行Direct.Callback shellcodeAddress; // 设置回调为shellcode地址 PTP_DIRECT RemoteDirectAddress VirtualAllocEx(...); WriteProcessMemory(hTargetPid, RemoteDirectAddress, Direct, sizeof(TP_DIRECT), NULL); ZwSetIoCompletion(hIoCompletion, RemoteDirectAddress, 0, 0, 0);完整注入流程解析InjectPoolParty的主函数go实现了完整的注入流程从参数解析到最终执行可分为四个阶段1. 参数解析与初始化BeaconDataParse(parser, args, len); option BeaconDataExtract(parser, NULL); // 注入方式(TP_TIMER/TP_DIRECT/TP_WORK) pid BeaconDataInt(parser); // 目标进程ID code BeaconDataExtract(parser, code_len); // shellcode数据2. 目标进程内存操作通过WriteCode函数在目标进程中分配内存并写入shellcode设置适当的内存保护属性PVOID WriteCode(HANDLE hProc, unsigned char * code, unsigned int code_len) { pAddress VirtualAllocEx(hProc, NULL, code_len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); WriteProcessMemory(hProc, pAddress, code, code_len, NULL); VirtualProtectEx(hProc, pAddress, code_len, PAGE_EXECUTE_READ, dwOld); return pAddress; }3. 注入向量选择与执行根据输入参数选择相应的注入方式以TP_WORK为例if (strcmp(option, TP_WORK) 0) { hWorkerFactory HijackProcessHandle(LTpWorkerFactory, hProc, WORKER_FACTORY_ALL_ACCESS); RemoteTpWorkInsertion(hWorkerFactory, pAddress, hProc); }4. 资源清理与结果反馈完成注入后清理句柄资源并通过BeaconPrintf返回执行结果BeaconPrintf(CALLBACK_OUTPUT, Successfully injected code in process ID [%d] at memory address [%p]., pid, pAddress);实战应用与注意事项环境准备使用InjectPoolParty前需准备以下环境Cobalt Strike 4.0环境已编译的BOF文件可通过KIT/InjectPoolParty/bofcompile.bat编译目标系统需为Windows 7及以上版本支持线程池API基本使用方法在Cobalt Strike中加载OperatorsKit.cna后可通过以下命令使用InjectPoolPartyinjectpoolparty [注入方式] [目标PID] [shellcode]常用注入方式参数TP_WORK工作项队列注入推荐默认使用TP_TIMER定时器事件注入适合延迟执行TP_DIRECTI/O完成端口注入适合I/O密集型进程检测规避建议为提高注入成功率建议选择系统进程或常用应用进程作为目标如svchost.exe、explorer.exe根据目标进程特性选择合适的注入向量结合内存加密技术保护shellcode免被静态分析总结与扩展InjectPoolParty作为OperatorsKit项目的重要模块展示了如何通过深入理解Windows内核机制实现高级代码注入技术。其多向量注入设计不仅提供了灵活的使用选择也为安全研究人员提供了对抗现代防御机制的新思路。项目后续可扩展方向增加更多线程池利用向量如TP_WAIT实现动态注入向量选择集成shellcode变形功能通过学习和研究InjectPoolParty的实现安全从业者可以更深入地理解Windows系统内部机制提升在复杂环境下的渗透测试能力。完整源码可参考项目中的KIT/InjectPoolParty目录建议结合Windows内核文档进行深入分析。【免费下载链接】OperatorsKitCollection of Beacon Object Files (BOF) for Cobalt Strike项目地址: https://gitcode.com/gh_mirrors/op/OperatorsKit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

基于C++语言实现图书管理系统

基于C++语言实现图书管理系统

代码功能分析该程序是一个简单的图书管理系统,基于C实现,采用结构体数组存储图书信息,支持添加、删除、查找、清空、修改和显示图书功能。以下是核心模块的说明和优化建议:关键功能模块数据结构Person结构体存储单本图书信息&…

📅 2026/10/9 12:29:10
什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南

什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南

什么是Go语言突变测试?go-mutesting让你的测试质量提升300%的终极指南 【免费下载链接】go-mutesting Mutation testing for Go source code 项目地址: https://gitcode.com/gh_mirrors/go/go-mutesting Go语言突变测试(Mutation Testing&#xf…

📅 2026/10/8 15:01:25
HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题

HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题

HandheldCompanion 完全攻略:一款免费工具,快速解决 Windows 掌机的控制器兼容与体感控制难题 【免费下载链接】HandheldCompanion A touch optimized GUI to increase your handheld gaming computer experience. 项目地址: https://gitcode.com/gh_m…

📅 2026/9/10 10:48:29
MORE NEWS

更多资讯

📰

网络游戏术语中英对照表:分类、译法与实操整理指南

1. 为什么需要一份中英对照的网络游戏术语表做游戏本地化、海外发行或者跨国公会管理的人,大概都经历过这种场面:一场团战打到关键阶段,队友在语音里喊“focus the healer”,你脑子里先翻译成“集火治疗”,再想“治疗是…

📰

VLA 系统学习第 15 课:为什么一个 Attention Head 还不够?——Multi-Head Attention 与 Transformer Block

第十四课标准答案先把上一课的 12 道题收掉,再把一些常见问题凝练成一段,给出问题与答案,最后进入第 15 课。1. Q、K、V 分别怎么理解?最适合当前阶段的理解是:\[ Q\text{我想找什么} \]\[ K\text{我拿什么和你进行匹配…

📰

超融合与vSAN实战:从硬件选型到故障排查的运维笔记

1. 从一个机柜说起:为什么我开始啃超融合三年前我还在用传统三层架构维护一个中小规模的虚拟化集群,三台服务器加一台磁盘阵列,外加两台光纤交换机。每次扩容都像做一场外科手术:先算控制器端口够不够,再算阵列的IOPS余…

📰

Bustub 个人实现源码解析:从编译到查询执行的完整工程实践

简介:本资源为CMU-15445数据库系统课程Bustub项目的个人实现源码,面向正在学习数据库系统原理、希望深入理解DBMS内部机制的高校学生与开发者。项目围绕存储管理、查询优化、事务处理等核心议题展开,适合作为课程实践参考与个人技术能力展示。…

📰

Java Future超时与取消机制详解:避免线程泄漏与雪崩

1. 从一个线上事故说起:为什么超时和取消这么重要前阵子帮一个朋友排查他们系统里的一个诡异问题:某个订单查询接口,平时响应两百毫秒,偶尔会卡住十几秒,最后抛出一堆超时异常,但下游服务的监控指标却一切正…

📰

IntelliJ IDEA 插件开发实战:从环境搭建到 PSI 操作与避坑指南

简介:这份《IntelliJ Platform Plugin 开发指导手册》面向 Java 开发者与 IDE 插件爱好者,帮助读者从零起步掌握 IntelliJ IDEA 插件开发,并逐步进阶到语言类高级插件。手册由上册、下册与附录三份独立文档组成,内容划分为四部分&…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬