
Esconda coisas legais em imagens :)
Blogpost: https://redteamer.tips/introducing-gg-aesy-a-stegocryptor/
AVISO: pode ser necessário restaurar os pacotes NuGet e reiniciar o Visual Studio antes de compilar. Se alguém souber como me livrar deste problema, envie-me uma DM.
Para começar, recomendo vivamente usar sempre o GG-AESY no modo verbose ou muito verbose; se não estiver a usar isto em loaders não geridos, também recomendo especificar sempre um ficheiro de saída (outfile).
no entanto, tenha cuidado com o modo muito verbose, especialmente se estiver a ocultar payloads grandes, pois o modo muito verbose imprimirá o array de bytes na consola.
dito isto, vamos mergulhar no manual desta ferramenta.
_______ _______ ___ _______ _______.____ ____
/ _____| / _____| / \ | ____| / |\ \ / /
| | __ | | __ ______ / ^ \ | |__ | (----` \ \/ /
| | |_ | | | |_ | |______| / /_\ \ | __| \ \ \_ _/
| |__| | | |__| | / _____ \ | |____.----) | | |
\______| \______| /__/ \__\ |_______|_______/ |__|
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 ou --encrypt-only: Apenas encripta um payload fornecido (-p). Escreverá a key/IV na consola se estiver em modo verbose; escreverá key/IV/payload num ficheiro de saída se usar a flag -o; e, por fim, escreverá o fluxo de bytes noutro ficheiro se usar a flag --ef.
-d ou --decrypt: Modo de desencriptação. Pode especificar os parâmetros de desencriptação usando offsets (caso tenha ocultado a key ou a key e IV num JPEG). Os offsets são passados ao programa usando as flags --ok (offset-key) ou --okh (offset-key-hex); pode usar "-" como separador ou apenas colar o hex sem separadores – ambas as formas funcionam. Os IVs funcionam da mesma forma com as flags -oIV e -oIVh.
Alternativamente, pode fornecer diretamente o IV e a Key (caso não estejam ocultos num JPEG) usando as flags --k e --IV. Tal como nas flags de offset, pode usar "-" como separador; o GG-AESY aceita valores ASCII e bytes.
Para desencriptar, também precisa de especificar um ficheiro encriptado (-ef).
Caso tenha ocultado um payload num JPEG e queira desencriptá-lo, terá de especificar o tamanho do payload (--ps) para que o GG-AESY extraia todos os dados corretamente, sem falsos positivos/negativos :) .
-u ou --unpack: Extrai payloads não encriptados anexados (modo -apu) do JPEG.
Se nenhuma key/IV for fornecida, serão usadas key/IV aleatórios para encriptar os dados. Todos os modos de esteganografia exigem que passe uma imagem JPEG (-i) ao GG-AESY. Se tiver especificado um ficheiro de saída (-o) para guardar as informações importantes sobre a criptografia (como key, IV, payload), todos os modos de esteganografia também adicionarão os locais de injeção neste ficheiro.
-rk ou --random-key-mode: Este modo de esteganografia oculta a sua chave AES-256 num ponto de injeção aleatório.
-ra ou --random-all-mode: Este modo de esteganografia oculta tanto a chave AES-256 como o IV num ponto de injeção aleatório. Ambos os pontos de injeção podem ser o mesmo (é um processo de seleção aleatória). Nesse caso, a chave e o IV serão injetados consecutivamente.
-ak ou --append-key-mode: Este modo de esteganografia anexa a chave AES-256 ao final do JPEG.
-aa ou --append-all-mode: Este modo de esteganografia anexa tanto a chave AES-256 como o IV ao final do JPEG.
-ap ou --append-payload-mode: Este modo de esteganografia anexa o fluxo de bytes do payload encriptado ao final do JPEG.
-rp ou --random-payload-mode: Este modo de esteganografia injeta o fluxo de bytes do payload encriptado num ponto de injeção aleatório. CUIDADO: Isto só funciona se o payload não exceder 65.535 bytes (cerca de 65 KB). Se tentar um payload maior, receberá um erro. Escusado será dizer que este modo é praticamente inútil :)
-apu ou --append-payload-unencrypted: Este modo de esteganografia anexa o fluxo de bytes do payload tal como está ao final do JPEG.
AVISO LEGAL: Esta ferramenta está em BETA INICIAL. Ainda não foi testada em cenários reais, por isso, submeta melhorias através de PRs ou reporte problemas no caso de bugs. No entanto, devido à minha carga de trabalho atual, não será possível um desenvolvimento ativo desta ferramenta da minha parte neste momento.
Isso não significa que estou a abandonar este projeto, no entanto :)