sabato 20 dicembre 2008

NBSTEGO - bash script for steganography

Non so perchè, ma mi sono dedicato all'evoluzione di BrutalStego, ho scritto, infatti, un nuovo bash script, che fa realmente una steganografia di un testo, lo cripta in AES256 e lo nasconde in esadecimale nel file vettore.

La cosa che mi interessava era poter criptare il testo, nasconderlo e poterlo rilevare tramite immissione di password, insomma un tool di steganografia reale!

Strumenti usati:grep, awk, dd, bc, wc, xxd, openssl

In sostanza funziona così:si inserisce il nome del file vettore, si inserisce il nome del nuovo file (quello contenente il messaggio segreto), si inserisce il messaggio ed infine si inserisce la password.Dopo questi input, il programmino cripta con OpenSSL in AES256 il messaggio segreto, poi lo converte in esadecimale e lo posiziona all'interno del nuovo file vettore.
L'ho testato sulle JPG e sugli MP3 e non si nota alcuna perturbazione.
Rilanciando il programmino, si può andare a svelare il messaggio segreto, inserendo il nome del file vettore e la password
Ecco lo script:

#!/bin/bash
# NBStego - by Nanni Bassetti - http://www.nannibassetti.com - nannib@libero.it
# a simple steganographic tool for Linux. Tested on  JPG, MP3, AVI
# It uses AES256 algorithm by openssl


hid ()
{


echo "Insert the message to hide:"
read ms
echo $ms>ptext
echo "Insert the file where to hide:"
read fl
echo "Insert the file name of the new file:"
read nfl
echo "Insert your password:"
read pw
# here it crypts the plaintext in cyphered text by aes25 and save it into steg.bin
openssl aes-256-cbc -in ptext -out steg.bin
# password length
lenpw=$(expr length "$pw")
lenpw_mod=$(echo 0 + 10 | bc)
# temp1.bin is the head of the new file
dd if=$fl of=temp1.bin bs=1c count=$lenpw_mod
# temp2.bin is a 10 bytes file filled of zeroes to store the secret message length
dd if=$fl of=temp2.bin bs=1c skip=$lenpw_mod count=10
# temp2.bin is the end of the new file
dd if=$fl of=temp3.bin bs=1c skip=$(echo $lenpw_mod + 10 | bc)
dd if=/dev/zero of=temp2.bin count=10 bs=1c
# hex conversion of steg.bin
cat steg.bin | xxd -p > steghex.bin
# len is the length of the steghex.bin file
len=$(wc -c steghex.bin|awk '{print $1 }')
# hex conversion of len
echo $len | xxd -p > l.bin
# it builts the new file
cat temp1.bin l.bin temp2.bin steghex.bin temp3.bin > $nfl
rm temp1.bin
rm temp2.bin
rm temp3.bin
rm steg.bin
rm steghex.bin
rm ptext
rm l.bin
echo " "
echo " -------------------------- "
echo " "


}
#-----End Hide-----



reveal ()
{
echo "Insert the file name containing the secret message:"
read nfl
echo "Insert the password:"
read pw
lenpw=$(expr length "$pw")
lenpw_mod=$(echo 0 + 10 | bc)
len=$(dd if=$nfl skip=$lenpw_mod bs=1c count=10 | xxd -r -p)
# it finds the openssl aes256 signanture into the target file and it takes the offset
sk=$(grep -iaob -m 1 "53616c746564" $nfl | awk -F ":" '{print $1}')
dd if=$nfl bs=1c skip=$sk count=$len status=noxfer | xxd -r -p | openssl aes-256-cbc -d -out text.txt -k $pw
cat text.txt
}


echo "NBSTEGO by Nanni Bassetti - 2008-12"
echo "Choose if you want to hide or to reveal:"
echo "1) Hide"
echo "2) Reveal"
read answ1
case $answ1 in
     1)  hid ;;
     2)  reveal ;;
     *)  echo "Wrong answer! Write 1 or 2"
      echo " ";;
    esac
exit


Clicca qui per il DOWNLOAD

sabato 6 dicembre 2008

Linux Live distro ma quante ne porto?

Siamo ormai nel 2009, tutto si è evoluto, tutto è veloce e potente, ma la Giustizia italiana?
Quella rimane lenta, lentissima, ci sono cause iniziate nel 1998, che devono ancora finire e che magari richiedono ancora delle perizie.
Come attrezzarsi?
Potremmo trovarci di fronte a macchine Intel 386 se non 286, senza porte USB, senza lettori di CD-Rom, senza BIOS che permettano il boot da CD-ROM, con pochissima RAM, l'unica cosa positiva sarebbe la dimensione dell'hard disk da repertare, che probabilmente sarebbe di pochi megabytes.


A volte, anche le macchine "moderne", possono avere dei problemi di incompatibilità, con le Linux Live distro, perchè qui stiamo, chiaramente, parlando di usare una Live, per svariati motivi, e non di staccare l'hard disk e collegarlo alla nostra workstation, che sarebbe la soluzione ottimale per ovviare ad ogni questione.


Quindi nel nostro zainetto da bravo consulente tecnico informatico non dovrebbero mancare mai, secondo la mia personalissima classificazione, live distro come:

LIVELLO ALTO - Boot da Cd-Rom, ideali per i sistemi moderni, dotate di ottime interfacce grafiche.

Helix 2, CAINE, FCCU 12.1, ForLexDeft 4.1


LIVELLO MEDIO - boot da CD-ROM - sono più leggere e possono girare senza interfaccia grafica.


FCCU 11 o 10, F.I.R.E., IRItaly, PHLAK, Knoppix-STD, DSL


LIVELLO BASSO - boot da Floppy - partono da floppy disk e girano sui dinosauri informatici


SMART Linux, MuLinux, Floppix


Inoltre non sarebbe male portarsi sempre dietro il cd di GPArted e un rescue cd come Trinity, SystemRescueCd e un linux net-oriented come BackTrack.


Troppe? ;)
Bhè sono convinto che nei comments ne appariranno altre : - P

lunedì 1 dicembre 2008

Anti-Forensics alcune tecniche di base

Ho appena finito di leggere un interessante articolo di Mark Whitteker su ISSA Journal, che riassume alcune tecniche di base dell'anti-forensics, trovo questo genere di articoli molto costruttivi, perchè non dicono niente di nuovo, ma servono ad accorpare e sintetizzare dei concetti, cosa che è utile, specialmente in un settore così ricco di tecniche da dover ricordare.


Cos'è l'anti-forensics? Si tratta di tutti quegli escamotages, che servono a mettere in difficoltà i "digital investigators", in modo da riuscire ad occultare o a rendere estremamente diffcile il reperimento di evidenze digitali.


I tipi di anti-forensics possono suddividersi in tre grandi branche:



  • Data Hiding (occultare i dati)

  • Tool's weakness (debolezze note dei tool per la computer forensics)

  • Investigator's weakness (debolezza dell'investigatore)


DATA HIDING


I dati possono essere nascosti in moltissimi modi e non solo sull'hard disk in esame, ma anche su siti web di storage, qui potete trovare una trattazione di Mario Pascucci in merito ad alcune tecniche, ma esaminiamo quelle più comuni e conosciute:



Encryption


Criptare interi volumi o solo dei file , può essere quanto di più facile da mettere in atto, ma diventa uno degli ostacoli più duri per l'investigatore digitale, perchè un criptaggio con AES (Advanced Encryption Standard) a 128 bit ha 2128 possibili chiavi, con un brute force attack non si giunge a niente, se non in un tempo lunghissimo (parliamo di anni) di elaborazione costante e parallela.
Quindi, in questo caso, conviene che l'investigatore, cerchi la password in altra maniera, tipo cercare nella memoria del sistema (ram dumping) l'eventuale password inserita, se è presente in qualche file leggibile, avendo un log di un eventuale key-logger pre-istallato oppure con un profiling dell'indagato, ma sono tentativi veramente legati alla speranza ed alla fortuna, se per esempio la password è una parola di senso compiuto, magari basterà un dictionary attack e lo scrigno si aprirà.


Steganografia


Dal Greco antico "scrittura nascosta", è una tecnica nota per nascondere delle informazioni dentro altri file binari, per esempio immagini, file mp3, ecc.
Personalmente ho sviluppato un strumentino a fini didattici, che fa capire come può avvenire una steganografia banale: BrutalStego o una più complessa con NBSTEGO.
Ci sono tanti strumenti per la steganografia come: JHide, Digital Invisible Ink e tanti altri che potete leggere qui.
I sistemi per capire se un file contiene della steganografia sono basati su algortimi probabilistici, infatti spesso danno falsi positivi e falsi negativi, tutto ciò non può essere utile all'investigatore, a meno di non aver trovato tracce di programmi di steganografia sul PC dell'indagato, altrimenti diventa una caccia alla cieca.


Spazio non allocato e cancellazione sicura


Questo è lo spazio non occupato da file attivi, infatti quando un file viene cancellato da sistema, di fatto rimane fisicamente in uno spazio marcato come "unallocated", quindi disponibile alla scrittura di altri file.
L'operazione di cancellazione standard, serve solo ad eliminare il pointer al file dalla File Allocation Table (FAT) or Master File Table (MFT).
Con i tools di computer forensics, si riescono a recuperare dei file cancellati (pubblicità occulta FUNDL o SFDUMPER), ma se prima di cancellarli si riempiono i file di careatteri random o di zeri, alla fine non si recupera più il file originale.


SLACK SPACE


I file quando sono salvati vengono allocati in cluster, gruppi di settori del disco, ma se un file occupa 5 cluster e mezzo, viene allocato in sei cluster, lasciano mezzo cluster libero.
Ci sono strumenti come Metasploit’s Slacker utility che permettono di scrivere nello slack space, ossia quello spazio avanzante di un cluster, se poi si cripta il file e lo si inserisce nello slack space, l'investigatore può esser tratto in inganno, trovando solo dei dati che possono sembrare spazzatura di precedenti file allocati in quel cluster, quando invece è un file criptato.


TOOL'S WEAKNESS


Altre tecniche di anti-forensics, possono risedere nello sfruttare bachi o debolezze note dei più famosi tool per la computer forensics.
Gli ADS (Alternate Data Streams), oggi non più una minaccia.
La MD5 collision, ossia il poter modificare un file e far risultare lo stesso hash MD5 del file originale, questo può servire per occultare un file e spacciarlo per un file noto, quando l'investigatore effettua una ricerca usando il matching di un dizionario di hash MD5 noti sui file contenuti sul disco in esame.
La modifica del Timestamp, con questa tecnica si possono ingannare i tool che creano una timeline basata sui tempi di MAC (Modify, Access e Create file).
La manipolazione del magic number e dell'estensione dei file, questa tecnica è abbastanza fastidiosa per gli investigatori, perchè se si cambia solo l'estensione di un file, per esempio da JPG a DOC, i programmi di carving (Foremost, Photorec, Scalpel, ecc.) ed i programmi come "file" o "TridNet", se ne accorgono, perchè considerano gli headers ed i footers del file (nel caso della JPG sono FFD8 e FFD9 in esadecimale), ma se si cambiano anche i gli header ed i footer, si imbrogliano anche quest'ultimi tool, quindi va fatta un'ispezione accurata e manuale!


LA INVESTIGATOR'S WEAKNESS


Questa è, secondo me, la tecnica più problematica, infatti si condensa in un semplice concetto, ossia il tempo e le risorse che deve impiegare l'investigatore per analizzare i supporti sequestrati.
Basta avere dischi di parecchi gigabyte o terabyte, Raid, usare tecniche di data hiding e a quel punto le analisi da condurre porterebbero via moltissime risorse in termini di tempo e denaro, costringendo l'investigatore a lavorare alla grossa.
Questo è una riflessione che mi ero posto molte volte, quando leggevo di tutte le tecniche "fini" di anti-forensics, mi domandavo spesso:
"Ma se un consulente tecnico riceve da analizzare 10-100 hard disk da 250Gb l'uno, come può mettersi a lavorare di fino, su ogni hard disk, controllando eventuali criptazioni, steganografie, slack space, file nascosti negli spazi tra MBR ed inizio partizione, partizioni nascoste, file system dentro file system, ecc. ecc.?"


Conclusioni


Penso che sia utile conoscere più metodi possibili di data hiding, però credo sempre nel motto "è più facile occultare che scoprire"


Nanni Bassetti