Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
gimphash — Вычисление imphash-подобных значений для бинарных файлов Golang | Kitploit
Инструменты/GitHubGitHub/nextronsystems/gimphash
Анализ хэшейОбратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubnextronsystems/gimphash

gimphash

Вычисление imphash-подобных значений для бинарных файлов Golang

Репозиторий
501304 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

gimphash

gimphash — это предлагаемый метод вычисления аналога imphash для Go бинарных файлов. Его название расшифровывается как Go-import-hash.

Бинарные файлы Golang содержат свои зависимости как часть исполняемого файла. Эти зависимости включают как пакеты стандартной библиотеки, так и сторонние зависимости, и могут использоваться, по аналогии с классическим imphash, для идентификации проекта на Golang.

Зависимости можно перечислить с помощью pclntab, который является частью каждого бинарного файла Golang (см. также этот пост в блоге от Mandiant). pclntab содержит ряд интересных элементов для реверс-инжиниринга; для gimphash мы будем использовать имена функций, которые там содержатся.

Вычисление

  1. Найдите pclntab в бинарном файле Golang
  2. Перечислите функции Golang, используя functab внутри pclntab, и переберите их имена:
    1. Игнорируйте имена функций, начинающиеся с go. или type. (артефакты компиляции, внутренности рантайма)
    2. Если имя функции содержит vendor/, отбросьте эту подстроку и всё, что до неё (например, преобразуйте vendor/golang.org/x/text в golang.org/x/text)
    3. Игнорируйте имена функций, содержащие internal/
    4. Игнорируйте имена функций, которые начинаются с одного из следующих пакетов стандартной библиотеки:
      • runtime
      • sync
      • syscall
      • type
      • time
      • unicode
      • reflect
      • strconv
    5. Игнорируйте имена функций, которые не являются публичными или у которых ресиверы не являются публичными. Для этого:
      1. Найдите последний / в имени функции. Если / не найден, используйте начало вместо этого. Начиная с этой позиции, найдите следующий ..
      2. Извлеките базовое имя функции как всё, что после этой .. Если . не найден, используйте всё, что после индекса /, вычисленного на предыдущем шаге.
      3. Игнорируйте функцию, если первый алфавитно-цифровой символ в базовом имени функции является строчной буквой.
      4. Если в базовом имени функции есть ещё одна ., игнорируйте функцию, если первый алфавитно-цифровой символ после этой . является строчной буквой.
    6. Сохраните полученное имя, если оно не было проигнорировано ранее, в упорядоченный список
  3. Вычислите хеш SHA-256 по конкатенированным именам (без разделителя)

Реализации Proof of Concept

Этот репозиторий содержит код proof-of-concept на следующих языках:

  • C
  • Go

В разделе release содержатся готовые бинарные файлы для 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
...

Пример кластеризации

Screenshot 2022-07-02 at 10 11 38

Скачать инструмент