Cybersecurity e dintorni

Cybersecurity e dintorni

"Dannati ragazzini, sono tutti uguali"

Stargate dropper

TL;DR

Cos’ è un dropper? Con il termine dropper si fa riferimento a un software o script apparentemente innoquo, che non contiene al suo interno il codice malevolo da eseguire ma funge da vettore di attacco.

Perché il nome “Stargate dropper”? Perché mentre lo sviluppavo, il tipo di trasferimento del payload dal server remoto al dispositivo di destinazione mi ricordava molto lo “Stargate” dell’omonimo film, quel portale che permetteva di trasferire tramite persone o cose da un punto all’altro dell’universo tramite una specie di tunnel spazio-temporale.

Panoramica

Il sistema mira a bypassare eventuali sistemi di detection (es. EDR) trasferendo il payload da installare nel sistema vittima codificandolo in una shellcode in javascript e rileggendolo tramite browser nel sistema di destinazione.

L’obiettivo è quello di sfruttare eventuali debolezze del sistema di detection per quanto riguarda l’analisi del codice javascript nelle pagine web.

Nel sistema di esempio ho testato la possibilità di “droppare” ed eseguire il software “calc.exe”. ll contenuto del file eseguibile è stato convertito in shellcode tramite un semplice tool che ho sviluppato preventivamente.

Dettagli

Fase 1 - Creazione gate di origine

Ho creato una semplice pagina web dove risiede, nidificata all’interno di una porzione di codice Javascript, una variabile contenente la shellcode del software da inviare al sistema di destinazione.

Fase 2 - Creazione gate di destinazione

Ho creato il dropper vero e proprio. Il sistema è sviluppato in .NET e utilizza il componente “CefSharp” per creare il gate di arrivo dal sistema di origine.

Tralasciando la parte di inserimento e inizializzazione del componente “CefSharp”, il fulcro del sistema è racchiuso in due parti principali: il recupero del payload da impiantare e la sua decodifica.

Fase 2.1 - Recupero payload

Il contenuto della variabile contenente il payload viene recuperato eseguendo un semplice codice Javascript che non fa altro che eseguire una funzione che come valore di ritorno ha il contenuto della variabile della shellcode.

Così facendo si aumenta anche il livello di difficoltà della detection, in quanto andrebbero “valutate” le azioni svolte dalla funzione che viene eseguita.

Fase 2.2 - Decodifica payload

Il valore restituito dalla funzione di recupero del payload viene salvato all’interno di un oggetto .NET generico; più precisamente una lista di oggetti. Di conseguenza, lo step successivo è quello di riconvertirlo in un array di byte per poterlo rendere utilizzabile.

Conclusione

Arrivati a questo punto, abbiamo a disposizione il nostro payload da impiantare. Dato che lo scopo di questo articolo non è quello di dimostrare eventuali tecniche di esecuzione per evadere i sistemi di sicurezza, la dimostrazione del sistema termina qui, anche perché altrimenti si aprirebbero miliardi di scenari sul post-download che magari discuterò in altri articoli.

Eventuali migliorie

Questa è la versione semplificata del sistema che mira a dimostrarne la funzionalità. E’ chiaro che il sistema si potrebbe migliorare notevolmente. Un esempio al volo potrebbe essere quello di codificare in base64 la shellcode presente nella pagina web, ma come sempre, il limite è solo la fantasia.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Disclaimer e limitazione di responsabilità

Ciao, benvenuto nel mio blog personale. Tutto quello che troverai qua è a scopo puramente didattico e informativo, senza scopo di lucro e senza fini ostili in qualsiasi forma.

Proseguendo la navigazione accetti in pieno tutte le seguenti clausole (la chiusura di questa informativa senza l'espresso uso del pulsante "Prosegui" comporta l'accettazione tacita delle clausole):

  1. In qualità di autore degli articoli e proprietario del suddetto sito web, nella misura in cui non sia vietato dalla legge, declino espressamente ogni mia responsabilità nei confronti dell’utente o di terzi da qualsiasi uso improprio delle informazioni presenti nel medesimo sito web e da eventuali danni diretti, indiretti, incidentali, speciali, consequenziali, esemplari o di qualsivoglia tipo connesso o derivante da questo sito web, o dall'utilizzo dello stesso o di qualunque sito o risorsa cui si possa fare riferimento, sia connessa o accessibile tramite questo sito web.
  2. Sono compresi nello scarico di responsabilità da parte dell'autore a titolo meramente esemplificativo e non esaustivo i danni per perdita di: profitto, reputazione, utilizzo, dati, o altre perdite immateriali.
  3. Inoltre non mi ritengo responsabile di alcuna informazione falsa, inaccurata, inappropriata o incompleta che potrebbe essere presente sul sito web.

Have fun!