*************************************************************************************************************************************** ***** ***** ***** DATA HIDING: UN PEN DRIVE "MULTISTRATO" ***** ***** ***** ***** Esercizio di Computer Forensics ideato da Mario Pascucci ***** ***** http://www.ismprofessional.net/pascucci/index.php/2008/12/data-hiding-un-pen-drive-multistrato/ ***** ***** ***** *************************************************************************************************************************************** SOLUZIONE PRESENTATA DA DENIS FRATI www.denisfrati.it - webmaster@denisfrati.it *************************** ANTEFATTO ******************************** Un normalissimo pen drive, acquistato in un centro commerciale per pochi euro. Dentro vi ho nascosto dei dati sotto forma di normali file (immagini e testi). Usando foremost o photorec (due applicazioni tipicamente di uso forense) potreste trovare immediatamente i dati ed i file, ma… Dove sarebbe il gusto del gioco? *************************** TARGET DA RAGGIUNGERE/RAGGIUNTI (o presunti tali) ******************************** **** Una bandierina per ogni filesystem che riuscirete a montare senza errori (ossia senza che il sistema operativo lamenti errori), a parte quello non nascosto. file system A NON nascosto (label data-hide) - mount -t vfat -o ro,noatime,offset=31744 Scrivania/pen-drive.dd /tmp/fat-1 file system B nascosto (label nascosto1) - mount -t vfat -o ro,noatime,offset=1009935360 Scrivania/pen-drive.dd /tmp/fat-2 file system C nascosto (label nascosto2) - mount -t vfat -o ro,noatime,loop,offset=512000000 Scrivania/pen-drive.dd /tmp/fat-3 **** Una bandierina per ogni informazione che riuscirete ad estrarre dal singolo filesystem, in particolare: etichetta del volume, tipo di filesystem, dimensione totale, spazio occupato/libero. --file sistem A NON nascosto - label data-hide OEM Name: mkdosfs Volume ID: 0x48fda890 Volume Label (Boot Sector): data-hide Volume Label (Root Directory): data-hide File System Type Label: FAT32 Spazio libero: Free Sector Count (FS Info): 1944320 Settori liberi >>> 1944320 * 512 = 995491840 bytes Spazio utilizzato: 12411193 bytes Offset inizio: 31744 bytes dimensione: 3796154368 bytes hash MD5 file system: bbddac639011242d401b0c50b510687e --file system B nascosto - label nascosto1 OEM Name: mkdosfs Volume ID: 0x48fdae42 Volume Label (Boot Sector): nascosto1 Volume Label (Root Directory): nascosto1 File System Type Label: FAT32 Spazio libero: Free Sector Count (FS Info): 1949264 settori liberi >>> 1949264 * 512 = 998023168 bytes Spazio utilizzato: 11698454 bytes Offset inizio: 1009935360 bytes dimensione: 1011719168 bytes hash MD5 file system: 40d978e07e0fa873a580e93634dca282 --file system C nascosto - label nascosto2 OEM Name: mkdosfs Volume ID: 0x48fdaf31 Volume Label (Boot Sector): nascosto2 Volume Label (Root Directory): nascosto2 File System Type Label: FAT16 Spazio libero: 408870285 bytes Spazio utilizzato: 527987 bytes dimensione: 1552588800 bytes hash MD5 file system: 59db3b0f38ef7c5317e24d6ede94c703 **** Una bandierina per ogni file che riuscirete a trovare. i file presenti in due file system sono stati estratti con Autospy, ma nulla vietava di estrarttii con STK usando # icat -f fat /dev/loopN inode_number > mio_file.estensione e sono nella directory allegata. Le denominazioni sono quelle assegnate di default da Autopsy, dalle quali si desume i nomi corretti. I file presenti nel terzo file system sono stati estratti con il semplice copia/incolla (per nulla forense) dopo aver montato il file system in "ro,loop,noatime, offset..." . nelle righe sottostanti sono abbinati ai relativi hash MD5 --file sistem A NON nascosto - label data-hide ba04e86af629a1344bb470d02daa0b5f vol2-C..IMG_0085.JPG d006bc0ccf30799065f562872f2d86b7 vol2-C..IMG_0090.JPG c413825fe1ce42a772777ab977f89b30 vol2-C..IMG_0112.JPG df23b653636814d5c353f372aec34e1d vol2-C..IMG_0133.JPG 893e5de193275258ca7727a74d7cf0a9 vol2-C..linux-virus.pdf --file system B nascosto - label nascosto1 25e26cecd50acf788ff674aec409683d vol3-C..IMG_0154.JPG 9fbdc8c4a26ab61e3a66373af15747b0 vol3-C..IMG_0155.JPG 71532bf108422353b68e86876b97cce2 vol3-C..IMG_0156.JPG ef2bbd4ca03560137f1a69fa477eb8aa vol3-C..IMG_0477.JPG --file system C nascosto - label nascosto2 e58cafb2d2878eb6268eec5ee562ae70 16c450.pdf 087220ea47c7fff6839b11bd7d6c7ea9 62256.pdf **** Una bandierina per ogni informazione trovata sul singolo file nascosto, ossia: nome originale, date di modifica/accesso/creazione. --file sistem A NON nascosto - label data-hide ---------------------------------------------------------------- Long Name: IMG_0085.JPG Short Name: IMG_0085.JPG Directory Entry: 4 Allocated File Attributes: File, Archive Size: 3550122 Directory Entry Times: Written: Sun Aug 12 19:16:38 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Long Name: IMG_0090.JPG Short Name: IMG_0090.JPG Directory Entry: 5 Allocated File Attributes: File, Archive Size: 2847026 Directory Entry Times: Written: Sun Aug 12 19:59:26 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Long Name: IMG_0112.JPG Short Name: IMG_0112.JPG Directory Entry: 6 Allocated File Attributes: File, Archive Size: 3103355 Directory Entry Times: Written: Wed Aug 15 20:02:18 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Long Name: IMG_0133.JPG Short Name: IMG_0133.JPG Directory Entry: 7 Allocated File Attributes: File, Archive Size: 2762406 Directory Entry Times: Written: Sun Aug 19 19:08:12 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Long name: linux-virus.pdf Short Name: LINUX-~1.PDF Directory Entry: 10 Allocated File Attributes: File, Archive Size: 144188 Directory Entry Times: Written: Sat Sep 6 23:08:12 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:10:58 2008 ----------------------------------------------------------------- --file system B nascosto - label nascosto1 ----------------------------------------------------------- Long Name: IMG_0154.JPG Short Name: IMG_0154.JPG Directory Entry: 4 Allocated File Attributes: File, Archive Size: 3256972 Directory Entry Times: Written: Tue Oct 21 12:26:34 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Long Name: IMG_0155.JPG Short Name: IMG_0155.JPG Directory Entry: 5 Allocated File Attributes: File, Archive Size: 2882079 Directory Entry Times: Written: Tue Oct 21 12:26:38 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Long Name: IMG_0156.JPG Short Name: IMG_0156.JPG Directory Entry: 6 Allocated File Attributes: File, Archive Size: 3447899 Directory Entry Times: Written: Tue Oct 21 12:26:40 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Long Name: IMG_0477.JPG Short Name: IMG_0477.JPG Directory Entry: 7 Allocated File Attributes: File, Archive Size: 2107408 Directory Entry Times: Written: Tue Oct 21 12:26:46 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- --file system C nascosto - label nascosto2 ----------------------------------------------------- Long Name: 16c450.pdf Short Name: 16C450.PDF Directory Entry: 5 Allocated File Attributes: File, Archive Size: 364643 Directory Entry Times: Written: Tue Oct 21 12:32:46 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:32:46 2008 ----------------------------------------------------- Name: 62256.pdf Name: 62256.PDF Directory Entry: 7 Allocated File Attributes: File, Archive Size: 146960 Directory Entry Times: Written: Tue Oct 21 12:33:18 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:33:18 2008 ************************************************************************************************ ************************************ PROCEDIMENTO ********************************************** ************************************************************************************************ Ho iniziato con il prendere contatto con quanto l'immagine del drive usb mostra -----------------------Shell----------------------------- nemo@nexus:~$ fdisk -ul Scrivania/pen-drive.dd Si devono impostare cilindri. È possibile effettuare questa operazione dal menu delle funzioni supplementari. Disco Scrivania/pen-drive.dd: 0 MB, 0 byte 63 heads, 62 sectors/track, 0 cylinders, totale 0 settori Units = settori of 1 * 512 = 512 bytes Disk identifier: 0x1ae05d97 Dispositivo Boot Start End Blocks Id System Scrivania/pen-drive.dd1 62 1972529 986234 b W95 FAT32 nemo@nexus:~$ mmls Scrivania/pen-drive.dd DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length Description 00: Meta 0000000000 0000000000 0000000001 Primary Table (#0) 01: ----- 0000000000 0000000061 0000000062 Unallocated 02: 00:00 0000000062 0001972529 0001972468 Win95 FAT32 (0x0B) 03: ----- 0001972530 0003948543 0001976014 Unallocated -----------------------Shell fine----------------------------- ho definito un device di loop per l'immagine sudo losetup /dev/loop0 Scrivania/pen-drive.dd ho quindi avviato testdisk su loop0. verificando l'unica partizione rilevata (label "data-hide") e per la quale il tool segnala errori di non coerenza tra indirizzamento CHS ed LBA. Effettuando l'analisi viene rilevata una seconda partizione (label "nascosto1") ---------parte dell'output a video di test disk------------- Disk /dev/loop0 - 2021 MB / 1928 MiB - CHS 246 255 63 Partition Start End Size in sectors D FAT32 0 0 63 122 254 63 1975933 [data-hide] D FAT32 122 200 1 245 254 63 1979460 [nascosto1] ------------------------------------------------------------ ******************************************* FILE SYSTEM A NON NASCOSTO ******************************************* Inizio lavorando sulla partizione "in chiaro", quella visibile, la cui label è "data-hide". La partizione, una FAT 32, comincia al settore 62, il sessantatreesimo (0-62). 62 * 512 = 31744 bytes nemo@nexus:~$ xxd -s 31744 -l 256 Scrivania/pen-drive.dd 0007c00: eb58 906d 6b64 6f73 6673 0000 0208 2000 .X.mkdosfs.... . 0007c10: 0200 0000 00f8 0000 3e00 3f00 0000 0000 ........>.?..... 0007c20: f418 1e00 8307 0000 0000 0000 0200 0000 ................ 0007c30: 0100 0600 0000 0000 0000 0000 0000 0000 ................ 0007c40: 0000 2990 a8fd 4864 6174 612d 6869 6465 ..)...Hdata-hide 0007c50: 2020 4641 5433 3220 2020 0e1f be77 7cac FAT32 ...w|. 0007c60: 22c0 740b 56b4 0ebb 0700 cd10 5eeb f032 ".t.V.......^..2 0007c70: e4cd 16cd 19eb fe54 6869 7320 6973 206e .......This is n 0007c80: 6f74 2061 2062 6f6f 7461 626c 6520 6469 ot a bootable di 0007c90: 736b 2e20 2050 6c65 6173 6520 696e 7365 sk. Please inse 0007ca0: 7274 2061 2062 6f6f 7461 626c 6520 666c rt a bootable fl 0007cb0: 6f70 7079 2061 6e64 0d0a 7072 6573 7320 oppy and..press 0007cc0: 616e 7920 6b65 7920 746f 2074 7279 2061 any key to try a 0007cd0: 6761 696e 202e 2e2e 200d 0a00 0000 0000 gain ... ....... 0007ce0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0007cf0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ visualizzando il contenuto dei primi 256 bytes della partizione, verifichiamo il nome del volume "data-hide" (71-81) e la tipologia di file system FAT32 (82-89) Conoscendo l'offset (31744 espresso in bytes) dell'inizio partizione e possibile montarla senza che il sistema dia alcun errore: nemo@nexus:~$ sudo mount -t vfat -o ro,noatime,offset=31744 Scrivania/pen-drive.dd /tmp/fat-1 i bytes 32-35 (relativamente all'inizio della partizione, definiscono la dimensioone, in settore, del file system: 0007c20: f418 1e00 >> viene invertito l'ordine tenendo contro della struttura little-endian in 0x001e18f4 = 7414364 in decimale, ossia la dimensione espressa in settori, 3796154368 in bytes. calcoliamo l'hash del device, ossia del file system, della partizione in parole povere nemo@nexus:~$ sudo md5sum /dev/loop1 bbddac639011242d401b0c50b510687e /dev/loop1 un file system come questo non è visionabile con strumenti quali Autopsy o PTK, perchè essendo nascosto in un altro non ne rilevano l'offset di inizio. Per analizzarlo si può usare lo sleuthkit a riga di comando, passando l'offset di inizio partizione, oppure estrarre la partizione per poi analizzarla con le GUI sopra menzionate. Riporto i passaggi a scopo didattico: con dd estraggo i dati, saltando i primi 62 settori (l'offset di inizio partizione) e clonando i successivi 7414364 (la dimensione) nemo@nexus:~$ dd if=Scrivania/pen-drive.dd of=Scrivania/fat1 skip=62 count=7414364 bs=512 3948482+0 registrazioni dentro 3948482+0 registrazioni fuori 2021622784 byte (2,0 GB) copiati, 119,805 s, 16,9 MB/s nemo@nexus:~$ md5sum Scrivania/fat1 bbddac639011242d401b0c50b510687e Scrivania/fat1 come si può osservare l'hash coincide con quello del device. Abbiamo estratto la partizione correttamente. con "du" (disk usage) determiniamo lo spazio occupato dai file attivi, espresso in bytes nemo@nexus:~$ du -b /tmp/fat-1 12411193 /tmp/fat-1 il tool fsstat, dello Sleuthkit, ci permette di estrarre informazioni rilevanti: nemo@nexus:~$ sudo fsstat /dev/loop1 FILE SYSTEM INFORMATION -------------------------------------------- File System Type: FAT32 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Tipo file system OEM Name: mkdosfs <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Nome OEM Volume ID: 0x48fda890 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Identificativo volume Volume Label (Boot Sector): data-hide <<<<<<<<<<<<<<<<< Label Volume Label (Root Directory): data-hide <<<<<<<<<<<<<<< " File System Type Label: FAT32 Next Free Sector (FS Info): 28134 Free Sector Count (FS Info): 1944320 <<<<<<<<<<<<<<<<<<< Settori liberi >>> 1944320 * 512 = 995491840 bytes liberi Sectors before file system: 0 File System Layout (in sectors) Total Range: 0 - 1972467 * Reserved: 0 - 31 ** Boot Sector: 0 ** FS Info Sector: 1 ** Backup Boot Sector: 6 * FAT 0: 32 - 1954 * FAT 1: 1955 - 3877 * Data Area: 3878 - 1972467 ** Cluster Area: 3878 - 1972461 *** Root Directory: 3878 - 3885 ** Non-clustered: 1972462 - 1972467 METADATA INFORMATION -------------------------------------------- Range: 2 - 31497446 Root Directory: 2 CONTENT INFORMATION -------------------------------------------- Sector Size: 512 Cluster Size: 4096 Total Cluster Range: 2 - 246074 FAT CONTENTS (in sectors) -------------------------------------------- 3878-3885 (8) -> EOF 3886-10821 (6936) -> EOF 10822-16389 (5568) -> EOF 16390-22453 (6064) -> EOF 22454-27853 (5400) -> EOF 27854-28141 (288) -> EOF -----------------------------------------------------fine output fsstat----------------- con fls (sempre STK) determiniamo i file attivi e cancellati presenti: nemo@nexus:~$ sudo fls -f fat -r /dev/loop1 r/r 3: data-hide (Volume Label Entry) r/r 4: IMG_0085.JPG <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< r/r 5: IMG_0090.JPG <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< r/r 6: IMG_0112.JPG <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< r/r 7: IMG_0133.JPG <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< r/r 10: linux-virus.pdf <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< v/v 31497443: $MBR v/v 31497444: $FAT1 v/v 31497445: $FAT2 d/d 31497446: $OrphanFiles per i quali estraiamo gli attributi quali nome e mac-time con nemo@nexus:~$ sudo istat -f fat /dev/device numero_inode ---------------------------------------------------------------- Directory Entry: 4 Allocated File Attributes: File, Archive Size: 3550122 <<<<<<<<<<<<<<<<<< Dimensione Name: IMG_0085.JPG <<<<<<<<<<<<<<<<<< Nome Directory Entry Times: Written: Sun Aug 12 19:16:38 2007 <<<<< i tre mac time (idem per i file sotto riportati) Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Directory Entry: 5 Allocated File Attributes: File, Archive Size: 2847026 Name: IMG_0090.JPG Directory Entry Times: Written: Sun Aug 12 19:59:26 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Directory Entry: 6 Allocated File Attributes: File, Archive Size: 3103355 Name: IMG_0112.JPG Directory Entry Times: Written: Wed Aug 15 20:02:18 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Directory Entry: 7 Allocated File Attributes: File, Archive Size: 2762406 Name: IMG_0133.JPG Directory Entry Times: Written: Sun Aug 19 19:08:12 2007 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:08:42 2008 ---------------------------------------------------------------- Directory Entry: 10 Allocated File Attributes: File, Archive Size: 144188 Name: LINUX-~1.PDF Directory Entry Times: Written: Sat Sep 6 23:08:12 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:10:58 2008 ----------------------------------------------------------------- in questa partizione non sono stati rilevati file cancellati. ******************************************* FILE SYSTEM B NASCOSTO ******************************************* Tornando al file system con label "nascosto1" individuato da testdisk D FAT32 122 200 1 245 254 63 1979460 [nascosto1] stando all'output di testdisk l'offset del file system è identificato dalle coordinate CHS 122 200 1, mentre il termine in CHS 245 254 63, che traslate nel corrispettivo LBA sono: ((122 * 255 + 200) * 63) + 1 - 1 = 1972530 settore di inizio >> * 512 = 1009935360 bytes ((245 * 255 + 254) * 63) + 63 -1 = 3951989 settore di fine >> * 512 = 2023418368 bytes dimensione >>> 2023418368 - 1009935360 = 1013483008 + 512 = 1013483520 bytes (alla luce di quanto segue non risulta corretta) nemo@nexus:~$ xxd -s 1009935360 -l 256 Scrivania/pen-drive.dd 3c326400:eb58 906d 6b64 6f73 6673 0000 0208 2000 .X.mkdosfs.... . 3c326410:0200 0000 00f8 0000 2000 4000 0000 0000 ........ .@..... 3c326420:ce26 1e00 8607 0000 0000 0000 0200 0000 .&.............. 3c326430:0100 0600 0000 0000 0000 0000 0000 0000 ................ 3c326440:0000 2942 aefd 486e 6173 636f 7374 6f31 ..)B..Hnascosto1 3c326450:2020 4641 5433 3220 2020 0e1f be77 7cac FAT32 ...w|. 3c326460:22c0 740b 56b4 0ebb 0700 cd10 5eeb f032 ".t.V.......^..2 3c326470:e4cd 16cd 19eb fe54 6869 7320 6973 206e .......This is n 3c326480:6f74 2061 2062 6f6f 7461 626c 6520 6469 ot a bootable di 3c326490:736b 2e20 2050 6c65 6173 6520 696e 7365 sk. Please inse 3c3264a0:7274 2061 2062 6f6f 7461 626c 6520 666c rt a bootable fl 3c3264b0:6f70 7079 2061 6e64 0d0a 7072 6573 7320 oppy and..press 3c3264c0:616e 7920 6b65 7920 746f 2074 7279 2061 any key to try a 3c3264d0:6761 696e 202e 2e2e 200d 0a00 0000 0000 gain ... ....... 3c3264e0:0000 0000 0000 0000 0000 0000 0000 0000 ................ 3c3264f0:0000 0000 0000 0000 0000 0000 0000 0000 ................ visualizzando il contenuto dei primi 256 bytes verifichiamo il nome del volume "nascosto1" (71-81) e la tipologia di file system FAT32 (82-89), la dimensione del file system byte 32-35 ce26 1e00 >>001e26ce = 1976014 dimensione in settori (in bytes 1011719168) ricavata dal bootsector della fat (differisce da quella calcolata dall'output di testdisk). Conoscendo l'offset (1009935360 espresso in bytes) dell'inizio partizione e possibile montarla senza che il sistema dia alcun errore: nemo@nexus:~$ sudo mount -t vfat -o ro,noatime,offset=1009935360 Scrivania/pen-drive.dd /tmp/fat-2 Rimane il problema di poter analizzare tale file system con Autopsy o PTK (sebbene si possa sempre usare STK con offset da riga di comando), decidiamo quindi di estrarlo dall'immagine nemo@nexus:~$ dd if=Scrivania/pen-drive.dd of=Scrivania/fat2 skip=1972530 count=1976014 bs=512 1976014+0 registrazioni dentro 1976014+0 registrazioni fuori 1011719168 byte (1,0 GB) copiati, 64,5589 s, 15,7 MB/s ne calcoliamo l'hash MD5 nemo@nexus:~$ md5sum Scrivania/fat2 40d978e07e0fa873a580e93634dca282 Scrivania/fat2 e lo confrontiamo con quello del device di loop nemo@nexus:~$ sudo md5sum /dev/loop2 40d978e07e0fa873a580e93634dca282 /dev/loop2 gli hash MD5 coincidono. Avevo anche eseguito l'estrazione del file system dall'immagine usando per l'opzione count di dd la dimensione calcolata attraveso la conversione delle coordinate CHS, ottenendo un'immagine il cui hash non coincideva con quello del device. I dati forniti da testdisk riguardo all'ending point del file system non erano corretti, utilizzando quelli estrapolati dalla struttura della FAT si è invece ottenuto un'immagine dall'hash coincidente. con "du" (disk usage) determiniamo lo spazio occupato dai file attivi, espresso in bytes nemo@nexus:~$ du -b /tmp/fat-2 11698454 /tmp/fat-2 il tool fsstat, dello Sleuthkit, ci permette di estrarre informazioni rilevanti: nemo@nexus:~$ sudo fsstat /dev/loop2 [sudo] password for nemo: FILE SYSTEM INFORMATION -------------------------------------------- File System Type: FAT32 OEM Name: mkdosfs <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume ID: 0x48fdae42 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume Label (Boot Sector): nascosto1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume Label (Root Directory): nascosto1 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< File System Type Label: FAT32 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Next Free Sector (FS Info): 26740 Free Sector Count (FS Info): 1949264 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 1949264 * 512 = 998023168 spazio libero in bytes Sectors before file system: 0 File System Layout (in sectors) Total Range: 0 - 1976013 * Reserved: 0 - 31 ** Boot Sector: 0 ** FS Info Sector: 1 ** Backup Boot Sector: 6 * FAT 0: 32 - 1957 * FAT 1: 1958 - 3883 * Data Area: 3884 - 1976013 ** Cluster Area: 3884 - 1976011 *** Root Directory: 3884 - 3891 ** Non-clustered: 1976012 - 1976013 METADATA INFORMATION -------------------------------------------- Range: 2 - 31554086 Root Directory: 2 CONTENT INFORMATION -------------------------------------------- Sector Size: 512 Cluster Size: 4096 Total Cluster Range: 2 - 246517 FAT CONTENTS (in sectors) -------------------------------------------- 3884-3891 (8) -> EOF 3892-10259 (6368) -> EOF 10260-15891 (5632) -> EOF 15892-22627 (6736) -> EOF 22628-26747 (4120) -> EOF con fls (sempre STK) determiniamo i file attivi e cancellati presenti: nemo@nexus:~$ sudo fls -f fat -r /dev/loop2 [sudo] password for nemo: r/r 3: nascosto1 (Volume Label Entry) r/r 4: IMG_0154.JPG r/r 5: IMG_0155.JPG r/r 6: IMG_0156.JPG r/r 7: IMG_0477.JPG v/v 31554083: $MBR v/v 31554084: $FAT1 v/v 31554085: $FAT2 d/d 31554086: $OrphanFiles non sono presenti file cancellati. Per i file individuati con il seguente comando sudo istat -f fat /dev/loop2 inode_number estraiamo i metadati, tra cui dimensione, short name del file e tempi di creazione e scrittura del file. ----------------------------------------------------------- Directory Entry: 4 Allocated File Attributes: File, Archive Size: 3256972 Name: IMG_0154.JPG Directory Entry Times: Written: Tue Oct 21 12:26:34 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Directory Entry: 5 Allocated File Attributes: File, Archive Size: 2882079 Name: IMG_0155.JPG Directory Entry Times: Written: Tue Oct 21 12:26:38 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Directory Entry: 6 Allocated File Attributes: File, Archive Size: 3447899 Name: IMG_0156.JPG Directory Entry Times: Written: Tue Oct 21 12:26:40 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- Directory Entry: 7 Allocated File Attributes: File, Archive Size: 2107408 Name: IMG_0477.JPG Directory Entry Times: Written: Tue Oct 21 12:26:46 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:26:56 2008 ----------------------------------------------------------- ******************************************* FILE SYSTEM C NASCOSTO ******************************************* Non contento ho voluto effettuare una ulteriore verifica sulla presenza di altri file system utilizzando "sigfind" (signature find) un tool dello Sleuthkit deputato all'individuazione dei bytes di "firma" dei file system: nemo@nexus:~$ sigfind sigfind [-b bsize] [-o offset] [-t template] [-lV] [hex_signature] file -b bsize: Give block size (default 512) -o offset: Give offset into block where signature should exist (default 0) -l: Signature will be little endian in image -V: Version -t template: The name of a data structure template: dospart, ext2, ext3, fat, hfs, hfs+, ntfs, ufs1, ufs2 inizialmente ho ricercato la presenza di file system ext2 ed ext3 (con la medesima signature) nemo@nexus:~$ sigfind -t ext2 Scrivania/pen-drive.dd Block size: 512 Offset: 56 Signature: 53EF Block: 1997054 (-) 1997054 * 512 = 1022491648 nemo@nexus:~$ xxd -s 1022491648 -l 256 Scrivania/pen-drive.dd 3cf1fc00:916d 888e 3da0 cb96 1b8e ec1c f7fc 3daa .m..=.........=. 3cf1fc10:f0f5 24e3 253d c96a 539b 941d d235 6686 ..$.%=.jS....5f. 3cf1fc20:4023 db6e e0a8 f942 eddd 8ff0 e2a3 5025 @#.n...B......P% 3cf1fc30:4ff5 7962 4866 5386 53ef fe35 a46b 4bd9 O.ybHfS.S..5.kK. 3cf1fc40:5d3b 9a51 9c65 4a4e 4b51 4c51 b089 7cb7 ];.Q.eJNKQLQ..|. 3cf1fc50:0d26 e0b9 f982 8f52 7fcf 5a96 7b09 05b8 .&.....R..Z.{... 3cf1fc60:11fc 8fce 3080 823f c9ac b994 5295 8d5d ....0..?....R..] 3cf1fc70:4946 2a9d 38d9 b2b5 bc32 c055 2506 4f90 IF*.8....2.U%.O. 3cf1fc80:fc9b 7031 9e3f 2aba 2170 acb8 2588 2c0a ..p1.?*.!p..%.,. 3cf1fc90:a8fd d8f4 f4ab e6b6 915b 98fd 5de9 cec1 .........[..]... 3cf1fca0:6395 e58e 2903 2939 7f30 e39a b125 8b17 c...).)9.0...%.. 3cf1fcb0:4665 9593 9550 a7a7 7aca 7539 64a2 66e8 Fe...P..z.u9d.f. 3cf1fcc0:3a94 ddde 8563 1c58 6554 7264 3b42 1519 :....c.XeTrd;B.. 3cf1fcd0:53eb 5c87 8a2c e696 d271 16d3 222e 361e S.\..,...q..".6. 3cf1fce0:491f 4fce b4a7 5db9 ae6d 5233 a74d f32a I.O...]..mR3.M.* 3cf1fcf0:099f 3edd d9c8 d23a f97e 5b90 c769 0412 ..>....:.~[..i.. come si può vedere all'offset 56 è stata individuata la signature 53EF, tuttavia l'analisi di alcuni campi della struttura restituiva informazioni non coerenti motivo per il quale ritenevo casuale la presenza della signature. Ricercavo quindi la presenza di file system Fat o Ntfs (con la medesima signature) nemo@nexus:~$ sigfind -t fat Scrivania/pen-drive.dd Block size: 512 Offset: 510 Signature: 55AA Block: 0 (-) Block: 62 (+62) Block: 63 (+1) Block: 68 (+5) Block: 7820 (+7752) Block: 1000000 (+992180) <<<<< 512000000 Block: 1972529 (+972529) Block: 1972530 (+1) Block: 1972531 (+1) Block: 1972536 (+5) in questo caso appariva improbabile una coincidenza che presentasse la signature di nostro interesse, e quindi l'inizio del file system, dal settore 1000000, mentre appariva più probabile un posizionamento voluto in un punto che offrisse un offset facilmente memorizzabile per il cattivo (1000000 * 512 = 512000000). Visionando il contenuto dei primi 256 bytes di tale settore, troviamo: nemo@nexus:~$ xxd -s 512000000 -l 256 Scrivania/pen-drive.dd 1e848000:eb3c 906d 6b64 6f73 6673 0000 0210 0100 .<.mkdosfs...... 1e848010:0200 0200 00f8 c400 2000 4000 0000 0000 ........ .@..... 1e848020:0035 0c00 0000 2931 affd 486e 6173 636f .5....)1..Hnasco 1e848030:7374 6f32 2020 4641 5431 3620 2020 0e1f sto2 FAT16 .. 1e848040:be5b 7cac 22c0 740b 56b4 0ebb 0700 cd10 .[|.".t.V....... 1e848050:5eeb f032 e4cd 16cd 19eb fe54 6869 7320 ^..2.......This 1e848060:6973 206e 6f74 2061 2062 6f6f 7461 626c is not a bootabl 1e848070:6520 6469 736b 2e20 2050 6c65 6173 6520 e disk. Please 1e848080:696e 7365 7274 2061 2062 6f6f 7461 626c insert a bootabl 1e848090:6520 666c 6f70 7079 2061 6e64 0d0a 7072 e floppy and..pr 1e8480a0:6573 7320 616e 7920 6b65 7920 746f 2074 ess any key to t 1e8480b0:7279 2061 6761 696e 202e 2e2e 200d 0a00 ry again ... ... 1e8480c0:0000 0000 0000 0000 0000 0000 0000 0000 ................ 1e8480d0:0000 0000 0000 0000 0000 0000 0000 0000 ................ 1e8480e0:0000 0000 0000 0000 0000 0000 0000 0000 ................ 1e8480f0:0000 0000 0000 0000 0000 0000 0000 0000 ................ da cui determiniamo la presenza del file system con label "nascosto2), la sua tipologia FAT16 e dimensione bytes 32-35 = 0035 0c00 >> 000c3500 = 3032400 settori, ossia 1552588800 bytes. procediamo quindi ad estrarre il file system e a calcolarne l'hash MD5 nemo@nexus:~$ dd if=Scrivania/pen-drive.dd of=Scrivania/fat3 skip=1000000 count=3032400 bs=512 2948544+0 registrazioni dentro 2948544+0 registrazioni fuori 1509654528 byte (1,5 GB) copiati, 87,9014 s, 17,2 MB/s nemo@nexus:~$ md5sum Scrivania/fat3 59db3b0f38ef7c5317e24d6ede94c703 Scrivania/fat3 conoscendo l'offset possiamo montare il file system nemo@nexus:~$ sudo mount -t vfat -o ro,noatime,loop,offset=512000000 Scrivania/pen-drive.dd /tmp/fat-3 senza che il file system dia alcun errore. Calcoliamo quindi l'hash MD5 del device nemo@nexus:~$ sudo md5sum /dev/loop3 59db3b0f38ef7c5317e24d6ede94c703 /dev/loop3 rilevando la coincidenza con quello del file system estratto con dd. verifichiamo lo spazio (in bytes) utilizzato per allocare i file nemo@nexus:~$ du -b /tmp/fat-3 527987 /tmp/fat-3 ed estraiamo le informazioni di rilievo dal file system nemo@nexus:~$ sudo fsstat /dev/loop3 FILE SYSTEM INFORMATION -------------------------------------------- File System Type: FAT16 OEM Name: mkdosfs <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume ID: 0x48fdaf31 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume Label (Boot Sector): nascosto2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Volume Label (Root Directory): nascosto2 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< File System Type Label: FAT16 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Sectors before file system: 0 File System Layout (in sectors) Total Range: 0 - 799999 * Reserved: 0 - 0 ** Boot Sector: 0 * FAT 0: 1 - 196 * FAT 1: 197 - 392 * Data Area: 393 - 799999 ** Root Directory: 393 - 424 ** Cluster Area: 425 - 799992 ** Non-clustered: 799993 - 799999 METADATA INFORMATION -------------------------------------------- Range: 2 - 12793718 Root Directory: 2 CONTENT INFORMATION -------------------------------------------- Sector Size: 512 Cluster Size: 8192 Total Cluster Range: 2 - 49974 FAT CONTENTS (in sectors) -------------------------------------------- 441-1160 (720) -> EOF 1161-1448 (288) -> EOF in questo caso non abbiamo, come per i file system FAT32, una indicazione dei settori liberi, sappiamo però che quelli disponibili per allocare i dati vanno dal * Data Area: 393 - 799999 ossia 799606 settori = 409398272 bytes da cui sottriamo lo spazio utilizzato 527987 bytes, ottenendo quale spazio libero 408870285 bytes Verifichiamo quindi i file presenti nel file system nemo@nexus:~$ sudo fls -f fat -r /dev/loop3 r/r 3: nascosto2 (Volume Label Entry) r/r 5: 16c450.pdf <<<<<<<<<<<<<<<<<<<<< r/r 7: 62256.pdf <<<<<<<<<<<<<<<<<<<<< v/v 12793715: $MBR v/v 12793716: $FAT1 v/v 12793717: $FAT2 d/d 12793718: $OrphanFiles ed estraiamo le informazioni ad essi relativa ----------------------------------------------------- nemo@nexus:~$ sudo istat -f fat /dev/loop3 5 Directory Entry: 5 Allocated File Attributes: File, Archive Size: 364643 Name: 16C450.PDF Directory Entry Times: Written: Tue Oct 21 12:32:46 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:32:46 2008 ----------------------------------------------------- nemo@nexus:~$ sudo istat -f fat /dev/loop3 7 Directory Entry: 7 Allocated File Attributes: File, Archive Size: 146960 Name: 62256.PDF Directory Entry Times: Written: Tue Oct 21 12:33:18 2008 Accessed: Tue Oct 21 00:00:00 2008 Created: Tue Oct 21 12:33:18 2008 ***************************** STRUMENTI UTILIZZATI ******************** L'esercizio è stato svolto utilizzando: Ubuntu v.8.04 Sleuthkit v.3.0.0 Autopsy v.2.08-2 testdisk v.6.8-1 xxd v.1.7 Saluti Denis p.s.: ahooooo Mario?! e l'hash dell'immagine dov'è ?? ;-P