{"id":64471,"date":"2026-04-14T15:05:39","date_gmt":"2026-04-14T13:05:39","guid":{"rendered":"https:\/\/www.secuinfra.com\/news\/adobe-reader-0-day-exploit-pdf-analyse-2\/"},"modified":"2026-04-14T15:14:46","modified_gmt":"2026-04-14T13:14:46","slug":"adobe-reader-0-day-exploit-pdf-analyse","status":"publish","type":"post","link":"https:\/\/testing.secuinfra.com\/de\/techtalk\/adobe-reader-0-day-exploit-pdf-analyse\/","title":{"rendered":"Adobe Reader 0-Day-Exploit &#8211; PDF-Analyse"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-flat ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">[inhalt_uebersetzt]<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/testing.secuinfra.com\/de\/techtalk\/adobe-reader-0-day-exploit-pdf-analyse\/#Extrahieren_von_Inhalten_aus_dem_PDF\" >Extrahieren von Inhalten aus dem PDF<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\" id=\"ember916\">Am 8. M\u00e4rz 2026 identifizierte der Sicherheitsforscher Haifei Li eine interessante PDF-Malware-Datei in freier Wildbahn, die einen unbekannten Exploit f\u00fcr eine Schwachstelle im Adobe Reader PDF-Viewer enth\u00e4lt.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQHdB8Y1GcDIZQ\/article-inline_image-shrink_1000_1488\/B4DZ1xF0aLKwAQ-\/0\/1775718845131?e=1777507200&amp;v=beta&amp;t=P_4xmeVm9zLEBNtcaolesPSuQSYH7bKgg85-b_7aV3U\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Erstver\u00f6ffentlichung von Haifei Li auf X (ehemals Twitter)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember918\">Haifei Li ver\u00f6ffentlichte erste Erkenntnisse in einem <a  href=\"https:\/\/justhaifei1.blogspot.com\/2026\/04\/expmon-detected-sophisticated-zero-day-adobe-reader.html\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Blogartikel<\/a>. Wir m\u00f6chten die Analyse des PDFs in diesem Artikel vertiefen:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ember919\"><span class=\"ez-toc-section\" id=\"Extrahieren_von_Inhalten_aus_dem_PDF\"><\/span>Extrahieren von Inhalten aus dem PDF<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember920\">Mithilfe von pdf-parser.py von Didier Stevens k\u00f6nnen wir einzelne Objekte aus der Datei extrahieren. Die Objekte Javascript\/JS, OpenAction und AcroForm sind f\u00fcr uns von prim\u00e4rem Interesse.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQEWUABYmEMUcg\/article-inline_image-shrink_1500_2232\/B4DZ1xHiehHIAU-\/0\/1775719295645?e=1777507200&amp;v=beta&amp;t=s69t3EltH8q-Fz_C8tzV6I8QFcOzklYCP8erv0yOWYI\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">\u00dcbersicht \u00fcber alle Objekte in der PDF-Datei<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember922\">Ein Blick auf das Objekt \u201eOptional Content Group\u201c (ID 4) zeigt, dass diese PDF-Datei wahrscheinlich programmatisch unter Verwendung der PyMuPDF-Bibliothek erstellt wurde. Abgesehen von dieser Information enth\u00e4lt die Datei keine relevanten Metadaten, z. B. zum Autor, sondern lediglich die Spracheinstellung \u201een-US\u201c. Der K\u00f6dertext selbst enth\u00e4lt russischen Text mit dem Titel \u201eMa\u00dfnahmen zur Organisation von Interventionen\u201c (\u00fcbersetzt).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQFxujJvb_MW8g\/article-inline_image-shrink_1000_1488\/B4DZ1xIE3ALEAQ-\/0\/1775719436475?e=1777507200&amp;v=beta&amp;t=SQvWaV5FtzsqxlO6FaRm_6X-WBfm29r3LfJfn5Pqfx0\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Das PDF wurde wahrscheinlich mit der PyMuPDF-Bibliothek erstellt<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember924\">Als N\u00e4chstes extrahieren wir Objekt 11, das die eingebettete JavaScript-Nutzlast enth\u00e4lt. Um diesen Code-Schnipsel zu verschleiern, haben die Angreifer wahrscheinlich <a  href=\"https:\/\/jsfuck.com\/\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >https:\/\/jsfuck.com\/<\/a> verwendet, einen esoterischen Obfuskations-Dienst, der eine Reihe von Zeichen und JavaScript Datentyp-Namen nutzt, um das Skript zu rekonstruieren.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQGrLTC7N-EyPA\/article-inline_image-shrink_1500_2232\/B4DZ1xIyO9JYAU-\/0\/1775719622603?e=1777507200&amp;v=beta&amp;t=0e9x_No0ud_rLnyKTFsdh1H5o7bemGFfA9e9MMTKdjQ\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Okfuskierter JavaScript-Payload<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember926\">Durch die Auswertung der JSFuck-Ausdr\u00fccke und das Entfernen von Backslashes aus den String-Literal-Escapes des PDFs l\u00e4sst sich die Verschleierung aufl\u00f6sen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQEd-2u80Fg5EA\/article-inline_image-shrink_1000_1488\/B4DZ1xJmO_KUAQ-\/0\/1775719835633?e=1777507200&amp;v=beta&amp;t=PDUacth-RazPbnphAjV1ArpG7nomHE4aE7uZhmj1-Uo\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Deobfuskierter JavaScript-Payload<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember928\">Der JavaScript-Schnipsel verweist auf ein Formularfeld namens btn1. Aus dem Code l\u00e4sst sich ableiten, dass er offenbar einen Wert aus dem Stream extrahiert, der anschlie\u00dfend aus Base64 dekodiert wird. Um \u201ebtn1\u201c in der PDF-Datei zu finden, k\u00f6nnen wir die &#8211;search-Funktion von <a  href=\"http:\/\/pdf-parser.py\/\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >pdf-parser.py<\/a> verwenden.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQF0Jy-Xw03vEA\/article-inline_image-shrink_1000_1488\/B4DZ1xKUS2KAAQ-\/0\/1775720024448?e=1777507200&amp;v=beta&amp;t=ctG7YJn9fe2BpJv3IQXBiFA9NX1LrYBiaPKgUKpwT7U\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Suche nach dem Feld \u201ebtn1\u201c<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember930\">Wir m\u00fcssen Objekt 9 im &#8211;raw-Modus anzeigen, da der Stream sonst in der Ausgabe nicht sichtbar w\u00e4re. Wie vermutet, findet sich hier ein recht gro\u00dfer Base64-kodierter Blob.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQHmqpuDfxnmqw\/article-inline_image-shrink_1500_2232\/B4DZ1xKysIJQAU-\/0\/1775720149051?e=1777507200&amp;v=beta&amp;t=RZlGSOdwlW1aBt0q9m75N_0OoZgbuZ6yi3cQ0P6zfQI\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Base64-kodierter Blob in Objekt 9<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember932\">Beim Dekodieren des Base64-Blobs k\u00f6nnen Dekodierungsfehler auftreten. Dies liegt daran, dass zwei Schr\u00e4gstriche (\/) 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\u00f6nnte. Der dekodierte Blob enth\u00e4lt erneut stark verschleiertes JavaScript, diesmal wahrscheinlich unter Verwendung der \u00f6ffentlichen <a  href=\"http:\/\/obfuscatior.io\/\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >obfuscatior.io<\/a>-Implementierung.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQFQPw_9Fk7xUA\/article-inline_image-shrink_1500_2232\/B4DZ1xMLhXH8AU-\/0\/1775720512930?e=1777507200&amp;v=beta&amp;t=TneZcm4qrA3GVqKPvLOeStbKaY9jETkENy_9k25k1qI\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Aus Base64 dekodiertes verschleiertes JavaScript<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember934\">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\u00fcfsumme \u00fcbereinstimmt. Mit ein wenig zus\u00e4tzlicher Aufbereitung und manuellen Korrekturen l\u00e4sst sich der Code in einen lesbaren Zustand bringen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQGBOTaadgf81Q\/article-inline_image-shrink_1500_2232\/B4DZ1xRn6fIEAU-\/0\/1775721939055?e=1777507200&amp;v=beta&amp;t=Wl-F605CID8z23BFjQcgtgmR54JDYApuhz2IPLyMSWY\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Verbergen von OCG-Ebenen im PDF, um visuelle Inhalte vor dem Opfer zu verbergen<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember936\">Interessanterweise enth\u00e4lt das Skript eine <a  href=\"https:\/\/github.com\/ricmoo\/aes-js\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Open-Source-AES-Implementierung<\/a> im CTR-Modus, wie die aes-js-Konfiguration und die unten abgebildeten S-Box-Werte belegen:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQGQJxcv0CckaQ\/article-inline_image-shrink_1500_2232\/B4DZ1xTesGLEAU-\/0\/1775722429099?e=1777507200&amp;v=beta&amp;t=5gaJPNJnFOXrUjgLeHbXtXqQ6L7B8SBVaaXNjTI2Xz4\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">AES-CTR-Verschl\u00fcsselungsimplementierung, im Javascript enthalten<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember938\"><strong><strong>F\u00fcr die Zwecke dieser PDF-Analyse und aufgrund der Kritikalit\u00e4t dieser Schwachstelle werden wir noch nicht tief in den vermuteten Exploit-Code eintauchen, aber bleiben Sie dran f\u00fcr einen Folgeartikel, in dem wir dies weiter untersuchen werden!<\/strong><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember939\">Nachdem der Exploit-Code ausgef\u00fchrt wurde, werden alle privilegierten Aktionen in beginPriv()- und endPriv()-Aufrufe eingeschlossen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember940\">Das JavaScript enth\u00e4lt umfangreiche Fingerprinting-Logik, die h\u00e4ufig von fortgeschrittenen Angreifern genutzt wird, um gezielt einzelne Systeme anzugreifen. Es \u00fcberpr\u00fcft, welche Version von Adobe Reader verwendet wird und ob es sich um eine 64-Bit-Bin\u00e4rdatei handelt, extrahiert die Windows-Produktversionszeichenfolge aus dem PE-Header von ntdll.dll und sucht nach Dateisystem-Artefakten, um die Hauptversion von Windows zu verifizieren.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQF7vJKu_k_fgQ\/article-inline_image-shrink_1500_2232\/B4DZ1xWAtfLEAU-\/0\/1775723089996?e=1777507200&amp;v=beta&amp;t=855tOkp9DlV4YV6qUuCzluKj-6fcmWbuE0dSQxrKFDM\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Fingerprinting-Logik zur Identifikation des Opfers<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember942\">Die Angreifer w\u00e4hlten RSS-Feeds als Command-&amp;-Control-Kanal, was nicht sehr h\u00e4ufig vorkommt. Der erste Feed dient dazu, den Fingerabdruck des Opfers zu signalisieren und Informationen f\u00fcr die anschlie\u00dfende Payload-\u00dcbertragung abzurufen. Der zweite Feed wird verwendet, um zus\u00e4tzliche Payloads mit den zuvor abgerufenen Informationen herunterzuladen. Beide Feeds geben JavaScript-Code zur\u00fcck, der im Skript ausgewertet wird.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQFn78VBZC6veA\/article-inline_image-shrink_1500_2232\/B4DZ1xdYqfLEAc-\/0\/1775725024774?e=1777507200&amp;v=beta&amp;t=H-48cuYp9lFMN_6q7aOzWrIBNRNqWReIqgoLfHkwsuE\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">Command-&amp;-Control-Kanal \u00fcber RSS<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember944\">Mit einer Abfragefrequenz von 500 ms pr\u00fcft die Payload sehr regelm\u00e4\u00dfig auf Folge-Payloads, was darauf hindeutet, dass der Fingerabdruck wahrscheinlich automatisch und nicht manuell von einem Operator ausgewertet wird. Solche hochfrequenten Pr\u00fcfungen w\u00fcrden wahrscheinlich fr\u00fcher oder sp\u00e4ter auffallen, falls sich die Payload-Zustellung erheblich verz\u00f6gert.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/media.licdn.com\/dms\/image\/v2\/D4D12AQGUBRen9sniQA\/article-inline_image-shrink_1500_2232\/B4DZ1xe4c1G0Bg-\/0\/1775725415110?e=1777507200&amp;v=beta&amp;t=mlWmpOLRum1_ZYcx69dDAC0rWDsMYz3LGAoLuy19vlo\" alt=\"Artikelinhalte\"\/><figcaption class=\"wp-element-caption\">C2-Abfragefunktion: Folge-Payloads werden \u00fcber AES-CTR entschl\u00fcsselt<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember946\">Der RSS-Feed liefert \u201eglobal.bird1\u201c (den hex-kodierten AES-Chiffretext) und \u201eglobal._Ke\u201c (die AES-Schl\u00fcsselbytes), die mithilfe der bereitgestellten AES-CTR-Implementierung entschl\u00fcsselt und aus einem ZIP-Archiv entpackt werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anschlie\u00dfend wird die Payload der zweiten Stufe \u201efinal_js\u201c ausgef\u00fchrt. Derzeit steht keine Folge-Payload zur Analyse zur Verf\u00fcgung. Sollte sich diese Situation \u00e4ndern, werden wir selbstverst\u00e4ndlich ein Update bereitstellen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember948\">Obwohl dies im Beispiel nicht erw\u00e4hnt wird, verf\u00fcgte der Command&amp;Control-Server auch \u00fcber eine zugeh\u00f6rige Subdomain \u201ezx.ado-read-parser[.]com\u201c. Diese Domain wurde am 06.02.2025 bei Namesilo registriert, was darauf hindeutet, dass diese Kampagne bereits seit geraumer Zeit aktiv ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ember949\">Indikatoren f\u00fcr eine Kompromittierung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ember916\">PDF-Datei \u2013 54077a5b15638e354fa02318623775b7a1cc0e8c21e59bcbab333035369e377f<br><br>Command-&amp;-Control-Server \u2013 188.214.34[.]20:34123 \/ zx.ado-read-parser[.]com<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im M\u00e4rz 2026 wurde in Adobe Reader ein bislang unbekannter Zero-Day-Exploit entdeckt, der mithilfe eines speziell manipulierten PDF-Dokuments aktiv ausgenutzt wird. Aufbauend auf den ersten Erkenntnissen des Sicherheitsforschers Haifei Li bietet dieser Artikel eine detaillierte Analyse der technischen Struktur und Funktionsweise der sch\u00e4dlichen PDF-Datei. Er deckt eine stark verschleierte Angriffskette auf, die sich durch ausgefeilte Verschleierungstechniken, Fingerprinting-Mechanismen und eine ungew\u00f6hnliche Command-and-Control-Kommunikation \u00fcber RSS-Feeds auszeichnet.<\/p>\n","protected":false},"author":6,"featured_media":64470,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[79,66],"tags":[],"dpc_coauthors":[],"class_list":["post-64471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-forensics","category-techtalk"],"acf":[],"_links":{"self":[{"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/posts\/64471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/comments?post=64471"}],"version-history":[{"count":3,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/posts\/64471\/revisions"}],"predecessor-version":[{"id":64475,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/posts\/64471\/revisions\/64475"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/media\/64470"}],"wp:attachment":[{"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/media?parent=64471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/categories?post=64471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/tags?post=64471"},{"taxonomy":"dpc_coauthors","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/de\/wp-json\/wp\/v2\/dpc_coauthors?post=64471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}