Steganografia in files sonori
by admin on Jul.05, 2010, under Hacking, Sicurezza, Tools
Ci eravamo già occupati in passato di Steghide, un programma di steganografia a riga di comando.
Di come si possano inserire contenuti segreti all’interno di file grafici ci eravamo occupati nel medesimo post.
Anche files audio digitali possono venire usati come contenitori. I formati audio più diffusamente utilizzati si basano sulla “Sample Quantization” (come WAV ed AIFF) oppure “Temporal Sampling Rate”.
In tal caso lo spazio “utilizzabile” nel file è generalmente più ampio quanto più è alto il sampling rate. Un terzo formato di codifica ampiamente usato è chiamato “Perceptual Sampling” e si basa sulla codifica delle sole parti del sonoro che possono essere percepite dall’orecchio umano (come nella codifica MP3: codificando dei dati sonori, le frequenze che non possono essere percepite dall’orecchio umano possono vinire eliminate per risparmiare spazio).
Se utilizzando immagini digitali come files contenitori ciò su cui si fa affidamento è la generale difficoltà dell’occhio umano di distinguere i colori, quando si usa un audio digitale occorre tenere presente la differente sensibilità dell’orecchio umano quando incontra suoni di bassa ed alta intensità: di solito suoni più alti sono percepiti meglio di quelli più bassi, ed è perciò più facile occultare dei dati nei suoni bassi senza che l’orecchio umano percepisca l’alterazione.
Con tali forme di codifica sono utilizzabili tecniche steganografiche.
Ancora si può utilizzare il Least Significant Bit (LSB), o metodologia Low-bit Encoding, per inserire dati nei bits meno significativi. La capacità di trasmissione è in questo casi di solito pari a 1 Kbps per kilohertz.
Steghide, come già dovremmo sapere, è un tool steganografico scritto in C++ per Linux e Windows, e rilasciato sotto licenza GNU/GPL. Esso consente agli utenti di fare uso di immagini Windows Bitmap e JPEG (colla libreria Libjpeg) e di files audio Windows Wav e Sun/NeXT AU come files contenitori; qualsiasi altro tipo di file può invece costituire il payload.
I dati del payload possono essere criptati (usando le librarie MCrypt ed MHash) e compressi (grazie alla libreria Zlib). In aggiunta ai dati veri e propri è anche possibile include nel file steganografico il file name del payload ed un checksum per verificare l’ integrità dei dati estratti.
L’ algoritmo criptografico usato per default è il Rijndael con chiavi a 128-bit (che costituisce l’ Advanced Encryption Standard, o AES). È in ogni caso ipossibile selezionare un diverso algoritmo tra 18 possibili, ciascuno dei quali può operare in vari modi. Per una completa lista degli algoritmi e dei modi operativi supportati by Steghide si può lanciare:
# steghide --encinfo
encryption algorithms:
: ...
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
Riepilogando brevemente, la sintassi a riga di comando per Steghide è piuttosto semplice; la struttura di base è la seguente:
comando steghide [ argomenti ]
Possibili comandi sono embed, extract, info, encinfo, version, license, help. Avendo appena utilizzato encinfo ed essendo gli ultimi tre pittosto ovvi, ricapitoleremo gli altri, che costituiscono il cuore di Steghide.
Come avevamo già visto, il comando embed viene usato per inserire un payload entro un file contenitore, mentre il comando extract viene usato per estrarre il payload dal file steganografico prodotto.
L’ultimo fondamentale comando è info. Con esso diviene possibile ottenere informazioni su caratteristiche quali ad esempio la capacità: può perciò risultare utile prima della inclusione, per verificare che il file contenitore scelto possa adeguatamente contenere il payload da nascondere. Il comando info può opzionalmente restituire informazioni sul contenuto nascosto se gli viene fornita la passphrase usata durante l’inclusione. L’ esempio successivo dovrebbe renderlo chiaro:
# steghide info file.wav
"file.wav":
format: wave audio, PCM encoding
capacity: 8.3 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase:
embedded file "secret.txt":
size: 2.6 KB
encrypted: rijndael-128, cbc
compressed: yes
In questo esempio la passphrase viene fornita interattivamente ma, ancora, è possibile usare il parametro -p. Informazioni restituite circa il payload sono il nome del file nascosto (se incluso), la sua ampiezza, l’algoritmo criptografico utilizzato, e se è compresso oppure no.
Proviamo a verificare la dimensione di un payload inseribile in un file audio specificato:
# ls -l /Music/Track\ 11.wav
-rw-r--r-- 1 root root 40783794 2010-04-24 15:25 /Music/Track 11.wav
# steghide info /Music/Track\ 11.wav
"Track 11.wav":
format: wave audio, PCM encoding
capacity: 1.2 MB
Try to get information about embedded data ? (y/n) n
Prendiamo, per fare un esperimento la simpatica immagine di Berlusconi che fa il gesto del mitra, (circa 612 KB), che costituirà il nostro payload:
# steghide embed -cf /Music/Track\ 11.wav -ef /Documents/Berlusconi-mitra.bmp
Enter passphrase:
Re-Enter passphrase:
embedding "/Documents/Berlusconi-mitra.bmp" in "/Music/Track 11.wav"... done0%
# ls -l /Music/Track\ 11.wav
-rw-r--r-- 1 root root 40783794 2010-07-05 12:54 /Music/Track 11.wav
# steghide info /Music/Track\ 11.wav
"Track 11.wav":
format: wave audio, PCM encoding
capacity: 1.2 MB
Try to get information about embedded data ? (y/n) y
Enter passphrase:
embedded file "Berlusconi-mitra.bmp":
size: 612.3 KB
encrypted: rijndael-128, cbc
compressed: yes
Nonostante la fastidiosa presenza il pezzo risulta, all’ascolto, indistinguibile dall’originale
# play /Music/Track\ 11.wav
Track 11.wav:
File Size: 40.8M Bit Rate: 1.41M
Encoding: Signed PCM
Channels: 2 @ 16-bit
Samplerate: 44100Hz
Replaygain: off
Duration: 00:03:51.20
In:10.0% 00:00:23.13 [00:03:28.07] Out:1.02M [-=====|=====-] Hd:3.9 Clip:0
Aborted.
Eppure:
# steghide extract -sf Track\ 11.wav -xf silvio_spara.bmp
Enter passphrase:
wrote extracted data to "silvio_spara.bmp".


