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.