Cyberkriminelle Techniken gegen das Erkennen von bösartigen PDF-Dateien

Originalartikel von Michael Du, Threats Analyst

Für viele Exploit-Kits sind bösartige PDF-Dateien der Bedrohungsvektor der Wahl, um Nutzer mit verschiedenen bösartigen Dateien zu infizieren. Sicherheitsanbieter investieren viel Mühe in die Entdeckung dieser Dateien, und deren Autoren strengen sich ebenso an, um dies zu verhindern. Mithilfe des Feedbacks aus dem Smart Protection Network haben die Trend Micro-Forscher einige von PDF-Exploits häufig eingesetzte Techniken analysiert.

Die meisten PDF-Exploits nutzen eine Form von eingebettetem JavaScript. Daher funktionieren hier bekannte JavaScript Vermeidungs- und Verschleierungstechniken gut, so beispielsweise Ersetzen von Zeichenketten, Try-Catch-Ausnahmen oder fromCharCode-Schleifen.

Bild 1. Eingesetzte JavaScript Vermeidungs- und Verschleierungstechniken

Dieser Exploit hat CVE-2010-0188 im Visier.

 Codierter Content- und Function-Name im INFO-Objekt

Diese Art der Verschleierung speichert verschlüsselten Code in Teilen des INFO-Objekts (etwa Title, Subject, Producer). Mit JavaScript kann dieser bösartige Code extrahiert und entschlüsselt werden. In dem Muster fallen die Felder Title/Creator im INFO-Objekt auf. Das Creator-Feld besteht aus einer sehr langen alphanumerischen Zeichenkette, die von vielen Ausrufezeichen durchbrochen ist.


Bild 2. Verschlüsselter Code im INFO-Objekt

Auch dieser Exploit zielt auf CVE-2010-0188.

JavaScript-Laufzeitumgebung als Ziel

Für die Ausführung von JavaScript in PDF-Dateien bedarf es einer bestimmten Runtime-Bibliothek. Sie ist Teil des Adobe Readers, doch die meisten Analysewerkzeuge enthalten sie nicht. Stellt die Schadsoftware fest, dass einige Funktionen nicht definiert sind oder sich seltsam verhalten, so wird der bösartige Code nicht entschlüsselt. Zu den Funktionen, die zu diesem Zweck eingesetzt werden können, gehört das Prüfen der Dateigröße und der Anwendungsversion.

In dem folgenden Beispiel würde app.endPriv geprüft, und falls die Funktion nicht korrekt definiert ist, wird der Code nicht ausgeführt.

 

Bild 3. Prüfung bestimmter Funktionen

 Feldattribute und Scope-Funktionen

Manche Schadsoftware nutzt Feldattribute in XML Forms Architecture (XFA) zur Prüfung. Diese Scope-Funktionen sind in Analysewerkzeugen ebenfalls nicht korrekt „implementiert“. Werden bestimmte Objekte und Funktionen nicht gefunden (in diesem Fall das ImageFiled1Objekt und die ZZA-Funktion), wird der Code nicht ausgeführt. In anderen Fällen können auch Attribute wie Breite oder Höhe stattdessen genutzt werden.

Bild 4. Feldattribute und Scope-Funktion

Namespace Control

In diesem Jahr wurde eine neue Sicherheitslücke (CVE-2013-2729) öffentlich, die mit neuen Vermeidungstechniken einherging. JavaScript-Code arbeitete in verschiedenen Namespaces (kontrolliert vom Name-Attribut). Analysewerkzeuge haben manchmal Schwierigkeiten damit. Das folgende Beispiel zeigt zwei verschiedene Objekte — util und spray – und wie Funktionen sowie Variablen in diesen beiden Namespaces verwendet werden.





Bild 5-7. Verwendete Namespaces und Variablen

Der Gültigkeitsbereich von Variablen wird in der eval-Funktion geändert

Diese Art der Vermeidungstechnik beruht auf bestimmten Eigenarten der PDF JavaScript-Engine. Folgender Code funktioniert im Adobe Reader korrekt:

(function(){var v=”inner”; e=eval; e(“alert(v)”); })();

Der „inner“-Code wird ausgeführt. In anderen JavaScript-Engines kann das anders sein, sodass eine Fehlermeldung stattdessen zurückgegeben wird. Dies verhindert unter Umständen die Analyse des bösartigen Codes.

Zusammenfassung

Von den vorgestellten Vermeidungsmethoden könnten künftig zwei häufiger eingesetzt werden: Prüfen der Javascript Runtime und das Ändern des Gültigkeitsbereichs von Variablen. Dies sind die neuesten Versuche von Cyberkriminellen, der Entdeckung zu entgehen.

Der Trend Micro Web Reputation Service entdeckt und blockiert die Websites, die solche Techniken nutzen. Die dargestellten Muster wurde als TROJ_PIDIEF.ERP, TROJ_PIDIEF.ERQ, TROJ_PIDIEF.SMAL und TROJ_PIDIEF.SMAP erkannt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*