Adobe Reader 0-Day-Exploit – PDF-Analyse

Am 8. März 2026 identifizierte der Sicherheitsforscher Haifei Li eine interessante PDF-Malware-Datei in freier Wildbahn, die einen unbekannten Exploit für eine Schwachstelle im Adobe Reader PDF-Viewer enthält.

Artikelinhalte
Erstveröffentlichung von Haifei Li auf X (ehemals Twitter)

Haifei Li veröffentlichte erste Erkenntnisse in einem Blogartikel. Wir möchten die Analyse des PDFs in diesem Artikel vertiefen:

Extrahieren von Inhalten aus dem PDF

Mithilfe von pdf-parser.py von Didier Stevens können wir einzelne Objekte aus der Datei extrahieren. Die Objekte Javascript/JS, OpenAction und AcroForm sind für uns von primärem Interesse.

Artikelinhalte
Übersicht über alle Objekte in der PDF-Datei

Ein Blick auf das Objekt „Optional Content Group“ (ID 4) zeigt, dass diese PDF-Datei wahrscheinlich programmatisch unter Verwendung der PyMuPDF-Bibliothek erstellt wurde. Abgesehen von dieser Information enthält die Datei keine relevanten Metadaten, z. B. zum Autor, sondern lediglich die Spracheinstellung „en-US“. Der Ködertext selbst enthält russischen Text mit dem Titel „Maßnahmen zur Organisation von Interventionen“ (übersetzt).

Artikelinhalte
Das PDF wurde wahrscheinlich mit der PyMuPDF-Bibliothek erstellt

Als Nächstes extrahieren wir Objekt 11, das die eingebettete JavaScript-Nutzlast enthält. Um diesen Code-Schnipsel zu verschleiern, haben die Angreifer wahrscheinlich https://jsfuck.com/ verwendet, einen esoterischen Obfuskations-Dienst, der eine Reihe von Zeichen und JavaScript Datentyp-Namen nutzt, um das Skript zu rekonstruieren.

Artikelinhalte
Okfuskierter JavaScript-Payload

Durch die Auswertung der JSFuck-Ausdrücke und das Entfernen von Backslashes aus den String-Literal-Escapes des PDFs lässt sich die Verschleierung auflösen.

Artikelinhalte
Deobfuskierter JavaScript-Payload

Der JavaScript-Schnipsel verweist auf ein Formularfeld namens btn1. Aus dem Code lässt sich ableiten, dass er offenbar einen Wert aus dem Stream extrahiert, der anschließend aus Base64 dekodiert wird. Um „btn1“ in der PDF-Datei zu finden, können wir die –search-Funktion von pdf-parser.py verwenden.

Artikelinhalte
Suche nach dem Feld „btn1“

Wir müssen Objekt 9 im –raw-Modus anzeigen, da der Stream sonst in der Ausgabe nicht sichtbar wäre. Wie vermutet, findet sich hier ein recht großer Base64-kodierter Blob.

Artikelinhalte
Base64-kodierter Blob in Objekt 9

Beim Dekodieren des Base64-Blobs können Dekodierungsfehler auftreten. Dies liegt daran, dass zwei Schrägstriche (/) als #2F URL-kodiert sind. Wir vermuten, dass es sich hierbei um eine Parser-Anomalie und/oder einen Anti-Analyse-Trick handelt, obwohl dies auch durch einen Tooling-Fehler verursacht worden sein könnte. Der dekodierte Blob enthält erneut stark verschleiertes JavaScript, diesmal wahrscheinlich unter Verwendung der öffentlichen obfuscatior.io-Implementierung.

Artikelinhalte
Aus Base64 dekodiertes verschleiertes JavaScript

Das Entwirren dieser Verschleierung ist nicht so trivial wie bei JSFuck, da eine zentrale String-Lookup-Tabelle verwendet wird, die kontinuierlich neu gemischt wird, bis eine Prüfsumme übereinstimmt. Mit ein wenig zusätzlicher Aufbereitung und manuellen Korrekturen lässt sich der Code in einen lesbaren Zustand bringen.

Artikelinhalte
Verbergen von OCG-Ebenen im PDF, um visuelle Inhalte vor dem Opfer zu verbergen

Interessanterweise enthält das Skript eine Open-Source-AES-Implementierung im CTR-Modus, wie die aes-js-Konfiguration und die unten abgebildeten S-Box-Werte belegen:

Artikelinhalte
AES-CTR-Verschlüsselungsimplementierung, im Javascript enthalten

Für die Zwecke dieser PDF-Analyse und aufgrund der Kritikalität dieser Schwachstelle werden wir noch nicht tief in den vermuteten Exploit-Code eintauchen, aber bleiben Sie dran für einen Folgeartikel, in dem wir dies weiter untersuchen werden!

Nachdem der Exploit-Code ausgeführt wurde, werden alle privilegierten Aktionen in beginPriv()- und endPriv()-Aufrufe eingeschlossen.

Das JavaScript enthält umfangreiche Fingerprinting-Logik, die häufig von fortgeschrittenen Angreifern genutzt wird, um gezielt einzelne Systeme anzugreifen. Es überprüft, welche Version von Adobe Reader verwendet wird und ob es sich um eine 64-Bit-Binärdatei handelt, extrahiert die Windows-Produktversionszeichenfolge aus dem PE-Header von ntdll.dll und sucht nach Dateisystem-Artefakten, um die Hauptversion von Windows zu verifizieren.

Artikelinhalte
Fingerprinting-Logik zur Identifikation des Opfers

Die Angreifer wählten RSS-Feeds als Command-&-Control-Kanal, was nicht sehr häufig vorkommt. Der erste Feed dient dazu, den Fingerabdruck des Opfers zu signalisieren und Informationen für die anschließende Payload-Übertragung abzurufen. Der zweite Feed wird verwendet, um zusätzliche Payloads mit den zuvor abgerufenen Informationen herunterzuladen. Beide Feeds geben JavaScript-Code zurück, der im Skript ausgewertet wird.

Artikelinhalte
Command-&-Control-Kanal über RSS

Mit einer Abfragefrequenz von 500 ms prüft die Payload sehr regelmäßig auf Folge-Payloads, was darauf hindeutet, dass der Fingerabdruck wahrscheinlich automatisch und nicht manuell von einem Operator ausgewertet wird. Solche hochfrequenten Prüfungen würden wahrscheinlich früher oder später auffallen, falls sich die Payload-Zustellung erheblich verzögert.

Artikelinhalte
C2-Abfragefunktion: Folge-Payloads werden über AES-CTR entschlüsselt

Der RSS-Feed liefert „global.bird1“ (den hex-kodierten AES-Chiffretext) und „global._Ke“ (die AES-Schlüsselbytes), die mithilfe der bereitgestellten AES-CTR-Implementierung entschlüsselt und aus einem ZIP-Archiv entpackt werden.

Anschließend wird die Payload der zweiten Stufe „final_js“ ausgeführt. Derzeit steht keine Folge-Payload zur Analyse zur Verfügung. Sollte sich diese Situation ändern, werden wir selbstverständlich ein Update bereitstellen.

Obwohl dies im Beispiel nicht erwähnt wird, verfügte der Command&Control-Server auch über eine zugehörige Subdomain „zx.ado-read-parser[.]com“. Diese Domain wurde am 06.02.2025 bei Namesilo registriert, was darauf hindeutet, dass diese Kampagne bereits seit geraumer Zeit aktiv ist.

Indikatoren für eine Kompromittierung

PDF-Datei – 54077a5b15638e354fa02318623775b7a1cc0e8c21e59bcbab333035369e377f

Command-&-Control-Server – 188.214.34[.]20:34123 / zx.ado-read-parser[.]com

Beitrag teilen auf:

XING
Twitter
LinkedIn

SECUINFRA Falcon Team • Autor

Digital Forensics & Incident Response Experten

Neben den Tätigkeiten, die im Rahmen von Kundenaufträgen zu verantworten sind, kümmert sich das Falcon Team um den Betrieb, die Weiterentwicklung und die Forschung zu diversen Projekten und Themen im DF/IR Bereich.

> alle Artikel