Специалисты по кибербезопасности подробно разобрали принцип работы утилиты Bincrypter, которая активно используется злоумышленниками для обфускации бинарных файлов. Этот инструмент, написанный на bash, позволяет скрывать вредоносную нагрузку, затрудняя её обнаружение системами файлового детекта. Эксперты не только проанализировали механизмы обфускации, но и создали открытый инструмент для автоматической деобфускации.
Описание
Архитектура Bincrypter основана на генерации bash-скрипта, состоящего из трёх ключевых сегментов. Первый сегмент, shebang ("#!/bin/sh"), указывает на интерпретатор. Второй, init, содержит директивы для декодирования и выполнения так называемого hook_stub - скрипта-расшифровщика. Третий сегмент, payload, представляет собой непосредственно зашифрованный текст. Инструмент предоставляет злоумышленникам гибкие настройки, включая режим 'lock' для привязки скрипта к параметрам целевой системы и возможность задания переменных окружения, таких как PASSWORD для шифрования.
Процесс обфускации начинается с формирования скрипта, где критически важная команда "eval", ответственная за запуск декодера, маскируется среди «мусорных» данных. Эти данные представлены непечатными символами, которые генерируются с помощью чтения "/dev/urandom". Последовательности обфускации, начинающиеся и заканчивающиеся символом «"», внедряются в код, но не влияют на его логику при выполнении в bash. Основная нагрузка шифруется с использованием AES-256-CBC, а ключ формируется из переменных S и P. Кроме того, файл дополнительно сжимается с помощью gzip, а внутри зашифрованного блока производится замена служебных последовательностей байтов (например, «B3» на символ переноса строки) для совместимости.
Для деобфускации необходимо последовательно обработать все слои. Сначала из скрипта извлекаются закодированные переменные P, S и C, последняя из которых содержит зашифрованное смещение (R) до полезной нагрузки в расшифрованном потоке. Ключ для расшифровки этой переменной формируется как "C-${S}-${_P}". После получения смещения R расшифровывается основной блок payload с помощью ключа "${S}-${_P}", производится обратная замена байтов, и из полученного потока по смещению R извлекается gzip-архив с исходным исполняемым файлом.
Автоматизировать этот многоэтапный процесс позволяет открытая утилита Bindecrypter. Она выполняет все шаги: от очистки обфусцированного кода от непечатных символов и «мусорных» вставок до финальной расшифровки и распаковки оригинального бинарного файла. Это значительно ускоряет анализ подозрительных образцов, обфусцированных с помощью Bincrypter.
Несмотря на относительно простую реализацию, Bincrypter остаётся эффективным инструментом в арсенале злоумышленников. Сочетание обфускации строк, шифрования, нестандартного кодирования и компрессии существенно снижает вероятность статического обнаружения файла антивирусными решениями. Фактически, утилита обеспечивает баланс между простотой использования и достаточным уровнем скрытности, что объясняет её периодическое появление в реальных атаках. Предоставленные специалистами средства анализа и детекции позволяют противостоять этой угрозе, повышая прозрачность для исследователей безопасности.
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rule nix_bincrypter_a_obf { meta: description = "Binary packed with bincrypter" author = "4rays" strings: $beginning = { 23 21 2F 62 69 6E 2F 73 68 0A 5F 3D 27 } $dummy1 = { 60 3A 7C 7C 07 60 } $dummy2 = { 60 23 08 60 } $dummy3 = { 60 21 20 3A 26 26 08 23 60 } // from new versions $perl = "LANG=C perl" ascii $dd = "dd bs=" ascii condition: $beginning at 0 and ( $perl or $dd ) and 2 of ($dummy*) } |