Zpět na seznam článků     Číst komentáře (8)     Verze pro tisk

Analýza škodlivých PDF souborů

Autor: ScheRas   
25.11.2013

Portable Document Format je možná vůbec nejrozšířenější formát pro sdílení dokumentů. Je používán jak jednotlivci, tak firmami, ke sdílení katalogů, faktur, knih, prostě všeho, co vás jenom napadne. Velmi oblíben je také mezi kyberzločinci. Pojďme si tedy ukázat nejen to, jak zjistit, jestli je soubor nějakým způsobem škodlivý, ale také to, jak formát PDF vypadá, a nesmíme opomenout ani to, jak se takový škodlivý soubor tvoří.


Tento článek je překladem originálu "Analyzing Malicious PDFs" od Rohita Shawa, který vyšel na webu www.infosecinstitute.com.

Předchozí roky nebyly pro uživatele příliš dobré. Bylo zveřejněno několik kritických zranitelností, například velice populární byl exploit zneužívající buffer overflow v Adobe Readeru do verze 9. Když se útočníkovi podaří dostat zhoubný soubor k uživateli, ať už pomocí sociálního inženýrství či prostým umístěním na internet, stačí ke spuštění škodlivého kódu pouhý akt otevření dokumentu. Většina útočníků pochopitelně poskytne uživateli původní soubor, takže si oběť nějaké neobvyklé aktivity ani nevšimne.

Adobe Reader - nejvíce zneužívaná aplikace - graf
Adobe Reader je vůbec nejzneužívanější aplikace posledních let (http://www.investintech.com/)

Jak jste si pravděpodobně všimli, PDF soubory jsou velice často součástí masových e-mailových kampaní. Tyto kampaně bývají bohužel velice často úspěšné. Abychom se nestali jednou z obětí, měli bychom vědět, jak takový zákeřný soubor odhalit (Někteří možná namítnou, že stačí neotvírat neznáme e-maily, což je sice pravda, ale k takovému dokumentu lze přijít i jinak).

Struktura PDF

Struktura PDF dokumentu

Formát PDF je schopný zobrazovat veliké množství obsahu (statický a dynamický). Dohromady tyto prvky tvoří vizuálně atraktivní, interaktivní a velice přenosný dokument. I když si všichni užíváme výhod, které z těchto funkcí plynou, má to i svou temnější stránku. Dynamický obsah v PDF souborů může totiž skrývat škodlivý obsah, který je často využíván k instalaci malwaru či ke krádežím osobních údajů.

Struktura PDF dokumentu

Základní struktura PDF dokumentu

  • Hlavička - obsahuje verzi PDF
  • Tělo - obsahuje sérii objektů použitých v souboru
  • Tabulka odkazů - obsahuje konkrétní pozice v souboru, na kterých začíná daný objekt
  • Závěrečná sekvence - obsahuje pozici na které začíná tabulka odkazů

Objekty, která lze použít v PDF souboru:

  • Logické hodnoty (Boolean) - Mohou nabývat hodnot true nebo false. Používají se jako hodnoty v polích (arrays) nebo slovnících (dictionaries), dále jako výsledek výpočetních funkcí PostScriptu nebo jako operandy podmíněných operátorů if a ifelse.
  • Čísla (Numbers) - Formát PDF zná dva typy numerických objektů: integer a real. Integer reprezentuje celá čísla, zatímco real reprezentuje čísla reálná. Rozsah a přesnost jsou závislé na uživatelském počítači.
  • Řetězce (Strings) - String objekt je složený ze série bajtů s hodnotami v rozsahu 0 až 255. Zápis těchto objektů je možné provádět dvěma způsoby
    • Sekvence unsigned integerů uzavřených v kulatých závorkách ().
    • Sekvence hexadecimálních dat uzavřených v lomených závorkách <>.
  • Jména (Names) - Jméno je atomický objekt jedinečně definován sekvencí znaků. Z toho vyplývá, že dva jmenné objekty sestávající ze stejné sekvence znaků jsou stejný objekt, a že nemají vnitřní strukturu. Jméno začíná lomítkem (/) a mezi lomítkem a samotným jménem nesmí být žádné bílé znaky.
  • Pole (Arrays) - Array objekt je ve formátu PDF chápán jako jednorozměrná množina sekvenčně seřazených objektů. Zapisuje se jako sekvence objektů uzavřených v hranatých závorkách [].
  • Slovníky (Dictionaries) - Slovník je vlastně asociativní pole, prvky (values) nejsou tedy indexovány posloupností celých čísel, nýbrž pomocí klíčů (keys). Klíč musí být, na rozdíl od hodnoty, která může být jakéhokoliv typu, vždy typu Jméno. Slovník se zapisuje jako sekvence párů klíč-hodnota uzavřených ve dvojitých lomených závorkách <<>>.
  • Streamy (Streams) - Stream je podobně jako string sekvence bajtů. PDF aplikace mohou ovšem číst stream postupně, zatím co řetězce musí byt přečteny celé najednou. Stream má zároveň neomezenou velikost, z toho důvodu jsou takto vkládány objekty s velkým množstvím dat, jako třeba obrázky nebo popisy stránek.
  • Nulové objekty (Null objects) - má typ a hodnotu, která se nerovná žádnému jinému objektu. Existuje jenom jeden objekt typu null, označený pomocí klíčového slova null.

(Původní článek se strukturou PDF dokumentu příliš nezabývá, dovolil jsem si ho tedy trošku rozšířit. Pokud chcete vědět o struktuře PDF souborů víc, mohu vás odkázat na článek na wikipedii.)

Vytváření škodlivého PDF

Nejčastěji je škodlivý kód napsaný v JavaScriptu, jelikož lze k exploitaci použít techniku heap sprayingu.

Ve chvíli, kdy oběť otevře nakažený PDF dokument, spustí se JavaScriptový kód, který spustí shell kód a z internetu se stáhne trojský kůň.

K vytvoření zákeřného souboru využijeme JavaScriptovou funkci util.printf(), která způsobí přetečení bufferu.

Vytvoření takové souboru by mohlo vypadat nějak takto:

  1. Otevřeme msfconsoli a spustíme následující příkazy.

  2. Jakmile budeme mít všechny možnosti nastavené tak, jak chceme, můžeme spustit exploit a vytvořit náš škodlivý soubor.

  3. Ještě před tím, než pošleme vytvořený soubor obětí, musíme nastavit listener k přijímání zpětných spojení.

  4. Ve chvíli, kdy oběť otevře PDF dokument, je zřízena relace a my můžeme pomocí meterpreteru přistupovat k systému oběti.

Analýza PDF dokumentu

Analýza PDF souboru zahrnuje přezkoumávání, dekódování a extrahování obsahu podezřelých objektů, které mohou být využity k exploitaci zranitelnosti v Adobe Readeru. Naštěstí nemusíme vše dělat ručně, práci nám ušetří stále se zvětšující počet online a offline analyzérů..

Online analyzéry

Při každém, byť sebemenším, podezření je dobré prozkoumat potenciálně nebezpečné dokumenty některým z mnoha online analyzérů. Ten nahraný škodlivý PDF soubor otestuje na většinu známých exploitů a ihned vrátí výsledek.

Wapewet

Wepawet je služba pro detekci a analýzu webového malwaru. V současné době podporuje nejen formát PDF, ale také Flash či JavaScript. Wepawet je dostupný na adresehttp://wepawet.iseclab.org a pro otestování souboru ho stačí nahrát nebo vložit odkaz na zdroj v internetu.

PDF Examiner

PDF Examiner od Malware Tracker je schopný, podobně jako Wapevet, najít v uploadovaném PDF souboru desítky známých exploitů. Navíc umožňuje uživateli zobrazit si přesnou strukturu dokumentu, což se nám bude velice hodit, pokud budeme chtít nějaký dokument testovat ručně. Nástroj najdete na www.malwaretracker.com.

Offline analyzéry

Pokud chceme PDF dokument testovat ručně, budou se nám hodit následující aplikace.

PDF Stream Dumper

Hned po instalaci PDF Stream Dumperu nahrajeme podezřelý soubor a program ihned začne s analýzou. V pravém sloupci jsou barevně rozlišené různé objekty, například červenou barvou je zvýrazněn JavaScript.

Nástroj, podobně jako ostatní aplikace, dokáže odhalit veliké množství známých exploitů. Pokud chceme náš soubor na tyto exploity otestovat , stačí kliknout na "Exploits scan". V našem škodlivém dokumentu PDF Stream Dumper správně indikuje exploit zranitelnosti CVE-2008-2992.

Peepdf

Peepdf je nástroj napsaný v Pythonu, který slouží k prozkoumání souborů PDF za účelem zjistit, zda je soubor škodlivý či nikoliv. Cílem tohoto nástroje je poskytnout bezpečnostnímu výzkumníkovi všechny potřebné komponenty pro průzkum PDF dokumentů v jedné aplikaci a nahradit tak 3-4 jiné aplikace.

Pojďme tedy analyzovat náš maliciouspdf.pdf.

Pokud PDFko obsahuje nějaké JavaScriptové objekty, je nám k dispozici JS příkaz, který takový objekt podrobí důkladné analýze. V případě, že byl kód navázán na nějaký spustitelný soubor, Peepdf nám zobrazí URl adresu, na které je takový soubor umístěn.

Origami

Origami je Ruby framework navržený k parsování, analýze a vytváření PDF dokumentů. Krom zjištění, jestli se v PDFku škodlivý kód nenachází, nám může pomoci také při vytváření takovýchto zákeřných dokumentů.

Pdfid

Pdfid je nástroj, který nám zprostředkuje velice užitečné informace o PDF souboru. Zejména se pokouší o extrahování informací v hlavičce, jako je například JavaScriptový kód, různé objekty, streamy a podobně. Pdfid nám tedy pomůže zjistit, co se vlastně uvnitř dokumentu děje.

Závěr

V předchozích letech bylo objeveno několik desítek zranitelností a jejich počet se ze dne na den zvětšuje. Z toho vyplývá, že je potřeba před otevřením analyzovat každý PDF soubor, jelikož prostý akt otevření dokumentu může vést ke stažení malwaru z internetu. K analýze je možné použít různé automatické online a offline nástroje. Pro zmenšení pravděpodobnosti kompromitace je vhodné používat alternativní prohlížeče (SumatraPDF, Foxit, PDF XChange), instalovat poslední aktualizace a v Adobe Readeru zakázat spouštění JavaScriptu.

Reference

  • http://cs.wikipedia.org/wiki/Portable_Document_Format
  • www.slideshare.net/null0x00/client-side-exploits-using-pdf
  • blog.zeltser.com/post/3235995383/pdf-stream-dumper-malicious-file-analysis
  • www.infosec.gov.hk/sc_chi/promotion/files/20100311_04.pdf

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.43/21

1  2  3  4  5    
(známkování jako ve škole)