Реверсинг с помощью Remnux: переборщики

Некоторое время назад я написал статью, посвященную использованию дистрибутива Remnux для задач реверс инжиниринга. В этой статье мы посмотрим еще несколько инструментов, которые входят в состав данного дистрибутива.

Для того, чтобы затруднить анализ вредоносных файлов злоумышленники часто используют различные алгоритмы шифрования. При этом могут использовать как достаточно сложные (промышленные) алгоритмы шифрования, так и простые побитовые операции, такие как циклические сдвиги ROL/ROR и XOR по однобайтовому ключу. Вскрыть сложное шифрование с помощью  инструментов автоматизации вряд ли возможно, а вот попробовать подобрать ключ для однобайтовой операции вполне возможно.

И в этом нам поможет REMnux. В состав дистрибутива входит утилита XORSearch. Эта программа предназначена для поиска заданной строки в двоичном файле с кодировкой XOR, ROL, ROT или SHIFT. Двоичный файл с кодировкой XOR — это файл, в котором некоторые (или все) байты были преобразованы в XOR с постоянным значением (ключом). Файл, закодированный ROL (или ROR), имеет свои байты, повернутые на определенное количество бит (ключ).

В файле, закодированном ROT, буквенные символы (A-Z и a-z) повернуты на определенное количество позиций.

41f0a36b8ca23b724087acd95e3134db.png

Файл, закодированный ROL, имеет свои байты, сдвинутые влево на определенное количество битов (ключ): все биты первого байта сдвигаются влево.

XOR и кодировка ROL/ROR используется разработчиками вредоносных программ как для сокрытия всего кода, так и для запутывания анализа отдельных строк, таких как URL-адреса. Представим ситуацию, когда нам известны несколько URL, к которым обращается анализируемый вредонос. Допустим, мы перехватили запросы к этим ресурсам с помощью Wireshark.

XORSearch

Если эти URL неизменны, то можно предположить, что в коде вредоноса жестко зашиты строки с этими URL. С помощью XORSearch мы можем попробовать подобрать ключ шифрования, указав ему искать заданную текстовую строку.

В процессе перебора утилита XORSearch будет подставлять все байты для операции XOR (от 0 до 255), ROL (от 1 до 7), ROT (от 1 до 25) и SHIFT (от 1 до 7) при поиске. Также она проверит добавление констант к ASCII кодам искомых символов (операция ADD).

Однако, XORSearch выполняет атаку грубой силы не только с использованием 8-битных ключей и ключей меньшего размера. Атака перебора с использованием 32-битного ключа заняла бы слишком много времени. Параметр -k предписывает XORSearch выполнить 32-битную атаку по словарю вместо 8-битной атаки грубой силой. Словарь извлекается из самого файла: предполагается, что 32-разрядный ключ находится внутри файла в виде последовательности из 4 последовательных байт (пробуются как MSB, так и LSB). Ключ 0×00000000 исключен.

Если строка поиска найдена, XORSearch будет печатать ее до тех пор, пока не встретится 0 (нулевой байт) или пока не будут напечатаны 50 символов, которые всегда будут первыми. 50 — это значение по умолчанию, его можно изменить с помощью опции -l. Непечатаемые символы заменяются точкой.

В качестве примера мы продолжим мучать артефакт вредоноса SpyEye и поищем строку, содержащую cmd.

ff3249f25a7bf0a1fe085fcdb2ca0cd3.png

Для найденных значений XORSearch указал нам алгоритм, ключ и собственно найденную строку. При этом, для результатов, представленных на рисунке, часть строк будет ложными срабатываниями и найденный ключ тоже будет неправильным. Но для дальнейшего анализа уже надо прибегать к помощи отладчика.

Кстати, эту утилиту можно использовать не только для анализа выполнимых файлов, но к примеру, для анализа дампов сетевого трафика.

Bbcrack

Еще одна интересная утилита для перебора из состава REMnux это bbcrack. Она использует новый алгоритм перебора, основанный на шаблонах, представляющих интерес для обфускации типичных вредоносных программ, таких как XOR, ROL, ADD и различные комбинации, чтобы угадать, какие алгоритмы / ключи были использованы.

Здесь мы уже не ищем какие-либо текстовые строки в зашифрованном виде. Вместо этого утилита просто перебирает все однобайтовые ключи для определенного артефакта и в случае, если при расшифровке получается что-то похожее на выполнимый код, сохраняет его в выполнимом файле. Для того, чтобы определить, является ли полученный файл выполнимым, утилита использует скоринговую систему. Найденные слова больше определенной длины и их последовательности набирают определенное количество баллов.

19c4d2e5531b15db2f47d4f08e89056d.png

В именах получившихся файлов также отражается алгоритм шифрования и ключ. Дальнейший анализ здесь также необходимо проводить с помощью других инструментов.

Bbharvest

Продолжим тему переборщиков из состава Remnux. Мы можем столкнуться с ситуацией, когда для обфускации файла используется несколько различных ключей или алгоритмов. В таком случае нам может помочь утилита BBharvest. Она извлекает все интересующие шаблоны, обнаруженные при применении типичных преобразований обфускации вредоносных программ, таких как XOR, ROL и различные комбинации, пробуя все возможные ключи. Это особенно полезно, когда в одном файле используется несколько ключей или несколько преобразований.

Перед началом анализа нас честно предупреждают о возможном большом количестве ложных срабатываний.

87e7b953b2aa63027b3d3f0dff53c460.png

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

При необходимости предложенные ключи расшифровки уже можно использовать в собственных скриптах и дополнительных инструментах для анализа файлов по другим критериям.

5386078ada6f9be6477f03d8650fbbee.png

Помимо приведенных выше интересных фраз, утилита BBharvest по окончании анализа предлагает нам несколько вариантов распакованных файлов, где в качестве ключа указаны соответствующие алгоритмы и байты.

67641c9f5b39ac0d65ddd8dc4560e086.png

Заключение

Конечно, представленные в статье инструменты из состава Remnux не позволяют со 100-процентной вероятностью сказать, с помощью какого алгоритма и ключа зашифрован тот или иной файл. Но они предлагают свои вариант расшифровки, тем самым существенно облегчая жизнь вирусным аналитикам, так как если файл зашифрован слабым алгоритмом, то вполне возможно данные средства смогут подобрать нужный ключ для расшифровки.

В статье использовались материалы книги «Реверсивный инжиниринг приложений под Windows» Бирюков А. А., ДМК Пресс.

Больше практических навыков по обеспечению информационной безопасности вы можете получить в рамках практических онлайн-курсов от экспертов отрасли.

Habrahabr.ru прочитано 2726 раз