TESI _SCOGNAMIGLIO
Transcript
TESI _SCOGNAMIGLIO
UNIVERSITA’ DEGLI STUDI DI MILANO FACOLTA’ DI SCIENZE MATEMATICHE, FISICHE E NATURALI CORSO DI LAUREA IN INFORMATICA ACQUISIZIONE ED ANALISI INVESTIGATIVE E FORENSI DELLE MEMORIE DI DISPOSITIVI EMBEDDED Relatore: Prof. Mattia Monga Correlatore esterno: Magg. CC Ing. Marco Mattiucci Tesi di Laurea di: Vincenzo Scognamiglio Matr. 662252 Anno Accademico 2008-2009 INDICE INTRODUZIONE 1 MICROSOFT WINDOWS EMBEDDED CE 1.1 PANORAMICA DEL SISTEMA OPERATIVO 1.2 ARCHITETTURA DEL SISTEMA OPERATIVO WINDOWS CE 6.0 1.3 OPERAZIONI IN MODALITA’ KERNEL 1.4 ARCHITETTURA DI MEMORIA 1.5 SPAZIO DI INDIRIZZAMENTO VIRTUALE PER LE APPLICAZIONI 1.6 OEMADDRESSTABLE 1.7 TIPOLOGIE DI UTILIZZO DELLA MEMORIA 1.7.1. STACK 1.7.2. STATIC DATA BLOCK 1.7.3. MEMORY MAPPED FILE 1.8 INTERRUPT 2 ANALISI DELLA MEMORIA 2.1 PREMESSA 2.2 TECNICHE DI ACQUISIZIONE 2.3 METODOLOGIA DI ESTRAZIONE 2.4 TECNICHE DI ANALISI 2.5 ESTRAZIONE DEI FILE DEL SISTEMA OPERATIVO 2.6 ANALISI DEI FILE ESTRATTI 3 OCCULTAMENTO DI DATI IN UN DISPOSITIVO WINCE 3.1 PREMESSA 3.2 MODALITA’ DI OCCULTAMENTO 3.3 RECUPERO DI DATI OCCULTATI 3.4 IL FALSO PROBLEMA DELLE COLLISIONI 4 CONCLUSIONI 5 RINGRAZIAMENTI 6 BIBLIOGRAFIA INTRODUZIONE L’aumento dei crimini compiuti per mezzo di un sistema informatico, della diffusione dei dispositivi digitali dotati di memoria e perciò in grado di conservare tracce attinenti a fatti illeciti, ha fatto nascere l’esigenza dell’analisi delle memorie di tali dispositivi al fine di estrarne il contenuto da utilizzare in procedimenti giudiziari. La Digital Forensics [1], ultima nata fra le scienze forensi, si occupa dell’analisi del contenuto della memoria studiando l'individuazione, la conservazione, la protezione, l'estrazione, la documentazione e ogni altra forma di trattamento del dato informatico estratto da un qualsiasi dispositivo digitale acquisito come fonte di prova da valutare in sede di dibattimento. L’Embedded System Forensics [2] si occupa in particolare di svolgere indagini tecniche su sistemi elettronici dedicati (embedded) ad una specifica applicazione illecita (es. controlli elettronici dei giochi elettronici illegali, inneschi, sistemi elettronici modificati al fine di svolgere particolari attività criminali, skimmer per la clonazione di carte di credito, ecc.). Il mondo dei "sistemi embedded" è piuttosto variegato, poco ordinato e senza standard; molti di loro addirittura si basano su realizzazioni di natura artigianale, prive di documentazione e con una progettazione ridotta al minimo. La moderna tecnologia ha portato ad una sempre crescente diffusione di dispositivi digitali dedicati alle più svariate funzioni. Nonostante la varietà di tali sistemi si possono riconoscere le seguenti categorie come target principali nelle indagini: - sistemi d'ufficio (segreterie telefoniche, fax, fotocopiatrici, stampanti); - sistemi di interconnessione (Hub, switcher, router, gateway); - sistemi "handheld"(palmtop); - sistemi "spia" (dispositivi impiegati per varie rilevazioni ambientali audio, video e dati) - sistemi di clonazione (sistemi atti a svolgere clonazioni di plastic-card, siano esse smart dotate di chip o semplicemente magnetiche o ottiche); - sistemi di videosorveglianza; - sistemi GPS; - sistemi militari (sistemi di rilevazione, comando e controllo militari). Nell’ambito della Digital Forensics, assumono notevole importanza le tecniche di acquisizione [3] volte alla salvaguardia dei dati di interesse presenti sui supporti di archiviazione. A garanzia di inalterabilità di questi ultimi, si utilizzano accorgimenti specifici volti a garantire e provare l'esatta corrispondenza dei contenuti in qualsiasi momento dell'analisi. Le suddette procedure hanno assunto infatti maggiore rilevanza legale con l’approvazione della Legge 18 marzo 2008, n. 48, che recepisce la Convenzione del Consiglio d'Europa sulla criminalità informatica. Essa, tra l’altro, apporta alcune significative modifiche al Codice di Procedura Penale [4] in materia di conservazione e non alterazione della fonte di prova informatica: CAPO III: MODIFICHE AL CODICE DI PROCEDURA PENALE E AL CODICE DI CUI AL DECRETO LEGISLATIVO 30 GIUGNO 2003, N. 196 Art. 8. (Modifiche al titolo III del libro terzo del codice di procedura penale) 1. All’articolo 244, comma 2, secondo periodo, del codice di procedura penale sono aggiunte, in fine, le seguenti parole: «, anche in relazione a sistemi informatici o telematici, adottando misure tecniche dirette ad assicurare la conservazione dei dati originali e ad impedirne l’alterazione». 2. All’articolo 247 del codice di procedura penale, dopo il comma 1 e` inserito il seguente: «1-bis. Quando vi e` fondato motivo di ritenere che dati, informazioni, programmi informatici o tracce comunque pertinenti al reato si trovino in un sistema informatico o telematico, ancorché protetto da misure di sicurezza, ne e` disposta la perquisizione, adottando misure tecniche dirette ad assicurare la conservazione dei dati originali e ad impedirne l’alterazione». Nel caso dell’analisi forense di dispositivi embedded, non è a tutt’oggi possibile effettuare l’acquisizione della memoria (RAM e/o ROM) senza alterarne il contenuto, operazione che in termini giuridici, a norma dell’ art. 360 del Codice di Procedura Penale, si tramuta in un accertamento tecnico “non ripetibile”. Nel corso del procedimento penale è frequente che la parte pubblica (pubblico ministero e polizia giudiziaria) e/o le parti private (difensore dell'indagato, della persona offesa, ecc.) debbano avvalersi di strumentazione tecnico-scientifica e dell'ausilio di esperti di determinati settori, per acquisire dati di cognizione necessari per l'esercizio delle funzioni loro assegnate dal codice di rito. Analoga esigenza può avvertire il giudice laddove, tanto nella fase preliminare quanto in quella del giudizio, abbia bisogno di acquisire conoscenze che presuppongono specifiche competenze di natura tecnico-scientifica. Gli accertamenti tecnici, indipendentemente dall'accesso in determinati luoghi, possono essere ripetibili o non ripetibili. Per "ripetibile", si intende che l'analisi forense in questione non sia invasiva e che quindi non comprometta lo stato dell'informazione contenuta, mentre nella seconda ipotesi l'accertamento deve essere fatto in presenza della parte offesa e del suo difensore in quanto l'accertamento della cosa non può essere rifatto in un momento successivo sulla stessa fonte di prova. La tesi illustra lo stato dell'arte per ciò che riguarda le tecniche e le diverse metodologie per l'acquisizione e l'analisi delle memorie contenute nei sistemi embedded, in ambiente Windows CE 6.0 per valutarne l'utilizzabilità in contesti investigativi. Attraverso la sperimentazione su di un dispositivo di navigazione veicolare marca TOMSTAR modello 5006 con sistema operativo Windows CE v. 6.0, ne sono state illustrate le problematiche ponendo particolare attenzione, ai fini forensi, all'analisi delle aree di memoria in cui potrebbe essere possibile occultare dei dati, con l'obiettivo di effettuare il loro recupero. Capitolo 1 MICROSOFT WINDOWS EMBEDDED CE 1.1 PANORAMICA DEL SISTEMA OPERATIVO Windows CE (Compact Edition) [5,6,7,8,9] è un sistema operativo sviluppato da Microsoft, a partire dal 1996, per dispositivi portatili (PDA, Palmari, Pocket PC), Smartphone e sistemi embedded. Il termine "Windows CE" è in realtà il nome con il quale viene indicata la piattaforma generale di sviluppo di questo sistema operativo. Essendo "Windows CE" sufficientemente modulare e flessibile, sono state sviluppate a seconda dei dispositivi utilizzati, delle specifiche versioni. I dispositivi dove normalmente viene utilizzatio tale sistema operativo sono equipaggiati con processori x86, MIPS, ARM, Hitachi SuperH, oppure Intel XScale. Inoltre le diverse versioni di sistema operativo prendono il nome commerciale di "MS Handheld 3.0" (e 3.1), "MS Handheld 2000", "Microsoft Pocket PC 2000" (e 2002), "MS Smartphone 2002", "MS Windows Mobile 2003" (e 2003 Second Edition), "MS Windows Mobile 5.0" (e 6.0), "Microsoft Auto". Negli ultimi 10 anni, Windows Embedded CE [10] si è evoluto da nuovo prodotto a soluzione affermata nel settore dei sistemi operativi Embedded. Nell'arco di questo periodo, Microsoft ha migliorato quasi tutte le caratteristiche di Windows CE, ad eccezione del modo in cui viene gestita la memoria. Sebbene Windows CE sia sempre stato un sistema operativo moderno e multitasking, con supporto della memoria virtuale, presentava tuttavia alcune gravi limitazioni per i sistemi con un elevato utilizzo della memoria e del codice, come i set-top box e le piattaforme Windows Mobile. Nello specifico, tali limitazioni sono costituite dal limite di 32 processi simultanei e da quello di 32 MB relativo allo spazio virtuale per le applicazioni. Nessuno di questi due limiti rappresentava un problema quando Windows CE è stato inizialmente introdotto, né costituisce un problema in molti sistemi Embedded attuali. Il problema viene invece riscontrato nei sistemi con un elevato utilizzo di elementi multimediali, che eseguono pertanto Windows Media Player, nei sistemi che necessitano di ingenti quantità di codice del sistema e delle applicazioni, come Windows Mobile e nei sistemi con tendenza a creare numerosi processi di dimensioni ridotte, come alcuni sistemi di controllo dei processi. 1.2 ARCHITETTURA DEL SISTEMA OPERATIVO WINDOWS CE 6.0 Windows CE 6.0 è un sistema operativo modulare e multi-thread ed è stato progettato per essere configurabile. L'uso di processi per la distribuzione di Application Programming Interface (API) del sistema ha consentito di filtrare le richieste relative a ROM e RAM [11,12,13] in base alla quantità di sistema operativo [14] necessaria per un determinato dispositivo. Ad esempio, è possibile che un dispositivo sia configurato per l'esecuzione con un solo processo API, il kernel di sistema (nk.exe). Per altri dispositivi che necessitano del supporto GUI, sarà invece necessario eseguire anche il processo GUI (gwes.exe). Innovazione principale è stata la rimozione delle limitazioni sul numero totale di processi (32) e lo spazio di indirizzi virtuale ridotto (32MB) di precedenti generazioni di kernel di Windows CE. Nell'ultima decade si sono verificati molti cambiamenti dallo sviluppo del primo kernel. I dispositivi attuali dispongono di un hardware con capacità maggiori: CPU più veloci, maggiore memoria, uno schermo LCD e molto altro. Con CE 6.0, le API del sistema sono state estrapolate dai processi in modalità utente e sono state inserite in DLL in modalità kernel. Le Api di sistema sono messe a disposizione delle applicazioni dalla libreria coredll.dll che è collegata a tutti i moduli eseguibili del sistema operativo. I moduli del kernel sono collegati ad una versione di coredll.dll dedicata al kernel e denominata k.coredll.dll. Se un modulo è collegato a coredll.dll ed è caricato nel kernel, tutte le chiamate di coredll.dll sono automaticamente reindirizzate a k.coredll.dll. Oltre alla API di sistema il sistema operativo offre applicazioni API simili alle win32api. Lo sviluppatore può accedere alle funzionalità applicate attraverso diverse librerie quali Wininet.dll, Winsock.dll, Msxml.dll, and Winhttp.dll etc… L’architettura di sitema include i componenti illustrati in figura 1.1. WIN32 CE API Wininet.dll, Winsock.dll, Msxml.dll, and Winhttp.dll Fig. 1.1: Architettura del sistema operativo. Inoltre, il codice OEM è stato separato dal codice del sistema operativo. In passato, un progettista hardware creava una serie di routine di basso livello, denominata OAL (OEM Adaptation Layer) e tale componente veniva collegato in modo statico al kernel del sistema operativo. L'OAL e il kernel erano considerati un unico eseguibile, nk.exe. In CE 6.0, questi due componenti vengono ora generati in due moduli separati: il kernel (kernel.dll) e OAL (OEM Adaptation Layer) (nk.exe). Nella figura 1.2 si riepilogano le modifiche tra Windows CE 5.0 e CE 6.0. Processo di DLL di Windows Descrizione Windows CE 5.0 Embedded CE 6.0 nk.exe (OAL + nk.exe (OAL) Il codice OEM è stato diviso dal codice kernel kernel) kernel.dll (kernel) CE a partire da CE 6.0 filesys.exe filesys.dll Database di proprietà, file system e registro device.exe device.dll Gestisce i driver di periferica in modalità kernel device.exe udevice.exe Nuovo in CE 6.0, un processo separato per gestire i driver di periferica in modalità utente gwes.exe gwes.dll Sottosistema di eventi con finestre e grafico services.exe servicesd.exe Processo host per servizi del sistema services.exe services.exe Interfaccia della riga comandi per la configurazione di servizi Fig. 1.2: Differenze fra i moduli principali di Windows Embedded CE 5.0 e CE 6.0 1.3 OPERAZIONI IN MODALITA’ KERNEL Per eseguire Windows CE, una CPU deve supportare due livelli di privilegi. Il livello superiore viene indicato come modalità kernel; il livello inferiore come modalità utente. Qualsiasi memoria allocata per il codice o per i dati viene assegnata a una di queste due modalità. L'inserimento di codice in modalità utente consente un'esecuzione più solida e sicura dell'ambiente complessivo. Tuttavia, la combinazione di un codice in modalità kernel e in modalità utente è generalmente più lenta rispetto all'esecuzione del sistema interamente in modalità kernel. La struttura del kernel viene rappresentata in figura 1.3. Fig. 1.3: Il Kernel di WinCE 6.0 In versioni precedenti, era possibile configurare Windows CE per tutte le attività in modalità kernel o per operazioni in modalità mista utilizzando sia la modalità kernel che la modalità utente. Con CE 6.0, l'unica modalità operativa mista è supportata caricando in memoria tutte le operazioni in modalità utente e tutti i componenti OS in modalità kernel. Alcuni componenti dispongono di entrambe le modalità, illustrate in figura 1.4. Componente Modalità utente Modalità kernel Libreria di sistema centrale coredll.dll k.coredll.dll Supporti del driver di periferica ceddk.dll k.ceddk.dll Fornitore credenziali credsrv.dll k.credsvr.dll API di supporto della rete IP iphlpapi.dll k.kphlpapi.dll Timer multimediale mmtimer.dll k.mmtimer.dll Supporti di processo, thread e memoria toolhelp.dll k.toolhelp.dll Socket Windows ws2.dll k.ws2.dll Interfaccia del provider di servizi dei socket Windows wspm.dll k.wspm.dll Fig. 1.4: Librerie di sistema in modalità utente e in modalità Kernel 1.4 ARCHITETTURA DI MEMORIA Il nuovo kernel offre un'architettura di memoria completamente nuova, che elimina i precedenti limiti su processi e dimensione dello spazio di indirizzi disponibili. I precedenti kernel supportavano un massimo di 32 processi, ognuno dei quali occupava il proprio slot. In WinCE 6.0 il limite sul numero di processi è stato aumentato a 32000. Questo è un valore massimo teorico, basato su un limite della memoria di handle del kernel. WinCE 6.0 supporta un massimo di 64K di handle di kernel e un processo richiede un minimo di due handle: uno per il processo stesso e l'altro per il thread del processo. Il valore massimo pratico è inferiore poiché altri tipi di oggetti kernel occupano spazio nella tabella di handle del kernel. Ogni singolo processo dispone di un suo spazio di indirizzi privato nella memoria virtuale di 2GB. Questo rende lo spazio di indirizzi dei processi di WinCE 6.0 molto simile a quello delle versioni desktop di Windows tra cui Windows XP. Per una completa comprensione dei miglioramenti apportati nel nuovo kernel, può rivelarsi utile esaminare l'architettura utilizzata in Windows CE 5.0 perché più semplice e perché, ai fini del lavoro, non presenta differenze sostanziali con Win CE 6.0. Nella figura 1.5 è illustrato lo spazio di indirizzamento virtuale unificato di Windows CE 5.0. Come in Windows XP e Windows Embedded CE 6.0, i 2 GB superiori dello spazio di indirizzamento sono riservati al sistema. La metà inferiore dello spazio di indirizzamento è divisa in più aree. La maggior parte di quest'area, corrispondente quasi a metà dello spazio, è definita area di memoria estesa e viene utilizzata per allocare blocchi estesi dello spazio di memoria in genere utilizzati per file mappati alla memoria. Nella figura 1.5 è illustrato lo spazio di indirizzamento virtuale unificato di Windows CE 5.0. Fig. 1.5: Spazio di indirizzamento virtuale unificato di Windows CE 5.0 Sotto l'area di memoria estesa si trova l'insieme dei 31 "slot di processo" contenenti le immagini degli indirizzi virtuali per i processi attualmente in esecuzione. Sotto gli slot di processo, all'estremità inferiore dello spazio di memoria, si trova un'area di 64 MB che include, più precisamente nei 32 MB inferiori dell'area, lo slot di processo che replica il processo contenente il thread attualmente in esecuzione. Questa "architettura a slot" impone sia il limite di 32 processi che quello di 32 MB per la memoria virtuale in Windows CE 5.0. Il numero limitato di slot (31) supporta di conseguenza un numero limitato di processi simultanei. Gli slot di processo diventano 32 processi aggiungendo il processo del kernel, collocato nei 2 GB superiori dello spazio di indirizzamento. Nella figura 1.6 è riportata un'espansione dei 64 MB inferiori dello spazio per i processi delle versioni precedenti di Windows CE. I 32 MB inferiori dello spazio dei processi costituiscono lo spazio replicato dallo slot del processo in cui viene eseguito il thread attualmente in esecuzione. I 32 MB superiori di questo spazio vengono utilizzati per caricare il codice e la memoria di sola lettura per le librerie di collegamento dinamico (DLL) presenti nella ROM. I 32 MB superiori, denominati "slot 1", sono condivisi da tutte le applicazioni in esecuzione. Fig. 1.6: Espansione dei 64 MB inferiori dello spazio per i processi delle versioni precedenti di Windows CE Il limite di 32 MB per lo spazio virtuale è determinato dalle dimensioni di ciascuno slot di processo. A causa dello spazio di indirizzamento singolo, l'incremento dello spazio virtuale per processo ridurrebbe il numero totale di slot e pertanto il numero di processi simultanei. In queste circostanze, il compromesso di 32 processi e 32 MB per processo è risultato, almeno in passato, appropriato. In Windows Embedded CE 6.0, con la nuova progettazione, ogni processo in esecuzione ottiene una sua copia completa dei 2 GB inferiori dello spazio di indirizzamento. Nonostante questo spazio di 2 GB si presenti a prima vista identico al layout delle versioni precedenti, lo spazio di indirizzamento per le applicazioni viene utilizzato diversamente. La nuova architettura apporta modifiche principalmente sui driver di periferica, senza influenzare le applicazioni preesistenti poiché la memoria viene allocata utilizzando le stesse API di allocazione e i dati vengono memorizzati utilizzando puntatori di memoria virtuale da 32bit. Nel caso di applicazioni per cui è necessario allocare blocchi di memoria superiori ai 10MB, esse vengono soddisfatte con una chiamata a VirtualAlloc. La funzione VirtualAlloc, insieme ad altre funzioni utilizzate per gestire la memoria virtuale, sono descritte in figura 1.7. Funzione VirtualSetAttributesEx VirtualProtectEx VirtualQueryEx VirtualAlloc VirtualFree VirtualProtect VirtualQuery VirtualAllocEx VirtualFreeEx VirtualCopyEx VirtualAllocCopyEx Scopo Abilita la modifica degli attributi di memoria a livello di pagina. Accessibile solo in kernel mode. Configura la protezione dell’accesso alla regione della pagina nello spazio di indirizzo di uno specifico processo. Fornisce informazioni sullo spazio di indirizzo di uno specifico processo. Occupa la regione di pagina nello spazio di indirizzo di un processo chiamato. Libera la regione di pagina nello spazio di indirizzo di un processo chiamato. Configura la protezione dell’accesso alla regione della pagina nello spazio di indirizzo di un processo chiamato. Fornisce informazioni sullo spazio di indirizzo di un processo chiamato. Occupa la regione di pagina nello spazio di indirizzo di uno specifico processo; la memoria allocata è inizializzata a zero. Libera la regione di pagina nello spazio di indirizzo di uno specifico processo. Mappatura dinamica dell’indirizzamento virtuale verso quello fisico creando una nuova voce nella page table. Esecuzione seguente le funzioni di VirtualAllocEx e VirtualFreeEx. E‘ accessibile solo in kernel mode. Fig. 1.7: Funzioni utilizzate per gestire la memoria virtuale. 1.5 SPAZIO DI INDIRIZZAMENTO VIRTUALE PER LE APPLICAZIONI La memoria virtuale di Windows CE si divide in: - LIBERA quando la memoria non è allocata o utilizzata dal sistema; - RISERVATA quando viene riservata della memoria, ma non è ancora stata mappata verso indirizzi fisici. - OCCUPATA quando la memoria viene riservata dal sistema ed è stata mappata verso indirizzi fisici. WinCE 6.0 occupa pagine di memoria virtuale su richiesta, il che singifica che il processo di occupazione di una pagina di memoria viene ritardato il più possibile: se, per esempio, alloca uno Stack o un Heap, la memoria virtuale viene riservata, non occupata. Quando il thread di un’applicazione attiva cerca di accedere ad un indirizzo riservato, si verifica un page fault, l’esecuzione del thread è sospesa, il kernel processa il page fault, vengono occupate le pagine necessarie e vengono corrette le code tables, dopodichè vengono riattivate le operazioni del thread. Quindi, il processo di indirizzamento della memoria è completamente trasparente all’applicazione. L’elemento chiave dell’architettura è l’abilità di mappare indirizzi virtuali verso indirizzi fisici. WinCE fornisce due tipi di mappatura “virtuale verso fisico”: statica e dinamica. La mappatura statica viene determinata in una particolare struttura denominata OEMAddressTable. La figura 1.8 illustra un esempio di mappatura statica Fig. 1.8: Esempio di mappatura statica dalla memoria fisica a quella virtuale Una caratteristica della mappatura statica della memoria virtuale è che essa è sempre disponibile al contrario della memoria mappata in modo dinamico. Perciò il Kernel ha accesso garantito alla memoria virtuale mappata in modo statico, cosa che è richiesta per l’inizializzazione del kernel e per processare le eccezioni come il page fault. La necessità di abilitare l’accesso alla memoria per il kernel produce una richiesta per cui l’intera ROM/RAM del dispositivo può essere mappata in modo statico inclusa la memoria del device utilizzata per processare le “interrupt service routines” (ISRs) che sono processate nel contesto delle eccezioni del kernel. Windows CE 6.0 supporta la mappatura statica di due regioni di memoria virtuale, ognuna della dimensione di 512 MB. I 512 MB inferiori (0x8000 0000–0x9FFF FFFF) della memoria virtuale sono mappati alla memoria fisica tramite la cache, non utilizzata per i 512 MB superiori (0xA000 0000–0xB999 9999). La mappatura statica della memoria virtuale è una buona dimostrazione di come l’architettura della memoria virtuale abbia due differenti indirizzi di memoria virtuale con differenti proprietà di accesso mappate alla medesima memoria fisica. L’accesso alla memoria virtuale nella regione (0x8000 0000–0x9FFF FFFF) non comporta necessariamente un accesso alla memoria fisica poiché il valore può essere letto dalla cache, mentre l’accesso alla memoria virtuale nella regione (0xA000 0000–0xB999 9999) produce sempre un accesso alla memoria fisica. La figura 1.9 illustra la mappatura dello spazio della memoria virtuale. Fig. 1.9: Mappatura dello spazio di memoria virtuale di Windows Embedded CE 6.0 Lo spazio di indirizzamento del kernel occupa i 2GB superiori ed è il medesimo per tutti i processi di sistema. Lo spazio utente occupa i 2GB inferiori ed è unico per ogni processo. Il kernel mappa l’indirizzo di ogni processo designato in questo spazio di indirizzamento ogni qualvolta avviene un passaggio tra i processi. In ogni momento, è attivo un unico processo che occupa il suo spazio di indirizzamento; esso non può accedere allo spazio di indirizzo di un altro processo o avere accesso allo spazio di memoria del kernel, mentre il kernel ha accesso all’intero spazio di indirizzamento ed ha accesso ad ogni indirizzo di memoria raggiungibile. Si esaminerà ora in dettaglio la mappa della memoria virtuale analizzandone l’allocazione nello spazio di indirizzamento virtuale del kernel, come illustrato nella figura 1.10. Fig. 1.10: Mappa dello spazio di indirizzamento virtuale del kernel La figura 1.11 illustra una descrizione dettagliata dell’allocazione di memoria virtuale del kernel. Regione di memoria 0x80000000–0x9FFFFFFF Dimensione 512 MB 0xA0000000–0xBFFF FFFF 512 MB 0xC0000000–0xC7FF FFFF 128 MB 0xC8000000–0xCFFFFFFF 128 MB 0xD0000000–0xDFFFFFFF 256 MB 0xE0000000–0xEFFFFFFF 256 MB 0xF0000000–0xFFFFFFFF 256 MB Descrizione Indirizzi di memoria virtuale mappati in modo statico non ottenuti tramite cache. Indirizzi di memoria virtuale mappati in modo statico non ottenuti tramite cache. Mappatura delle DLL eseguite in loco (XIP) caricate dal kernel, i server e i drive del kernel. Object store per il file system RAM, i database CEDB e i registri di sistema. Memoria virtuale del kernel utilizzata per tutti i moduli di kernel di sistema. Memoria virtuale del kernel, se supportata dal processore. Cattura le chiamate di sistema e include le pagine dati del kernel. Fig.1.11: Allocazione della memoria virtuale del kernel La figura 1.12 mostra la mappa dello spazio di indirizzamento virtuale utente. Fig. 1.12: Mappa dello spazio di indirizzamento virtuale utente La figura 1.13 illustra la descrizione dettagliata della distribuzione della memoria virtuale utente. Regione di memoria 0x00000000–0x00010000 Dimensione 64 KB Descrizione Dati kernel utente. Il processo utente ha accesso in sola lettura. 0x00010000–0x3FFFFFFF 1 GB–64 KB Contiene lo spazio del processo del codice eseguibile, la memoria virtuale, heap e stack. L’allocazione della memoria virtuale inizia immediatamente dopo il codice eseguibile e procede dal basso verso l’alto. 0x40000000–0x5FFFFFFF 512 MB Contiene le DLL, i codice e i dati con allocazione di memoria dal basso verso l’alto. Le librerie utilizzate nei diversi processi sono caricate utilizzando lo stesso indirizzo. Allo stesso tempo, le pagine di codice si riferiscono alle medesime pagine fisiche e le pagine di dati riportano a differenti pagine fisiche per i diversi processi. 0x60000000–0x6FFFFFFF 256 MB Regioni di memoria dei file immagazzinati in memoria. 0x70000000–0x7FEFFFFF 255 MB Zona condivisa da kernel e processi. Il kernel, i processi e i driver possono allocare e scrivere memoria in questa regione. Il processo utente può accedere in sola lettura. Esso permette di ricevere dati dal kernel senza effettuare una chiamata al kernel di sistema. 0x7FF00000–0x7FFFFFFF 1 MB Area non visibile. Agisce come buffer fra lo spazio utente e lo spazio kernel. Fig. 1.13: Descrizione dettagliata della distribuzione della memoria virtuale utente 1.6 OEMADDRESSTABLE Windows CE utilizza la tecnica della paginazione per creare spazi di memoria virtuale utilizzando blocchi di memoria fisica. Ogni processo possiede una page table per definire gli indirizzi di memoria validi e per mapparli nella memoria fisica. In Windows CE la page table è denominata OEMAddressTable. Questa tabella contiene i collegamenti tra gli indirizzi fisici e quelli virtuali. Il layout della tabella è molto semplice, ogni riga crea un collegamento fra l’indirizzo virtuale e quello fisico; come esempio si riporta la seguente porzione di page table: DCD DCD DCD DCD 0x80000000, 0x88000000, 0x88100000, 0x88200000, 0xA0000000, 0x5C000000, 0x58000000, 0x4C000000, 64 ; MAINSTONEII: SDRAM (64MB). 1 ; BULVERDE: Internal SRAM (64KB bank 0). 1 ; BULVERDE: Internal memory PM registers. 1 ; BULVERDE: USB host controller. Nella prima riga i 64 MB di ram dell’indirizzo fisico 0xA000 0000 sono mappati all’indirizzo virtuale 0x8000 0000. Poiché 64MB in esadecimale si traducono con 0x0400 0000 questo significa che l’offset definito da 0xA000 0000 – 0xA400 0000 è mappato all’indirizzo relativo all’offset 0x8000 0000 - 0x8400 0000. 1.7 TIPOLOGIE DI UTILIZZO DELLA MEMORIA 1.7.1. STACK Lo stack è un tipo di memoria utilizzato per immagazzinare variabili locali nelle funzioni, indirizzi di ritorno delle funzioni e lo stato del processore durante la gestione delle eccezioni. In Windows Embedded CE 6.0, per ogni thread di sistema viene creato uno stack. La sua dimensione è limitata a 64KB, dei quali 8KB sono riservati al controllo dello stack overflow, per cui la sua dimensione effettiva è di 56KB. 1.7.2. STATIC DATA BLOCK Lo static data block contiene stringhe, buffer ed altri valori statici cui fanno riferimento le applicazioni durante la loro esecuzione. Windows Embedded CE 6.0 ne alloca due sezioni, una per i dati in lettura/scrittura ed una per quelli in sola lettura. 1.7.3. MEMORY MAPPED FILE Sono file mappati negli indirizzi di memoria virtuale. Il sistema operativo permette la creazione di memory mapped file di due tipi: gli unnamed memory file e i named memorymapped file, che possono essere utilizzati da un diverso processo con la richiesta di un file con lo stesso nome, ciò permette a differenti processi di interagire fra loro. Le principali API utilizzate dai memory-mapped file vengono descritte nella figura 1.14. Funzione Scopo CreateFile Crea e apre un file che può essere usato per il memory mapping. Restituisce un puntatore. CreateFileForMapping Crea e apre un file che può essere usato per il memory mapping. Restituisce un puntatore. CreateFileMapping Crea un named o un unnamed memory-mapped file basati su un altro file o sulla RAM. Restituisce sempre un puntatore al memorymapped file. Fig. 1.14: Principali funzioni utilizzate dai memory-mapped file. 1.8 INTERRUPT Un interrupt è un segnale asincrono quando indica il 'bisogno di attenzione' da parte di una periferica finalizzata ad una particolare richiesta di servizio; è un evento sincrono quando consente l'interruzione di un processo qualora si verifichino determinate condizioni, oppure più in generale una particolare richiesta al sistema operativo da parte di un processo in esecuzione. Una richiesta hardware di interrupt (IRQ) è un collegamento fisico attraverso il quale un device invia un segnale di interrupt ad un microprocessore. Un interrupt di sistema (SYSINTR) è una mappatura dell’IRQ per il quale è responsabile un OEM Adaptation Layer (OAL). In Windows Embedded CE, il processo di interrupt si divide in due parti: interrupt service routine (ISR) e interrupt service thread (IST). Ogni IRQ è associato ad un ISR. Molte sorgenti di interrupt possono essere associate ad un unico ISR. Se viene sollevato un interrupt, il kernel effettua una chiamata alla corrispondente routine di ISR. Quando l’esecuzione dell’ISR è completa, la routine restituisce un identificatore logico di SYSINTR. Il kernel controlla l’identificatore logico dell’interrupt e ne fa partire l’evento associato. Lo scheduler pianifica l’esecuzione dell’IST in attesa dell’evento come mostrato in figura 1.15. Fig. 1.15: Gestione dell’interrupt. Capitolo 2 ANALISI DELLA MEMORIA 2.1 PREMESSA La scena del crimine [15] è uno degli elementi più importanti per scoprire chi sia l’autore di un reato; proprio per questo la sua accurata analisi è una delle operazioni più delicate ed importanti durante un investigazione. Nel 1910 Edmond Locard [16], allievo di Bertillon, formulò il “principio di interscambio di Locard”, fondamento della moderna investigazione scientifica: quando due oggetti entrano in contatto, ognuno lascia sull’altro qualcosa di se; quindi chiunque acceda alla scena del crimine, ne altera irreversibilmente lo stato originario. Questo principio si applica anche all’analisi forense di dispositivi digitali [17] che comprende due tecniche di acquisizione del contenuto della memoria: - Acquisizione logica: mera copia dei file visibili a livello del file system, limitandosi ad estrarre file, database, ecc.; non è in grado di recuperare i file cancellati, i file deallocati, i file occultati nello slack space. - Acquisizione fisica: immagine della superficie fisica del supporto di memoria, in grado di recuperare i file cancellati, i file deallocati, i file occultati nello slack space. Nell’analisi forense dei dispositivi embedded, non è a tutt’oggi possibile effettuare l’acquisizione fisica della memoria RAM e/o ROM [18] senza alterarne il contenuto. 2.2 TECNICHE DI ACQUISIZIONE L’acquisizione fisica, può recuperare tutti i dati contenuti in un dispositivo embedded. Nella maggior parte dei casi, tuttavia, è possibile recuperare solo il contenuto della flash ROM e della RAM, utilizzando o una particolare modalità operativa del dispositivo (es: debugging del PALM OS) o un canale di comunicazione con il sistema operativo (es.: protocollo RAPI) [19,20]. Per ottenere una copia completa della memoria flash possono essere utilizzate tre tecniche: - flasher tool; porte di accesso di test JTAG; disassemblaggio dei componenti. I “flasher tool” [21] sono destinati a copiare la memoria di alcune famiglie di dispositivi digitali. Utilizzano alcune funzionalità delle API per interagire con aree indirizzabili di memoria. Vengono generalmente implementati dai produttori stessi a scopo di test, anche se sono generalmente disponibili anche su siti internet di hacker che li creano allo scopo di modificare le funzionalità o i limiti dei dispositivi. Hanno il vantaggio di copiare il contenuto dei chip di memoria senza doverli smontare dalla mother board. In realtà, molti di essi non effettuano una copia completa della memoria flash, a causa delle limitate funzioni offerte dalle API fornite dai dispositivi embedded. Il secondo metodo di acquisizione fisica consiste nell’utilizzo dell’accesso alla porta di test JTAG (Joint Test Action Group) [22,23] dei dispositivi digitali, attraverso un connettore posto sulla scheda madre. Nella maggior parte dei dispositivi, le porte JTAG sono utilizzate a fini di debug, ma possono essere usate anche per accedere alla memoria flash. L’estrazione tramite connettore JTAG, garantisce la non alterazione della memoria durante la fase di acquisizione ma è tecnicamente complessa e richiede molto tempo perché di natura seriale. Il terzo metodo di acquisizione consiste nel disassemblaggio [24] del chip di memoria ed utilizza un lettore/programmatore di chip per l’acquisizione dei dati. E’ un metodo costoso, richiede molto tempo ed è in assoluto il più invasivo: viene quindi solitamente utilizzato per recuperare dati da dispositivi danneggiati. 2.3 METODOLOGIA DI ESTRAZIONE Per i test di acquisizione ed analisi della memoria è stato utilizzato un dispositivo di navigazione veicolare TOMSTAR 5006 con sistema operativo Windows CE v. 6.0, processore Centrality Atlas IV - 500MHz, 64MB RAM, 64MB Flash ROM, monitor 5” LCD, Bluetooth, ingresso USB 2.0 e slot per SD card fino a 2GB. Il dispositivo è stato connesso via USB ad un personal computer con sistema operativo Windows 7 Ultimate a 32 bit, tramite il Centro Dispositivi Windows Mobile v. 6.1.6965. Per l’acquisizione sono stati utilizzati tool basati sui protocolli RAPI e ActiveSync; nello specifico i tool utilizzati appartengono alla famiglia dei “flasher tool”. Nella figura 2.1 sono riportati i principali tool della famiglia “flasher tool” utilizzati su dispositivi con sistema operativo WinCE, dandone una breve descrizione. Tool pps pdblist pdel pdir pmkdir pget pkill pmemdump psetmem pmemmap pput pregdmp pregutl regutl prun dump pdebug pdocread psdread psdwrite Funzione Esegue il dump dei processi attivi Esegue il dump dei database Cancella i file Restituisce la lista delle directory Crea le directory Copia i file da WinCE Termina i processi Copia blocchi di memoria Setta la memoria RAM list available memory blocks Copia i file su WinCE Esegue il dump deifile di registro Manipola i file di registro Manipola i file di registro di Win32 Esegue programmi in Win CE Esegue il dump esadecimale dei file locali Cattura il debug dell’output dei processi Lettura dei device m-system DiskOnChip lettura dalla SD card del device scrittura sulla SD card del device Fig. 2.1: Elenco dei “flasher tool” “ITSUTILS” I tool principalmente utilizzati per eseguire la copia della memoria del dispositivo in esame sono pmemdump e pmemmap. Tali tool per poter funzionare necessitano della copia della libreria itsutils.dll all’interno della cartella Windows del dispositivo. Tale copia si effettua mediante l’utilizzo del tool pput eseguito sul personal computer. Di seguito si riporta la sintassi utilizzata: pput.exe itsutils.dll \windows I tool pmemdump e pmemmap come tutti gli altri “flasher tool” vengono eseguiti sul personal computer e attraverso il protocollo RAPI, instaurano un collegamento con il dispositivo in esame utilizzando la DLL itsutils.dll. Il dump della memoria si esegue attraverso il tool pmemdump, di cui si riportano le opzioni disponibili: pmemdump [ -m | -p procname | -h prochandle] start length [ filename ] numbers can be specified as 0x1234abcd -1 -2 -4 : dump as bytes/words/dwords -w NUM : specify number of words per line -s SIZE : step with SIZE through memory -a : ascdump iso hexdump -f : full -- do not summarize identical lines -c : print raw memory to stdout -x : print only hex -xx : print only fixed length ascii dumps -v : verbose -n NAME : view memory in the context of process NAME -h NUM : view memory in the context of process with handle NUM -m : directly access memory -- not using ReadProcessMemory -p : access physical memory instead of virtual memory if -p, -h and -m are not specified, memory is read from the context of rapisrv.exe Specificando l’indirizzo di partenza della memoria virtuale in notazione esadecimale, con la lunghezza dei blocchi di memoria, è possibile ottenere l’intera immagine della ROM. Di seguito si riporta la relativa sintassi: pmemdump.exe 0x80000000 0x040000000 rom.nb Utilizzando il tool pmemmap è possibile ottenere la mappatura degli indirizzi di memoria, così come si trovano nella page table del sistema. Di seguito si riportano le opzioni disponibili: Uso: [pmemmap-v] [-s SECTIONADDR] [-w savefile] [-p MIN-MAX] senza alcuna opzione, pmemmap elenca la mappatura degli indirizzi in memoria del kernel, come si trova nel page table di sistema. - V elenca l’intera page table, compresa l’area riservata al kernel; - S mostra il dettaglio della memoria di una sezione specifica; - W salva tutta la selezione in un file; - P MIN-MAX specifica il range di indirizzi fisici da includere. In figura 2.2 si riporta l’output ottenuto dal tool pmemmap attraverso l’opzione –v, che mostra l’intera mappatura della memoria del dispositivo, compresa l’area riservata al kernel. Indirizzo Virtuale v032d1000-032d6000 v032d7000-032d8000 v032e1000-032e7000 v032e8000-032e9000 v03301000-03306000 v03307000-03308000 v03321000-03326000 v03327000-03328000 v03341000-03345000 v03346000-03347000 v03351000-03356000 v03357000-03358000 v03361000-0336c000 v0336d000-0336e000 v03371000-033a1000 v033a4000-033a5000 v033b1000-033b7000 v033b8000-033b9000 v033c1000-033c3000 v033c4000-033c5000 v033d1000-033d3000 v033d4000-033d5000 v033e1000-033e6000 v033e7000-033e8000 Indirizzo Fisico p30a33000-30a38000 p33f9e000-33f9f000 p30a2d000-30a33000 p33ee1000-33ee2000 p30a22000-30a27000 p33ed6000-33ed7000 p30a1b000-30a20000 p33fa3000-33fa4000 p30a15000-30a19000 p33e0a000-33e0b000 p30a10000-30a15000 p33e10000-33e11000 p30a05000-30a10000 p33f24000-33f25000 p309d5000-30a05000 p33eac000-33ead000 p309a8000-309ae000 p33f29000-33f2a000 p309a6000-309a8000 p33fa9000-33faa000 p309a4000-309a6000 p33ec9000-33eca000 p3099f000-309a4000 p33bc9000-33bca000 Dim. 500016 100016 600016 100016 500016 100016 500016 100016 400016 100016 500016 100016 b00016 100016 3000016 100016 600016 100016 200016 100016 200016 100016 500016 100016 KB 20 4 25 4 20 4 20 4 16 4 20 4 45 4 197 4 25 4 8 4 8 4 20 4 v033f1000-033f2000 v033f3000-033f4000 v034b1000-034ba000 v034bb000-034bc000 v034d1000-034eb000 v036b1000-036b2000 v036b3000-036b4000 v036d1000-036d4000 v036e1000-036e4000 v037a1000-037a3000 v037a5000-037af000 v037b1000-037e6000 v037ea000-037eb000 v037eb000-037ec000 v03861000-03863000 v03871000-03895000 v03898000-038a3000 v03981000-039c1000 v039d1000-039d7000 v039d9000-039da000 v039e1000-039ff000 v03a01000-03a02000 v03a41000-03a48000 v03aa1000-03afa000 v03b04000-03b0b000 v03b31000-03b58000 v03b5b000-03b5f000 v03b61000-03b8a000 v03bc1000-03bc5000 v03bc6000-03bc7000 v03bd1000-03bda000 v03bdc000-03bdd000 v03be1000-03bf0000 v03bf1000-03bf2000 v03bf2000-03bf3000 v03c01000-03c4e000 v03c56000-03c57000 v03c57000-03c58000 v03c61000-03c62000 v03c63000-03c64000 v03c71000-03c72000 v03c73000-03c74000 v03c81000-03ca0000 v03ca1000-03ca3000 v03cb1000-03cc3000 v03cc4000-03cc5000 v03cd1000-03cd3000 v03ce1000-03ce3000 v03cf1000-03cf2000 v03d01000-03d09000 v03d11000-03d12000 v03d21000-03d2d000 v03d31000-03d34000 v03d41000-03d44000 v03d45000-03d46000 v03d51000-03d6a000 v03d6d000-03d6e000 v03db1000-03db3000 v03dc1000-03dc7000 p3099e000-3099f000 p33ed9000-33eda000 p30900000-30909000 p33ec7000-33ec8000 p308e3000-308fd000 p308e2000-308e3000 p33faf000-33fb0000 p308d8000-308db000 p308d5000-308d8000 p308c5000-308c7000 p308c7000-308d1000 p3088f000-308c4000 p33d9c000-33d9d000 p308c4000-308c5000 p30841000-30843000 p307e1000-30805000 p30805000-30810000 p306f1000-30731000 p306ea000-306f0000 p306f0000-306f1000 p306cb000-306e9000 p306e9000-306ea000 p306a8000-306af000 p3060b000-30664000 p30664000-3066b000 p305ce000-305f5000 p305f5000-305f9000 p305a5000-305ce000 p30597000-3059b000 p33f22000-33f23000 p3058d000-30596000 p30596000-30597000 p3057d000-3058c000 p33f67000-33f68000 p3058c000-3058d000 p30530000-3057d000 p33eed000-33eee000 p33eec000-33eed000 p3052f000-30530000 p33edd000-33ede000 p3052e000-3052f000 p33ecd000-33ece000 p3050f000-3052e000 p33f7b000-33f7d000 p304fd000-3050f000 p33f1b000-33f1c000 p304fb000-304fd000 p304f9000-304fb000 p304f8000-304f9000 p304f0000-304f8000 p304ef000-304f0000 p304e3000-304ef000 p304e0000-304e3000 p304dd000-304e0000 p33f6d000-33f6e000 p304c3000-304dc000 p304dc000-304dd000 p304c1000-304c3000 p304bb000-304c1000 100016 100016 900016 100016 1a00016 100016 100016 300016 300016 200016 a00016 3500016 100016 100016 200016 2400016 b00016 4000016 600016 100016 1e00016 100016 700016 5900016 700016 2700016 400016 2900016 400016 100016 900016 100016 f00016 100016 100016 4d00016 100016 100016 100016 100016 100016 100016 1f00016 200016 1200016 100016 200016 200016 100016 800016 100016 c00016 300016 300016 100016 1900016 100016 200016 600016 4 4 37 4 106 4 4 12 12 8 41 217 4 4 8 147 45 262 25 4 123 4 29 365 29 160 16 168 16 4 37 4 61 4 4 315 4 4 4 4 4 4 127 8 74 4 8 8 4 33 4 49 12 12 4 102 4 8 25 v03dd1000-03de7000 v03de8000-03de9000 v03de9000-03deb000 v03df1000-03df5000 v03df6000-03df7000 v03e01000-03e0e000 v03e0f000-03e10000 v03e61000-03e64000 v03e6a000-03e75000 v03e81000-03e85000 v03e86000-03e87000 v03e87000-03e88000 v03eb1000-03f00000 v03f00000-03f03000 v03f07000-03f14000 v03f31000-03f41000 v03f42000-03f43000 v03f51000-03f59000 v03f5a000-03f5b000 v03f61000-03f62000 v03f63000-03f64000 v03f71000-03fe9000 v03fea000-03fef000 v03fef000-03ff6000 v0e011000-0e01c000 v0e01c000-0e01d000 v0e01e000-0e01f000 v0e02f000-0e030000 v0e030000-0e031000 v0e031000-0e032000 v0e032000-0e034000 v0e034000-0e035000 v0e035000-0e036000 v0e036000-0e037000 v0e037000-0e038000 v0e038000-0e039000 v0e039000-0e03a000 v0e03a000-0e03b000 v0e03b000-0e03c000 v0e03c000-0e03d000 v0e03d000-0e03e000 v0e03e000-0e03f000 v0e03f000-0e040000 v0e040000-0e041000 v0e041000-0e042000 v0e042000-0e043000 v0e043000-0e044000 v0e044000-0e052000 v0e052000-0e053000 v0e053000-0e054000 v0e06e000-0e06f000 v0e06f000-0e070000 v0e07e000-0e07f000 v0e07f000-0e080000 v0e08f000-0e090000 v0e09f000-0e0a0000 v0e0af000-0e0b0000 v0fc03000-0fc04000 v0fc04000-0fc05000 p304a3000-304b9000 p33f4c000-33f4d000 p304b9000-304bb000 p3049f000-304a3000 p33f64000-33f65000 p30492000-3049f000 p33fd4000-33fd5000 p3044d000-30450000 p30450000-3045b000 p30448000-3044c000 p33f33000-33f34000 p3044c000-3044d000 p303d9000-30428000 p30428000-3042b000 p3042b000-30438000 p303c0000-303d0000 p33f5e000-33f5f000 p303b8000-303c0000 p33fc2000-33fc3000 p303b7000-303b8000 p33fb2000-33fb3000 p30242000-302ba000 p33ff0000-33ff5000 p302ba000-302c1000 p30978000-30983000 p33d3e000-33d3f000 p30983000-30984000 p33d2e000-33d2f000 p33d53000-33d54000 p33bbb000-33bbc000 p33bc2000-33bc4000 p33831000-33832000 p33842000-33843000 p33844000-33845000 p33866000-33867000 p3383b000-3383c000 p33a3b000-33a3c000 p33833000-33834000 p33839000-3383a000 p33838000-33839000 p3383a000-3383b000 p33830000-33831000 p33832000-33833000 p3383c000-3383d000 p33854000-33855000 p33837000-33838000 p3385f000-33860000 p3387a000-33888000 p33865000-33866000 p33840000-33841000 p33d33000-33d34000 p33d31000-33d32000 p33bc1000-33bc2000 p33bb9000-33bba000 p33bc4000-33bc5000 p338a0000-338a1000 p337a7000-337a8000 p33793000-33794000 p337bc000-337bd000 1600016 100016 200016 400016 100016 d00016 100016 300016 b00016 400016 100016 100016 4f00016 300016 d00016 1000016 100016 800016 100016 100016 100016 7800016 500016 700016 b00016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 e00016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 90 4 8 16 4 53 4 12 45 16 4 4 324 12 53 66 4 33 4 4 4 492 20 29 45 4 4 4 4 4 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 57 4 4 4 4 4 4 4 4 4 4 4 v0fc0a000-0fc0b000 v0fc0b000-0fc0c000 v0fc0c000-0fc0d000 v0fc11000-0fc12000 v0fc20000-0fc21000 v0fc21000-0fc22000 v0fc22000-0fc23000 v0fc23000-0fc24000 v0fc24000-0fc26000 v0fc27000-0fc28000 v0fc28000-0fc29000 v0fc29000-0fc2b000 v0fc2d000-0fc2e000 v0fc33000-0fc34000 v0fc36000-0fc37000 v0fc3b000-0fc3c000 v0fc3c000-0fc3d000 v0fc3d000-0fc3e000 v0fc3e000-0fc3f000 v0fc46000-0fc47000 v0fc4c000-0fc4d000 v0fc4d000-0fc4e000 v0fc4e000-0fc4f000 v0fc51000-0fc52000 v0fc55000-0fc56000 v0fc57000-0fc58000 v0fc5c000-0fc5d000 v0ff7c000-0ff7d000 v0ff7e000-0ff7f000 v0ffa1000-0ffa3000 v0ffc3000-0ffc4000 v0ffc7000-0ffc8000 v0ffc9000-0ffca000 v0fff5000-0fff6000 v0ffff000-10000000 v46000000-46001000 v46100000-46200000 v46200000-46221000 v46300000-46301000 v46400000-46429000 v46500000-46520000 v46600000-46700000 v46700000-46800000 v46800000-46900000 v46900000-46a00000 v46a00000-46b00000 v46b00000-46c00000 v46c00000-46c46000 v46d00000-46d01000 v46d01000-46d05000 v46d05000-46d0b000 v46d0b000-46d0e000 v46e00000-46e01000 v46f00000-46f01000 v47300000-47301000 v47400000-47401000 v4741b000-4741c000 v47500000-47501000 v47600000-47601000 p338ae000-338af000 p337ab000-337ac000 p337a3000-337a4000 p3379b000-3379c000 p33791000-33792000 p338a1000-338a2000 p3378c000-3378d000 p33794000-33795000 p337ba000-337bc000 p337bd000-337be000 p337a0000-337a1000 p33798000-3379a000 p337ac000-337ad000 p3378f000-33790000 p3379a000-3379b000 p3379c000-3379d000 p3378e000-3378f000 p33792000-33793000 p3379d000-3379e000 p337aa000-337ab000 p337b9000-337ba000 p337a6000-337a7000 p338ac000-338ad000 p337a2000-337a3000 p3378d000-3378e000 p3378b000-3378c000 p33795000-33796000 p33bc0000-33bc1000 p33bbe000-33bbf000 p33bbc000-33bbe000 p33dd6000-33dd7000 p33dd4000-33dd5000 p33d4c000-33d4d000 p33bbf000-33bc0000 p33d3d000-33d3e000 p33fcf000-33fd0000 p30b4f000-30c4f000 p30c4f000-30c70000 p33fa6000-33fa7000 p30c81000-30caa000 p30ca9000-30cc9000 p30cc8000-30dc8000 p30dc8000-30ec8000 p30ec8000-30fc8000 p30fc8000-310c8000 p310c8000-311c8000 p311c8000-312c8000 p312c8000-3130e000 p33d9d000-33d9e000 p33da7000-33dab000 p33da1000-33da7000 p33d9e000-33da1000 p33dac000-33dad000 p33dad000-33dae000 p33db0000-33db1000 p33db2000-33db3000 p33db3000-33db4000 p33db4000-33db5000 p33db5000-33db6000 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 10000016 2100016 100016 2900016 2000016 10000016 10000016 10000016 10000016 10000016 10000016 4600016 100016 400016 600016 300016 100016 100016 100016 100016 100016 100016 100016 4 4 4 4 4 4 4 4 8 4 4 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 1049 135 4 168 131 1049 1049 1049 1049 1049 1049 287 4 16 25 12 4 4 4 4 4 4 4 v47700000-47701000 v47800000-47801000 v47900000-47904000 v47a00000-47a04000 v47b00000-47b01000 v48000000-48001000 v48100000-48101000 v48500000-48501000 v49200000-49201000 v49300000-49301000 v49700000-49701000 v80000000-81e00000 v82000000-84000000 v84000000-86000000 v86000000-88000000 v88000000-8a000000 v8a000000-8c000000 v8c000000-90000000 v90800000-90900000 v90900000-90a00000 v90a00000-90b00000 v90b00000-90c00000 v90c00000-90d00000 v90d00000-90e00000 v90e00000-90f00000 v90f00000-91000000 v91000000-91100000 v91100000-91200000 v91200000-91300000 v91300000-91400000 v91400000-91500000 v91500000-91600000 v91600000-91700000 v91700000-91800000 v91800000-91900000 v91900000-91a00000 v91a00000-91b00000 v91b00000-91c00000 v92000000-94000000 va0000000-a1e00000 va2000000-a4000000 va4000000-a6000000 va6000000-a8000000 va8000000-aa000000 vaa000000-ac000000 vac000000-b0000000 vb0800000-b0900000 vb0900000-b0a00000 vb0a00000-b0b00000 vb0b00000-b0c00000 vb0c00000-b0d00000 vb0d00000-b0e00000 vb0e00000-b0f00000 vb0f00000-b1000000 vb1000000-b1100000 vb1100000-b1200000 vb1200000-b1300000 vb1300000-b1400000 vb1400000-b1500000 p33db6000-33db7000 p33db8000-33db9000 p33db9000-33dbd000 p33dbd000-33dc1000 p33dc3000-33dc4000 p33d24000-33d25000 p33d16000-33d17000 p33d1c000-33d1d000 p33b8b000-33b8c000 p33b8d000-33b8e000 p33b94000-33b95000 p02000000-03e00000 p08000000-0a000000 p10000000-12000000 p18000000-1a000000 p20000000-22000000 p28000000-2a000000 p30000000-34000000 p48000000-48100000 p49000000-49100000 p4a000000-4a100000 p4b000000-4b100000 p4c000000-4c100000 p4d000000-4d100000 p4e000000-4e100000 p4f000000-4f100000 p50000000-50100000 p51000000-51100000 p52000000-52100000 p53000000-53100000 p54000000-54100000 p55000000-55100000 p56000000-56100000 p57000000-57100000 p58000000-58100000 p59000000-59100000 p5a000000-5a100000 p5b000000-5b100000 p00000000-02000000 p02000000-03e00000 p08000000-0a000000 p10000000-12000000 p18000000-1a000000 p20000000-22000000 p28000000-2a000000 p30000000-34000000 p48000000-48100000 p49000000-49100000 p4a000000-4a100000 p4b000000-4b100000 p4c000000-4c100000 p4d000000-4d100000 p4e000000-4e100000 p4f000000-4f100000 p50000000-50100000 p51000000-51100000 p52000000-52100000 p53000000-53100000 p54000000-54100000 100016 100016 400016 400016 100016 100016 100016 100016 100016 100016 100016 1e0000016 200000016 200000016 200000016 200000016 200000016 400000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 200000016 1e0000016 200000016 200000016 200000016 200000016 200000016 400000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 4 4 16 16 4 4 4 4 4 4 4 31457 33554 33554 33554 33554 33554 67109 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 33554 31457 33554 33554 33554 33554 33554 67109 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 1049 vb1500000-b1600000 vb1600000-b1700000 vb1700000-b1800000 vb1800000-b1900000 vb1900000-b1a00000 vb1a00000-b1b00000 vb1b00000-b1c00000 vb2000000-b4000000 vc201f000-c2020000 vc3c03000-c3c04000 vc3c04000-c3c05000 vc3c0a000-c3c0b000 vc3c0b000-c3c0c000 vc3c0c000-c3c0d000 vc3c11000-c3c12000 vc3c20000-c3c21000 vc3c21000-c3c22000 vc3c22000-c3c23000 vc3c23000-c3c24000 vc3c24000-c3c26000 vc3c27000-c3c28000 vc3c28000-c3c29000 vc3c29000-c3c2b000 vc3c2d000-c3c2e000 vc3c33000-c3c34000 vc3c36000-c3c37000 vc3c3b000-c3c3c000 vc3c3c000-c3c3d000 vc3c3d000-c3c3e000 vc3c3e000-c3c3f000 vc3c46000-c3c47000 vc3c4c000-c3c4d000 vc3c4d000-c3c4e000 vc3c4e000-c3c4f000 vc3c51000-c3c52000 vc3c55000-c3c56000 vc3c57000-c3c58000 vc3c5b000-c3c5c000 vc3c64000-c3c65000 vc3c65000-c3c66000 vc3c66000-c3c67000 vc3c73000-c3c74000 vc3c74000-c3c75000 vc3c75000-c3c76000 vc3c76000-c3c77000 vc3c77000-c3c78000 vc3c78000-c3c79000 vc3c79000-c3c7a000 vc3c7a000-c3c7b000 vc3c7b000-c3c7c000 vc3c7c000-c3c7d000 vc3c7d000-c3c7e000 vc3c7e000-c3c7f000 vc3c7f000-c3c80000 vc3c80000-c3c81000 vc3c81000-c3c82000 vc3c82000-c3c83000 vc3c83000-c3c84000 vc3c84000-c3c85000 p55000000-55100000 p56000000-56100000 p57000000-57100000 p58000000-58100000 p59000000-59100000 p5a000000-5a100000 p5b000000-5b100000 p00000000-02000000 p33ffd000-33ffe000 p33793000-33794000 p337bc000-337bd000 p338ae000-338af000 p337ab000-337ac000 p337a3000-337a4000 p3379b000-3379c000 p33791000-33792000 p338a1000-338a2000 p3378c000-3378d000 p33794000-33795000 p337ba000-337bc000 p337bd000-337be000 p337a0000-337a1000 p33798000-3379a000 p337ac000-337ad000 p3378f000-33790000 p3379a000-3379b000 p3379c000-3379d000 p3378e000-3378f000 p33792000-33793000 p3379d000-3379e000 p337aa000-337ab000 p337b9000-337ba000 p337a6000-337a7000 p338ac000-338ad000 p337a2000-337a3000 p3378d000-3378e000 p3378b000-3378c000 p337a9000-337aa000 p338b9000-338ba000 p337a5000-337a6000 p33790000-33791000 p33c67000-33c68000 p33c57000-33c58000 p33c59000-33c5a000 p33ae1000-33ae2000 p33ae0000-33ae1000 p33adf000-33ae0000 p33ade000-33adf000 p33add000-33ade000 p33adc000-33add000 p33adb000-33adc000 p33ada000-33adb000 p33ad9000-33ada000 p33ad8000-33ad9000 p33ad7000-33ad8000 p33ad6000-33ad7000 p33ad5000-33ad6000 p33ad4000-33ad5000 p33ad3000-33ad4000 10000016 10000016 10000016 10000016 10000016 10000016 10000016 200000016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 1049 1049 1049 1049 1049 1049 1049 33554 4 4 4 4 4 4 4 4 4 4 4 8 4 4 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 vc3c85000-c3c86000 vc3c86000-c3c87000 vc3c87000-c3c88000 vc3c88000-c3c89000 vc3c89000-c3c8a000 vc3c8a000-c3c8b000 vc3c8b000-c3c8c000 vc3c8c000-c3c8d000 vc3c8d000-c3c8e000 vc3c8e000-c3c8f000 vc3c8f000-c3c90000 vc3c90000-c3c91000 vc3c91000-c3c92000 vc3c92000-c3c93000 vc3c93000-c3c94000 vc3c94000-c3c95000 vc3c95000-c3c96000 vc3c96000-c3c97000 vc3c97000-c3c98000 vc3c98000-c3c99000 vc3c99000-c3c9a000 vc3c9a000-c3c9b000 vc3c9b000-c3c9c000 vc3c9c000-c3c9d000 vc3c9d000-c3c9e000 vc3c9e000-c3c9f000 vc3c9f000-c3ca0000 vc3ca0000-c3ca1000 vc3ca1000-c3ca2000 vc3ca2000-c3ca3000 vc3ca3000-c3ca4000 vc3ca4000-c3ca5000 vc3ca5000-c3ca6000 vc3ca6000-c3ca7000 vc3ca7000-c3ca8000 vc3ca8000-c3ca9000 vc3ca9000-c3caa000 vc3caa000-c3cab000 vc3cab000-c3cac000 vc3cac000-c3cad000 vc3cad000-c3cae000 vc3cae000-c3caf000 vc3caf000-c3cb0000 vc3cb0000-c3cb1000 vc3cb1000-c3cb2000 vc3cb2000-c3cb3000 vc3cb3000-c3cb4000 vc3cb4000-c3cb5000 vc3cb5000-c3cb6000 vc3cb6000-c3cb7000 vc3cb7000-c3cb8000 vc3cb8000-c3cb9000 vc3cb9000-c3cba000 vc3cba000-c3cbb000 vc3cbb000-c3cbc000 vc3cbc000-c3cbd000 vc3cbd000-c3cbe000 vc3cbe000-c3cbf000 vc3cbf000-c3cc0000 p33ad2000-33ad3000 p33ad1000-33ad2000 p33ad0000-33ad1000 p33acf000-33ad0000 p33ace000-33acf000 p33acd000-33ace000 p33acc000-33acd000 p33acb000-33acc000 p33aca000-33acb000 p33ac9000-33aca000 p33ac8000-33ac9000 p33ac7000-33ac8000 p33ac6000-33ac7000 p33ac5000-33ac6000 p33ac4000-33ac5000 p33ac3000-33ac4000 p33ac2000-33ac3000 p33ac1000-33ac2000 p33ac0000-33ac1000 p33abf000-33ac0000 p33abe000-33abf000 p33abd000-33abe000 p33abc000-33abd000 p33abb000-33abc000 p33aba000-33abb000 p33ab9000-33aba000 p33ab8000-33ab9000 p33ab7000-33ab8000 p33ab6000-33ab7000 p33ab5000-33ab6000 p33ab4000-33ab5000 p33ab3000-33ab4000 p33ab2000-33ab3000 p33ab1000-33ab2000 p33ab0000-33ab1000 p33aaf000-33ab0000 p33aae000-33aaf000 p33aad000-33aae000 p33aac000-33aad000 p33aab000-33aac000 p33aaa000-33aab000 p33aa9000-33aaa000 p33aa8000-33aa9000 p33aa7000-33aa8000 p33aa6000-33aa7000 p33aa5000-33aa6000 p33aa4000-33aa5000 p33aa3000-33aa4000 p33aa2000-33aa3000 p33aa1000-33aa2000 p33aa0000-33aa1000 p33a9f000-33aa0000 p33a9e000-33a9f000 p33a9d000-33a9e000 p33a9c000-33a9d000 p33a9b000-33a9c000 p33a9a000-33a9b000 p33a99000-33a9a000 p33a98000-33a99000 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 vc3cc0000-c3cc1000 vc3cc1000-c3cc2000 vc3cc2000-c3cc3000 vc3cc3000-c3cc4000 vc3cc4000-c3cc5000 vc3cc5000-c3cc6000 vc3cc6000-c3cc7000 vc3cc7000-c3cc8000 vc3cc8000-c3cc9000 vc3cc9000-c3cca000 vc3cca000-c3ccb000 vc3ccb000-c3ccc000 vc3ccc000-c3ccd000 vc3ccd000-c3cce000 vc3cce000-c3ccf000 vc3ccf000-c3cd0000 vc3cd0000-c3cd1000 vc3cd1000-c3cd2000 vc3cd2000-c3cd3000 vc3cd3000-c3cd4000 vc3cd4000-c3cd5000 vc3cd5000-c3cd6000 vc3cd6000-c3cd7000 vc3cd7000-c3cd8000 vc3cd8000-c3cd9000 vc3cd9000-c3cda000 vc3cda000-c3cdb000 vc3cdb000-c3cdc000 vc3cdc000-c3cdd000 vc3cdd000-c3cde000 vc3cde000-c3cdf000 vc3cdf000-c3ce0000 vc3ce0000-c3ce1000 vc3ce1000-c3ce2000 vc3ce2000-c3ce3000 vc3ce3000-c3ce4000 vc3ce4000-c3ce5000 vc3ce5000-c3ce6000 vc3ce6000-c3ce7000 vc3ce7000-c3cea000 vc3cea000-c3ceb000 vc3ceb000-c3cee000 vc3cee000-c3cef000 vc3cef000-c3cf0000 vc3cf0000-c3cf1000 vc3cf1000-c3cf2000 vc3cf2000-c3cf3000 vc3cf3000-c3cf4000 vc3cf4000-c3cf5000 vc3cf5000-c3cf6000 vc3cf6000-c3cf7000 vc3cf7000-c3cf8000 vc3cf8000-c3cf9000 vc3cf9000-c3cfa000 vc3cfa000-c3cfb000 vc3cfb000-c3cfc000 vc3cfc000-c3cfd000 vc3cfd000-c3cfe000 vc3cfe000-c3cff000 p33a97000-33a98000 p33a96000-33a97000 p33a95000-33a96000 p33a94000-33a95000 p33a93000-33a94000 p33a92000-33a93000 p33a91000-33a92000 p33a90000-33a91000 p33b8a000-33b8b000 p33b89000-33b8a000 p33b88000-33b89000 p33b87000-33b88000 p33b86000-33b87000 p33b85000-33b86000 p33b84000-33b85000 p33b83000-33b84000 p33b82000-33b83000 p33b81000-33b82000 p33b80000-33b81000 p33b7f000-33b80000 p33b7e000-33b7f000 p33b7d000-33b7e000 p33b7c000-33b7d000 p33b7b000-33b7c000 p33b7a000-33b7b000 p33b79000-33b7a000 p33b78000-33b79000 p33b77000-33b78000 p33b76000-33b77000 p33b75000-33b76000 p33b74000-33b75000 p33b73000-33b74000 p33b72000-33b73000 p33b71000-33b72000 p33b70000-33b71000 p33b6f000-33b70000 p33a73000-33a74000 p33a72000-33a73000 p33a71000-33a72000 p33a6e000-33a71000 p33b6e000-33b6f000 p33c72000-33c75000 p33c71000-33c72000 p33c70000-33c71000 p33c6f000-33c70000 p33b6d000-33b6e000 p33b6c000-33b6d000 p33b6b000-33b6c000 p33b6a000-33b6b000 p33b69000-33b6a000 p33b68000-33b69000 p33b67000-33b68000 p33b66000-33b67000 p33b65000-33b66000 p33b64000-33b65000 p33b63000-33b64000 p33b62000-33b63000 p33b61000-33b62000 p33b60000-33b61000 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 300016 100016 300016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 12 4 12 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 vc3cff000-c3d00000 vc3d00000-c3d01000 vc3d01000-c3d02000 vc3d02000-c3d03000 vc3d03000-c3d04000 vc3d04000-c3d05000 vc3d05000-c3d06000 vc3d06000-c3d07000 vc3d07000-c3d08000 vc3d08000-c3d09000 vc3d09000-c3d0a000 vc3d0a000-c3d0b000 vc3d0b000-c3d0c000 vc3d0c000-c3d0d000 vc3d0d000-c3d0e000 vc3d0e000-c3d0f000 vc3d0f000-c3d10000 vc3d10000-c3d11000 vc3d11000-c3d12000 vc3d12000-c3d13000 vc3d13000-c3d14000 vc3d14000-c3d15000 vc3d15000-c3d16000 vc3d16000-c3d17000 vc3d17000-c3d18000 vc3d18000-c3d19000 vc3d19000-c3d1a000 vc3d6b000-c3d6d000 vc3d6d000-c3d6e000 vc3d6e000-c3d6f000 vc3d6f000-c3d70000 vc3d70000-c3d71000 vc3d71000-c3d72000 vc3d72000-c3d74000 vc3d74000-c3d75000 vc3d76000-c3d77000 vc3d77000-c3d78000 vc3d78000-c3d79000 vc3d79000-c3d7c000 vc3d84000-c3d85000 vc3d85000-c3d86000 vc3d86000-c3d87000 vc3d87000-c3d88000 vc3d88000-c3d8a000 vc3d8a000-c3d8b000 vc3d8b000-c3d8c000 vc3d8c000-c3d8d000 vc3d8d000-c3d8e000 vc3d8e000-c3d91000 vc3d92000-c3d93000 vc3d93000-c3d94000 vc3d94000-c3d95000 vc3d95000-c3d98000 vc3d9c000-c3d9f000 vc3da0000-c3da1000 vc3da1000-c3da2000 vc3da2000-c3da3000 vc3da3000-c3da6000 vc3da7000-c3daa000 p33b5b000-33b5c000 p33b5a000-33b5b000 p33b59000-33b5a000 p33b58000-33b59000 p33b57000-33b58000 p33b56000-33b57000 p33b55000-33b56000 p33b54000-33b55000 p33b53000-33b54000 p33b52000-33b53000 p33b51000-33b52000 p33b50000-33b51000 p33b4f000-33b50000 p33b4e000-33b4f000 p33b4d000-33b4e000 p33b4c000-33b4d000 p33b4b000-33b4c000 p33b4a000-33b4b000 p33b49000-33b4a000 p33b48000-33b49000 p33b47000-33b48000 p33b46000-33b47000 p33b45000-33b46000 p33b44000-33b45000 p33b43000-33b44000 p33b42000-33b43000 p33b40000-33b41000 p33ae5000-33ae7000 p33ae8000-33ae9000 p33baa000-33bab000 p33aec000-33aed000 p33bac000-33bad000 p33aee000-33aef000 p33af2000-33af4000 p33af5000-33af6000 p33aea000-33aeb000 p33bab000-33bac000 p33aeb000-33aec000 p33aef000-33af2000 p33afa000-33afb000 p33bae000-33baf000 p33afb000-33afc000 p33c0c000-33c0d000 p33c16000-33c18000 p33c47000-33c48000 p33c18000-33c19000 p33c48000-33c49000 p33c19000-33c1a000 p33c22000-33c25000 p33c20000-33c21000 p33c49000-33c4a000 p33c21000-33c22000 p33c1d000-33c20000 p33c28000-33c2b000 p33c2b000-33c2c000 p33888000-33889000 p33c2c000-33c2d000 p33c25000-33c28000 p33c1a000-33c1d000 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 300016 100016 100016 100016 100016 200016 100016 100016 100016 100016 300016 100016 100016 100016 300016 300016 100016 100016 100016 300016 300016 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 4 4 4 4 4 8 4 4 4 4 12 4 4 4 4 8 4 4 4 4 12 4 4 4 12 12 4 4 4 12 12 vc3daa000-c3dab000 vc3dab000-c3dac000 vc3dac000-c3dad000 vc3dad000-c3dae000 vc3dae000-c3db1000 vc3db1000-c3db3000 vc3db3000-c3db4000 vc3db4000-c3db5000 vc3db5000-c3db6000 vc3db6000-c3db7000 vc3dc3000-c3dc5000 vc3dcf000-c3dd0000 vc3dd0000-c3dd1000 vc3dd8000-c3dda000 vc3dda000-c3ddc000 vc3ddc000-c3ddd000 vc3ddd000-c3dde000 vc3e04000-c3e05000 vc3e05000-c3e06000 vc3e12000-c3e13000 vc3e13000-c3e14000 vc3e14000-c3e15000 vc3e15000-c3e16000 vc3e16000-c3e18000 vc3e18000-c3e19000 vc3e1b000-c3e1c000 vc3e1c000-c3e1d000 vc3e1d000-c3e1e000 vc3e1e000-c3e1f000 vc3e1f000-c3e20000 vc3e20000-c3e22000 vc3e23000-c3e24000 vc3e25000-c3e26000 vc3e52000-c3e53000 vc3e53000-c3e54000 vc3e54000-c3e55000 vc3e56000-c3e57000 vc3e57000-c3e58000 vc3e58000-c3e59000 vc3e59000-c3e5a000 vc3e6c000-c3e6d000 vc3e6d000-c3e6e000 vc3e6e000-c3e6f000 vc3e70000-c3e71000 vc3e71000-c3e72000 vc3e72000-c3e74000 vc3e74000-c3e75000 vc3e75000-c3e76000 vc3e7c000-c3e7d000 vc3e7d000-c3e7e000 vc3e7e000-c3e7f000 vc3e81000-c3e82000 vc3e82000-c3e83000 vc3e83000-c3e84000 vc3e84000-c3e85000 vc3e86000-c3e89000 vc3e89000-c3e8a000 vc3e8a000-c3e8b000 vc3e8b000-c3e8c000 p33c2d000-33c2e000 p3388c000-3388d000 p33c2e000-33c2f000 p33891000-33892000 p33c3a000-33c3d000 p33c36000-33c38000 p33c39000-33c3a000 p33c50000-33c51000 p33a46000-33a47000 p33a3c000-33a3d000 p33a42000-33a44000 p33a41000-33a42000 p33a40000-33a41000 p33b04000-33b06000 p33c12000-33c14000 p33c11000-33c12000 p33c44000-33c45000 p33c4e000-33c4f000 p33a38000-33a39000 p33a39000-33a3a000 p33af7000-33af8000 p33bad000-33bae000 p33af8000-33af9000 p33c32000-33c34000 p33c31000-33c32000 p33861000-33862000 p3384e000-3384f000 p3384b000-3384c000 p33862000-33863000 p33ae3000-33ae4000 p33afc000-33afe000 p33c34000-33c35000 p33c35000-33c36000 p33c77000-33c78000 p33ae4000-33ae5000 p33c92000-33c93000 p33a6c000-33a6d000 p33b03000-33b04000 p33c4b000-33c4c000 p33843000-33844000 p33c95000-33c96000 p33c93000-33c94000 p33c90000-33c91000 p33c99000-33c9a000 p33c8f000-33c90000 p33c8c000-33c8e000 p33c8b000-33c8c000 p33c8e000-33c8f000 p33c91000-33c92000 p33c98000-33c99000 p33c97000-33c98000 p33ca0000-33ca1000 p33c7c000-33c7d000 p33a68000-33a69000 p33c9e000-33c9f000 p33c78000-33c7b000 p33a6d000-33a6e000 p33c7b000-33c7c000 p33c9f000-33ca0000 100016 100016 100016 100016 300016 200016 100016 100016 100016 100016 200016 100016 100016 200016 200016 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 300016 100016 100016 100016 4 4 4 4 12 8 4 4 4 4 8 4 4 8 8 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 4 4 4 12 4 4 4 vc3e8c000-c3e8d000 vc3e8d000-c3e8e000 vc3e8f000-c3e90000 vc3e90000-c3e91000 vc3e97000-c3e98000 vc3e98000-c3e99000 vc3ea1000-c3ea2000 vc3ea2000-c3ea3000 vc3ea3000-c3ea4000 vc3ea5000-c3ea6000 vc3ea6000-c3ea7000 vc3ea7000-c3ea8000 vc3ea8000-c3ea9000 vc3ea9000-c3eaa000 vc3eaa000-c3eab000 vc3eab000-c3eac000 vc3eac000-c3ead000 vc3ead000-c3eae000 vc3eb2000-c3eb3000 vc3eb3000-c3eb4000 vc3eb4000-c3eb5000 vc3eb5000-c3eb7000 vc3eb8000-c3eb9000 vc3eb9000-c3eba000 vc3eba000-c3ebb000 vc3ebb000-c3ebc000 vc3ebd000-c3ebe000 vc3ebe000-c3ebf000 vc3ebf000-c3ec1000 vc3ec1000-c3ec2000 vc3ec2000-c3ec3000 vc3ec3000-c3ec4000 vc3ec4000-c3ec5000 vc3ec6000-c3ec7000 vc3ec7000-c3ec8000 vc3ec8000-c3ec9000 vc3ec9000-c3eca000 vc3ecb000-c3ecc000 vc3ecc000-c3ecd000 vc3ecd000-c3ece000 vc3ece000-c3ecf000 vc3ecf000-c3ed0000 vc3ed0000-c3ed1000 vc3ed1000-c3ed2000 vc3ed2000-c3ed3000 vc3eda000-c3edb000 vc3edb000-c3edc000 vc3edc000-c3edd000 vc3edd000-c3ede000 vc3ede000-c3edf000 vc3edf000-c3ee0000 vc3fff000-c4000000 vfffd0000-fffd1000 vfffd1000-fffd2000 vfffd2000-fffd3000 vfffd3000-fffd4000 vffff0000-ffff1000 vffff2000-ffff3000 vffff4000-ffff5000 p33ca5000-33ca6000 p33ca7000-33ca8000 p33cb1000-33cb2000 p33c9b000-33c9c000 p33c9d000-33c9e000 p33cb0000-33cb1000 p33c7d000-33c7e000 p33a67000-33a68000 p33ae2000-33ae3000 p33c65000-33c66000 p33baf000-33bb0000 p33c86000-33c87000 p33c5f000-33c60000 p33c68000-33c69000 p33c58000-33c59000 p33c85000-33c86000 p33c51000-33c52000 p33c7e000-33c7f000 p33c84000-33c85000 p33c5e000-33c5f000 p33c5d000-33c5e000 p33c4c000-33c4e000 p33c83000-33c84000 p33a66000-33a67000 p33c63000-33c64000 p33b02000-33b03000 p33c0d000-33c0e000 p33c15000-33c16000 p33c0e000-33c10000 p33c82000-33c83000 p33a65000-33a66000 p33c64000-33c65000 p33a3a000-33a3b000 p33c88000-33c89000 p33c8a000-33c8b000 p33b07000-33b08000 p33c66000-33c67000 p33c80000-33c81000 p33c60000-33c61000 p33b01000-33b02000 p33c14000-33c15000 p33cc1000-33cc2000 p33c9c000-33c9d000 p33cb2000-33cb3000 p33c7f000-33c80000 p33c81000-33c82000 p33b00000-33b01000 p33ecc000-33ecd000 p33cb5000-33cb6000 p33cb4000-33cb5000 p33cb3000-33cb4000 p33ff5000-33ff6000 p314c0000-314c1000 p314c0000-314c1000 p314c0000-314c1000 p314c0000-314c1000 p314c4000-314c5000 p314c4000-314c5000 p314c4000-314c5000 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 200016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 100016 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 8 4 4 4 4 4 4 8 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 vffff6000-ffff7000 vffffc000-ffffd000 p314c4000-314c5000 p314c5000-314c6000 100016 100016 4 4 Fig. 2.2 : intera mappatura della memoria del dispositivo, compresa l’area riservata al kernel Legenda: Memoria Virtuale Utente: Dati Kernel – Codice Memoria Virtuale Kernel: Indirizzi mappati eseguibile – Heap – Stack ottenuti tramite cache Memoria Virtuale Utente: Dll Memoria Virtuale Kernel: DLL – server driver Memoria Virtuale Kernel: Indirizzi mappati non Memoria Virtuale Kernel: pagine dati del ottenuti tramite cache Kernel Lo stesso comando utilizzato senza alcuna opzione permette di visualizzare la page table relativa al solo indirizzamento della memoria virtuale riservata al Kernel, come riportato in figura 2.3: Indirizzo Virtuale v80000000-81e00000 v82000000-84000000 v84000000-86000000 v86000000-88000000 v88000000-8a000000 v8a000000-8c000000 v8c000000-90000000 v90800000-90900000 v90900000-90a00000 v90a00000-90b00000 v90b00000-90c00000 v90c00000-90d00000 v90d00000-90e00000 v90e00000-90f00000 v90f00000-91000000 v91000000-91100000 v91100000-91200000 v91200000-91300000 v91300000-91400000 v91400000-91500000 v91500000-91600000 v91600000-91700000 v91700000-91800000 v91800000-91900000 v91900000-91a00000 v91a00000-91b00000 v91b00000-91c00000 v92000000-94000000 vfffd0000-fffd1000 vfffd1000-fffd2000 vfffd2000-fffd3000 vfffd3000-fffd4000 vffff0000-ffff1000 vffff2000-ffff3000 vffff4000-ffff5000 vffff6000-ffff7000 vffffc000-ffffd000 Indirizzo Fisico Dim. p02000000-03e00000 p08000000-0a000000 p10000000-12000000 p18000000-1a000000 p20000000-22000000 p28000000-2a000000 p30000000-34000000 p48000000-48100000 p49000000-49100000 p4a000000-4a100000 p4b000000-4b100000 p4c000000-4c100000 p4d000000-4d100000 p4e000000-4e100000 p4f000000-4f100000 p50000000-50100000 p51000000-51100000 p52000000-52100000 p53000000-53100000 p54000000-54100000 p55000000-55100000 p56000000-56100000 p57000000-57100000 p58000000-58100000 p59000000-59100000 p5a000000-5a100000 p5b000000-5b100000 p00000000-02000000 p314c0000-314c1000 p314c0000-314c1000 p314c0000-314c1000 p314c0000-314c1000 p314c4000-314c5000 p314c4000-314c5000 p314c4000-314c5000 p314c4000-314c5000 p314c5000-314c6000 1e0000016 200000016 200000016 200000016 200000016 200000016 400000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 10000016 200000016 100016 100016 100016 100016 100016 100016 100016 100016 100016 KB 31457 32768 32768 32768 32768 32768 65536 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 1024 32768 4 4 4 4 4 4 4 4 4 Fig. 2.3: indirizzamento della memoria virtuale riservata al Kernel L’immagine della ROM è stata ottenuta attraverso il tool pmemdump, indicando l’indirizzo virtuale 0x80000000 come partenza e specificando una lunghezza pari a 64 MB (0x04000000). Ciò è stato verificato sommando le dimensioni dei due blocchi fisici individuati dagli indirizzi virtuali e fisici sotto mostrati. v80000000-81e00000 p02000000-03e00000 1e0000016 31457 KB v82000000-84000000 p08000000-0a000000 200000016 32768 KB L’estrazione del contenuto della memoria è importante ai fini forensi poiché essa contiene tutti i programmi installati e i dati sensibili dell’utente. 2.4 TECNICHE DI ANALISI Al fine di poter analizzare il sistema in sperimentazione, si rende necessario conoscere alcune informazioni fondamentali. Fra queste risultano essere di rilevante importanza la OEMAddressTable, che fornisce la corrispondenza fra l’indirizzamento fisico e virtuale, lo stato dei registri di sistema, i processi ed i thread attivi. I tool necessari alla consultazione di tali informazioni sono pregutl.exe e pps.exe. Di seguito si riportano le specifiche relative all’utilizzo del tool pps.exe: Uso: pps [options] -t : informazioni relative ai thread -p HANDLE : informazioni relative ai processi -m msec : intervallo di misura -h : include le informazioni relative agli heap (lento) -v : verboso In figura 2.4 il risultato dell’esecuzione di pps.exe –t sul dispositivo WinCE in analisi: l’opzione –t elenca le informazioni dettagliate sui thread. 0fbfd866 0fc0bf96 0fc24bc6 0fd4a6fe 0fe09102 0ff1e6e6 0ff78f1e 0ffb8fd6 0ffff262 2fa27fd2 2fc0bbbe 2fd18a72 2fd4ad72 2fdaecb6 2fdf99ae 2ff70f22 2ff75fce 2ff83696 2ffa272e 2ffb5fc6 2ffbefae 2ffd33c2 8c225ac8 00011434 00011830 03abe310 03343560 03363454 03c9c64c 03f57998 8c21597c 0001bda0 0001197c 03bd53b4 8c225ac8 03e82ebc 03882a64 03c86d98 03c98290 032d37d0 03324a74 033c123c 03f53258 03e063cc fb fb fb fb 6d 6a 76 fb ff fb fb 96 fb fb fb fb 64 fb f9 f9 63 fb fb fb fb fb 6d 6a 76 fb ff fb fb 96 fb fb fb fb 64 fb f9 f9 63 fb 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 mfcce400.dll touch.dll ohci.dll ndis.dll pm.dll unimodem.dll softkb.dll ceshell.dll ndis.dll ndis.dll flashdrv.dll wavedev.dll battdrvr.dll pm.dll fsdmgr.dll 0fd180aa: 0fd180aa: 2fd4adfa: cfd1815e: cfecbb52: 4ffc9262: 4ffc9262: 4ffc9262: 0ffff002: 4fdffe4a: 0fd180aa: 4ffc9262: 2fd4adfa: 4ffc9262: 4fdffe4a: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: 6ffed832: udp2tcp.exe udp2tcp.exe rapisrv.exe 1150208 Launch.exe gwes.exe 30 device.exe 20 device.exe 20 device.exe 20 NK.EXE explorer.exe 50 udp2tcp.exe device.exe 20 rapisrv.exe 1150208 device.exe 20 explorer.exe 50 device.exe 20 device.exe 20 device.exe 20 device.exe 20 device.exe 20 device.exe 20 filesys.exe 4fa27bd6 00011830 fb fb 4fbfaf36 03d425a0 82 82 4fc24dce 00015f68 fb fb 4fd34112 03fbfb08 fb fb e"`USB Socket Default" 4fdd5f7e 00011920 fb fb 4fdf991a 8c225ac8 fb fb AppRunAtRs232Detect 4fe0dc7a 0005357c fb fb 4fe12c3e 03352720 f9 f9 4fea8d1a 0339fab8 0a 0a 4fec5cc6 0339ac58 fb fb 4fee8cda 03c6116c fb fb 4ff3cf9e 03dd5cf0 fa fa 4ff5e61e 03be1a40 fb fb 4ffbeae2 03f55878 f9 f9 4ffc923e 8c225ac8 fb fb 4ffc9706 8c225ac8 fb fb 6fdaecda 00013498 fb fb 6fe0387e 00011830 fb fb 6fe05956 00036788 f9 f9 6fea3fc6 00039e38 f9 f9 6fec5ee2 0339cba0 fb fb 6ff26d46 0336b0b4 65 65 6ff3dfc2 03dc2b3c fb fb 6ff75d0a 03c9c214 78 78 6ffed80e 8c225ac8 fb fb 8fc681ee 03d42eb4 82 82 8fc68cea 03abe310 fb fb 8fe12fc6 03352f28 fb fb 8fee8cb6 032e3edc fb fb 8ffbb89e 03f5509c f9 f9 afdca152 00014254 fb fb afe09f66 0001e6a4 f9 f9 afedc026 033f1834 fb fb affc9f66 00014e04 fb fb cfbfd4e6 00015e00 fb fb AppRunAtRs232Detect cfc2406e 00011830 fb fb cfd1813a 8c225ac8 fb fb cff216e6 033670f8 66 66 cff2bf16 033b43b8 fb fb cff70592 03fbfb08 fb fb cff78a9a 03d316a0 84 84 cffa7c9e 033c2090 fb fb cffbb87a 03f5545c f9 f9 cffed59e 8c225ac8 fb fb efc68f72 03abe310 fb fb efd4aaf6 8c225ac8 fb fb e"`USB Socket Default" efdffada 00064298 fb fb efdffafe 0006425c fb fb efed5ac6 03301720 64 64 eff05fda 03cbc8f8 fb fb eff32c96 03dc402c dc dc eff72fc6 03c82ab0 7e 7e eff83702 03d31a3c 84 84 0.0 0.0 0.0 0.0 8.1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2fd4adfa: rapisrv.exe 1150208 4fec2442: repllog.exe 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 cfecbb52: gwes.exe 30 kbdmouse.dll cfecbb52: gwes.exe 30 s3c2440disp.dll cfecbb52: gwes.exe 30 s3c2440disp.dll cfecbb52: gwes.exe 30 autoras.dll 4ffc9262: device.exe 20 waveapi.dll 4ffc9262: device.exe 20 tapi.dll 4ffc9262: device.exe 20 pm.dll 4ffc9262: device.exe 20 4ffc9262: device.exe 20 4fdffe4a: explorer.exe 50 4fdffe4a: explorer.exe 50 2fd4adfa: rapisrv.exe 1150208 cfecbb52: gwes.exe 30 cfecbb52: gwes.exe 30 s3c2440disp.dll cfecbb52: gwes.exe 30 ohci.dll 4ffc9262: device.exe 20 audevman.dll 4ffc9262: device.exe 20 ndis.dll 4ffc9262: device.exe 20 6ffed832: filesys.exe asyncmac.dll 4ffc9262: device.exe 20 mfcce400.dll cfd1815e: Launch.exe kbdmouse.dll cfecbb52: gwes.exe 30 ser2440.dll 4ffc9262: device.exe 20 pm.dll 4ffc9262: device.exe 20 4fdffe4a: explorer.exe 50 cfecbb52: gwes.exe 30 sdmmc_loader.dll 4ffc9262: device.exe 20 4ffc9262: device.exe 20 4fec2442: repllog.exe 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 asyncmac.dll ohci.dll bts_ser.dll cxport.dll battdrvr.dll pm.dll mfcce400.dll 2fd4adfa: 4ffc9262: 4fdffe4a: efdd5d62: 2fd4adfa: cfd1815e: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: 4ffc9262: cfecbb52: cfd1815e: efdd5d62: rapisrv.exe 1150208 device.exe 20 explorer.exe 50 rnaapp.exe -n -m - rapisrv.exe 1150208 Launch.exe device.exe 20 device.exe 20 device.exe 20 device.exe 20 device.exe 20 device.exe 20 gwes.exe 30 Launch.exe rnaapp.exe -n -m - cfecbb52: gwes.exe 30 cfecbb52: gwes.exe 30 sc2440_usb_ser.dll 4ffc9262: device.exe 20 afd.dll 4ffc9262: device.exe 20 audevman.dll 4ffc9262: device.exe 20 ndis.dll 4ffc9262: device.exe 20 cxport.dll 4ffc9262: device.exe 20 Fig. 2.4: informazioni dettagliate sui thread L’esecuzione di pps.exe –p ha mostrato le informazioni dettagliate sui processi, rappresentate in figura 2.5: handle 0fd180aa 0ffff002 2fd4adfa 4fdffe4a 4fec2442 4ffc9262 6ffed832 cfd1815e cfecbb52 efdd5d62 Default" 10 n 3 1 6 6 2 36 2 4 13 2 base 14000000 c2000000 0e000000 0a000000 0c000000 06000000 04000000 10000000 08000000 12000000 kern 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 user 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 75 ........ 0.0 0.0 heap exe 69632 udp2tcp.exe 897024 NK.EXE 450560 rapisrv.exe 1150208 425984 explorer.exe 50 102400 repllog.exe AppRunAtRs232Detect 1417216 device.exe 20 651264 filesys.exe 1011712 Launch.exe 4186112 gwes.exe 30 106496 rnaapp.exe -n -m -e"`USB Socket 9318400 total Fig. 2.5: informazioni dettagliate sui processi Come ogni sistema operativo Microsoft anche Windows CE utilizza i file di registro per contenere alcune informazioni di configurazione necessarie all’utilizzo del device. In windows CE risultano esistere le seguenti chiavi di registro [25]: - [HKEY_CURRENT_USER] (HKCU) [HKEY_LOCAL_MACHINE] (HKLM) [HKEY_CLASSES_ROOT] (HKCR) Come già anticipato il tool utilizzato alla visualizzazione del contenuto dei registri di sistema è pregutl.exe. Risulta necessario sottolineare che tale tool permette non solo la visualizzazione ma anche la creazione, modifica, cancellazione ed importazione di chiavi di registro. Di seguito si riporta un esempio di sintassi utilizzata per la sola visualizzazione di una specifica sottochiave di registro ed il relativo output pregutl hklm\System\CurrentControlSet OUTPUT [HKLM\System\CurrentControlSet] [HKLM\System\CurrentControlSet\Control] [HKLM\System\CurrentControlSet\Control\Power] BattPowerOff=dword:00000000 DisableGwesPowerOff=dword:00000001 ExtPowerOff=dword:00000000 ScreenPowerOff=dword:00000000 WakeupPowerOff=dword:00000000 [HKLM\System\CurrentControlSet\Control\Power\Interfaces] {8DD679CE-8AB4-43c8-A14A-EA4963FAA715}="Power-manageable block devices" {98C5250D-C29A-4985-AE5F-AFE5367E5006}="Power-manageable NDIS miniports" {A32942B7-920C-486b-B0E6-92A702A99B35}="Generic power-manageable devices" {EB91C7C9-8BF6-4a2d-9AB8-69724EED97D1}="Power-manageable display" [HKLM\System\CurrentControlSet\Control\Power\State] [HKLM\System\CurrentControlSet\Control\Power\State\On] Default=dword:00000000 Flags=dword:00010000 [HKLM\System\CurrentControlSet\Control\Power\State\UserIdle] Default=dword:00000001 Flags=dword:00000000 [HKLM\System\CurrentControlSet\Control\Power\State\SystemIdle] Default=dword:00000002 Flags=dword:00000000 [HKLM\System\CurrentControlSet\Control\Power\State\SystemIdle\{EB91C7C9 8BF6-4a2d-9AB8-69724EED97D1}] Default=dword:00000004 [HKLM\System\CurrentControlSet\Control\Power\State\Suspend] Default=dword:00000003 Flags=dword:00200000 [HKLM\System\CurrentControlSet\Control\Power\State\Suspend\{98C5250DC29A-4985-AE5F-AFE5367E5006}] Default=dword:00000004 [HKLM\System\CurrentControlSet\Control\Power\State\Reboot] Default=dword:00000004 Flags=dword:00800000 [HKLM\System\CurrentControlSet\Control\Power\ActivityTimers] [HKLM\System\CurrentControlSet\Control\Power\ActivityTimers\UserActivit y] Timeout=dword:0000000a [HKLM\System\CurrentControlSet\Control\Power\ActivityTimers\SystemActiv ity] Timeout=dword:0000000a [HKLM\System\CurrentControlSet\Control\Power\Timeouts] ACSuspend=dword:00000000 ACSystemIdle=dword:0000012c ACUserIdle=dword:0000003c BattSuspend=dword:00000000 BattSystemIdle=dword:000000b4 BattUserIdle=dword:0000003c [HKLM\System\CurrentControlSet\Control\Layouts] [HKLM\System\CurrentControlSet\Control\Layouts\e0010804] Ime File="chsime98.dll" Keyboard Layout="00000409" Layout Text="Intelligent IME 98" [HKLM\System\CurrentControlSet\Control\Layouts\00000409] Layout File="kbdmouse.dll" Layout Text="US" Matrix="kbdmouse.dll" PS2_AT="kbdmouse.dll" 2.5 ESTRAZIONE DEI FILE DEL SISTEMA OPERATIVO Al fine di poter visualizzare i soli file del sistema operativo di un dispositivo Windows CE si esegue un pmemdump specificando l’offset relativo all’area che contiene il file NK.BIN che rappresenta l’immagine del sistema operativo. Relativamente al dispositivo utilizzato per l’analisi, l’offset in questione è risultato essere 0x80040000-0x81f00000. Il dump ottenuto, in formato nb, è stato successivamente convertito in formato bin attraverso il tool nb2bin.exe utilizzato secondo la seguente sintassi: nb2bin.exe nk.nb nk.bin Il tool viewbin.exe, utilizzato con la seguente sintassi: viewbin.exe nk.bin restituisce: ViewBin... NK.bin Image Start = 0x80070000, length = 0x012620F0 Start address = 0x80075B60 Checking record #49 for potential TOC (ROMOFFSET = 0xFF36FD40) Checking record #150 for potential TOC (ROMOFFSET = 0x00000000) NOTICE! Record 150 looked like a TOC except DLL first = 0x4001C001, and DLL last = 0x40D8C091 Done. Si sono ottenuti in questo modo i dati relativi all’indirizzo di inizio e alla lunghezza del blocco, informazioni necessarie per la successiva conversione del file nk.bin in nk.nb0, attraverso il tool cvrtbin.exe: cvrtbin.exe –r –a 0x80070000 –w 32 –l 0x012620F0 nk.bin che restituisce: ViewBin... NK.bin Image Start = 0x80070000, length = 0x012620F0 Start address = 0x80075B60 Checking record #49 for potential TOC (ROMOFFSET = 0xFF36FD40) Checking record #150 for potential TOC (ROMOFFSET = 0x00000000) NOTICE! Record 150 looked like a TOC except DLL first = 0x4001C001, and DLL last = 0x40D8C091 start 80070000 start 80070040 start 80070048 start 80071000 ... start 810e5240 start 810e5294 start 810e6fc8 Progress... 0%Done. length length length length 00000004 00000008 00000004 0000cb08 length 00000054 length 00001d34 length 001eb128 Il tool ha generato un file in formato nb0, necessario al tool dumprom.exe per l’estrazione dei file. Si riporta la sintassi utilizzata: dumprom.exe -d dump_os NK.nb0 che estrae nella directory specificata tutti i file del sistema operativo Win CE, di seguito si riporta una porzione dell’ output generato: img 00000000 : hdr=810e5240 base=80070000 commandlineoffset=80070000 ERROR: could not find pointer for ofs 00000000 NOTE: section at 01270000 iso 0000d000 for nk.exe NOTE: section at 01276000 iso 00013000 for nk.exe NOTE: section at 00014000 iso 0000d000 for nk.exe NOTE: section at 0126a000 iso 00008000 for kitl.dll NOTE: section at 0002e000 iso 00008000 for kitl.dll NOTE: section at 01288000 iso 0003d000 for kernel.dll NOTE: section at 00040000 iso 0003d000 for kernel.dll !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080aff after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 !!! 00080a00 after 00080000 but not before 00080628 80070000 - 80070000 L00000000 rom_00 start 80070000 - 80070004 L00000004 unknown d6 16 00 ea 80070004 - 80070040 L0000003c NUL 80070040 - 80070048 L00000008 'ECEC' -> 810e5240 80070048 - 8007004c L00000004 unknown 40 52 07 01 8007004c - 80071000 L00000fb4 NUL 80071000 - 8007c30c L0000b30c o32 region_0 rva=00001000 vsize=0000b30c real=80071000 psize=0000b400 f=60000020 for nk.exe 8007c30c - 8007cff4 L00000ce8 o32 region_1 rva=00004000 vsize=000040e4 real=401b4000 psize=00000ce8 f=c0002040 for msim.dll 8007cff4 - 8007d000 L0000000c NUL 8007d000 - 8007d3e8 L000003e8 o32 region_3 rva=0000d000 vsize=000003e8 real=80084000 psize=00000400 f=40000040 for nk.exe 8007d3e8 - 8007db06 L0000071e filedata recend.wav 8007db06 - 8007f000 L000014fa NUL 8007f000 - 80085994 L00006994 o32 region_0 rva=00001000 vsize=00006994 real=8007f000 psize=00006a00 f=60000020 for kitl.dll 80085994 - 80085fce L0000063a o32 region_3 rva=00019000 vsize=00000900 real=402a9000 psize=0000063a f=c0002040 for schannel.dll ... 810e6f3c - 810e6f58 L0000001c filent 70 00000805 01c6d229b5123800 2712 2112 80fb4404 windmax.wav 810e6f58 - 810e6f74 L0000001c filent 71 00000805 01c6d229b5123800 2866 2140 8044e404 windmin.wav 810e6f74 - 810e6f90 L0000001c filent 72 00000805 01c6d229b5123800 3388 1964 80fa13f4 recstart.wav 810e6f90 - 810e6fac L0000001c filent 73 00000805 01c6d229b5123800 3388 1822 8007d3e8 recend.wav 810e6fac - 810e6fc8 L0000001c filent 74 00000007 01c6d229b5123800 28 28 804acfe4 dmacnect.lnk 810e6fc8 - 810e6fd0 L00000008 NUL 810e6fd0 - 812d20ec L001eb11c unknown 812d20ec - 812d20f0 L00000004 NUL 812d20f0 - 812d20f0 L00000000 rom_00 end 2.6 ANALISI DEI FILE ESTRATTI I file così estratti possono essere sottoposti ad analisi forense. Essa può partire dalla verifica dell’autenticità dei file estratti dall’immagine del sistema operativo, attraverso l’applicazione di un algoritmo di digest ed il confronto con una copia autentica. Questo allo scopo di rilevare una eventuale alterazione dei file. Per qualsiasi tipologia di file è possibile calcolare attraverso un algoritmo di digest la sua “impronta digitale”. Tali algoritmi rispettano tre fondamentali proprietà: - ha lunghezza fissa che lo rende facile da manipolare e da trasmettere (tipicamente è lungo intorno ai 128 b); - è estremamente improbabile che due messaggi diversi abbiano lo stesso digest; - non è invertibile, cioè non esiste un algoritmo noto che, dato un digest, sia in grado di generare un messaggio che gli corrisponde; in altri termini, è estremamente difficile produrre un messaggio che abbia un digest predeterminato. Fra questi algoritmi troviamo l’MD5, lo SHA1 e lo SHA256 [26,27,28]. Nell’informatica forense, è consuetudine utilizzare più di un algoritmo di digest allo scopo di ridurre drasticamente la possibilità di ottenere collisioni. Allo scopo di rilevare la configurazione del sistema, sono stati analizzati i file di registro, precedentemente estratti dal immagine ottenuta, questi sono stati identificati in: - boot.hv default.hv user.hv tali file contengono le seguenti chiavi: - [HKEY_CLASSES_ROOT] [HKEY_LOCAL_MACHINE] [HKEY_CURRENT_USER] Allo scopo è stato utilizzato il software CeRegEditor ver. 0.0.5.2. Nel capitolo successivo si affronta in particolare il problema dell’occultamento dei dati all’interno della memoria di un dispositivo WinCE. Capitolo 3 OCCULTAMENTO DI DATI IN UN DISPOSITIVO WINCE 3.1 PREMESSA La ROM di un dispositivo WinCE ha una sezione allocata al boot loader, mentre il resto della memoria è dedicata al kernel. L’immagine della ROM è composta da una sequenza di blocchi di memoria contigui [29,30], alcuni dei quali vuoti, dove è possibile occultare dei dati, utilizzando due tipi di tecniche principali. - Utilizzo di “flasher tool” rielaborati con tecniche di reverse engineering: Generalmente, i tool per l’aggiornamento del sistema operativo vengono rilasciati dai produttori. Essi incorporano un meccanismo di checksum per verificare l’integrità dell’immagine della ROM e permetterne quindi l’aggiornamento. Per caricare una versione modificata dell’immagine della ROM è necessario rimuovere questo tipo di controllo con tecniche di reverse engineering. Altri controlli di verifica di originalità dell’immagine possono essere implementati a livello di bootloader. - Utilizzo di una memory card: Se il dispositivo è fornito di slot per memory card, è possibile inizializzare il processo di re-flash caricando una immagine della ROM da una memory card ed effettuando un soft-reset con la card inserita nel dispositivo. Questa procedura scavalca i controlli di integrità, permettendo l’installazione di una immagine modificata della ROM. 3.2 MODALITA’ DI OCCULTAMENTO Le modalità standard di allocazione delle pagine nella memoria principale possono essere utilizzate anche per occultare dati nello slack space della ROM [31]. - Al fine di poter identificare le zone dove potrebbero essere occultati dei dati, vengono utilizzati alcuni script che identificano i blocchi di memoria vuoti con dimensione superiore ad una determinata soglia (es. 1KB). Ogni blocco di memoria ha un indirizzo di inizio e di fine. Inoltre è possibile applicare uno schema steganografico ad ogni blocco di memoria non allocato. Lo spazio non allocato totale, Stot, si rappresenta come: Stot n1 , s1 , e1 , n2 , s2 , e2 ,..., nk , sk , ek (3.1) dove nk è il numero assegnato al kth blocco vuoto a scopi steganografici e sk e ek sono i suoi indirizzi rispettivamente di inizio e di fine. - Viene creato un file, F, con una dimensione minore o uguale a Dim(Stot); (F | Dim(F) ≤ Dim(Stot)), dove Dim() è lo spazio occupato da uno specifico blocco di dati. Viene quindi scelta una policy di allocazione, basata sulla specifica sequenza di un blocco di memoria, in accordo con l’equazione (1). Il file F è perciò mappato come segue: F1 n , s , e ,..., n , s , e 1 1 1 p p p K K! Dove possibilità di selezionare i blocchi p da K possibili blocchi. p p !( K p )! (3.2) Il file F1 è il risultato dell’allocazione utilizzando una sequenza arbitraria di blocchi nel set {1,…,K}: p D im ( F 1 ) b ( i ) | D im ( F 1 ) D im ( F ) (3.3) i 1 F1 differisce da F nell’ultimo blocco utilizzato, che può essere più grande dell’ultimo chunk del file. La sequenza dei blocchi utilizzati forma la chiave steganografia per recuperare il file originale. 3.3 RECUPERO DI DATI OCCULTATI Per quanto già esposto è possibile asserire che anche per il dump della memoria ROM è possibile generare un proprio digest. Confrontando il digest ottenuto da una memoria ROM di riferimento, relativa allo stesso dispositivo, con il digest della memoria ROM in esame è possibile asserire se quest’ultima è stata manipolata, poiché una immagine con un’impronta diversa contiene potenzialmente dei dati nascosti. Il primo passo quindi è quello del confronto delle impronte MD5/SHA1/SHA256 allo scopo di evidenziare eventuali differenze. Se l’immagine ottenuta dal dump della memoria del dispositivo in analisi presenta un Hash differente da quello dell’immagine di riferimento, essa potrebbe contenere file alterati, file nascosti nello slack space, oppure file aggiuntivi. Quindi si estraggono i file dall’immagine in analisi calcolandone l’algoritmo di digest e confrontandone il risultato con quello ricavato dai file estratti da un immagine di riferimento. Nel caso in cui tale confronto risulti negativo, cioè gli Hash coincidono, si procede all’analisi dello slack space della memoria, attraverso appositi tool di data carving. 3.4 IL FALSO PROBLEMA DELLE COLLISIONI In maniera piuttosto semplificata una funzione di hash è una funzione univoca operante in un solo senso (one-way, ossia, che non può essere invertita) atta alla trasformazione di un testo in chiaro e di lunghezza arbitraria in una stringa di lunghezza stabilita e generalmente piuttosto limitata [32]. In particolare, prendiamo in considerazione una funzione di hash detta MD5 molto impiegata in diversi settori della sicurezza informatica; Data l’univocità della funzione di hash la determinazione di due stringhe di dati A e B diverse tra loro tali che hash(A) = hash(B) non dovrebbe essere possibile per definizione ed invece sfortunatamente, con le funzioni ad oggi conosciute ed implementate negli elaboratori (MD5 incluso) tale fatto si verifica determinando quella che tecnicamente viene indicata come collisione. Dal punto di vista tecnico/legale una collisione del MD5 è davvero preoccupante perché il codice MD5 calcolato si fa portatore dell’integrità e correttezza della copia svolta su una memoria di massa e quindi se possono esistere due memorie dotate di contenuti diversi con lo stesso codice MD5 questo vorrebbe dire che la funzione nulla assicura con certezza circa la non modificazione dei dati dopo il repertamento. Dalla letteratura specifica è ben noto che MD5 è stato portato alla collisione ufficialmente nel 2005 da Xiaoyun Wang e Hongbo Yu della Shandong University cinese. Essi precisamente trovarono due sequenze diverse di 128 byte con lo stesso valore di MD5 associato. Di seguito si riportano le due sequenze: d131dd02c5e6eec4693d9a0698aff95c 55ad340609f4b30283e488832571415a d8823e3156348f5bae6dacd436c919c6 e99f33420f577ee8ce54b67080a80d1e 2fcab58712467eab4004583eb8fb7f89 085125e8f7cdc99fd91dbdf280373c5b dd53e2b487da03fd02396306d248cda0 c69821bcb6a8839396f9652b6ff72a70 d131dd02c5e6eec4693d9a0698aff95c 55ad340609f4b30283e4888325f1415a d8823e3156348f5bae6dacd436c919c6 e99f33420f577ee8ce54b67080280d1e 2fcab50712467eab4004583eb8fb7f89 085125e8f7cdc99fd91dbd7280373c5b dd53e23487da03fd02396306d248cda0 c69821bcb6a8839396f965ab6ff72a70 e Il cui comune valore di hash MD5 è 79054025255fb1a26e4bc422aef54eb4. A seguito di questa scoperta sono state individuate metodologie per creare file ed eseguibili di lunghezza arbitraria che hanno lo stesso MD5 ma possono differire al massimo per 128 byte. Tali evidenti collisioni hanno preoccupato i matematici e gli studiosi di crittografia ma scarsamente coloro che normalmente si affidano al MD5 per le loro attività pratiche quotidiane. Ora è chiaro che tali protocolli possono infatti essere ingannati facilmente studiando due stringhe di partenza praticamente random con un alto grado di disordine, oppure aggiungendone in coda un’altra particolare, sfruttando alcune “criticità” molto specifiche dell’algoritmo, ma: - ad oggi non è possibile, per quanto presente nella letteratura scientifica, determinare una metodologia deterministica per modificare un generico file non specificamente progettato a priori (es. modificare una parola, alterare una foto, fare scomparire un settore di un hard disk, ecc.) per poi riottenere lo stesso hash MD5; - è praticamente impossibile che un’alterazione casuale di un file ne determini un altro, diverso dal primo, con lo stesso valore di MD5. Ciò deve essere tenuto accuratamente in considerazione quando si valuta la possibilità che MD5 non sia affidabile per la certificazione delle copie forensi delle memorie di massa. Wang, Kaminski, Yu e tutti gli altri che hanno contribuito al grande risultato delle collisioni di MD5 e SHA-1 hanno solo dimostrato che in determinate particolari condizioni sono inaffidabili. Ad esempio, non ha senso usare MD5 quando l’utente può definire tutti i dati su cui poi verrà applicata la funzione. Si vuole infine rilevare che le succitate stringhe hanno si lo stesso hash MD5 ma diverso hash SHA1, di seguito riportato: - - file_1.txt hash MD5: hash SHA1: 79054025255fb1a26e4bc422aef54eb4 a34473cf767c6108a5751a20971f1fdfba97690a hash MD5: hash SHA1: 79054025255fb1a26e4bc422aef54eb4 4283dd2d70af1ad3c2d5fdc917330bf502035658 file_2.txt A riprova che il calcolo congiunto di più algoritmi fornisce la sicurezza dell’originalità del dato in analisi. CONCLUSIONI La moderna tecnologia ha portato ad una sempre crescente diffusione di dispositivi digitali dedicati alle più svariate funzioni. L’Embedded System Forensics si occupa in particolare di svolgere indagini tecniche su sistemi elettronici dedicati ad una specifica applicazione illecita [33,34,35,36]. Il presente lavoro ha illustrato, partendo dalla descrizione del sistema operativo Windows CE, lo stato dell’arte per ciò che riguarda le tecniche e le diverse metodologie per l’acquisizione e l’analisi delle memorie contenute nei sistemi embedded, in ambiente Windows CE con particolare riferimento alla estrazione di dati occultati nelle aree di memoria non allocate. La sperimentazione è stata effettuata su di un dispositivo di navigazione veicolare marca TOMSTAR modello 5006 con sistema operativo Windows CE v. 6.0 , processore Centrality Atlas IV 500 MHz, 64MB SDRAM, 64MB Flash ROM. Il contenuto delle memorie è stato acquisito tramite tool basati sui protocolli RAPI e ActiveSync. La loro analisi ha permesso l’identificazione e l’estrazione del file contenente l’immagine del sistema operativo, identificato nel file NK.BIN. Esso ha fornito tutti i file componenti il sistema operativo, fra cui i file di registro del sistema WinCE, identificati nei file: boot.hv, default.hv e user.hv . Tramite l’utilizzo di tool di editor è stato possibile identificare le chiavi di registro: [HKEY_CLASSES_ROOT], [HKEY_LOCAL_MACHINE] e [HKEY_CURRENT_USER] che contengono l’intera configurazione del sistema operativo. Particolare attenzione, ai fini forensi, è stata posta nell’analisi delle aree di memoria in cui è possibile occultare dei dati, ai fini del loro recupero. Una modalità riguarda l’upload di una immagine modificata della ROM, eseguita attraverso l’utilizzo di flasher tool rielaborati, oppure attraverso tecniche di “re-flash” eseguite direttamente da memory card inserita nel dispositivo. Altra modalità di occultamento implica il caricamento di dati nello slack space della ROM presente sul dispositivo. Il presente lavoro ha evidenziato la complessità dell’analisi dei dispositivi embedded che si è rivelata particolarmente problematica per i seguenti motivi: - L’estrema varietà delle tipologie di dispositivi dedicati ha comportato la personalizzazione sia della configurazione della memoria sia del sistema operativo che vengono adattati alle specifiche applicazioni e allo specifico processore di ogni dispositivo; - La personalizzazione dei dispositivi ha avuto come conseguenza l’assenza di applicazioni certificate per l’acquisizione e l’analisi di tali dispositivi, constrigendo l’investigatore informatico ad adattare di volta in volta strumenti software reperiti nel world wide web, a discapito della completezza ed accuratezza dell’analisi. - L’invasività delle tecniche di acquisizione della memoria dei dispositivi embedded, rivela che non è a tutt’oggi possibile effettuare l’acquisizione della memoria (RAM e/o ROM) senza alterarne il contenuto, operazione che in termini giuridici, a norma dell’ art. 360 del Codice di Procedura Penale, si tramuta in un accertamento tecnico “non ripetibile” Infine va tenuto conto della possibilità di applicazione, anche sui dispositivi embedded, delle tecniche di antiforensic, cioè tutte quelle strategie attuate per nascondere e/o eliminare informazioni di natura illecita all’interno del dispositivo in esame allorchè vengano attuate da parte dell’investigatore informatico, attività tecniche volte ad individuare tali informazioni. In effetti, poichè i tool esaminati accedono alle risorse del dispositivo sfruttando le primitive messe a disposizione del sistema operativo, la presenza sul dispositivo di un eventuale "rootkit" potrebbe vanificare l'intera operazione. Infatti il rootkit potrebbe essere implementato proprio allo scopo di cancellare qualsiasi dato di natura illecita esattamente nel momento in cui vi si accede tramite i tool utilizzati. Qualora sia ipotizzabile un rischio del genere occorre predisporsi a tecniche di analisi piu` sofisticate (e costose), per esempio sfruttando la possibilità di disassemblare i chip di memoria flash, analizzandoli poi in un contesto controllato. RINGRAZIAMENTI Un sentito ringraziamento a tutti coloro che mi sono stati vicino e che mi hanno sostenuto ed incoraggiato in questi anni di studio ed in particolar modo: - ai docenti del Dipartimento di Informatica, al prof. Mattia MONGA ed ai suoi valentissimi ricercatori che, con immensa pazienza, mi hanno guidato in questo periodo di preparazione della mia Tesi; - ai miei compagni di studio con cui ho potuto condividere questa splendida avventura; - al Maggiore dei Carabinieri Marco MATTIUCCI, senza il cui prezioso contributo non mi sarebbe stato possibile realizzare questa tesi. - ed infine ma non in ordine di importanza a mia moglie Giovanna ed alle mie due splendide figlie Giulia ed Alice che mi hanno sostenuto, incoraggiato e sopportato per tutto il percorso di studi svolto. BIBLIOGRAFIA [1] Bates J., “Fundamentals of computer forensics”, International Journal of Forensic Computing, 1997. [2] Breeuwsma M., De Jongh M., Klaver C., Van der Knijff R. and Roeloffs M., Forensics data recovery from flash memory, Small Scale, Device Forensics Journal, vol. 1(1), pp. 1–17, 2007. [3] Bates, J. DIVA Computer Evidence (Digital Integrity Verification and Authentication), International Journal of Forensic Computing, 26 March 2001. [4] Codice di Procedura Penale, Edizione Giuridiche Simone, 2010. [5] Boling D., Programming Windows CE, Microsoft press, 2009. [6] Microsoft Corporation, Windows CE overview, Redmond,Washington (msdn2.microsoft.com/en-us/library/ms899235.aspx). [7] Pavlov, Belevsky Windows Embedded CE 6 Fundamentals - Microsoft press, 2009. [8] Peikari C., Fogie S., Windows Mobile Autorun, InformIT Article, Jul 2005 [9] Phung S., Professional Microsoft Windows Embedded CE 6.0, WROX, 2008. [10] Van der Knijff R., “Embedded Systems Analysis”, chapter 11 of “Handbook of Computer Crime Investigations - Forensic Tools and Technology” editore E. Casey. Academic press, 2002. [11] Gershteyn P., Davis M. And Shenoi S., Forensic analysis of BIOS chips, in Advances in Digital Forensics II, M. Olivier and S. Shenoi (Eds.), Springer, New York, pp. 301–314, 2006. [12] Dipert B., Levy M., “Designing with Flash Memory,” Annabooks,1994. [13] Samsung Electronics, “APPLICATION NOTE for NAND FlashMemory”, rev, 2, 1999. http://www.samsung.com/Products/Semiconductor/Memory/appnote/app nand.pdf. [14] Silberschatz A., Galvin P., Gagne G., Operating System Concepts, John Wiley and Sons, Hoboken, New Jersey, 2005. [15] Casey E. (editor), Handbook of Computer Crime Investigation, Academic Press, 2002. [16] Chisum W., and Turvey B., Evidence dynamics: Locard’s exchange principle and crime reconstruction, Journal of Behavioral Profiling, vol. 1(1), 2000. [17] Casey E., Digital Evidence & Computer Crime, Second Edition, Elsevier Academic Press, 2004. [18] Grand J., Memory Imaging and Forensic Analysis of Palm OS Devices, Whitepaper, Joseph Grand, Mar 2002. [19] Hengeveld W., RAPI tools (www.xs4all.nl/∼itsme/projects/xda/tools.html), 2003. [20] Microsoft Corporation, Remote API 2 (RAPI2), Redmond, Washington (msdn2.microsoft.com/en-us/library/aa920150.aspx). [21] Jansen W., Ayers R., PDA Forensic Tools: An Overview and Analysis, NIST Interagency Report 7100, Aug 2004. [22] Breeuwsma M.,, Forensic imaging of embedded systems using JTAG (boundaryscan), Digital Investigation, vol. 3(1), pp. 32–42, 2006. [23] IEEE - Standards Association, “IEEE standard test access port and boundary scan architecture - description”, July 23, 2001. http://samsung.com/. [24] Jansen W., Ayers R., Guidelines on PDA Forensics, NIST Special Publication 80072, Nov 2004. [25] Carrier B., File System Forensic Analysis. Addison-Wesley 2005. [26] Hawkes P., Paddon M, and Rose G., "Musings on the Wang et al. MD5 Collision", Qualcomm Australia, Level 3, 230 Victoria Rd, Gladesville, NSW 2111, Australia, 2005. [27] Lenstra A.K., "Further progress in hashing cryptanalysis", Lucent Technologies, Bell Laboratories, Feb. 2005. [28] Rivest, RFC 1321 - “The MD5 message digest algorithm”, MIT laboratory for computer science and RSA Data Security, Inc., April 1992. [29] Farmer D. e Venema W., Forensics discovery , Addison-Wesley, 2005. [30] Farmer D., Venema W., Forensic Computer Analysis: Reconstructing past Events., Dr Dobb’s Journal, 29, 70-75., 2000. an Introduction. [31] Savoldi A., P. Gubian P., Data hiding in SIM/USIM cards: A steganographic approach, Proceedings of the Second International Workshop on Systematic Approaches to Digital Forensic Engineering, pp. 86–100, 2007. [32] Mattiucci M., Hash MD5-collisioni e probabilità, (www.marcomattiucci.it/md5.php). [33] Mc Kemmish, R., What is Forensic Computing, Trends and Issues in Crime and Criminal Justice (118), Australian Institute of Criminology, 1999. [34] Federal Guidelines for Searching and Seizing Computer, US Department of Justice, 1995. [35] Kruse W. G., Heiser J.G., Computer Forensics, Incident Response Essentials, Addison-Wesley, 2002. [36] Vacca JU.R.,Computer Forensics, Charles River Media Inc., 2002.