
Imphash-ähnliche Berechnung für Golang-Binaries
gimphash ist eine vorgeschlagene Methode, um ein imphash-Äquivalent für Go-Binaries zu berechnen. Der Name steht für Go-import-hash.
Golang-Binaries enthalten ihre Abhängigkeiten als Teil der ausführbaren Datei. Diese Abhängigkeiten umfassen sowohl Pakete der Standardbibliothek als auch Drittanbieter-Abhängigkeiten und können analog zu einem klassischen Imphash verwendet werden, um ein Golang-Projekt zu identifizieren.
Die Abhängigkeiten können mithilfe der pclntab aufgelistet werden, die Teil jedes Golang-Binaries ist (siehe auch diesen Blogbeitrag von Mandiant). Die pclntab enthält eine Reihe interessanter Elemente für das Reverse Engineering; für den gimphash verwenden wir die darin enthaltenen Funktionsnamen.
go. oder type. beginnen (Kompilierungsartefakte, Laufzeitinterna)vendor/ enthält, verwerfe diesen Teilstring und alles davor
(z.B. transformiere vendor/golang.org/x/text zu golang.org/x/text)internal/ enthaltenruntimesyncsyscalltypetimeunicodereflectstrconv/ im Funktionsnamen. Wenn kein / gefunden wird, verwende stattdessen den Anfang. Beginnend an dieser Position, finde den nächsten .... Wenn kein . gefunden wurde, verwende alles nach dem im vorherigen Schritt berechneten /-Index.. im Basis-Funktionsnamen vorhanden ist, ignoriere die Funktion, wenn das erste alphanumerische Zeichen nach diesem . ein Kleinbuchstabe ist.Dieses Repository enthält Proof-of-Concept-Code in den folgenden Sprachen:
Der Release-Abschnitt enthält vorkompilierte Binaries für Windows und Linux.
Führe den Gimphash-Rechner auf einer einzelnen Datei aus
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe
Führe den Gimphash-Rechner auf einem Malware-Repository aus
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...
