
Strumento automatizzato per il sideloading di DLL con capacità di evasione dagli EDR

Sebbene il DLL sideloading possa essere utilizzato per scopi legittimi, come il caricamento di librerie necessarie al funzionamento di un programma, può anche essere utilizzato per scopi dannosi. Gli aggressori possono utilizzare il DLL sideloading per eseguire codice arbitrario su un sistema di destinazione, spesso sfruttando vulnerabilità in applicazioni legittime utilizzate per caricare DLL.
Per automatizzare il processo di DLL sideloading e renderlo più efficace, è stato creato Chimera, uno strumento che include metodologie di evasione per bypassare i prodotti EDR/AV. Questo strumento può crittografare automaticamente uno shellcode tramite XOR con una chiave casuale e creare modelli di immagini che possono essere importati in Visual Studio per creare una DLL dannosa.
Inoltre, vengono utilizzate le Dynamic Syscalls di SysWhispers3 e una versione assembly modificata per eludere il pattern ricercato dall'EDR, vengono aggiunti NOP sled casuali e i registri vengono spostati. Inoltre, viene utilizzato anche Early Bird Injection per iniettare lo shellcode in un altro processo che l'utente può specificare, con meccanismi di evasione del sandbox come il controllo del disco rigido e se il processo è in fase di debug. Infine, nel loader è presente un attacco temporale che utilizza timer attendibili per ritardare l'esecuzione dello shellcode.
Questo strumento è stato testato e si è dimostrato efficace nel bypassare i prodotti EDR/AV e nell'eseguire codice arbitrario su un sistema di destinazione.
La versione aggiornata di Chimera Unleashed ha dimostrato significativi progressi nell'eludere sia l'analisi statica che dinamica, in particolare nel contesto del sistema Endpoint Detection and Response (EDR) di Microsoft 365. Le tecniche di sideloading dello strumento, anche se applicate a binari ben noti come OneDrive, sono riuscite a sfuggire al rilevamento. Tuttavia, è degno di nota che, mentre l'aspetto del sideloading è rimasto non rilevato, il processo di Early Bird Injection impiegato dallo strumento è stato identificato dal sistema EDR. Ciò evidenzia un'area per un ulteriore perfezionamento nel migliorare le capacità complessive di furtività dello strumento.
Aggiornamenti e caratteristiche principali:
Chimera è scritto in Python3 e non è necessario installare dipendenze extra.
Chimera attualmente supporta due opzioni DLL: Microsoft Teams o Microsoft OneDrive.
Si può creare userenv.dll, che è una DLL mancante di Microsoft Teams, e inserirla nella cartella specifica:
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
Per Microsoft OneDrive, lo script utilizza version.dll, che è comune perché manca dal binario, ad esempio onedriveupdater.exe.
Chimera Unleashed utilizza argparser per l'analisi degli argomenti da riga di comando. Sono disponibili i seguenti argomenti:
--raw o -r: Percorso del file contenente lo shellcode. Obbligatorio.--path o -p: Percorso di output per il file template C. Obbligatorio.--pname o -n: Nome del processo in cui iniettare lo shellcode. Obbligatorio.--dexports o -d: Specifica quale export DLL utilizzare ('teams' o 'onedrive'). Obbligatorio.--enc o -e: Specifica la crittografia preferita (XOR / AES). Obbligatorio.--inj o -i: Specifica la tecnica di iniezione preferita (EB / MS). Obbligatorio.--rshell o -s: [Opzionale] Sostituisci il nome della variabile shellcode con un nome univoco. Predefinito: 'encoded_shell'.Esempio di utilizzo: python Chimera.py --raw <path_to_shellcode> --path <output_path> --pname <process_name> --dexports <exports_file> --enc AES --inj EB --rshell my_shellcode
Una volta completato il processo di compilazione, verrà generata una DLL, che dovrebbe includere "version.dll" per OneDrive o "userenv.dll" per Microsoft Teams. Successivamente, è necessario rinominare le DLL originali.
Ad esempio, la DLL originale "userenv.dll" dovrebbe essere rinominata in "tmpB0F7.dll", mentre la DLL originale "version.dll" dovrebbe essere rinominata in "tmp44BC.dll". Inoltre, hai la possibilità di modificare il nome della DLL proxy come desiderato modificando il codice sorgente degli export DLL invece di utilizzare i nomi predefiniti dello script.
Il file code.h contiene lo shellcode.
Step 1: Creazione di un nuovo progetto Visual Studio con template DLL


Step 2: Importazione dei file nel progetto Visual Studio
Step 3: Personalizzazione della build
Step 4: Abilitazione di MASM

Step 5:


Step 1: Modifica dell'ottimizzazione

Step 2: Rimozione delle informazioni di debug

Contributore originale:
Contributore:
Nella misura massima consentita dalla legge applicabile, io (George Sotiriadis) e/o gli affiliati che hanno inviato contenuti al mio repository, non saranno responsabili per danni indiretti, incidentali, speciali, consequenziali o punitivi, o per qualsiasi perdita di profitti o entrate, sostenuta direttamente o indirettamente, o per qualsiasi perdita di dati, uso, avviamento o altre perdite immateriali, risultanti da (i) il tuo accesso a questa risorsa e/o l'incapacità di accedervi; (ii) qualsiasi condotta o contenuto di terze parti referenziate da questa risorsa, inclusi senza limitazione, comportamenti diffamatori, offensivi o illegali di altri utenti o terze parti; (iii) qualsiasi contenuto ottenuto da questa risorsa.
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
--rxor o -x: [Opzionale] Sostituisci il nome della crittografia xor con un nome univoco. Predefinito: 'do_xor'.--rkey o -k: [Opzionale] Sostituisci il nome della variabile key con un nome univoco. Predefinito: 'key'.--rsleep o -z: [Opzionale] Tempo di pausa totale da includere durante l'esecuzione (secondi). Predefinito: 4000.--size o -f: [Opzionale] Dimensione del file di dati spazzatura in KB. Zero (0) disabilitato, uno (1) dimensione casuale. Predefinito: 0.