Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
astaroth-deobfuscator — IDA-Python-Skript zum Deobfuskieren der Astaroth/Guildma-Injector-DLL | Kitploit
Tools/GitHubGitHub/dodo-sec/astaroth-deobfuscator
Statische AnalyseReverse EngineeringMalware-AnalyseBinäranalyse
GitHubdodo-sec/astaroth-deobfuscator

astaroth-deobfuscator

IDA-Python-Skript zum Deobfuskieren der Astaroth/Guildma-Injector-DLL

Repository anzeigen
814vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

astaroth-deobfuscator

IDA-Python-Skript zum Deobfuskieren der Astaroth/Guildma-Injektor-DLL

Als ich versuchte, die Injektor-DLL aus einer aktuellen Astaroth/Guildma-Kampagne zu analysieren (Dank an diesen Tagebucheintrag von SANS ISC), stieß ich auf einen wirklich nervigen Versuch der Verschleierung.

Eine Funktion (die ich auf dem Bild unten time_waster_3000 genannt habe) wird über 1.000-mal (!!!) in der gesamten DLL aufgerufen. Diese Funktion nimmt sechs fest codierte Zeichenfolgen als Argumente entgegen, zusammen mit einem zufälligen word. Die Funktion selbst ist ein Kaninchenbau voller Arithmetik, die, soweit ich das beurteilen konnte, keinen praktischen Zweck erfüllt (abgesehen davon, dass sie die Zeit eines Reverse Engineers verschwendet). So sieht der DLLEntry mit diesen nervigen Aufrufen aus:

DLL-Einstiegspunkt vor der Deobfuskierung

Der Zweck dieses IDA-Python-Skripts ist es, alle Codeblöcke auszublenden, die einen Aufruf dieser Junk-Funktion sowie deren Argumente betreffen. So sieht der DLLEntry aus, nachdem das Skript ausgeführt wurde:

DLL-Einstiegspunkt nach der Deobfuskierung

Wichtige Hinweise

  • Das Skript funktioniert, indem es einen Aufruf der Padding-Funktion findet, der im Skript durch call sub_CHANGEME dargestellt wird. Daher müssen Sie ihn im Skript mit dem Funktionsnamen umbenennen, der in der von Ihnen untersuchten Probe gefunden wurde. Zum Beispiel: Ändern von idc.print_operand(x, 0) == 'sub_CHANGEME' zu idc.print_operand(x, 0) == 'sub_431000'.

  • Ich habe mich dafür entschieden, über die call sub_CHANGEME-Anweisung zu iterieren, anstatt über Argument-Pushes. Der Grund dafür ist einfach: Die fest codierten Zeichenfolgen sind an mehreren Stellen im Binärprogramm vorhanden; als ich also versuchte, nach Push-Anweisungen mit den Offsets dieser Zeichenfolgen zu suchen, fand das Skript nicht alle Vorkommen dieser Junk-Daten.

  • Das Skript funktionierte bisher so, dass es jede Instanz der Argumentübergabe und des Aufrufs der Padding-Funktion als einen zusammengeklappten Block verbarg. Da die Funktion mehrfach hintereinander aufgerufen wird, führte das zu großen leeren Bereichen in der Disassembly-Ansicht. Ich habe es aktualisiert, um aufeinanderfolgende Instanzen dieses Paddings in einem einzigen zusammengeklappten Block zu verbergen, was die Lesbarkeit wirklich verbessert.

Tool herunterladen