
Плагин для поиска хэшей через API HashDB для IDA Pro
Плагин для поиска хэшированных строк вредоносного ПО в IDA Pro. Этот плагин подключается к сервису поиска HashDB от OALABS HashDB Lookup Service.
База данных хэш-алгоритмов является открытым исходным кодом, и новые алгоритмы можно добавлять на GitHub здесь. Pull-запросы в основном автоматизированы, и если наши автоматические тесты проходят, новый алгоритм становится доступным в HashDB в течение нескольких минут.
HashDB можно использовать для поиска строк, которые были захэшированы во вредоносном ПО, щелкнув правой кнопкой мыши по константе хэша в окне дизассемблера IDA и запустив клиент HashDB Lookup.
Перед использованием плагина для поиска хэшей необходимо настроить параметры HashDB. Окно настроек можно открыть из меню плагинов Edit->Plugins->HashDB.
Нажмите Refresh Algorithms, чтобы получить список поддерживаемых алгоритмов хэширования из API HashDB, затем выберите алгоритм, используемый в анализируемом вредоносном ПО.
Также есть возможность включить XOR для каждого значения хэша, так как это распространенный метод, используемый авторами вредоносного ПО для дополнительного запутывания хэшей.
URL API по умолчанию для сервиса поиска HashDB: https://hashdb.openanalysis.net/. Если вы используете собственный внутренний сервер, этот URL можно изменить, указав адрес вашего сервера.
Когда HashDB идентифицирует новый хэш, хэш и связанная с ним строка добавляются в перечисление в IDA. Затем это перечисление можно использовать для преобразования констант хэшей в IDA в соответствующие имена перечисления. Имя перечисления можно настроить в настройках на случай конфликта с существующим перечислением.
После настройки параметров плагина вы можете щелкнуть правой кнопкой мыши по любой константе в окне дизассемблера IDA или псевдокода (Hex-Rays) и выполнить поиск константы как хэша. В контекстном меню также есть возможность быстро задать значение XOR при необходимости.
Если хэш является частью модуля, появится запрос с предложением импортировать все хэши из этого модуля. Это быстрый способ массового получения хэшей. Например, если один из идентифицированных хэшей — Sleep из модуля kernel32, HashDB может импортировать все хэшированные экспорты из kernel32.
После разрешения хэша (или массового импорта модуля) HashDB сканирует текущую функцию и преобразует каждую соответствующую константу в имя перечисления — для операндов 0–2 с использованием 32-битной маски в качестве запасного варианта для значений со знаком. Окна дизассемблера и Hex-Rays обновляются автоматически. Уже импортированные модули кэшируются на время сессии, поэтому вам не будет повторно предложено импортировать kernel32 (и т.д.) при каждом новом хэше.
HashDB также включает базовый поиск алгоритма, который пытается определить алгоритм хэширования на основе значения хэша. Поиск вернет все алгоритмы, содержащие данное значение хэша; аналитик должен решить, какой алгоритм (если таковой имеется) является правильным. Чтобы использовать эту функцию, щелкните правой кнопкой мыши по константе хэша и выберите HashDB Hunt Algorithm.
Все алгоритмы, содержащие этот хэш, будут отображены в окне выбора. Окно выбора можно использовать для непосредственного выбора алгоритма для использования HashDB. При выборе Cancel алгоритм не будет выбран.
Вместо разрешения API-хэшей по отдельности (в коде) некоторые разработчики вредоносного ПО создают блок хэшей импорта в памяти. Затем все эти хэши разрешаются в одной функции, создавая динамическую таблицу импорта адресов, на которую впоследствии ссылаются в коде. В таких случаях можно использовать функцию HashDB Scan IAT.
Просто выделите блок хэшей импорта, щелкните правой кнопкой мыши и выберите HashDB Scan IAT. HashDB попытается разрешить каждый отдельный целочисленный тип (DWORD/QWORD) в выбранном диапазоне.
HashDB требует модуль python requests. Установите его из командной строки вне IDA с помощью pip install requests.
Затем вы можете установить плагин одним из двух способов:
hashdb.py в каталог plugins вашей IDA.Плагин HashDB рассчитан на IDA 7.5+ (включая IDA 9.0) с Python 3 и не является обратно совместимым.