Falso senso di sicurezza e hacking di un PDF cifrato

Cosa significa "falso senso di sicurezza"?

Consiste nel percepire un livello di sicurezza più elevato rispetto a quello che effettivamente abbiamo. Questo grazie a fattori che ci inducono in questa falsa percezione.

Un esempio è l'utilizzo della automobile. Il fatto di viaggiare a 20 cm. da terra e poter fermare in qualsiasi momento il veicolo e scendere, ci fa percepire una sicurezza maggiore nell'utilizzare questo mezzo rispetto al fatto di viaggiare in aereo. Ma la sicurezza di un viaggio in aereo è più elevata rispetto alla sicurezza di un viaggio in macchina.


Il fatto che l'aero sia a migliaia di metri sopra il livello del mare aumenta ancora di più questo falso senso di "insicurezza" dell'aereo.

Inoltre percepire un livello di sicurezza più elevato nella guida di un autoveicolo ci porta magari a compiere delle azioni poco prudenti mentre guidiamo. E questo vale anche se siamo dei semplici passeggeri e non possiamo che subire i fattori esterni del viaggio in automobile.

Percepire quindi un falso senso di sicurezza è peggio che non avere nessuna sicurezza. Perché ci fa abbassare le difese, essendo convinti di essere al sicuro grazie proprio alla falsa percezione. E' come se fossimo convinti di vivere in un castello con muri di 3 metri di spessore, mentre in realtà sono solo di 10 cm!

A parte questa breve introduzione su un concetto che, sono sicuro, è noto a tutti voi, adesso vi voglio raccontare un episodio che mi è accaduto e che mette in risalto il falso senso di sicurezza indotto da misure di cifratura del tutto inadeguate.

Una mia amica mi raccontava di essere andata a fare delle analisi cliniche in un laboratorio molto ben organizzato. Il laboratorio, al momento della consegna dei campioni da analizzare, gli aveva fornito un foglio con il dettaglio delle prestazioni ed un numero identificativo della prestazione: un ID numerico.


Per il ritiro dei risultati delle analisi non sarebbe dovuta andare di persona al laboratorio, perché queste le sarebbero state recapitate (sempre dietro consenso) via posta elettronica, con allegato un PDF cifrato con l'ID assegnato e presente nel dettaglio delle prestazioni consegnato in precedenza.

A questo punto una domanda mi è sorta spontanea "un ID numerico per cifrare un PDF?". Ho spiegato alla mia amica che non mi sembrava una misura di sicurezza adeguata per un dato sensibile: mezzo con cui viene trasmesso il risultato dell'analisi, e-mail dell'utente, e cifratura assolutamente inadeguata.

La mia amica, conoscendomi, ha cominciato subito a sbuffare ricordandomi le mie fissazioni di sicurezza. Come non darle ragione? Ma del resto se ci si occupa di sicurezza la prima cosa da fare è proprio pensare come poter sovvertire un sistema, giusto? ;-)



Presto detto. L'idea è abbastanza banale: enumerare tutti gli ID, metterli in un file e provare ad aprire il PDF protetto con qualche libreria. Cerco nelle librerie di Acrobat, nel suo SDK, quando giunge inaspettato e gradito un post di Gianni Amato che segnala un cracker di PDF su SourceForge. Questo programma accetta anche liste di parole per effettuare una sorta di attacco del dizionario.

Mi metto all'opera ed ecco i componenti dell'attacco.

Due righe di codice per enumerare gli ID e metterli in un file: "text.txt":



Installo CygWin sul mio Windows VISTA per non switchare sulla Ubuntu, avendo cura di inserire GCC e Make nei pacchetti da installare:


Eseguo il download di PDFcrack e lo compilo (da shell cygwin: "$ make all") in CygWin:


E infine richiamo PDFCrack passando il file "test.txt" (con la lista di ID generata in precedenza) e il PDF cifrato:

"$ ./pdfcrack.exe -n 1 -m 8 -w test.txt -f test.pdf"


Dopo pochi secondi ecco comparire la password! E purtroppo riesco anche ad aprire il relativo PDF.

Un ID di 5 cifre :-(

Se qualcuno li avesse consigliati di utilizzare un ID casuale alfanumerico lungo almeno 12 cifre, in cui ogni cifra appartiene ad un alfabeto di 27 caratteri, il problema sarebbe stato più arduo, sia per il tempo di elaborazione che per lo spazio disco occupato!

Se infatti per l'enumerazione dell'esempio è stato necessario un brevissimo tempo di elaborazione e una spazio disco consistente (circa 1 GByte), per enumerare tutte le stringhe lunghe al massimo 12 caratteri da un alfabeto di 36 (con cardinalità pari a: 36^1+36^2+36^3...+36^12), questo avrebbe richiesto molto più spazio disco e tempo di calcolo.
E generare stringhe lunghe 12 caratteri in modo casuale non è molto difficile...

Ora visto che conosco il laboratorio e so anche il tipo di cifratura che utilizzano, se volessi procurarmi qualche analisi non sarebbe certo la cifratura del PDF a fermarmi, vero?

Commenti

Post popolari in questo blog

Exploit: icsploit o espluà?

TrueCrypt 5.0: nuova release

ING Direct: ancora con il PAD numerico rotante!