Capita spesso di associare gli attacchi informatici effettuati attraverso l’uso di software malevolo (“malware”, o più volgarmente “virus”) a dei file eseguibili o alla navigazione in siti web infetti. In realtà, le tecniche di diffusione di software malevolo sono molteplici, e si basano spesso sull’utilizzo di strategie di social engineering. In altre parole, dal punto di vista dell’attaccante, è molto più semplice che la vittima apra una mail contenente un documento relativo a delle sue “debolezze” (ad esempio, una determinata bolletta da pagare) che direttamente un file eseguibile, il quale risulterebbe molto più sospetto. Per questo motivo, i documenti digitali sono dei vettori perfetti per veicolare attacchi informatici di vario tipo, in quanto sfruttano non solo le vulnerabilità informatiche del sistema target, ma anche quelle psicologiche della vittima.
Gli attaccanti possono nascondere attacchi sofisticati in documenti digitali: i formati più utilizzati sono certamente PDF e Microsoft Office (doc, xls…). Anche se, negli ultimi tempi, il secondo formato è preferito dagli attaccanti per la maggiore facilità di infezione, i file PDF sono ancora ampiamente usati per effettuare attacchi (ad esempio, [1]). In questa serie di articoli, composta da due parti, cercheremo di capire come un attaccante possa effettuare un attacco informatico attraverso l’uso di un file PDF.
In questo primo articolo, si fornirà una panoramica del funzionamento di un file PDF e della sua struttura. Nel secondo articolo, si andrà più in profondità nelle problematiche di sicurezza relative ai file PDF, mostrando un esempio reale di attacco informatico effettuato attraverso questo formato.
PDF sta per Portable Document Format, ed è uno dei formati più popolari, assieme a Microsoft Office, per visualizzare documenti digitali.
La sua caratteristica principale è quella di supportare diverse funzionalità che rendono più interattiva l’esperienza dell’utente, come l’uso di form, la possibilità di visualizzare video, immagini e molto altro. Inoltre, supporta l’utilizzo di codice JavaScript per implementare funzionalità aggiuntive che migliorano l’esperienza complessiva dell’utente.
In linea generale, un file PDF può essere definito come un grafo di oggetti direttamente interconnessi fra di loro. Per poter capire come funziona, è possibile aprirlo direttamente con un programma come Notepad (o ancora meglio, Notepad++ [2]). Si può pertanto evincere che ogni file PDF è composto da quattro parti principali, mostrate nella Figura 1:
Per poter visualizzare un file PDF, pertanto, il Reader dovrà eseguire le seguenti operazioni:
Si consideri ora il seguente esempio di file PDF, avente il trailer mostrato in Figura 2:
Adobe Reader inizierà ad analizzare il file a partire da questo trailer (indicante che sono presenti 11 oggetti – incluso il trailer stesso – nella gerarchia, si veda la keyword /Size). L’oggetto rappresentato dalla keyword /Root indica che il primo oggetto della gerarchia sarà il numero 1 (il fatto che sia esattamente il numero 1 è, tuttavia, una coincidenza. L’oggetto /Root può avere un qualunque numero). Il trailer ci dice anche l’oggetto numero 10 contiene informazioni sui metadati del file (keyword /Info).
Supponiamo che il body sia strutturato come in Figura 3. Di seguito, indichiamo solo una porzione degli oggetti in modo da semplificare la visualizzazione.
Questa immagine fornisce una serie di informazioni importanti su come gli oggetti vengono trattati da Adobe Reader. Dato che il primo oggetto della gerarchia è il numero 1 (informazione ottenuta dal trailer precedente), Reader inizierà ad analizzare l’oggetto 1 0 obj. Questo oggetto possiede due keyword fondamentali, /Type e /Catalog, che stanno ad indicare che quello è l’oggetto principale della gerarchia. Inoltre, sono presenti due riferimenti agli oggetti 2 e 3. L’oggetto numero 2 contiene informazioni relative alla presenza di sommari (non ve ne sono, infatti il /Count nell’oggetto numero 2 riferito alle /Outlines è accompagnato da uno zero). L’oggetto 3, invece, contiene informazioni sulle pagine del documento. È facile osservare come l’oggetto si riferisca alla struttura, in termini di pagine, del documento (osservare le keyword /Type e /Pages). Il file avrà due pagine (/Count 2) e le informazioni relative alle due pagine sono contenute negli oggetti 4 e 6 (/Kids).
La struttura degli oggetti analizzati può essere pertanto riassunta come in Figura 4:
Come si può notare, il file PDF è organizzato in maniera precisa e solo gli oggetti presenti nel body (indicati nella Cross-Reference Table) sono effettivamente analizzati da Adobe Reader.
La Cross-Reference Table relativa al file è rappresentata in Figura 5:
L’aspetto principale che si può evincere da questa tabella è il fatto che vi siano esattamente 11 oggetti, come indicato nel trailer (la posizione indicata è però quella dei 10 oggetti del body, il trailer non è incluso). Notare come il marker n, alla fine di ogni indirizzo del file, indichi che quell’oggetto verrà effettivamente analizzato e visualizzato da Reader.
Queste sono le basi per poter comprendere il funzionamento di un file PDF (e che saranno fondamentali per capire il funzionamento degli attacchi). Per maggiori informazioni, si rimanda alle specifiche ufficiali del formato [3]. Nel prossimo articolo, analizzeremo la struttura di un vero e proprio malware in PDF con le basi apprese in questa prima parte.
Articolo a cura di Davide Maiorca
Nel panorama odierno della sicurezza informatica, la protezione degli endpoint rappresenta un obiettivo imprescindibile per…
I numeri dell’evento Oltre 1000 ospiti, 42 relatori, 20 interventi tematici e 5 Tavole Rotonde:…
Group-IB è un fornitore, con sede a Singapore, di sistemi ad elevata attendibilità per il…
Le interazioni di natura digitale, su rete pubblica o all’interno di reti private, hanno assunto…
La Commissione Europea ha di recente ricordato come “Artificial intelligence (AI) is not science fiction;…
Di seguito il programma della Cyber Crime Conference 2024, che avrà luogo a Roma nei…