Comments
Description
Transcript
FLOSS per le indagini digitali
Il pinguino investigatore FLOSS per la Digital Forensics Nutria LUG Davide Gabrini Digital Forensic Jedi Pavia, 24 ottobre 2015 Il pinguino investigatore Chi sono (faccio cose, reverso gente) Davide ‘Rebus’ Gabrini Per chi lavoro non è un mistero. Oltre a ciò: Perito informatico Collaboratore UniPV Docente di sicurezza informatica e digital forensics per aziende e P.A. Socio IISFA, DEFTA, Tech&Law fellow Socio fondatore di Italian Gr.A.P.P.A. e (se tutto va bene) Nutria LUG Digital Champion per il Comune di Travacò Siccomario Davide Gabrini Digital Forensic Jedi Sviluppatore DEFT Linux Il pinguino investigatore Digital Forensics: che roba è La digital forensics è la disciplina che si occupa della preservazione, dell'identificazione, dello studio, della documentazione dei computer, o dei sistemi informativi in generale, al fine di evidenziare l’esistenza di prove nello svolgimento dell’attività investigativa. (A.Ghirardini: “Digital forensics” – Apogeo) L’obiettivo è quello di evidenziare dei fatti pertinenti a un’indagine per sottoporli a giudizio Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Digital Forensics: che roba NON è Fantascienza televisiva: CSI, NCIS, Criminal Minds, RIS ecc. propinano solitamente boiate …e al cinema è anche peggio! Anche gli organi di informazione (non del settore) spesso instillano convinzioni del tutto infondate… Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Necessità di una metodologia scientifica Pervasività delle tecnologie digitali Improbabile, oggigiorno, una scena del crimine priva di elementi digitali Loro implicazione in attività delittuose L’elemento informatico come fine L’elemento informatico come mezzo L’elemento informatico come testimone Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Pervasive computing Smart Smart Smart Smart Smart … Davide Gabrini Digital Forensic Jedi things watches home cars clothes Il pinguino investigatore Necessità di una metodologia scientifica Nonostante la pervasività, il reale funzionamento della tecnologia resta ai più misterioso Davide Gabrini Digital Forensic Jedi Le tracce digitali possono avere una natura estremamente delicata, che richiede competenze specifiche per la trattazione Il pinguino investigatore Scopi di un’analisi forense Confermare o escludere un evento Individuare tracce e informazioni utili a circostanziarlo Acquisire e conservare le tracce in maniera idonea, che garantisca integrità e non ripudiabilità Interpretare e correlare le evidenze acquisite Riferire con precisione ed efficienza, in maniera idonea Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Le fasi canoniche Identificazione Acquisizione / Preservazione Analisi / Valutazione Presentazione Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Open Source vs Closed Source Eterna diatriba tra filosofie opposte I flame religiosi sono infruttuosi Non esiste il tool universale, in grado di fare tutto e meglio Non esistono i tool automagici L'ideale sarebbe disporre ogni volta del tool migliore per il task specifico Con l'open source è solo un problema di know-how, col software commerciale è anche economico… Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Open Source vs Closed Source Trasparenza gli strumenti sono conosciuti, documentabili e verificabili anche dalla controparte Disponibilità non occorre acquistare software specifici (e costosi) per svolgere o controllare un'attività Varietà esistono soluzioni e supporto per una miriade di situazioni, anche improbabili (ad esempio per i filesystem) Adattabilità i sorgenti sono modificabili per ogni esigenza specifica (incluso il bug fixing) Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Open Source vs Closed Source Flessibilità il paradigma Unix "tutto è un file" permette di gestire uniformemente anche situazioni nuove Modalità read-only Linux è per natura poco invasivo e ha comunque supporto nativo per modalità di sola lettura Loopback l'uso di loopback device e di device mapper può rivelarsi molto utile Aderenza agli standard spesso i software commerciali usano implementazioni arbitrarie e formati chiusi Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Eccellenze dell’open source Non crediate che l’open source sia il rifugio dei poveri: è il bazar dei ricercatori! Ci sono progetti open source che rappresentano lo stato dell’arte, meglio di qualsiasi rivale commerciale, ad esempio: The Sleuth Kit Volatility e Rekall Log2timeline Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Identificazione e Acquisizione Riconoscimento device e filesystem Dotazione di default nelle disto Linux di comandi utili lshw, fdisk, gparted, file, mount, md5sum… Accesso a basso livello all’hardware /dev/sda, /dev/mem… Esecuzione copie bit-level Davide Gabrini Digital Forensic Jedi raw=interoperabilità dd, dd_rescue dcfldd, dc3dd ecc. Guymager, DHash, Quick Hash… Il pinguino investigatore man dd I parametri sono tutti nella forma nome=valore (senza spazi) e possono essere specificati in qualunque ordine. Tra i parametri principali vi sono: if=nome_file Legge i dati dal file nome_file of=nome_file Scrive i dati sul file nome_file bs=dimensione Legge e scrive dati in blocchi di dimensione fissa ibs=dimensione Legge i dati in blocchi delle dimensioni specificate obs=dimensione Scrive i dati in blocchi delle dimensioni specificate count=numero_blocchi Copia solo il numero specificato di blocchi skip=numero_blocchi Scarta il numero di blocchi indicato prima di iniziare a copiare seek=numbero_blocchi Avanza del numero di blocchi indicato prima di iniziare a scrivere conv=conversione[,conversione …] Effettua durante la copia le conversioni elencate. Tra le principali conversioni vi sono: noerror sync Davide Gabrini Digital Forensic Jedi Continua anche in presenza di errori In combinazione con noerror, sostituisce i dati mancanti in input con degli zeri in output Il pinguino investigatore man dc3dd dc3dd aggiunge funzioni a quelle standard di dd wipe=nome_file sovrascrive il device nome_file con zeri split=dimensione divide l’output in pezzi di dimensione byte progress=on visualizza lo stato di avanzamento della copia hash=algoritmo calcola l’hash algoritmo dei dati in input algoritmo può avere uno o più valori tra md5, sha1, sha256 e sha512 hashconv=before|after indica se l’hash deve essere calcolato prima o dopo la conversione conv hashwindow=dimensione calcola un hash ogni dimensione byte hashlog=nome_file registra tutti gli hash in nome_file errlog=nome_file registra tutti gli errori in nome_file log=nome_file usa un solo file di log per errori e hash vf=nome_file verifica l’input if con il contenuto di nome_file verifylog=nome_file Davide Gabrini Digital Forensic Jedi registra l’esito della verifica in nome_file Il pinguino investigatore Acquisizione Esempi di comandi per l'acquisizione: # dd if=/dev/hda of=hda.dd conv=noerror,sync bs=512 # dd if=/dev/hda conv=noerror,sync bs=512 | split –b 1500m – hda_image # dd if=/dev/hda1 skip=0 conv=noerror ibs=512 | gzip -1 | dd of=hda1.raw.gz seek=0 obs=8192 # dcfldd if=/dev/hda conv=noerror,sync hashwindow=0 hashlog=hda.md5.txt of=hda.dd # dc3dd if=/dev/sda progress=on hashconv=after hash=md5,sha1 hashwindow=2GB splitformat=000 split=2GB log=logfile.txt bs=512 iflag=direct conv=noerror,sync of=IMAGE Produce file da 2GB, calcola gli hash MD5 e SHA1 di ogni chunk e del totale, crea un file di log. # dc3dd if=/dev/sda progress=on hashconv=after hash=md5,sha1 hashwindow=2GB splitformat=000 split=2GB verylog=verfile.txt bs=512 iflag=direct conv=noerror,sync vfjoin=IMAGE.000 Verifica l’acquisizione dell’esempio precedente. Davide Gabrini Digital Forensic Jedi Server# nc –l –p 31337 > image.dd Client# dd if=/dev/hda bs=2048 | nc {$ip_server} 3l337 Il pinguino investigatore Copia logica di file da Linux Nell’esempio seguente, il contenuto della cartella /var/log di un disco in esame (montato in /mnt/origine) viene copiato nella cartella di destinazione /mnt/evidence Prima di calcolano gli hash originali: # find /mnt/origine/var/log -type f -exec sha1sum {} + > /mnt/evidence/var_log.sha1 Poi si copiano i file all’interno di un unico archivio compresso, in modo da preservarne gli attributi: # tar -czpvf /var/evidence/var_log.tgz /mnt/origine/var/log Avere come risultato dell’acquisizione un unico file agevola tutti i trasferimenti e le manipolazioni successive. Consente p.e. di calcolare un unico hash da riportare a verbale # sha1sum /var/evidence/var_log.tgz > /var/evidence/var_log.tgz.sha1 Davide Gabrini Digital Forensic Jedi Infine si possono salvare altre informazioni utili alla documentazione, come ad esempio il log dei comandi eseguiti: # history > /mnt/evidence/history.log Il pinguino investigatore Acquisizioni per pigri e incapaci :p Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Concetto di mount Davide Gabrini Digital Forensic Jedi Montare un’immagine forense significa rendere il sistema operativo dell’analista in grado di accedere alle informazioni contenute nell’immagine Linux dispone del comando mount, che permette anche di specificare la modalità di accesso in sola lettura Windows non ha un comando analogo, quindi costringe ad usare programmi di terze parti In Linux, il contenuto dell’immagine forense viene montato in corrispondenza di una cartella esistente, come ad esempio /media/analisi In Windows, di regola, ad ogni partizione presente nell’immagine forense deve essere invece associata una lettera, come ad esempio F: Quando l’immagine forense è montata, essa è accessibile come se fosse un device reale da tutti gli applicativi che girano sul sistema operativo, anche non specifici per analisi forense Il pinguino investigatore man mount mount è un comando dei sistemi operativi Unix-like che permette di “agganciare” un file system ad una directory, in modo da rendere accessibili i file e le directory in esso contenuti. La directory prende il nome di mountpoint, ed è l’analogo che lettere usate da Windows per indicare i volumi. Sintassi: mount [opzioni] filesystem directory Il parametro filesystem è una stringa che identifica il device su cui risiede il file system da montare: generalmente è il nome del dispositivo a blocchi che lo contiene (ad es. /dev/sda3), ma può anche essere il nome di un singolo file che contiene l’immagine forense di un filesystem. Il parametro directory indica il mountpoint, ovvero una directory preesistente su cui montare il file system (ad es. /mnt/disco_esterno o /media/cdrom) Le opzioni consentono, tra l’altro, di specificare il tipo di filesystem e se esso va montato in sola lettura oppure in lettura e scrittura. # mount /dev/sda1 /mnt/origine –o ro (monta una partizione in sola lettura) Davide Gabrini Digital Forensic Jedi # mount /mnt/evidence/disco1_part1.dd /mnt/analisi –o loop,ro (monta l’immagine forense di una partizione in sola lettura) Il pinguino investigatore Ogni esigenza di analisi è coperta Analisi dei filesystem The Sleuth Kit Autopsy 3 Digital Forensic Framework Ricerca e indicizzazione da grep a Recoll Recupero dati foremost e scalpel photorec e testdisk Bulk_extractor Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Ogni esigenza di analisi è coperta Analisi delle fotografie Ghiro, JPEGsnoop Mobile forensics adb, libmobiledevice iPhone Analyzer, IPBA2 Malware analysis Cuckoo Zero Wine REMnux Davide Gabrini Digital Forensic Jedi OllyDbg YARA Il pinguino investigatore Ogni esigenza di analisi è coperta Artefatti di sistema e attività utente RegRipper Log2timeline, Webscavator pasco, rifiuti, galleta, vinetto… eMuleForensic SkypeXtractor … Gestionali e supporto Mobius Forensic Toolkit AndLink Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Ogni esigenza di analisi è coperta Intercettazioni e analisi del traffico Formato pcap come standard de facto tcpdump Wireshark tshark netsniff-ng bettercap snort airodump-ng Xplico NetworkMiner Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Xplico Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Virtualizzazione Virtualizzare la workstation di analisi può dare alcuni vantaggi: Ambiente ottimizzato e preconfigurato Facilità di backup, migrazione, ripristino e duplicazione Libertà di ridistribuzione! Remotizzazione dei task di analisi Distribuzioni in virtual machine: CERT Forensic Appliance SANS Investigative Forensic Toolkit (SIFT) VirtualBox, XEN, Qemu… Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Distribuzioni forensi DEFT è una distribuzione live Linux per scopi forensi (www.deftlinux.net) Consente di avviare qualsiasi PC in modo non invasivo e avere una completa workstation di analisi pronta all’uso Può anche essere installata permanentemente su PC di laboratorio o eseguita come virtual machine E’ interamente basata su software open source, quindi è liberamente disponibile e duplicabile Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Distribuzioni forensi DEFT Zero è una mini distribuzione pensata esclusivamente per le acquisizioni E' ridotta la minimo, di modo da consentire tempi di avvio molto rapidi E’ un sistema a 32 bit, così da poter garantire il boot anche su macchine obsolete Davide Gabrini Digital Forensic Jedi Il pinguino investigatore DART DART è la collezione di programmi portabili per live forensics inclusa in DEFT Oltre 300 programmi per ogni versione di Windows, Linux e Mac OSX Il launcher presenta i software categorizzati, descritti e indicizzati; verifica l’integrità prima di avviarli; mantiene un log delle operazioni Ulteriore corposa sezione di programmi CLI Istruzioni e script per il completamento del pacchetto con i software non ridistribuibili Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Beginner’s guide: www.linuxleo.com The law envorcement and forensic examiner's introduction tu Linux Guida per principianti, dal 2007 è il punto di partenza per esplorare il mondo della computer forensics attuata con strumenti open source Sono a disposizione anche alcune immagini forensi di esempio per esercitazioni didattiche Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Approfondimenti Davide Gabrini Digital Forensic Jedi Il pinguino investigatore Teniamoci in contatto… Davide Rebus Gabrini e-mail: [email protected] GPG Public Key: www.tipiloschi.net/rebus.asc KeyID: 0x176560F7 Queste e altre cazzate su http://www.tipiloschi.net Davide Gabrini Digital Forensic Jedi