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

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

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

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

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

Категории

Все категории
Loading categories
rhabdomancer — Ассистент для исследования уязвимостей, который находит вызовы потенциально небезопасных функций API в бинарном файле. | Kitploit
Инструменты/GitHubGitHub/0xdea/rhabdomancer
Статический анализАнализ уязвимостейОбратная инженерияАнализ Бинарных Файлов
GitHub0xdea/rhabdomancer

rhabdomancer

Ассистент для исследования уязвимостей, который находит вызовы потенциально небезопасных функций API в бинарном файле.

Репозиторий
13115291 день назадПроверено Kitploit

Популярное

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

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

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

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

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

rhabdomancer

build doc

"Дорога к эксплуатируемым уязвимостям вымощена неэксплуатируемыми уязвимостями."

-- Mark Dowd

Rhabdomancer — это молниеносно быстрый headless-плагин для IDA, который находит вызовы потенциально небезопасных API-функций в бинарном файле. Аудиторы могут выполнить обратную трассировку от этих кандидатных точек, чтобы найти пути, позволяющие получить доступ к недоверенному вводу.

Возможности

  • Молниеносно быстрый headless-опыт благодаря IDA 9.x и Rust-биндингам idalib-rs.
  • Поддержка бинарных целей на C/C++, скомпилированных для любой архитектуры, реализованной в IDA.
  • Местоположения вызовов плохих API-функций выводятся в stdout и помечаются в IDB.
    • Местоположения вызовов в библиотечном коде, распознанном IDA (например, статически слинкованный рантайм, сопоставленный FLIRT-сигнатурами), помечаются как (lib).
    • Вызовы через заглушки (например, записи .plt в ELF-бинарниках или импортные заглушки PE- и Mach-O-бинарников, перечисляемые как thunks) трассируются обратно к их вызывающим.
    • В ELF-бинарниках функция намеренно перечисляется дважды с одинаковыми местоположениями вызовов: один раз как её .plt-заглушка (помеченная как thunk) и один раз как её импорт. Каждое местоположение вызова помечается в IDB только один раз.
  • Известные плохие API-функции сгруппированы по уровням опасности, чтобы помочь расставить приоритеты в аудиторской работе.
    • [BAD 0] Высокий приоритет — функции, которые обычно считаются небезопасными.
    • [BAD 1] Средний приоритет — интересные функции, которые следует проверить на небезопасные сценарии использования.
    • [BAD 2] Низкий приоритет — пути кода, связанные с этими функциями, следует тщательно проверять.
  • Список известных плохих API-функций встроен и может быть легко настроен с помощью конфигурационного файла на основе conf/rhabdomancer.toml.
  • Имена функций сопоставляются без следующих украшений: ведущих точек и подчёркиваний (например, _strcpy), префиксов библиотечных псевдонимов (например, __o_malloc в Universal CRT, __libc_system и __GI___snprintf в glibc) и, только для заглушек и подобных псевдонимов, числового суффикса, который IDA добавляет к уже используемым именам (например, memset_0).

[!NOTE] Укреплённые функции (например, __strcpy_chk, используемая вместо strcpy при сборке с _FORTIFY_SOURCE) намеренно не сопоставляются, поскольку они являются проверяемыми вариантами перечисленных функций. Чтобы также помечать их вызовы, добавьте их явно в пользовательскую конфигурацию (например, "__strcpy_chk" с тем же приоритетом, что и strcpy).

Статьи

  • https://hex-rays.com/blog/streamlining-vulnerability-research-idalib-rust-bindings
  • https://hnsecurity.it/blog/streamlining-vulnerability-research-with-ida-pro-and-rust

См. также

  • https://github.com/0xdea/ghidra-scripts/blob/main/Rhabdomancer.java
  • https://docs.hex-rays.com/release-notes/9_0#headless-processing-with-idalib
  • https://github.com/idalib-rs/idalib
  • https://books.google.it/books/about/The_Art_of_Software_Security_Assessment.html

Установка

Самый простой способ получить последнюю версию — через crates.io:

  1. Скачайте, установите и настройте IDA (см. https://hex-rays.com/ida-pro).
  2. Установите LLVM/Clang (см. https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. В Linux/macOS установка выполняется следующим образом:
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    
    В Windows вместо этого используйте следующие команды:
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo install rhabdomancer --locked
    

Компиляция

В качестве альтернативы можно собрать из исходного кода:

  1. Скачайте, установите и настройте IDA (см. https://hex-rays.com/ida-pro).
  2. Установите LLVM/Clang (см. https://rust-lang.github.io/rust-bindgen/requirements.html).
  3. В Linux/macOS компиляция выполняется следующим образом:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    export IDADIR=/path/to/ida # if not set, the build script will check common locations
    cargo build --release --locked
    
    В Windows вместо этого используйте следующие команды:
    git clone --depth 1 https://github.com/0xdea/rhabdomancer
    cd rhabdomancer
    $env:LIBCLANG_PATH="\path\to\clang+llvm\bin"
    $env:PATH="\path\to\ida;$env:PATH"
    $env:IDADIR="\path\to\ida" # if not set, the build script will check common locations
    cargo build --release --locked
    

Использование

  1. Убедитесь, что IDA правильно настроена и имеет действующую лицензию.
  2. При необходимости настройте список известных опасных API-функций: скопируйте conf/rhabdomancer.toml (выберите тег, соответствующий вашей установленной версии, для получения точного встроенного списка), отредактируйте копию и задайте переменную окружения RHABDOMANCER_CONFIG с путём к ней. Файл должен определять массивы high, medium и low, и никаких других ключей. В противном случае используется встроенный список, который встраивается в бинарный файл во время сборки из conf/rhabdomancer.toml (редактирование этого файла требует пересборки).
  3. Убедитесь, что переменная окружения IDADIR задана, если ваша установка IDA находится в нестандартном месте.
  4. Запустите следующим образом:
    rhabdomancer <binary_file>
    
    Любой существующий файл базы данных .i64 будет обновлён; в противном случае будет создан новый файл базы данных.
  5. Откройте полученный файл базы данных .i64 в IDA.
  6. Выберите View > Open subviews > Bookmarks
  7. Наслаждайтесь результатами, удобно собранными в окне IDA.

[!NOTE] Rhabdomancer также добавляет комментарии в отмеченных местах вызовов. И закладки, и комментарии помечаются как [BAD n] <function_name>, где n — уровень приоритета (0 = высокий, 1 = средний, 2 = низкий), чтобы скрипты могли искать их в базах данных IDA. Этот формат стабилен между релизами.

Совместимость

Официально поддерживается только последний релиз IDA, но более старые версии также могут работать. В следующей таблице приведены последние совместимые релизы для каждой версии IDA:

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