Giovanni Bassetti Immagine
 Blog personale di Nanni Bassetti... di Admin
 
"
Un computer sicuro è un computer spento e gettato in fondo al mare, con l'hard disk sbriciolato

N.B.
"
 

\\ Home Page : Storico : Computer Forensics (inverti l'ordine)
Di seguito gli interventi pubblicati in questa sezione, in ordine cronologico.
 
 
Di Admin (del 29/11/2008 @ 07:41:10, in Computer Forensics, linkato 3285 volte)

Dopo la segnalazione del bug di Caine, ci siamo tutti attivati per patcharlo il più presto possibile, ma Giancarlo Giustini ha fatto veramente miracoli....nonostante queste belle parole dette dal solito ignorante di turno, che non sa rispondere tecnicamente, ma spara insulti a vanvera....che tristezza....ma andiamo avanti.

Qui si può visionare un simpatico video, nel quale si denota come usando altre distro di controllo, il bug sussiste non solo in Caine:

video (pubblicato da Giancarlo su CFI mailing list il 28/11/2008)

Da questa osservazione il bravo ricercatore dell'Università di Modena si è dato da fare e ha rilevato risposte come questa:

"The correct way to stop swap from being activated by swapon -a is by setting it to noauto, the ro mount parameter really doesn't have anything to do with it. So I think you're right, no bug, only misunderstanding."

Quindi NON è un bug di Linux ma è una configurazione errata, bhè solo chi non lavora non sbaglia e quindi l'errore va capito e perdonato, anzi ben venga la cosa che, grazie ad Internet, si risolvano i problemi così velocemente, anche grazie allo scambio di idee....

E per concludere con un sorriso, cito il testo di qualcuno postato sulla lista di CFI ,che ha scritto questa simpatica frase:

"poi se non mettere i parametri in una riga di comando o in un file di configurazione è un bug di linux......sarebbe interessante chiedere a Torvalds come mai non ha mai corretto
un simile bug.....  ;-P
"

La vostra affezionatissima merdaccia! : - D

 
Di Admin (del 01/12/2008 @ 11:57:54, in Computer Forensics, linkato 11039 volte)

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:

...

Continua a leggere...

 
Di Admin (del 05/12/2008 @ 09:53:49, in Computer Forensics, linkato 2611 volte)

Oggi è online sul sito:

http://www.caine-live.net  la nuova release di CAINE:

- Rilasciata la nuova versione 0.4!
- BUG dello swap risolto
- Novita! Versione 0.4 in inglese, con formattazione del rapporto finale in inglese e in italiano

 
Di Admin (del 06/12/2008 @ 13:48:39, in Computer Forensics, linkato 2726 volte)

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

 
Di Admin (del 19/12/2008 @ 20:30:34, in Computer Forensics, linkato 5360 volte)

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:...

Continua a leggere...

 
Di Admin (del 04/01/2009 @ 18:51:43, in Computer Forensics, linkato 4956 volte)

Il bravo Mario Pascucci ha pubblicato la soluzione al suo test/esercizio di computer forensics QUI :)

Il caro amico Denis Frati ha risolto meglio di tutti i partecipanti...quindi COMPLIMENTI!!!!

Ma vediamo come ho agito io, superficialmente e non dedicandomi a fondo, peccato, ma quando c'è agonismo mi faccio prendere dalla fretta : - D, un difetto che mi porto dietro da quando ero piccolo, mi sa che mi converrebbe un corso di Yoga : - D

Ok, vediamo le mie soluzioni:

Lancio FTK Imager da Windows è vedo subito che:
La partizione visibile si chiama: data-hide seriale 48FD-A890
img_0085.jpg
img_0090.jpg
img_0112.jpg
img_0133.jpg
linux_virus.pdf
...

Continua a leggere...

 
Di Admin (del 07/01/2009 @ 21:13:21, in Computer Forensics, linkato 3308 volte)

Dall'esercizio proposto da Mario Pascucci (QUI), mi è venuta l'ispirazione per scrivere questo scriptino, che non fa altro che cercare, tramite sigfind, le signature 55AA delle partizioni FATx, e poi dagli offset, ricavati dalla moltiplicazione del numero di settore, trovato da sigfind, per 512 bytes, ricava il valore dei byte 32,33,34,35 delle FATx trovate e li converte in Big Endian, per poi calcolare la lunghezza totale della partizione in settori.
Infine, crea tutte le immagini dd contenenti le possibili partizioni nascoste. 

Sicuramente è grezzo, però abbastanza veloce, su 2Gb di pen-drive con tre strati, ci ha messo poco più di 20 minuti.

Mi piacerebbe renderlo multi File System, ma c'è da studiarsi bene i bytes che contengono i total sectors, dei vari file systems....e poi si potrebbe espanderlo con più features...comunque è un inizio ;)

 

#!/bin/bash
# MultiFat detector by Nanni Bassetti - http://www.nannibassetti.com
# It runs in this way: sh multiFat.sh disk.dd fat (e.g.)
file=$1
fs=$2
# looking for the signatures
date
sigfind -t $fs $file > sigs.txt
# taking only the sectors
for i in $(cat sigs.txt | awk -F "Block:" '{print $2}'|awk '{print $1}')
do
offset=$(( $i*512 ))
j=$(( j+1 ))
start_byte_fat_len=$(echo $offset + 32 | bc)
# controlling the word "FAT" inside the target partition
fat_flag=$(xxd -s $offset -l 512 $file| grep -i FAT)
if [ "$fat_flag" ]
then
# extracting bytes 32-35 from FAT
xxd -s $start_byte_fat_len -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin
#converting in big endian
dd if=lung.bin of=l1 skip=3 count=1 bs=1c
dd if=lung.bin of=l2 skip=2 count=1 bs=1c
dd if=lung.bin of=l3 skip=1 count=1 bs=1c
dd if=lung.bin of=l4 skip=0 count=1 bs=1c
cat l1 l2 l3 l4 > l.dat
rm l1
rm l2
rm l3
rm l4
rm lung.bin
#calculating the partition length
len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
len2=$(echo "obase=10; ibase=16; $len" | bc)
dd if=$file of=hidden$j.dd skip=$i count=$len2 bs=512
rm l.dat
fi
done
ls -l *.dd
date
exit

Non scagliate i pomodori...è solo un piccolo esercizio ;) ! (Test sono graditi)

QUI c'è l'evoluzione del programmino...

 
Di Admin (del 08/01/2009 @ 18:35:11, in Computer Forensics, linkato 4385 volte)

Ecco l'evoluzione di MultiFat, questo script permette di trovare vari file system annidati, di tipo FAT12, FAT16,FAT32, NTFS e EXT2/3 ;)

Si lancia così sh multifs.sh fat disco.dd oppure /dev/sdx;
per NTFS: sh multifs.sh ntfs disco.dd,
per ext2: multifs.sh ext2 disco.dd
per ext3: multifs.sh ext3 disco.dd

#!/bin/bash
# MultiFS detector and extractor by Nanni Bassetti - Blog: http://www.nannibassetti.com/dblog WEB Site: http://www.nannibassetti.com
# It can detect and extract hidden file systems and partitions from the mass memory support.
# It runs in this way e.g.: sh multifs.sh fat disk.dd or multifs.sh fat /dev/sda
# It works only on ntfs,fat12,fat16,fat32, ext2,ext3.
# Important things:
# FATx: sector size; bytes 11-12
# ext2/3: Block size (saved as the number of places to shift 1,024 to the left); bytes 24-27
# NTFS: sector size bytes; from 11 to 12
# ReiserFs: sector size bytes; 12-13

file=$2 # file or dev
fs=$1 # file system
date
# looking for the signatures
sigfind -t $fs $file > sigs.txt
# FAT case
if [ "$fs" = "fat" ]
then
# taking only the sectors
for i in $(cat sigs.txt | awk -F "Block:" '{print $2}'|awk '{print $1}')
do
offset=$(( $i*512 ))
j=$(( j+1 ))
# controlling the word "FAT" inside the target partition
fat_flag=$(xxd -s $offset -l 512 $file| grep -i FAT)
if [ "$fat_flag" ]
then
# looking for the sector size
start_bs=$(echo $offset + 11 | bc)
xxd -s $start_bs -l 2 $file | awk -F ":" '{print $2}' | xxd -p -r >bs.bin
#converting in big endian
dd if=bs.bin of=b1 skip=1 count=1 bs=1c
dd if=bs.bin of=b2 skip=0 count=1 bs=1c
cat b1 b2 > bs.dat
rm b1
rm b2
rm bs.bin
#calculating the sector size length
lenbs=$(cat bs.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
bs=$(echo "obase=10; ibase=16; $lenbs" | bc)

# check if byte 32-35 are 0 then the fat type is fat12
start_byte_fat_len=$(echo $offset + 32 | bc)
check_fat12=$(xxd -s $start_byte_fat_len -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r)
if [ ! "$check_fat12" ]
then
echo "File System chosen: FAT12"
start_byte_fat_len=$(echo $offset + 19 | bc)
# extracting bytes 19-20 from FAT
xxd -s $start_byte_fat_len -l 2 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin
#converting in big endian
dd if=lung.bin of=l1 skip=1 count=1 bs=1c
dd if=lung.bin of=l2 skip=0 count=1 bs=1c
cat l1 l2 > l.dat
rm l1
rm l2
rm lung.bin
#calculating the partition length
len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
len2=$(echo "obase=10; ibase=16; $len" | bc)
dd if=$file of=hidden$j.dd skip=$i count=$len2 bs=$bs
rm l.dat
ls -l *.dd
else
echo "File System chosen: $fs"
echo "Sector size: "$bs
start_byte_fat_len=$(echo $offset + 32 | bc)
# extracting bytes 32-35 from FAT
xxd -s $start_byte_fat_len -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin
#converting in big endian
dd if=lung.bin of=l1 skip=3 count=1 bs=1c
dd if=lung.bin of=l2 skip=2 count=1 bs=1c
dd if=lung.bin of=l3 skip=1 count=1 bs=1c
dd if=lung.bin of=l4 skip=0 count=1 bs=1c
cat l1 l2 l3 l4 > l.dat
rm l1
rm l2
rm l3
rm l4
rm lung.bin
#calculating the partition length
len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
len2=$(echo "obase=10; ibase=16; $len" | bc)
dd if=$file of=hidden$j.dd skip=$i count=$len2 bs=$bs
rm l.dat
ls -l *.dd
fi # end check FAT12
fi # end check if there is the FAT word
done
echo "File System chosen: $fs"
echo "Sector size: "$bs
fi # end check if fs is FAT type

# NTFS CASE
if [ "$fs" = "ntfs" ]
then

# taking only the sectors
for i in $(cat sigs.txt | awk -F "Block:" '{print $2}'|awk '{print $1}')
do
offset=$(( $i*512 ))
j=$(( j+1 ))

# controlling the word "NTFS" inside the target partition
fat_flag=$(xxd -s $offset -l 512 $file| grep -i ntfs)
if [ "$fat_flag" ]
then
# looking for the sector size
start_bs=$(echo $offset + 11 | bc)
xxd -s $start_bs -l 2 $file | awk -F ":" '{print $2}' | xxd -p -r >bs.bin
#converting in big endian
dd if=bs.bin of=b1 skip=1 count=1 bs=1c
dd if=bs.bin of=b2 skip=0 count=1 bs=1c
cat b1 b2 > bs.dat
rm b1
rm b2
rm bs.bin
#calculating the sector size length
lenbs=$(cat bs.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
bs=$(echo "obase=10; ibase=16; $lenbs" | bc)
echo "File System chosen: $fs"
echo "Sector size: "$bs
# extracting bytes 40-47 from the NTFS boot sector
start_byte_fat_len=$(echo $offset + 40 | bc)
xxd -s $start_byte_fat_len -l 8 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin
#converting in big endian
dd if=lung.bin of=l1 skip=7 count=1 bs=1c
dd if=lung.bin of=l2 skip=6 count=1 bs=1c
dd if=lung.bin of=l3 skip=5 count=1 bs=1c
dd if=lung.bin of=l4 skip=4 count=1 bs=1c
dd if=lung.bin of=l5 skip=3 count=1 bs=1c
dd if=lung.bin of=l6 skip=2 count=1 bs=1c
dd if=lung.bin of=l7 skip=1 count=1 bs=1c
dd if=lung.bin of=l8 skip=0 count=1 bs=1c
cat l1 l2 l3 l4 l5 l6 l7 l8> l.dat
rm l1
rm l2
rm l3
rm l4
rm l5
rm l6
rm l7
rm l8
rm lung.bin
#calculating the partition length
len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
len2=$(echo "obase=10; ibase=16; $len" | bc)
dd if=$file of=hidden$j.dd skip=$i count=$len2 bs=$bs
rm l.dat
fi
done
ls -l *.dd
echo "File System chosen: $fs"
echo "Sector size: "$bs
fi

# ext2/3 case (please test it!)
if [ "$fs" = "ext2" ] || [ "$fs" = "ext3" ]
then
# taking only the sectors
for i in $(cat sigs.txt | awk -F "Block:" '{print $2}'|awk '{print $1}')
do
offset=$(( $i*512 ))
j=$(( j+1 ))

# looking for the blocks size
start_bs=$(echo $offset + 24 | bc)
xxd -s $start_bs -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r >bs.bin
#converting in big endian
dd if=bs.bin of=b1 skip=3 count=1 bs=1c
dd if=bs.bin of=b2 skip=2 count=1 bs=1c
dd if=bs.bin of=b3 skip=1 count=1 bs=1c
dd if=bs.bin of=b4 skip=0 count=1 bs=1c
cat b1 b2 b3 b4 > bs.dat
rm b1
rm b2
rm b3
rm b4
rm bs.bin
#calculating the sector size length
lenbs=$(cat bs.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
lenbs2=$(echo "obase=10; ibase=16; $lenbs" | bc)
#Block size (saved as the number of places to shift 1,024 to the left)
# "<<" is the left shift bitwise operator
bs=$[ "1024 << $lenbs2" ]
echo "File System chosen: $fs"
echo "Sector size: "$bs
echo $start_byte_fat_len
# extracting bytes 4-7 from the EXT Superblock
start_byte_fat_len=$(echo $offset + 4 | bc)
xxd -s $start_byte_fat_len -l 4 $file | awk -F ":" '{print $2}' | xxd -p -r >lung.bin
#converting in big endian
dd if=lung.bin of=l1 skip=3 count=1 bs=1c
dd if=lung.bin of=l2 skip=2 count=1 bs=1c
dd if=lung.bin of=l3 skip=1 count=1 bs=1c
dd if=lung.bin of=l4 skip=0 count=1 bs=1c

cat l1 l2 l3 l4 > l.dat
rm l1
rm l2
rm l3
rm l4
rm lung.bin
#calculating the partition length
len=$(cat l.dat|xxd -p | tr [:lower:] [:upper:])
# converting in decimal
len2=$(echo "obase=10; ibase=16; $len" | bc)
# $(($i-2)) because it starts 2 sectors before the signature
dd if=$file of=hidden$j.dd skip=$(($i-2)) count=$len2 bs=$bs
rm l.dat
rm bs.dat
done
ls -l *.dd
echo "File System chosen: $fs"
echo "Sector size: "$bs
fi

date
exit

Click here to DOWNLOAD

 
Di Admin (del 21/02/2009 @ 20:03:03, in Computer Forensics, linkato 4641 volte)

Oggi abbiamo rilasciato CAINE 0.5, la Linux live computer forensics distro, realizzata nell'Università di Modena,  nella figura del suo project manager Giancarlo Giustini e con tutto il Caine Team:

Giancarlo Giustini, Michele Colajanni, Giordano Lanzi, Nanni Bassetti e Denis Frati.

Le principali novità sono:
- WinTaylor, forensic frontend for Windows environment (interfaccia per live analysis da Windows)
- New boot option: text mode (boot anche in modalità testuale per le macchine più vecchie)
- Ubuntu 8.04 packages updated (tutti i pacchetti aggiornati)
- Firefox 3.0.6
- Multi-languages report (report semi-automatico in 5 lingue, Inglese, Francese, Portoghese, Tedesco ed Italiano)

Più altri tools non presenti nelle versioni precedenti.

SITO UFFICIALE ; - )

 
Di Admin (del 06/03/2009 @ 18:46:58, in Computer Forensics, linkato 8959 volte)

Spesso accade di dimenticare tutte le potenzialità ed i tools di Sleuthkit, quindi ho deciso di scrivere una piccola guida veloce per illustrare gli usi più prêt-à-porter di questa utilissima suite di strumenti per la computer forensics, sviluppata da Brian Carrier.

Iniziamo dal disco/immagine

mmls /dev/sdaX o mmls disk.dd

serve a visualizzare le partizioni di un device o di un file immagine, fornendoci in output lo starting sector, molto utile per determinare l'offset di inizio partizione.
'Mmls' è simile a' fdisk-lu 'in Linux con alcune differenze. Vale a dire, che mostra i settori che non sono stati utilizzati in modo tale che questi possono essere usati per cercare dei dati nascosti. Inoltre, fornisce anche il valore della lunghezza delle partizioni in modo che possa essere usato con 'dd' più facilmente per estrarle.

fsstat -f file_system -o offset disk.dd

serve a fornire dati importanti sul file system presente sul dispositivo o file immagine del dispositivo in analisi, compreso un dato particolarmente interessante, ossia il block/cluster size.

ifind -f file_system -o offset -d numero_del_cluster disk.dd

serve a fornire l'i-node appartenente a quel determinato cluster. Il numero del cluster si ricava dall'offset decimale in bytes, che stiamo osservando, diviso la dimensione del cluster/blocco determinata da fsstat.
Se troviamo, per esempio, una stringa che inizia all'offset decimale 101345 in un file immagine DD, per ricavare l'i-node effettueremo 101345/dim_cluster.

ffind -f file_system -o offset disk.dd i-node

serve a fornire il nome del file corrispondente all'i-node.

istat -f file system -o offset disk.dd i-node

serve a fornire i metadati relativi al file corrsipondente a quell'i-node.

fls -d -r -p -f file_system -o offset disk.dd

serve a visualizzare i file cancellati, ricorsivamente in tutte le sottocartelle e col percorso completo (-p).

fls -a -l -p -r -f file_system -o offset disk.dd

lista tutti i files non cancellati.

icat -f file_system -o offset -r disk.dd i-node > nomefile.ext

Serve ad esportare il contenuto del file relativo all'i-node su file (nomefile.ext).

sigfind -t file_system disk.dd

Serve a cercare le "firme" che identificano i vari file system, -t list per visualizzare i vari file system supportati.

Altre informazioni preziose sono:
http://wiki.sleuthkit.org/index.php?title=FS_Analysis

The SleuthKit Manual:
http://wiki.sleuthkit.org/index.php?title=TSK_Tool_Overview

Esempio di come estrarre una stringa da uno spazio non allocato

Normalmente per cercare le stringhe utlizziamo la pipe di comandi:

strings -t d disk.dd | grep -i "abcd"
("-t d"  genera l'offset in decimale)

 che risulta essere più veloce del comando:

grep -iaob "abcd" disk.dd

-i ignora il maiuscolo/minuscolo;
-a tratta il file binario come se fosse testuale;
-b stampa il byte offset;
-o Mostra solo la parte di linea che coincide con la stringa cercata;

$ mmls disk.dd
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

     Slot        Start                     End                   Length             Description
00:  Meta    0000000000   0000000000   0000000001   Primary Tabl
01:  -----     0000000000    0000000062   0000000063   Unallocated
02:  00:00   0000000063   0174000014  0173999952  NTFS (0x07) 


Se vogliamo cercare le stringhe nello spazio non allocato di disk.dd e considerando che lo starting sector della partizione sia 63 e che il file system sia NTFS, allora:

1) Estraiamo lo spazio non allocato dal disco
blkls -f ntfs -o 63 disk.dd > disk.blkls

2) Estraiamo le stringhe e prendiamo solo quelle che contengono "abcdefg", dal solo spazio non allocato estratto da blkls (disk.blkls)
strings -t d disk.blkls | grep -i "abcdefg"
per esempio un risultato potrebbe essere: 10389739: abcdefg dove 10389739 è l'offset in bytes

3) Troviamo la dimensione del cluster impostata nel file system:
fsstat -f ntfs -o 63 disk.dd
<...>
CONTENT INFORMATION
----------------------------------
Sector Size: 512
Cluster Size: 1024
Total Cluster Range: 0 - 21749992
Total Sector Range: 0 - 173999950


4) Dividiamo 10389739 per 1024 ed otteniamo il numero 10146 che è il cluster che contiene la stringa "abcdefg", però nel file disk.blkls e non nel file immagine, quindi dobbiamo convertire l'indirizzo del cluster del file immagine disk.blkls in un indirizzo reale del file immagine originale, cioè disk.dd

5) blkcalc -f ntfs -o 63 -u 10146 disk.dd otteniamo 59382 che è l'indirizzo reale del cluster che contiene la stringa cercata.

6) Possiamo visualizzare il cluster usando il comando:
blkcat -f ntfs -o 63 disk.dd 59382 | less

7) Adesso cerchiamo l'i-node che ha un pointer al cluster 59382
ifind -f ntfs -o 63 -a -d 59382 disk.dd
che ci ritorna il numero 493-128-1 come risultato.

8) Reperiamo informazioni sui metadati che si riferiscono all'i-node 493:
istat -f ntfs -o 63 disk.dd 493
<...>
$FILE_NAME Attribute Values:
Flags: Archive
Name: pippo.jpg
Parent MFT Entry: 458   Sequence: 122
Allocated Size: 0       Actual Size: 0
Created:        Tue Mar 18 15:05:19 2008
File Modified:  Tue Mar 18 15:05:19 2008
MFT Modified:   Tue Mar 18 15:05:19 2008
Accessed:       Tue Mar 18 15:05:19 2008


9) Vediamo se c'è ancora un file associato all'i-node:
ffind -f ntfs -o 63 -a disk.dd 493
 /Document and Settings/spectra/Documenti/pippo.jpg
abbiamo trovato un file che si chiama pippo.jpg.

10) Recuperiamo il file pippo.jpg
icat -f ntfs -o 63 -r disk.dd 493 > pippo.jpg

Consideriamo che lo starting sector della partizione sia 63, che disk.dd sia NTFS, tramite il comando icat esportiamo il contenuto del file basandoci sul suo numero di i-node.

Spero che questo piccolo manualetto pratico sia utile a tutti quelli, che come me, cominciano ad avere l'had disk biologico sempre più full : - D

Nanni Bassetti

 
Pagine: 1 2 3 4 5 6 7 8 9 10 11
Ci sono 66 persone collegate

< febbraio 2025 >
L
M
M
G
V
S
D
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
   
             

Cerca per parola chiave