
Indirect Dynamic Syscall, SSN + ordenação de endereços de Syscall via abordagem Modified TartarusGate + Remote Process Injection via APC Early Bird + Gera um processo sacrificial como processo alvo + política de mitigação (ACG+BlockDll) no processo gerado + PPID spoofing + resolução de API a partir do TIB + API hashing
Uma ferramenta Dropper customizável direcionada ao Windows.
Desvantagem: Se as threads forem retomadas, todos os eventos que ocorreram durante a suspensão do Event Logger são registrados novamente!
Então, pensei em matá-las!
"É mais invasivo do que a suspensão, mas a decisão é sempre do operador. Além disso, matar threads é registrado no nível do kernel" - @SEKTOR7net
Diretamente pelo compilador VS:


./compile.bat
PS C:> .\x64\Release\indirect.exe
[!] Errado!
[->] Sintaxe: .\x64\Release\indirect.exe <PPID para falsificar>
https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

TIB:
Registradores GS e FS:
Estrutura PEB LDR:
BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection por @monnappa22
Uma imagem da memória do processo do link acima:

De labs.cognisys.group, um blog por @D1rkMtr
:

TIB -> TEB -> PEB -> Resolver Nt API e 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, um blog por @D1rkMtr
Uma imagem do trecho do link acima, que usei aqui para resolver API dinamicamente sem codificar Offsets:

O código de hashing de API que apliquei:
#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("[!] Errado!\n");
printf("[->] Sintaxe: .\\%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 mitigação ACG(Arbitrary Code Guard)/BlockDll:

Detecção de Spoofing de PPID:
Detecção Moneta e Detecção PESieve:\
Moneta:

PESieve:

Varredura Capa:
