Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
DarkWidow — Indirect Dynamic Syscall, SSN + Syscall address sorting tramite Modified TartarusGate approach + Remote Process Injection via APC Early Bird + Genera un processo sacrificale come processo target + (ACG+BlockDll) politica di mitigazione sul processo generato + PPID spoofing + API resolving da TIB + API hashing | Kitploit
Strumenti/GitHubGitHub/reveng007/darkwidow
Escalation di PrivilegiExploitEvasione IDS/IPSPost-ExploitAnalisi MalwareAnalisi di BinariApprendimento e FormazioneRed TeamingSviluppo Payload
GitHubreveng007/darkwidow

DarkWidow

Vedi Repository
80710437 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

Indirect Dynamic Syscall, SSN + Syscall address sorting tramite Modified TartarusGate approach + Remote Process Injection via APC Early Bird + Genera un processo sacrificale come processo target + (ACG+BlockDll) politica di mitigazione sul processo generato + PPID spoofing + API resolving da TIB + API hashing

Condividi

DarkWidow

Uno strumento Dropper personalizzabile mirato a Windows.


Menzioni d'Onore:

  1. BlackHat Asia, 2024 - Call For Tools
  2. BlackHat USA, 2024 - Call For Tools
  3. BlackHat SecTor, 2024 - Call For Tools
  4. BlackHat Europe, 2024 - Call For Tools
  5. Wild West Hacking Fest 2024 - Arsenal
  • Un grande ringraziamento a Soumyadeep Da aka @SoumyadeepBas12 per avermi incoraggiato a candidarmi a queste conferenze, altrimenti non l'avrei mai fatto :)
  • Un grande ringraziamento a Faran aka @Chrollo_l33t per avermi aiutato a creare le slide e la presentazione per questo strumento :)

Capacità:

  1. Syscall dinamico indiretto. (MITRE ATT&CK TTP: T1106)
  2. Ordinamento degli indirizzi SSN + Syscall tramite approccio TartarusGate modificato
  3. Iniezione di processo remota tramite APC Early Bird per TAGLIARE la telemetria intercettata dall'EDR. (MITRE ATT&CK TTP: T1055.004)
  4. Genera un processo sacrificale come processo target, senza interrompere i processi già aperti nell'ambiente.
  5. Politica di mitigazione ACG (Arbitrary Code Guard)/BlockDll sul processo sacrificale generato.
  6. Spoofing PPID (MITRE ATT&CK TTP: T1134.004)
  7. Risoluzione di Api e Dll dal TIB (direttamente tramite offset (da TIB) -> TEB -> PEB -> risoluzione Nt Api) (MITRE ATT&CK TTP: T1106)
  8. Hashing di Nt API con la maledizione (MITRE ATT&CK ID: S0574)

Bonus: Se benedetti con privilegio Admin =>

  1. Disabilita il registro eventi tramite uccisione dei thread del servizio EventLog (MITRE ATT&CK TTP: T1562.002)

Svantaggio: Se i thread vengono ripresi, tutti gli eventi che si sono verificati durante la sospensione del Logger eventi, vengono registrati di nuovo!

Quindi, ho pensato di ucciderli invece!

"È più invasivo della sospensione, ma la decisione spetta sempre all'operatore. Inoltre, uccidere i thread viene registrato a livello kernel" - @SEKTOR7net

Mentre uccidevo solo quei thread nell'impianto di syscall indiretto, stavo riscontrando un errore. Non sono riuscito a ottenere il valore "eventlog" SubProcessTag Value. Quindi ho pensato di uccidere tutti i thread, cioè di uccidere l'intero processo (il svchost.exe responsabile). Sì, creando un IOC!.

=

1. Bypass degli hook EDR/Ring-3/UserLand

2. La syscall e l'istruzione return vengono eseguite dalla memoria di ntdll.dll

3. Il rilevamento dell'EDR basato sul controllo dell'indirizzo di ritorno nello stack di chiamate può essere bypassato.

Compilazione:

root@kitploit:~
Direttamente tramite compilatore VS:

image

Aggiungere anche il flag del compilatore /MT! => Per collegare staticamente le funzioni CRT in un binario (Sì, hai indovinato, gonfia l'impianto)

image

  1. Anche tramite compile.bat (preferisci l'opzione 1.)
root@kitploit:~
./compile.bat

Utilizzo:

root@kitploit:~
PS C:> .\x64\Release\indirect.exe
[!] Sbagliato!
[->] Sintassi: .\x64\Release\indirect.exe <PPID da falsificare>

In Azione:

https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

Esecuzione riuscita senza creare allarme su Sofos XDR EndPoint:

SofosXDREvade


Ulteriori Miglioramenti:

  1. Spoofing PPID (metodo Emotet)
  2. Caso d'uso Molto più Furtivo per la disabilitazione del registro eventi!

Parti del codice e link che hanno aiutato:

  1. TIB:

    • https://en.wikipedia.org/wiki/Win32_Thread_Information_Block
    • https://www.wikiwand.com/en/Win32_Thread_Information_Block
  2. Registri GS e FS:

    • https://stackoverflow.com/questions/39137043/what-is-the-gs-register-used-for-on-windows
    • https://stackoverflow.com/questions/10810203/what-is-the-fs-gs-register-intended-for#:~:text=The%20registers%20FS%20and%20GS,to%20access%20thread%2Dspecific%20memory.
  3. Struttura PEB LDR:

    • BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection di @monnappa22

    • Un'immagine della memoria del processo dal link sopra:
      alt text

    • Da labs.cognisys.group, un blog di @D1rkMtr :
      alt text

  4. TIB -> TEB -> PEB -> Risoluzione Nt API e hashing 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 di

root@kitploit:~

#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("[!] Sbagliato!\n");
		printf("[->] Sintassi: .\\%s <NomeNTFunc>\n\n", argv[0]);
		return 1;
	}

	const char* string = argv[1];

	DWORD64 hashvalue = djb2(string);

	printf("Valore Hash: 0x%llX\n", hashvalue);

	return 0;
}

  1. Politica di mitigazione ACG (Arbitrary Code Guard)/BlockDll:

    • link:
    • Protecting Your Malware di @xpn
    • Wraith di @winterknife
    • spawn e HOLLOW di @0xBoku alt text
  2. Rilevamento dello spoofing PPID:

    • PPID Spoofing Detect di @spotheplanet
    • Se avrò tempo, aggiungerò una parte di rilevamento a questa sezione! -> [Rimanente.................................................!]
  3. Rilevamento Moneta e PESieve:\

    • Moneta:
      alt text

    • PESieve:
      alt text

  4. Scansione Capa:
    alt text

  5. Aspetto dello Stack dei Thread del Processo Impianto:

Processo ImpiantoProcesso Cmd Legittimo
alt textalt text

Ne consegue che eseguendo l'istruzione return nella memoria di ntdll.dll nel POC di syscall indiretto, l'indirizzo di ritorno può essere falsificato con successo, ntdll.dll può essere posizionata in cima allo stack di chiamate e l'EDR interpreterà una maggiore legittimità. - @VirtualAllocEx da DirectSyscall Vs Indirect Syscall
Grazie anche a @peterwintrsmith!

  1. Evasione dei Callback di Strumentazione: Usato questo POC - syscall-detect di winternl_t

image

  1. Configurazione EventLogger, che ho usato:

alt text alt text

  1. Impostazione di SeDebugPrivilege:
    Da qui: alt text A qui: alt text

  2. Uccisione dei Thread del Registro Eventi:

    • rto-win-evasion di @SEKTOR7net
    • Phant0m di @hlldz
    • Goblin di @winterknife
    • disabling-windows-event-logs-by-suspending-eventlog-service-threads di @spotheplanet
      Da qui:
      alt text
      A qui:
      alt text
    • Questo metodo ha finito per causare errori nell'implementazione della syscall indiretta. Quindi, ho finito per uccidere tutti quei thread presenti all'interno del svchost.exe responsabile (motivo: Vai su).

Scenario di Registrazione Eventi Sophos XDR:

  1. Caso 1: Quando Darkwidow viene eseguito con privilegi normali

image

Non vengono creati allarmi critici tranne un singolo log a bassa gravità!

  1. Caso 2: Quando Darkwidow viene eseguito con privilegi di amministratore

image

Un log a bassa gravità => Iniezione APC (Come prima)

image

Un altro log a gravità media si è verificato per l'impostazione di SeDebugPrivilege.

image

DarkWidow V2:

Per aggirare questo rilevamento di registrazione eventi, ho aggiunto il concetto di Synthetic Frame Thread Stack Spoofing.

Ecco come appare lo stack dopo l'applicazione dello spoofing dello stack dei thread con frame sintetico.

image

Questo è lo stack dei thread dell'API NT

image

Questo è lo stack dei thread dello shellcode (comunque, non è fatto su misura, è lo shellcode di Havoc :)) .

Per lo sviluppo dello shellcode, ho usato havoc e questa configurazione qui sotto:

image

NOTA:

Lo spoofing dell'indirizzo di inizio del thread appena creato non era realmente necessario in questo progetto perché nella tecnica di iniezione APC, APC dirotta l'esecuzione di un thread già in esecuzione e legittimo. Grazie a @C5pider!

Immagine di esecuzione demo:

1708744707672

Video demo contro Sophos XDR:

Demo Video Youtube Link

Ora stato dei registri eventi?

image

Nessun log generato. Ho anche rimosso la parte di uccisione del Logger eventi da DarkWidow V2, il che riduce ulteriormente la generazione di eventi!

Il mio video demo al BlackHat Arsenal può essere trovato qui:

Demo Video Youtube Link

Il link alla slide e al video della mia presentazione al WildWestHackinFest può essere trovato qui:

  1. Link Google Slide
  2. https://www.youtube.com/watch?v=xsibDZ6BpyA&t=1295s

Futuri aggiornamenti per questo:

  1. Portare questa versione al compilatore C++ Clang, che ci aiuterebbe a eseguire l'offuscamento LLVM.
  2. Aggiornamento a NtCreateUserProcess() per eseguire syscall indiretta e stack spoofing.
  3. Applicazione della capacità di Manual Load Library per bypassare i callback di Image Load Kernel.
  4. Applicazione della capacità di Module Stomping.
  5. Iniezione di shellcode crittografato per evitare scansioni di memoria attivate dal kernel (Caro-Kann).

Rilevamento della tecnica di stack spoofing (come menzionato in uno dei miei workshop/interventi):

image

Ringraziamenti speciali per avermi aiutato (direttamente/indirettamente (gioco di parole NON intenzionale :))):

  1. @SEKTOR7net
  2. @peterwintrsmith
  3. @Jean_Maes_1994
  4. @D1rkMtr
  5. @spotheplanet
  6. @0xBoku
  7. @Sh0ckFR
  8. @winterknife
  9. @monnappa22
  10. @xpn
  11. @hlldz
  12. @d_tranman
  13. @SoumyadeepBas12
  14. @jack_halon
  15. @KlezVirus
  16. @C5pider

Spero di non aver dimenticato nessuno!

Questo progetto fa parte del mio percorso di apprendimento sul mondo degli EDR! => Learning-EDR-and-EDR_Evasion

Scarica lo strumento
@D1rkMtr
  • Un'immagine del frammento dal link sopra, che ho usato qui per risolvere l'API dinamicamente senza codificare gli offset:
    alt text

  • Il codice di hashing delle API che ho applicato: