rakovskij-stanislav.github.io

Первое сообщение, отправляемое нами после установки соединения с командным сервером с использованием порта 2000 - хэш-сумма файла, вычисленная с использованием алгоритма GOST12_256

Затем эта хэш-сумма ксорится на 0x55 и отправляется на сервер в качестве приветствия.

В ответ нам приходят 16 байт, которые являются ключом для AES128-ECB в рамках всего дальнейшего общения.

С использованием этого ключа мы зашифровываем своё приветствие:

69276d20616c6976653a206e6f74616d616c7761726520626f74207632000000 (хексы)

или i'm alive: notamalware bot v2 (аски).

Отправляем на сервер.

Затем хэш-сумма файла обратно расксоривается на 0x55, зашифровывается AES128-ECB и отправляется следом.

Вызываются три функции, занимающиеся получением информации о компьютере: sub_40370C, sub_40374D и sub_40378E. Они являются оберткой над 403601, которой передается структура c зашифрованной строкой, для каждой обертки своя. Подробнее структура будет рассмотрена в следующем разделе.

Соответственно, расшифровка: uname, date, uptime. Эти команды предопределены, их зашифрованные строки хранятся в бинаре, а не были присланы с первого командного сервера.

Интересно, что программа собирает контрольную сумму CRC32 строки вида: “команда: результат_команды”.

Результат трех команд вместе с контрольными суммами шифруется GOST12_256, ксорится на 0xAA и отправляется на сервер.

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

Назад