
حساب شبيه بـ Imphash على ملفات Golang الثنائية
gimphash هي طريقة مقترحة لحساب ما يعادل imphash لملفات Go الثنائية. اسمها اختصار لـ Go-import-hash.
تحتوي ملفات Golang الثنائية على تبعياتها كجزء من الملف التنفيذي. تتضمن هذه التبعيات كلاً من حزم المكتبة القياسية والتبعيات الخارجية، ويمكن استخدامها، بشكل مماثل لـ imphash التقليدي، لتحديد مشروع Golang.
يمكن سرد التبعيات باستخدام pclntab الموجود في كل ملف Golang ثنائي (انظر أيضاً منشور المدونة من Mandiant). يحتوي pclntab على عدد من العناصر المثيرة للاهتمام للهندسة العكسية؛ بالنسبة لـ gimphash سنستخدم أسماء الدوال الموجودة فيه.
go. أو type. (مخرجات الترجمة، داخليات وقت التشغيل)vendor/، تجاهل هذا الجزء وكل ما قبله
(مثال: حوّل vendor/golang.org/x/text إلى golang.org/x/text)internal/runtimesyncsyscalltypetimeunicodereflectstrconv/ في اسم الدالة. إذا لم يتم العثور على /، استخدم البداية بدلاً من ذلك. ابتداءً من هذا الموضع، ابحث عن النقطة . التالية... إذا لم يتم العثور على .، استخدم كل ما بعد مؤشر / المحسوب في الخطوة السابقة.. أخرى داخل اسم الدالة الأساسي، تجاهل الدالة إذا كان أول حرف أبجدي رقمي بعد تلك النقطة حرفاً صغيراً.يحتوي هذا المستودع على كود إثبات المفهوم باللغات التالية:
يحتوي قسم الإصدارات على ملفات ثنائية مجمعة مسبقاً لنظامي Windows وLinux.
شغّل حاسبة Gimphash على ملف واحد
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe
شغّل حاسبة Gimphash على مستودع برمجيات خبيثة
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...
