
Calcul de type Imphash sur les binaires Golang
gimphash est une méthode proposée pour calculer un équivalent d'imphash pour les binaires Go. Son nom signifie Go-import-hash.
Les binaires Golang contiennent leurs dépendances en tant que partie de l'exécutable. Ces dépendances incluent à la fois les paquets de la bibliothèque standard et les dépendances tierces, et peuvent être utilisées, de manière analogue à un imphash classique, pour identifier un projet Golang.
Les dépendances peuvent être listées à l'aide de la pclntab qui fait partie de chaque binaire Golang (voir aussi cet article de blog de Mandiant). La pclntab contient un certain nombre d'éléments intéressants pour la rétro-ingénierie ; pour le gimphash, nous utiliserons les noms de fonctions qui y sont contenus.
go. ou type. (artefacts de compilation, internes du runtime)vendor/, supprimer cette sous-chaîne et tout ce qui la précède
(par ex. transformer vendor/golang.org/x/text en golang.org/x/text)internal/runtimesyncsyscalltypetimeunicodereflectstrconv/ dans le nom de la fonction. Si aucun / n'est trouvé, utiliser le début à la place. À partir de cette position, trouver le . suivant... Si aucun . n'a été trouvé, utiliser tout ce qui suit l'index / calculé à l'étape précédente.. existe dans le nom de fonction de base, ignorer la fonction si le premier caractère alphanumérique après ce . est une lettre minuscule.Ce dépôt contient un code de preuve de concept dans les langages suivants :
La section release contient des binaires précompilés pour Windows et Linux.
Exécuter le calculateur Gimphash sur un seul fichier
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe
Exécuter le calculateur Gimphash sur un dépôt de malwares
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...
