Первое сообщение, отправляемое нами после установки соединения с
командным сервером с использованием порта 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
и отправляется на сервер.
Дальше идет много однообразной криптографии и отправления данных в конечном итоге бы получаем зашифрованный шеллкод.