
Nascondi cose interessanti nelle immagini :)
Blogpost: https://redteamer.tips/introducing-gg-aesy-a-stegocryptor/
ATTENZIONE: potresti dover ripristinare i pacchetti NuGet e riavviare Visual Studio prima di compilare. Se qualcuno sa come risolvere questo problema, mi contatti in privato.
Per cominciare, consiglio vivamente di usare sempre GG-AESY in modalità verbose o molto verbose; se non lo usi in loader non gestiti, consiglio anche di specificare sempre un outfile.
presta comunque attenzione alla modalità molto verbose, specialmente se nascondi payload di grandi dimensioni, perché la modalità molto verbose stamperà l'array di byte nella console.
detto questo, tuffiamoci nel manuale di questo gioiellino.
_______ _______ ___ _______ _______.____ ____
/ _____| / _____| / \ | ____| / |\ \ / /
| | __ | | __ ______ / ^ \ | |__ | (----` \ \/ /
| | |_ | | | |_ | |______| / /_\ \ | __| \ \ \_ _/
| |__| | | |__| | / _____ \ | |____.----) | | |
\______| \______| /__/ \__\ |_______|_______/ |__|
V1.0.0 by twitter.com/Jean_Maes_1994
Encryptor and (optional) stegano
Usage:
-h, -?, --help Show Help
-e, --encrypt-only Only encrypts given payload
-d, --decrypt decryption mode
--ps, --payload-size=VALUE
only needed if extracting payload from image for
decryption
--ef, --encrypted-file=VALUE
ENCRYPTION: The outfile for encrypted data
DECRYPTION:The inputfile needed to decrypt the
payload.
-p, --payload=VALUE The path to the payload you want to encrypt
-o, --outfile=VALUE The path to the outfile where all important data
will be written to (key,iv and encrypted
payload)
-i, --image=VALUE The image file to hide the key and/or IV in,
currently only supports JPEG (JPG) format!
--ok, --offset-key=VALUE
The offset to search for the key in image (in
decimal)
--okh, --offset-key-hex=VALUE
The offset to search for the key in image (in
hex)
--oIV, --offset-IV=VALUE
The offset to search for the IV in image (in
decimal)
--oIVh, --offset-IV-hex=VALUE
The offset to search for the IV in image (in
hex)
--op, --offset-payload=VALUE
The offset to search for the payload in image
(in decimal)
--oph, --offset-payload-hex=VALUE
The offset to search for the payload in image
(in hex)
-v, --verbose write all the good stuff to console,recommended
you actually always use this.
--vv, --very-verbose prints encrypted payload array to console
-k, --key=VALUE in case you want to use your own key value!
--IV, --initialization-vector=VALUE
in case you want to use your own IV
--rk, --random-key-mode
will hide your key in a random insertion point
in the provided image, without breaking said
image. will print the offset to console
--ra, --random-all-mode
will hide both Key and IV in a random insertion
point of the image.
--ak, --append-key-mode
will hide the key at the end of the image file
--aa, --append-all-mode
will hide the key and the IV at the end of the
image file.
--ap, --append-payload-mode
will hide the payload at the end of the image
file
--rp, --random-payload-mode
will hide the payload at a random insertion
point.
--apu, --append-payload-unencrypted
appends your payload without crypto, useful for
very quick and dirty data exfil.-e o --encrypt-only: Crittografa solo il payload fornito (-p); scriverà chiave/IV nella console se si usa la modalità verbose, scriverà chiave/IV/payload in un outfile se si usa il flag outfile (-o) e, infine, scriverà il flusso di byte in un altro file se si usa il flag encrypted-file (-ef).
-d o --decrypt: Modalità di decrittografia. Puoi specificare i parametri di decrittografia usando gli offset (nel caso in cui tu abbia nascosto la chiave o la chiave e l'IV in un JPEG). Gli offset vengono passati al programma usando i flag offset-key (-ok) o offset-key-hex (-okh); puoi usare "-" come separatore o incollare direttamente l'esadecimale senza separatori, entrambi funzionano. Gli IV funzionano allo stesso modo con i flag -oIV e -oIVh.
In alternativa, puoi fornire IV e chiave direttamente (nel caso non siano nascosti in un JPEG), usando i flag key (-k) e initialization-vector (-IV). Come per i flag di offset, "-" può essere usato come separatore; GG-AESY accetta sia valori ASCII che byte.
Per decrittografare, devi anche specificare un file crittografato (-ef).
Se hai nascosto un payload in un JPEG e desideri decrittografarlo, devi specificare la dimensione del payload (-ps) in modo che GG-AESY estragga correttamente tutti i dati senza falsi positivi/negativi :).
-u o --unpack: Estrae i payload non crittografati aggiunti (modalità -apu) dal JPEG.
Se non viene fornita alcuna chiave/IV, verranno usate chiave/IV casuali per crittografare i tuoi dati. Tutte le modalità stego richiedono di passare a GG-AESY un'immagine JPEG (-i). Se hai specificato un outfile (-o) per salvare le informazioni importanti sulla crittografia (come chiave, IV, payload), tutte le modalità stego aggiungeranno anche i punti di iniezione in questo file.
-rk o --random-key-mode: Questa modalità stego nasconde la tua chiave AES-256 in un punto di iniezione casuale.
-ra o --random-all-mode: Questa modalità stego nasconde sia la chiave AES-256 sia l'IV in un punto di iniezione casuale. Entrambi i punti di iniezione possono essere gli stessi (il processo di selezione è casuale); in tal caso, chiave e IV vengono iniettati uno dopo l'altro.
-ak o --append-key-mode: Questa modalità stego aggiunge la chiave AES-256 alla fine del JPEG.
-aa o --append-all-mode: Questa modalità stego aggiunge sia la chiave AES-256 sia l'IV alla fine del JPEG.
-ap o --append-payload-mode: Questa modalità stego aggiunge il flusso di byte del payload crittografato alla fine del JPEG.
-rp o --random-payload-mode: Questa modalità stego inietta il flusso di byte del payload crittografato in un punto di iniezione casuale. ATTENZIONE: Funziona solo se il tuo payload non supera i 65.535 byte, circa 65 kB; se provi con un payload più grande, verrà generato un errore. Inutile dire che questa modalità è praticamente inutile :).
-apu o --append-payload-unencrypted: Questa modalità stego aggiunge il flusso di byte del payload così com'è alla fine del JPEG.
DICHIARAZIONE: Questo strumento è in BETA INIZIALE. Non è ancora stato testato sul campo, quindi invia miglioramenti tramite PR o segnala problemi in caso di bug. Tuttavia, a causa del mio attuale carico di lavoro, lo sviluppo attivo di questo strumento da parte mia non sarà possibile al momento.
Questo non significa che abbandonerò il progetto :).