Извлечение конфигурации QuasarRAT: методика, AES256 и декомпиляция
QuasarRAT — троянец удаленного доступа .NET (RAT), появившийся в 2014 году под именем xRAT и изначально позиционировавшийся как инструмент удаленного администрирования. Его открытая природа и компактность сделали проект привлекательным для модификаций злоумышленниками. Внимание текущего анализа сосредоточено на практическом извлечении зашифрованной конфигурации из двоичных файлов QuasarRAT и создании реплицируемого инструментария для аналитиков.
Ключевые тезисы
- QuasarRAT распространён в виде .NET-сборок, конфигурация часто хранится непосредственно в бинарнике и зашифрована.
- Часто используется криптография на основе AES256 с salt и IV, ключи формируются в статическом конструкторе целевого класса.
- Реалистичный рабочий набор аналитика включает инструменты декомпиляции (dnSpy, ILSpy), библиотеки для работы с PE/ELF, а также окружения типа Jupyter Notebook и Docker для воспроизводимости.
- Предложенный подход основан на последовательности статического анализа, поиска криптографического материала в коде и применении Python-криптографии для расшифровки строк конфигурации.
Где в бинарнике хранится конфигурация и почему её можно извлечь
В большинстве версий QuasarRAT конфигурация и криптографические примитивы обнаруживаются в пределах одной сборки: статические поля класса инициализируют ключи, salt и IV; затем эти значения используются для шифрования строк конфигурации. Из-за особенностей .NET и упрощённой упаковки многие такие значения остаются доступными после декомпиляции, даже если сборка частично запутана.
Необходимая среда и инструменты
- Декомпиляторы: dnSpy, ILSpy — для чтения IL-кода и поиска статических конструкторов/инициализаторов полей.
- Python: среда разработки и библиотеки криптографии (например, cryptography), а также утилиты для работы с бинарными файлами.
- Библиотеки для PE/ELF: чтобы извлекать разделы и данные из файлов, если это требуется.
- Jupyter Notebook + Docker: для портативного воспроизведения анализа и автоматизации экстрактора.
Пошаговая методика извлечения конфигурации
Процесс можно разделить на несколько этапов:
- Первичный обзор: загрузка образца в dnSpy/ILSpy, поиск классов, относящихся к конфигурации/криптографии.
- Определение криптопримитивов: поиск использования классов и методов типа Aes, RijndaelManaged, или явного упоминания AES256. Это даёт понимание алгоритма и режимов шифрования.
- Нахождение salt/IV/ключевого материала: анализ статического конструктора (static constructor) и инициализаторов полей для извлечения byte[] или строк, используемых как salt/IV/ключ.
- Связывание функций: выявление вызовов криптографических методов и проверка порядка параметров (key, salt, IV, режимы и т. п.).
- Реализация экстрактора: написание Python-скрипта, который повторяет алгоритм получения ключа (например, PBKDF2 с указанным salt) и применяет AES-деcryption к зашифрованным строкам, находящимся в бинарнике.
- Верификация результатов: проверка расшифрованных значений — настройки подключения (hosts), параметры установки, строки запуска, TLS/сертификаты и т. п.
Особенности реализации
- Часто ключ AES получают через PBKDF2 или аналогичную KDF с заданным salt — важно точно повторить процедуру (итерации, алгоритм хеша).
- Параметры IV и порядок чтения инициализаторов полей критичны: неправильный порядок приводит к некорректной расшифровке.
- В запутанных сборках часть кода может быть обфусцирована; тем не менее, если static constructor записывает константы в поля, их можно восстановить из IL-кода.
- Для извлечения строк часто достаточно прочитать бинарник и распарсить специализированные ресурсы/секции, если строки не упакованы дополнительно.
Практический пример: ключевые элементы конфигурации
Из незащищённых сборок QuasarRAT обычно удаётся получить следующие параметры:
- Параметры подключения: список hosts, задержка повторного подключения (reconnect delay).
- Параметры установки: имя установки, путь, флаги установки в систему (autostart).
- Функции безопасности: статический AES-ключ (или материалы для его получения), server certificates.
- Режим работы: automatic mode и прочие флаги поведения RAT.
Ограничения метода
Подход эффективен в большинстве типичных сценариев, но имеет ограничения:
- Обфускация и packers: если бинарник упакован или сильно обфусцирован (runtime unpacking, code virtualization), извлечение усложняется.
- Различия в криптографии: некоторые варианты QuasarRAT могут использовать альтернативные шифры или KDF, не учитываемые в базовой реализации экстрактора.
- Динамически генерируемые ключи/сети: если ключ формируется на основе runtime-данных, статический анализ может быть недостаточен.
Рекомендации для аналитиков
- Начинайте с декомпиляции: dnSpy и ILSpy дают быстрое представление о структуре сборки.
- Ищите static constructor и инициализаторы полей — там часто лежит ключевой материал.
- Используйте Docker + Jupyter Notebook для создания воспроизводимого пайплайна анализа и совместного использования экстрактора.
- Если бинарник упакован — сначала добейтесь распаковки (runtime или статическими средствами) перед извлечением конфигурации.
- Документируйте каждый шаг: последовательность чтения полей и параметры криптографии — критичны для корректной расшифровки.
Вывод
Методика извлечения конфигурации QuasarRAT, основанная на комбинированном использовании декомпиляции, анализа статических конструкторов и воспроизведении криптографических операций в Python, показывает устойчивую эффективность для большинства «типичных» образцов. Хотя она не покрывает все возможные варианты (сильная обфускация, нестандартные шифры, упаковка), предложенная структура — декомпиляция → идентификация криптоматериалов → повторение KDF/AES в Python — остаётся надёжным рабочим решением для аналитиков, сталкивающихся с этим RAT.
«Понимание того, где и как QuasarRAT хранит ключи и параметры, позволяет восстановить поведение вредоносного ПО и выявить инфраструктуру злоумышленников» — практический вывод, вытекающий из проведённого анализа.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.


