
Indirect Dynamic Syscall, SSN + ordenación de direcciones Syscall mediante enfoque Modified TartarusGate + Remote Process Injection vía APC Early Bird + genera un proceso sacrificial como proceso objetivo + política de mitigación (ACG+BlockDll) en el proceso generado + PPID spoofing + resolución de API desde TIB + API hashing
Una herramienta Dropper personalizable dirigida a Windows.
Desventaja: Si se reanudan los hilos, todos los eventos que ocurrieron durante la suspensión del registrador de eventos se registran de nuevo.
¡Así que pensé en matarlos en su lugar!
"Es más invasivo que la suspensión, pero la decisión siempre es del operador. Además, matar hilos se registra a nivel de kernel" - @SEKTOR7net
Directamente vía compilador de VS:


./compile.bat
PS C:> .\x64\Release\indirect.exe
[!] ¡Incorrecto!
[->] Sintaxis: .\x64\Release\indirect.exe <PPID a suplantar>
https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

TIB:
Registros GS y FS:
Estructura PEB LDR:
BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection por @monnappa22
Una imagen de la memoria del proceso del enlace anterior:

De labs.cognisys.group, un blog de @D1rkMtr
:

TIB -> TEB -> PEB -> Resolver Nt API y hashing de API
https://stackoverflow.com/questions/41277888/iterating-over-peb-dllname-shows-only-exe-name
https://doxygen.reactos.org/d7/d55/ldrapi_8c_source.html#l01124
labs.cognisys.group, un blog de @D1rkMtr
Una imagen del fragmento del enlace anterior, que usé aquí para resolver API dinámicamente sin offsets codificados:

El código de hashing de API que apliqué:
#include <stdint.h>
#include <stdio.h>
#include <Windows.h>
DWORD64 djb2(const char* str)
{
DWORD64 dwHash = 0x7734773477347734;
int c;
while (c = *str++)
dwHash = ((dwHash << 0x5) + dwHash) + c;
return dwHash;
}
int main(int argc, char** argv)
{
if (argc < 2)
{
printf("[!] ¡Incorrecto!\n");
printf("[->] Sintaxis: .\\%s <NTFuncName>\n\n", argv[0]);
return 1;
}
const char* string = argv[1];
DWORD64 hashvalue = djb2(string);
printf("Valor hash: 0x%llX\n", hashvalue);
return 0;
}
Política de mitigación ACG (Arbitrary Code Guard)/BlockDll:

Detección de suplantación de PPID:
Detección Moneta y detección PESieve:\
Moneta:

PESieve:
