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

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

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

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

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

Категории

Все категории
Loading categories
AlphaGolang — IDApython скрипты для анализа Golang бинарных файлов | Kitploit
Инструменты/GitHubGitHub/sentinelabs/alphagolang
Статический анализОбратная инженерияОтладчикиАнализ вредоносных программАнализ Бинарных Файлов
GitHubsentinelabs/alphagolang

AlphaGolang

IDApython скрипты для анализа Golang бинарных файлов

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

Популярное

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

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

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

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

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

AlphaGolang

от Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

Описание:

AlphaGolang — это набор IDAPython-скриптов, помогающих специалистам по реверс-инжинирингу вредоносного ПО осваивать бинарные файлы Go. Идея заключается в разбиении скриптов на конкретные шаги, что позволяет избежать хрупких монолитных скриптов и имитирует методологию, которую аналитик может применить при работе с Go-бинарником.

Скрипты выпускаются под лицензией GPL (в честь оригинального GolangLoaderAssist от Tim Strazzere, который мы переработали и обновили для Python3, спасибо Tim :) ). Вклад приветствуется и поощряется!

Требования: IDA Pro (желательно v7.6+) и Python3 (фу) Первые два шага (recreate_pclntab и function_discovery_and_renaming) будут работать на IDA v7.5-, но скрипты, идущие дальше, требуют IDAv7.6+. Новые версии — идеальная цель для будущих скриптов.

Оригинальная ссылка: Доклад на Mandiant Cyber Defense Summit 2021 (видео ожидается)

AlphaGolang Методология анализа

  • Шаг 0: YARA-правило для идентификации Go-бинарников (PE/ELF/MachO)

    • identify_go_binaries.yara
      • Простая проверка заголовка + регулярное выражение для строки Go build ID.
      • Возможно, стоит улучшить диапазон длины build ID.
  • Шаг 1: Восстановление таблицы pcln

    • recreate_pclntab.py (совместимо с IDA v7.5-)
      • Восстанавливает секцию gopclntab на основе эвристик
      • В основном полезно для IDA v7.5-
  • Шаг 2: Обнаружение функций путём обхода таблицы pcln и присвоение имён всем

    • function_renaming.py (совместимо с IDA v7.5-)
      • Выделен из golang loader assist
      • Перебором находит отсутствующие функции на основе таблицы pcln
      • Исправлены некоторые проблемы очистки имён функций при переходе на Python3
      • Переработан для улучшения поддержки Go v1.18 на основе Panchan от Akamai. Спасибо Alex (CycleOfTheAbsurd).
  • Шаг 3: Выявление пользовательских функций

    • categorize_go_folders.py (требуется IDA v7.6+)
      • Автоматически распределяет функции по папкам
      • Требует IDAv7.6+ и включённого режима 'show folders' в представлении функций
      • ОБНОВЛЕНИЕ 16.05.2022: Исправлен конфликт с сортировкой папок в IDA v7.7
      • Настоятельно рекомендуется откатить метаданные из Lumina перед запуском этого плагина.
  • Шаг 4: Исправление строковых ссылок

    • fix_string_cast.py
      • Выделен из golang loader assist
      • Добавлена логика для удаления ранее существовавших строковых блоков перед определением новой строки
      • Новые проверки корректности делают его гораздо эффективнее
  • Шаг 5: Извлечение информации о типах (от Ivan Kwiatkowski)

    • extract_types.py
      • Комментирует аргументы всех вызовов newobject, makechan и т.д.
      • Применяет правильный C-тип к этим объектам и переименовывает их
      • Получает читаемое имя и добавляет его как комментарий
  • Ожидающие исправления и возможности для вклада:

    • fix_string_cast.py - Всё ещё требует рефакторинга + улучшенных эвристик загрузки строк - Может привести к зависанию в больших бинарниках. - Отсутствуют некоторые механизмы косвенной загрузки строк.
    • extract_types.py
      • В настоящее время работает с PE и Mach-O файлами, ища жёстко заданные имена секций .rdata или __rodata.
      • Требуется правильная реализация для размеров, закодированных с помощью varint

    Следующие шаги:

    • Отслеживание строковых ссылок от пользовательских функций
    • Автоматическое создание YARA-сигнатур на основе пользовательских функций
    • Генерация вывода Hex-Rays псевдокода для пользовательских функций
    • Автоматическая установка точек останова для динамического анализа аргументов
    • ???

    Благодарности:

    • Tim Strazzere за выпуск оригинального golang_loader_assist
    • Milan Bohacek (Avast Software s.r.o.) за неоценимую помощь в разборе API idatree.
    • Joakim Kennedy (Intezer)
    • Ivan Kwiatkowski (Kaspersky GReAT) за шаг 5.
    • Igor Kuznetsov (Kaspersky GReAT)
    • Alex (он же CycleOfTheAbsurd) из ESET за рефакторинг Шага 2 для поддержки Go v1.18.
    Скачать инструмент