
Esecuzione di syscall pulite indirette
HellsHall è una combinazione di HellsGate e syscall indirette.
In primo luogo, HellsHall controlla se l'indirizzo della syscall è hookato e tenta di recuperare il numero della syscall verificando la presenza dei seguenti byte:
0x4C, 0x8B, 0xD1, 0xB8 che rappresentano mov r10,rcx && mov eax,SSn. È così che ogni syscall dovrebbe iniziare.
A questo punto, HellsGate si limita a recuperare l'SSn della syscall (Syscall Number) e lo usa direttamente, facendo sì che una syscall venga chiamata dall'esterno dello spazio degli indirizzi di ntdll.dll. Questo è di per sé un IoC e può essere usato per rilevare tali syscall. Esempi di rilevamento:
HellsHall, invece, cerca un'istruzione syscall vicino all'indirizzo della funzione della syscall e poi salva l'indirizzo dell'istruzione della syscall in una variabile globale a cui verrà saltato in seguito, piuttosto che eseguire questa istruzione direttamente dal file . Ciò farà sì che la funzione della syscall venga eseguita dall'interno dello spazio degli indirizzi di , con l'unica differenza che non è hookata.
asmntdll.dllTartarusGate può essere usato per migliorare ulteriormente questa tecnica.


Bypassare l'EDR qui sotto utilizzando questa implementazione di HellsHall che usa le syscall NtAllocateVirtualMemory, NtProtectVirtualMemory e NtCreateThreadEx con una sezione RWX.

Il repository GitHub può essere trovato qui