4 febbraio 2008

Analisi forense su Oracle - LogMiner

Continuiamo la nostra carrellata sulle tecniche di analisi forense su un database Oracle. Dopo avere fatto conoscenza con l'elemento fondamentale per l'indagine, il Redo Log, e aver visto una tecnica di base, il dump del log, andiamo a incontrare un utile strumento fornito da Oracle stesso.

LogMiner è un'applicazione Oracle (edizione Enterprise) che consente di ispezionare direttamente i Redo Logs usando interrogazioni SQL. È scritto quasi tutto nel linguaggio procedurale PL/SQL di Oracle, e le sue funzionalità sono utilizzabili mediante l'interfaccia a linea di comando, oppure attraverso l’interfaccia grafica Oracle LogMiner Viewer (vedi figura), parte dell'Oracle Enterprise Manager, applicazione java per la gestione dei database Oracle.




LogMiner è stato pensato come strumento di ripristino in caso di problemi sul database. Per un'esauriente trattazione di LogMiner in quest'ambito si veda Expert One-on-One Oracle di Thomas Kyte.

Il principio di funzionamento è lo stesso della tecnica di dump che abbiamo visto nel post precedente, consentendo però l’accesso diretto ai file binari. LogMiner funziona all’interno di un’istanza del database, ma anche in questo caso può lavorare sui log di un'istanza diversa, soluzione da preferire sempre durante la fase investigativa.

L'uso di LogMiner in ambito forense è apertamente suggerito da Pete Finnigan, uno dei massimi esperti a livello mondiale di sicurezza su sistemi Oracle (autore dell'ottimo Oracle security step-by-step). Tuttavia recentemente un altro esperto del settore, Paul Wright, pur concordando sull'utilità come strumento di analisi forense, ha individuato un comportamento anomalo riguardo alla gestione delle date, che potrebbe inficiare i risultati delle analisi condotte con LogMiner su database a elevato numero di transazioni (i dettagli sono descritti in “Oracle database forensics using LogMiner”, intervento alla SANS Security 2004 Conference, Londra, giugno 2004).

Secondo Wright, quando LogMiner tratta e recupera dai log dati di tipo TIMESTAMP (mese, giorno, anno, ore, minuti, secondi, frazioni di secondo fino a 6 cifre decimali), in realtà li gestisce come dati di tipo DATE (mese, giorno, anno, ore, minuti, secondi), perdendo quindi le frazioni di secondo.

Lo stesso problema falsa le operazioni di ripristino dei dati di tipo TIMESTAMP, poiché vengono caricati con la parte decimale sempre pari a .000000, qualunque sia il reale valore memorizzato nei Redo Logs. A questo difetto sono soggette le versioni 9i e successive di Oracle, perché il formato TIMESTAMP è stato introdotto proprio con la 9i, e apparentemente nell'aggiornamento di LogMiner (nato con la versione 8) si è trascurata la differenziazione sul formato DATE.

Normalmente si tratta di un problema di poco conto per gli utilizzatori del database, ma i risultati ottenuti da LogMiner a fini investigativi potrebbero essere contestati in sede giudiziaria per l’intrinseca mancanza di precisione, almeno fino a quando il problema esposto non sarà risolto.

Nel frattempo accontentiamoci. Nel prossimo post analizzeremo la tecnica definitiva: l'analisi esadecimale dei log.

Nessun commento: