← Neueste Arbeiten
💻 computer science

Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution

Dieser Beitrag stellt eine sichere, auf symbolischer Ausführung basierende Analysetechnik vor, die spekulative Bibliotheksvorladung mit benutzerdefinierten Hooks kombiniert, um Kontrollflussgraphen aus dynamisch geladenem Code zu rekonstruieren, und erzielt im Vergleich zur statischen Analyse signifikante Verbesserungen bei der Wiederherstellung von Knoten und Kanten, während gleichzeitig eine 100%ige Präzision und ein 100%iger Recall bei der Bibliothekserkennung gewährleistet bleiben.

Ursprüngliche Autoren: Oleksandr Mostovyi

Veröffentlicht 2026-05-29
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Oleksandr Mostovyi

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Stellen Sie sich vor, Sie versuchen zu verstehen, wie eine komplexe Maschine funktioniert, indem Sie ihre Baupläne betrachten. In der Welt der Computersoftware werden diese Baupläne als Kontrollflussgraphen (CFGs) bezeichnet. Sie kartieren jeden möglichen Pfad, den ein Programm einschlagen kann, und zeigen Ihnen, wohin der Code als Nächstes geht.

Moderne Software (und bösartige Programme wie Malware) hat jedoch einen Trick gelernt, um ihre Baupläne zu verbergen. Sie verwenden eine Technik namens dynamisches Laden. Anstatt alle ihre Teile von Anfang an in die Hauptmaschine eingebaut zu haben, bewahren sie einige Teile in einem verschlossenen Kasten auf und öffnen den Kasten und montieren die Teile erst, während die Maschine läuft.

Das Problem: Die unsichtbaren Teile

Traditionelle Softwareanalysewerkzeuge sind wie statische Architekten. Sie betrachten die Baupläne auf dem Tisch und sagen: „Hier ist der Pfad." Doch wenn die Maschine während des Betriebs einen versteckten Teil aus einem Kasten holt, sieht der statische Architekt nichts. Sie sehen eine leere Stelle, wo eine Tür sein sollte, und können daher den Pfad nicht durch sie hindurch zeichnen.

Dies ist ein riesiges Problem für die Sicherheit. Wenn Sie die versteckten Pfade nicht sehen können, können Sie nicht feststellen, ob die Maschine sicher ist oder ob es eine Falle ist.

Die Lösung: Der „spekulative" Detektiv

Der Autor dieses Papiers, O. S. Mostovyi, hat ein neues Werkzeug für Detektive entwickelt. Anstatt nur die Baupläne zu betrachten, agiert dieses Werkzeug wie ein Zeitreisender Simulator.

So funktioniert es, unter Verwendung einer einfachen Analogie:

  1. Die Simulation (Symbolische Ausführung): Stellen Sie sich einen Roboter vor, der die Software ausführen kann, ohne sie tatsächlich wirklich einzuschalten. Er führt den Code in einer „Was-wäre-wenn"-Welt aus. Er führt die gefährlichen Teile nicht aus; er denkt sie nur durch.
  2. Die Zwei-Ebenen-Architektur: Das Werkzeug verfügt über zwei spezielle Sinne, die zusammenarbeiten:
    • Ebene 1 (Der Bibliothekar): Dieser Teil beobachtet, wie die Software nach neuen Teilen fragt. Wenn die Software sagt: „Ich brauche eine Bibliothek aus dem Netzwerk" oder „Ich brauche eine Datei von einem versteckten Speicherort", fängt der Bibliothekar die Anfrage ab. Selbst wenn die Software behauptet, der Dateiname sei verschlüsselt oder durcheinandergebracht, verwendet das Werkzeug Mathematik, um herauszufinden, was die Datei tatsächlich ist. Es lädt diese Datei dann „spekulativ" in die Simulation, damit der Roboter sie sehen kann.
    • Ebene 2 (Der Verkehrspolizist): Dieser Teil beobachtet die Straßen, auf denen der Roboter reist. Wenn der Roboter an einer Kreuzung ankommt, wo die Richtung von einer versteckten Variable abhängt (wie einer geheimen Adresse), überprüft der Verkehrspolizist die „Was-wäre-wenn"-Szenarien, um zu sehen, wohin diese Straße tatsächlich führt.

Wie es mit kniffligen Tricks umgeht

Das Papier erklärt, dass böswillige Akteure viele Möglichkeiten nutzen, um ihren Ladevorgang zu verbergen. Das Werkzeug ist so konzipiert, dass es sie alle einfängt:

  • Dateilose Ausführung: Einige Programme erstellen Dateien, die nicht auf der Festplatte existieren und nur im RAM leben. Das Werkzeug sieht diese unsichtbaren Dateien.
  • Netzwerk-Laden: Einige Programme laden ihren Code während des Betriebs aus dem Internet herunter. Das Werkzeug simuliert diesen Download, um zu sehen, was ankommt.
  • Verschlüsselte Namen: Wenn das Programm sagt „Datei laden [verschlüsselter Code]", verwendet das Werkzeug einen mathematischen Löser, um den Code zu knacken und den echten Dateinamen zu finden.

Die Ergebnisse: Die fehlende Karte vervollständigen

Um dies zu testen, erstellte der Autor 16 verschiedene „Fallen" (Benchmarks), die verschiedene Verstecktechniken verwendeten, von einfachen Tricks bis hin zu komplexer, mehrstufiger Verschlüsselung.

Die Ergebnisse waren sehr klar:

  • Vollständigkeit: Das Werkzeug fand 29,8 % mehr Pfade (Knoten) und 26,5 % mehr Verbindungen (Kanten) als traditionelle statische Werkzeuge. Es füllte die leeren Stellen auf der Karte aus.
  • Genauigkeit: Es war zu 100 % genau. Jedes Mal, wenn es sagte, es habe eine versteckte Bibliothek gefunden, lag es richtig. Es gab keine Fehlalarme.
  • Sicherheit: Da es eine Simulation (symbolische Ausführung) verwendete und nicht den gefährlichen Code tatsächlich ausführte, konnte es diese kniffligen Programme sicher analysieren, ohne das Risiko, dass die Malware entkommt oder Schaden anrichtet.

Die Einschränkungen

Der Autor ist ehrlich darüber, was das Werkzeug noch nicht kann:

  • Es ist ein Detektiv, kein Zauberer: Es kann die versteckten Türen finden und die Pfade zeichnen, aber es kann komplexe Verschleierung (Durcheinanderbringen) nicht automatisch „rückgängig" machen, um den Code leicht lesbar zu machen. Das ist immer noch ein schwieriges Problem.
  • Plattformgrenzen: Es funktioniert derzeit gut für Linux-Systeme (insbesondere ELF-Dateien) auf bestimmten Computerchips, aber noch nicht für Windows oder andere Betriebssysteme.
  • Versteckte Flüsse: Es verfolgt Daten, die explizit bewegt werden, verpasst aber manchmal Daten, die auf subtile, indirekte Weise bewegt werden (wie durch komplexe mathematische Funktionen).

Zusammenfassung

Kurz gesagt, stellt dieses Papier eine neue Methode vor, um Software zu kartieren, die ihre Teile erst verbergen, bis sie ausgeführt wird. Durch die Kombination eines „Was-wäre-wenn"-Simulators mit einem intelligenten System, das versteckte Dateianfragen abfängt und auflöst, kann das Werkzeug eine vollständige Karte des Programms verhaltens zeichnen und Pfade aufdecken, die Sicherheitsanalysten zuvor unsichtbar waren. Es testete dies erfolgreich an 16 verschiedenen Szenarien und bewies, dass es versteckte Bibliotheken mit perfekter Genauigkeit finden kann.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →