Stiamo parlando di chip di memoria EPROM riscrivibili, previa cancellazione con l'esposizione alla luce ultravioletta. Il chip, per permettere la cancellazione con l'esposizione alla luce, è dotato di una finestrella in quarzo trasparente, attraverso la quale è possibile intravedere il chip di silicio con i suoi collegamenti verso i pin esterni. Questo tipo di Eprom, con l'evoluzione tecnologica, è stato successivamente sostituito dalle EEprom, cancellabili elettricamente.
Come accennato in introduzione, si ha la necessità di estrarre il contenuto, ovvero il firmware, di un apparecchiatura elettronica dedicata, con un approccio "forense". Occorre infatti garantire che i bit estratti dal supporto di memorizzazione (il chip elettronico) siano esattamente quelli memorizzati nel chip stesso ed occorre inoltre garantire che l'operazione non vada ad alterare in alcun modo i contenuti stessi.
Il metodo più semplice, consiste nel collegare i chip di memoria ad un lettore di Eprom, nello zoccolo ZIF (Zero insertion force), lanciare il programmino proprietario e salvare il tutto. Lo scenario reale può però essere differente:
- il laboratorio non dispone di un lettore di eprom così datato.
- è la prima volta che si tratta un tipo di incarico del genere
- nessun "case study " o precedente dal quale attingere informazioni
Si può fare? Ovvio che sì. Vediamo come.
Il chip : i chip in questione (tre per la precisione) sono della National Semiconductor in sigla NM27C512 524,288 Bit (64Kx8) High performance CMOS EPROM UV Erasable - Electrically Programmable Read Only Memory, caratterizzati da un tempo di accesso dai 90 ai 200 nS (nano secondi) e tecnologia proprietaria a 0,8 micron.
L'alimentazione è a 5 Volts e le soglie dei bit per il valore "1 " (High level) da 2 V a Vcc+1 (6Volts) mentre per il valore "0 " (low level) da -0,5 a 0.8 volts. Le correnti applicabili per i pins di uscita (dati) vanno dai 35 ai 40 mA (dato necessario per calcolare la resistenza di caduta per eventuali led di monitoraggio o per confrontarli con le specifiche dell'hardware di lettura scelto).
Si nota come i valori qui elencati sono di gran lunga meno "performanti " rispetto ai più moderni chip di memoria attualmente in uso. All'epoca erano allineati con quanto di meglio poteva offrire la tecnologia, tanto da potersi fregiare di diciture ed affermazioni tipo "high performance", "software routines are quickly executed from Eprom storage ", "greatly enhanced system utility"... cose di altri tempi, quando tutto era molto più semplice ma se ci si fa caso, oggi leggiamo più o meno gli stessi proclami pubblicitari che di concreto non dicono nulla.
Le specifiche dei pin di I/O ingresso / uscita dell'hardware di lettura, devono essere compatibili con le soglie di tensione specificate dal produttore del chip, altrimenti occorrerebbe prevedere dei traslatori di tensione o dei DC/DC converter (scelta sconsigliata).
Nel nostro caso specifico, la scelta è ricaduta su un Arduino UNO. In realtà la scelta non è molto felice, ma... con questo ci si deve ingegnare. Il problema è rappresentato dal fatto che il Genuino UNO (Arduino) ha meno pin di I/O di quanti ce ne servono, ovvero 16 per gli indirizzi ed altri 8 per leggere i dati... 24 in tutto, più altri GPIO di comando (Chip Enable, Output Enable, Start ecc...).
L'ostacolo può essere aggirato con due shift registers 74HC595 collegati in cascata per l'indirizzamento a 16 bit. Il registro a scorrimento permette di "caricare " in sequenza (seriale) i 16 bit di indirizzo con un solo pin e con un altro abilitare l'uscita.
Il dato in uscita ad 8 bit andrà poi "sparato" sulla linea di comunicazione, via seriale, all'host. (ecco un ottimo tutorial https://www.arduino.cc/en/Tutorial/ShiftOut con degli esempi di codice da adattare alla specifica esigenza qui in discussione.
Un altro esempio lo si trova qui https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/the-74hc595-shift-register)
Al tutto aggiungiamo anche dei leds per monitorare lo stato dei dati in uscita, facendo attenzione a controllare il fanout delle porte e gli assorbimenti di corrente che dovranno rimanere sotto le soglie dichiarate dal produttore della memoria Eprom qui in esame.
In fase di debug è possibile rallentare il ciclo di lettura del software, con dei "delay" posti nel ciclo "for" di lettura, per controllare visivamente sia la corretta ed effettiva progressione binaria degli indirizzi che i dati in uscita.
Il software : Il codice non è complicatissimo e gli esempi riportati nel link al sito ufficiale (vedi links precedenti) sono spiegati con un ottimo livello di approfondimento, tale da permettere facilmente un adattamento a questa specifica esigenza. In pratica si carica il registro a scorrimento con l'indirizzo di memoria che si desidera leggere, incrementandolo dopo ogni lettura sino al suo valore massimo. Ad ogni ciclo si memorizza il dato letto e lo si invia all'host per un adeguato trattamento (eventuale conversione e memorizzazione su file).
I risultati : dopo avere testato il tutto (hardware e software) con la lettura da un chip gemello, (i cui contenuti sono memorizzati in patterns noti opportunamente predisposti) ed attestato il funzionamento corretto del setup (hardware e software), si procede con la lettura del materiale probatorio e conseguente scrittura su file.
Nella fase successiva, se richiesto, occorre decodificare ed interpretare i dati ottenuti (sono due tipologie di incarico professionale diverse che richiedono diverse specializzazioni). E' importante conoscere se il processore che governa in origine la lettura dei chip di memoria lavora in big-endian o little-endian (un approfondimento https://en.wikipedia.org/wiki/Endianness) per poter decodificare correttamente i bit ottenuti, oltre al suo set di istruzioni per distinguerle dai dati e dagli indirizzi.
A seconda del tipo di incarico ricevuto, ovvero mera estrazione per analisi delegata a soggetti terzi o analisi quali la ricerca di stringhe o decompilazione del firmware, ecc..., si procede caso per caso con gli strumenti di lavoro abitualmente utilizzati per le indagini forensi "normali", non senza aver preventivamente calcolato e documentato gli hash dei dati estratti che andranno quelli sì memorizzati su supporto non riscrivibile e debitamente documentati come da raccomandazioni e linee guida.
Le precauzioni : il chip in questione, per certi versi, può essere paragonato ad un supporto riscrivibile ma, come vedremo, le precauzioni da adottare sono leggermente diverse. Per la scrittura è sempre necessario procedere ad una preventiva cancellazione totale. Per alterare fraudolentemente quindi i contenuti, è necessario procedere con:
- lettura ed estrazione dei dati
- alterazione e modifica "off-line "
- cancellazione totale
- riscrittura del chip con i dati alterati (vanno scritti solo gli "zeri ").
Quindi, è meglio soddisfare i dubbi altrui applicando alla finestra di cancellazione uno schermo idoneo (il nastro adesivo metallizzato, o film di alluminio adesivo, offre una garanzia al 100%). La "protezione da cancellazione " è garantita quindi meccanicamente, da un etichetta adesiva posta sulla finestrella al centro del chip, peraltro facilmente rimovibile.
E' quindi importante che sia garantita anche la catena di custodia (sigilli, accesso presidiato, chiusura in luogo protetto ed adeguatamente sorvegliato) già prevista per i supporti digitali. Tuttavia occorre considerare che è tecnicamente "obbligatorio" mascherare la finestra di programmazione anche in sola lettura per prevenire temporanei errori dovuti alla generazione di correnti fotovoltaiche in assenza di schermatura ottica. Per le operazioni di scrittura dei dati le cose si complicano un pò, escludendo però la possibilità, con il tipo di approccio tecnico qui utilizzato, di scritture o alterazioni "accidentali" o involontarie.
E' sempre possibile, comunque esagerando, utilizzare via software il pin Chip Enable, attivo quando posto a livello logico zero.
L'aspetto "giuridico " : l'intervento così come descritto non è critico, nel senso che, con le precauzioni descritte, la probabilità di cancellare accidentalmente la prova digitale è sotto la soglia di preoccupazione, sempre possibile ma altamente improbabile o meglio tendente allo zero. Solo manovre fraudolente od errate dovute ad errori marchiani (o dolo) nei collegamenti elettrici possono produrre effetti distruttivi ai chip, oltre ovviamente a potenziali azioni dolose (tipo predisporre la circuiteria ed invertire la polarità dell'alimentazione od applicare voltaggi superiori ai valori massimi consentiti dalle specifiche di funzionamento). La scrittura di dati differenti inoltre (alterazione) richiede volontà e non può avvenire "accidentalmente", se non predisponendo malamente i circuiti elettrici necessari e la configurazione del pin di abilitazione previsto (la scrittura avviene in presenza di soglie di tensione molto più alte della normale tensione di alimentazione a 5 volts). Le operazioni di estrazione dei dati quindi (la lettura) sono ripetibili e la prova originale può essere acquisita ed analizzata anche in tempi diversi, quando allegata alla CTP o repertata come prova dalla procura.
Conclusioni : Non importa se operazioni di questo tipo, da sostenere in aula di tribunale, possano essere additate come prive di procedure consolidate o "certificate" dalla "comunità scientifica" e quindi inaccettabili o peggio valutate come "ridicole". E' talmente raro imbattersi in problematiche di questo tipo che è logico supporre non esista una "procedura consolidata". Ad ogni modo, l'assenza di procedure consolidate è sanata da una precisa, dettagliata ed esaustiva relazione tecnica che possa fornire al lettore la possibilità di verificare l'eventuale presenza di errori od omissioni. Ciò è valido in ogni caso in quanto,
in ambito digitale, i dati sono o zero o uno e non c'è posto per le opinioni.
Ben vengano dimostrazioni tecniche in grado di sostenere, sul piano pratico e soprattutto scientifico, che le operazioni qui descritte sono sbagliate. In quest'ultimo caso ci si rende disponibilissimi a valutare, confrontare, verificare ed alla fine, eventualmente, ammettere di aver sbagliato.
Grazie per l'attenzione.



Nessun commento:
Posta un commento