Steganografia…. take it easy…

Ultimo articolo della serie “proviamoci”….

Vedremo come usare la steganografia in modo semplice, faremo qualche esempio pratico e vedremo di combinare delle tecniche che abbiamo appreso negli articoli precedenti. A differenza di quello visto finora la steganografia è qualcosa di più “oscuro” , non sempre se ne parla anche se a pensarci bene è forse la tecnica più efficace e sicura per nascondere/trasportare file e documenti importanti che devono essere mantenuti segreti. Da wikipedia vediamo il significato: “La steganografia è una tecnica che si prefigge di nascondere la comunicazione tra due interlocutori, infatti il termine è composto appunto dalle parole greche στεγανός (nascosto) e γραφία (scrittura).”

Vediamo prima qualche esempio senza l’utilizzo di alcun tool ma semplicemente usando la shell. Per questo esempio useremo un’immagine, il wallpaper di under_r00t:

Cominciamo con scrivere un messaggio su file di nome 1(uno):

$ echo "Domani alle 14:30 net-strike al sito di forza nuova" > 1

E comprimiamolo con gz:

$ gzip 1

Ora possiamo provare a dare un’occhiata al contenuto:

$ cat 1.gz
�(�R1s��M��TH��IU04�26P�K-�-.)��N�*g��+�d*��U%*����%r}��~4%

E’ molto importante (indispensabile) conoscere la grandezza esatta del file appena creato, possiamo visualizzarlo con wc:

$ wc -c 1.gz
73 1.gz

Vediamo di appendere il contenuto di 1.gz ad un file immagine, potrebbe anche essere un file audio o video o qualsiasi altro formato:

$ cat 1.gz >> wall_undr00t_steg_prova.png

Ovviamente la nostra immagine non viene modificata, se non nella grandezza del file che abbiamo appeso, ma resterà pur sempre visibile come immagine. Diamo un’occhiata agli ultimi bit della nostra immagine con tail:

$ tail wall_undr00t_steg_prova.png  
�(Y�+��;FU�}��\d��Yb�
                     N7�7/���&���I,��-����/
                                              ��0��H����(n�
�cal!���<�ڲ�/l��!^�@,>�2��K���_D���0�1��щ��؞oԎ��&�W�@�Y�/��_
�<���~/�ӽ�ݓ����+>�6�b ���� @
cW�                              
�4�I� ��hQܫ~J�~j��3R,AO���v���wA�y��z�Byݩ�G,N
]�4�o ʢ���А�$u��5]<�q���I���@���Z}'.��[��{g�'

 D�ۂ!̃�I���Ю��ijʃBjƳ�@�=��[���r��!�$L�stZs3�o�Ns��%���$�4��!��F�l*
�����sZu���-ʒ��*&țK.�����)�>ʁ߳�!��
?v����k���֖����m�˞

~���j[q��<���a����z��+�z�H9�릦I�S��
                                    ��"�������2?��ec�,���:��o�]���x
�{��!�λ��ߧ� A��F�Od��ǘm� �-
                               �9�=�Л���_$m(��͂�#�$A�ύƶ~G�
��,P<m�@=�Q
            �4@-@!IpVO�9
g@���X����@E"q��uv��EA�Y�;���(��Z-v�r&���\P+������6R�^��~|
,I�=ʟ���ǸA�P���_���m�dxR̕��R6C�R�f�����L��F    ݰ
K[��i�M�r%f��o�v}r����O���(
                            �%C[
                                 �+��������K�z�]7���z�z���Y�ڑ���p��27
�e��ɇ�Q/���Rmy���t_S�{7�?�X�*��5" ������O;    
Ur��>���x�0" ��t�?B���AV$�P����?H8p��x �7/��]�Q\���:$‰vr�F/��xC�d�_��
���¿.IEND�B`��(�R1s��M��TH��IU04�26P�K-�-.)��N�*g��+�d*��U%*����%r}��~4% 
Prima_immagine

steganografia da shell

Riconoscete la stringa appesa? Si confrontandole noi le riconosciamo ma ad una prima occhiata il nostro messaggio sembra ben nascosto e incomprensibile, a chiunque, dunque anche ai nostri destinatari rendendo di fatto inutile il lavoro appena svolto. Per riuscire a leggere il messaggio che è stato nascosto nell’immagine dovremo fare i passaggi inversi a quelli compiuti finora. Ricordate che prima vi ho fatto stampare la grandezza esatta del fiel 1.gz, questo serve ora perchè “ritagliando” la grandezza esatta del file appeso all’immagine potremo poi decomprimerla e riottenere il messaggio originale, quindi basta far sapere a chi di dovere “un numero” e il destinatario saprà di quanto “tagliare” la coda dell’immagine:

$ tail -c 73 wall_undr00t_steg_prova.png > 1-estr.gz
$ gunzip 1-estr.gz
$ cat 1-estr
Domani alle 14:30 net-strike al sito di forza nuova

Ecco nel terminale come si presenta completamente:

Seconda_immagine

Steganografia da shell 2

 

 

 

 

 

 

 

Questo è un primo passo molto semplice, usando solo la potenza della nostra shell… Potremmo aggiungere un ulteriore livello di sicurezza, prima di comprimere il file si potrebbe criptare, potremmo usare gpg, oppure  un altro utile programma chiamato aescrypt che potete trovare qui

Procediamo più velocemente:

$ echo "Domani net-strike alle 14:30" > secret.txt
$ aescrypt -e -p P4ss-m0lt0-Ro.bust4 secret.txt
$ gzip secret.txt.aes
$ wc -c secret.txt.aes.gz
241 secret.txt.aes.gz
$ cat secret.txt.aes.gz >> Wall_AES.png
$ tail -c 241 Wall_AES.png > Primo_estratto.gz
$ gunzip Primo_estratto.gz
$ mv Primo_estratto Primo_estratto.txt.aes
$ aescrypt -d -p P4ss-m0lt0-Ro.bust4 /
-o secret_estratto.txt Primo_estratto.txt.aes 
$ cat secret_estratto.txt
Domani net-strike alle 14:30
Prova_AES

Steganofia e criptazione da shell

E’ stato necessario rinominare “mv Primo_estratto Primo_estratto.txt.aes” in quanto aescrypt dava un errore, probabilmente non riconoscendo il file, strano perchè sui sistemi linux non esistono le estensioni, ma così ho dovuto fare… In più ho commesso un errore grammaticale, ho scritto rUbusta invece che rObusta  vabbè! Capita =)

 

 

Se volessimo invece fare le cose in modo decisamente più sicuro e sofisticato steghide è un ottimo programma, lo si trova nei repository. Noi vedremo l’utilizzo più semplice, per una visione completa vi rimando alla lettura del manuale. Ci tenevo però a mostrarvi questo (preso ovviamente dal man):

 The default encryption algorithm is Rijndael with a key size of 128 bits (which is AES – the advanced encryption standard) in the cipher block chaining mode. If  you  do  not trust this combination for whatever reason feel free to choose another algorithm/mode combination (information about all possible algorithms and modes is displayed by the encinfo command).  The checksum is calculated using the CRC32 algorithm.

$ steghide encinfo 
encryption algorithms:
<algorithm>: <supported modes>...
cast-128: cbc cfb ctr ecb ncfb nofb ofb
gost: cbc cfb ctr ecb ncfb nofb ofb
rijndael-128: cbc cfb ctr ecb ncfb nofb ofb
twofish: cbc cfb ctr ecb ncfb nofb ofb
arcfour: stream
cast-256: cbc cfb ctr ecb ncfb nofb ofb
loki97: cbc cfb ctr ecb ncfb nofb ofb
rijndael-192: cbc cfb ctr ecb ncfb nofb ofb
saferplus: cbc cfb ctr ecb ncfb nofb ofb
wake: stream
des: cbc cfb ctr ecb ncfb nofb ofb
rijndael-256: cbc cfb ctr ecb ncfb nofb ofb
serpent: cbc cfb ctr ecb ncfb nofb ofb
xtea: cbc cfb ctr ecb ncfb nofb ofb
blowfish: cbc cfb ctr ecb ncfb nofb ofb
enigma: stream
rc2: cbc cfb ctr ecb ncfb nofb ofb
tripledes: cbc cfb ctr ecb ncfb nofb ofb

Potrebbe non capirsi una mazza, ed effettivamente così è se prima non leggete  il manuale ed utilizzate steghide un paio di volte, ma facendovi vedere le potenzialità spero che non vi fermiate agli esempi che vi proponiamo qui, che sono solo semplici esempi di utilizzo senza nessuna pretesa!

Supponiamo di voler nascondere “messaggio_segreto.txt” all’interno di una immagine, il wallpaper di under_r00t, la sintassi sarebbe questa:

$ steghide embed -cf wallpaper_under_r00t.png -ef messaggio_segreto.txt
 Enter passphrase:
 Re-Enter passphrase:
 embedding "messaggio_segreto" in "wallpaper_under_r00t.png"... done

Mentre per estrarre il messaggio:

$ steghide extract -sf wallpaper_under_r00t.png
 Enter passphrase:
 wrote extracted data to "messaggio_segreto.txt".

Pensiamo ora di trovarci nella situazione in cui ci arriva una innoqua canzone formato .wav da un nostro amico, potremmo voler ottenere delle informazioni prima di estrarre il messaggio. Steghide ci fornisce info sul contenitore, il formato e la grandezza, dopo di che ci chiede se vogliamo ottenere informazioni sul messaggio steganografato (chiamato embedded), fornendo la password esatta ci verranno stampate a video le info che riguardano “messaggio_segreto.txt” come la grandezza, l’algoritmo di criptazion, il modo e e se è stato compresso:

$ steghide info canzone_punk.wav
 "canzone_punk.wav":
 format: wave audio, PCM encoding
 capacity: 6.3 KB
 Try to get information about embedded data ? (y/n) y
 Enter passphrase:
 embedded file "messaggio_segreto.txt":
 size: 2.8 KB
 encrypted: rijndael-256, cbc
 compressed: yes

 

Finito anche a sto giro… Ancora bla bla se ci sono orrori scrivete, se blabla le solite cose! Vi lascio una lista non esaustiva di altri tool che potrebbero tornare utili, sia dal lato privacy sia dal lato forense (cioè provate sulla vostra macchina a vedere se riuscite ad ottenere informazioni sensibili):

Lato Provacy:

Tomb

sdmem

srm

wipe

BleachBit

Ottima lettura ultra consigliata!!! c’è pure un download con una “suite” di tool utili.

Lato Forense:

Guymanager

dff

Xplico

 

 

 

 

 

 

 

 

 



Tags: , , , ,
This entry was posted on martedì, Dicembre 17th, 2013 at 00:08 and is filed under Howto. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.