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
AlphaGolang — IDApython-Skripte zur Analyse von Golang-Binärdateien | Kitploit
Tools/GitHubGitHub/sentinelabs/alphagolang
Statische AnalyseReverse EngineeringDebuggerMalware-AnalyseBinäranalyse
GitHubsentinelabs/alphagolang

AlphaGolang

IDApython-Skripte zur Analyse von Golang-Binärdateien

Repository anzeigen
67273vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

AlphaGolang

von Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

Beschreibung:

AlphaGolang ist eine Sammlung von IDAPython-Skripten, die Malware-Reverse-Ingenieuren helfen, Go-Binärdateien zu meistern. Die Idee ist, die Skripte in konkrete Schritte zu unterteilen, um spröde monolithische Skripte zu vermeiden und die Methodik nachzuahmen, die ein Analyst beim Umgang mit einer Go-Binärdatei befolgen würde.

Die Skripte werden unter der GPL-Lizenz veröffentlicht (zu Ehren von Tim Strazzeres originalem GolangLoaderAssist, den wir umgestaltet und für Python3 aktualisiert haben, Props an Tim :) ). Beiträge sind willkommen und erwünscht!

Anforderungen: IDA Pro (idealerweise v7.6+) und Python3 (igitt) Die ersten beiden Schritte (recreate_pclntab und function_discovery_and_renaming) funktionieren mit IDA v7.5-, aber Skripte darüber hinaus benötigen IDAv7.6+. Neuere Versionen sind das ideale Ziel für neuere Skripte in Zukunft.

Originalreferenz: Vortrag auf dem Mandiant Cyber Defense Summit 2021 (Video ausstehend)

AlphaGolang Analysemethodik

  • Schritt 0: YARA-Regel zur Identifizierung von Go-Binärdateien (PE/ELF/MachO)

    • identify_go_binaries.yara
      • Einfacher Header-Check + Regex für Go-Build-ID-String.
      • Könnte den Bereich der Build-ID-Länge verbessern.
  • Schritt 1: pcln-Tabelle neu erstellen

    • recreate_pclntab.py (kompatibel mit IDA v7.5-)
      • Erstellt den gopclntab-Abschnitt aus Heuristiken
      • Hauptsächlich nützlich für IDA v7.5-
  • Schritt 2: Funktionen durch Durchlaufen der pcln-Tabelle finden und allen Namen hinzufügen

    • function_renaming.py (kompatibel mit IDA v7.5-)
      • Aus golang loader assist ausgegliedert
      • Erzwingt die Entdeckung fehlender Funktionen basierend auf der pcln-Tabelle
      • Einige Probleme mit der Bereinigung von Funktionsnamen aus dem py3-Übergang behoben
      • Umgestaltet, um Verbesserungen für Go v1.18 basierend auf Akamais Panchan hinzuzufügen! Dank an Alex (CycleOfTheAbsurd).
  • Schritt 3: Benutzergenerierte Funktionen sichtbar machen

    • categorize_go_folders.py (Erfordert IDA v7.6+)
      • Kategorisiert Funktionen automatisch in Ordner
      • Erfordert IDAv7.6 + 'Ordner anzeigen' muss in der Funktionsansicht aktiviert sein
      • UPDATE 05.16.2022: Konflikt mit IDA v7.7-Ordnersortierung behoben
      • Es wird dringend empfohlen, Metadaten von Lumina zurückzusetzen, bevor dieses Plugin ausgeführt wird.
  • Schritt 4: String-Referenzen korrigieren

    • fix_string_cast.py
      • Aus golang loader assist ausgegliedert
      • Logik hinzugefügt, um zuvor vorhandene String-Blobs zu undefinieren, bevor neue Strings definiert werden
      • Neue Plausibilitätsprüfungen machen es weitaus effektiver
  • Schritt 5: Typinformationen extrahieren (von Ivan Kwiatkowski)

    • extract_types.py
      • Kommentiert die Argumente aller Aufrufe von newobject, makechan usw.
      • Wendet den korrekten C-Typ auf diese Objekte an und benennt sie um
      • Ermittelt den lesbaren Namen und fügt ihn als Kommentar hinzu

Ausstehende Korrekturen und Raum für Beiträge:

  • fix_string_cast.py - Benötigt noch Umgestaltung + bessere String-Ladeheuristiken - Kann bei massiven Binärdateien zu einem Einfrieren führen. - Fehlende einige indirekte String-Lademechanismen.
  • extract_types.py
    • Funktioniert derzeit mit PE- und MachO-Dateien, indem nach den hartcodierten Abschnittsnamen .rdata oder __rodata gesucht wird.
    • Eine ordnungsgemäße Überprüfung / Implementierung für varint-kodierte Größen ist erforderlich

Nächste Schritte:

  • String-Referenzen von benutzergenerierten Funktionen verfolgen
  • Automatisch YARA-Signaturen basierend auf benutzergenerierten Funktionen generieren
  • Hex-Rays-Pseudocode-Ausgabe für benutzergenerierte Funktionen generieren
  • Automatisch Haltepunkte für dynamische Analyse von Argumenten setzen
  • ???

Dank an:

  • Tim Strazzere für die Veröffentlichung des originals golang_loader_assist
  • Milan Bohacek (Avast Software s.r.o.) für seine unschätzbare Hilfe bei der Entschlüsselung der idatree-API.
  • Joakim Kennedy (Intezer)
  • Ivan Kwiatkowski (Kaspersky GReAT) für Schritt 5.
  • Igor Kuznetsov (Kaspersky GReAT)
  • Alex (a.k.a. CycleOfTheAbsurd) von ESET für die Umgestaltung von Schritt 2 für Go v1.18-Unterstützung.
Tool herunterladen