- Упаковщик: отсутствует
Описание
Бэкдор, написанный на C и работающий в среде 32-битных операционных систем семейства Microsoft Windows. Позволяет дистанционно управлять зараженными компьютерами, реализуя функции remote shell — запуска cmd.exe и перенаправления ввода-вывода на управляющий сервер злоумышленника. Оригинальное название вредоносного модуля: client_dll.dll.
Принцип действия
Библиотека имеет одну экспортируемую функцию, в которой реализована основная функциональность бэкдора: ServiceMain.
В начале своей работы создает мьютекс для исключения параллельного запуска своей копии. Затем расшифровывает строки операцией XOR с байтом 0x0F. Список расшифрованных строк:
Mozilla/4.0 (compatible; MSIE 10.0; Windows NT 6.2;+SV1;
ns02.ns02.us/<redacted>/0xD.html
/webdav/0.htm
/webdav/%s.htm
%02d%02d
-download
Download OK!
Download failed...
-pslist
-pskill
-upload
Upload OK!
Upload failed...
Process is Killed!
Process killed failed.
-exit
cmd.exe /c
В качестве обоих первичных управляющих серверов в теле бэкдора записан URL: ns02[.]ns02[.]us/<redacted>/0xD.html.
После расшифровки строк BackDoor.Remshell.24 использует формат %02d%02d для сохранения текущих минуты и секунды. Эти значения затем используются в запросах к управляющему серверу.
Далее запускается отдельный поток, в котором в бесконечном цикле происходит попытка получения или обновления адреса управляющего сервера второго уровня. Как только адрес управляющего сервера второго уровня получен, программа запускает поток, в котором отправляет heartbeat-запросы к этому серверу.
Затем бэкдор периодически запрашивает команды у управляющего сервера и выполняет их.
Получение адреса управляющего сервера второго уровня
Для получения адреса на указанный в конфигурации URL отправляется GET-запрос. В ответ сервер присылает строку вида -set <arg> или -SET <arg>, где <arg> является числом или IP-адресом. Полученное число интерпретируется как интервал обращения по указанному в конфигурации URL. Если получен IP-адрес, то бэкдор считает его управляющим сервером второго уровня.
Стоит отметить, что поток не прекращает своей работы при получении действительного адреса управляющего сервера. Он продолжает работать, что позволяет менять адреса управляющего сервера без перезапуска бэкдора.
Протокол связи с управляющим сервером второго уровня
В начало данных, отправляемых PUT-запросом, бэкдор дописывает заголовок, состоящий из 5 байтов, который является строкой, сформированной по формату %02d%02d. В эту строку подставляются значения минуты и секунды, когда был сформирован запрос.
При этом данные запроса и ответа зашифрованы. Значение каждого отправляемого байта данных запроса уменьшается на 0x7F, а каждого принятого байта — увеличивается на 0x7F.
В качестве heartbeat-запросов отправляется PUT-запрос на <cnc_addr>/webdav/0.htm с данными, содержащими имя зараженного компьютера и значения минуты и секунды, когда был запущен бэкдор.
Для запроса команд от управляющего сервера бэкдор отправляет GET-запрос на <cnc_addr>/webdav/O.html. Затем расшифровывает ответ сервера и парсит его на наличие команд.
Список команд:
Команда | Описание |
---|---|
-download | Скачать указанный файл |
-exit | Завершить работу бэкдора |
-pskill | Завершить указанный процесс |
-pslist | Сформировать список процессов |
-upload | Отправить на управляющий сервер указанный файл |
другие | Запускаются через cmd.exe /c |
Ответы на команды отправляются PUT-запросами на адрес <cnc_addr>/webdav/<minsec>.htm, где <minsec> — значения минуты и секунды, когда был запущен бэкдор.