Не так давно мы рассказывали о новом семействе Linux-троянцев, использующих уязвимость в протоколе Samba — SambaCry. Спустя неделю нашим аналитикам удалось обнаружить зловреда для ОС Windows, созданного, по всей вероятности, той же группой, что несет ответственность за появление SambaCry. Заподозрить взаимосвязь между ними позволил C&C-сервер, используемый обоими зловредами — cl.ezreal.space:20480.
Продукты «Лаборатории Касперского» детектируются обнаруженный зловред как Backdoor.Win32.CowerSnail. MD5: 5460AC43725997798BAB3EB6474D391F
CowerSnail скомпилирован с использованием Qt и «слинкован» с соответствующими библиотеками. Данный фреймворк обеспечивает кроссплатформенность и переносимость исходного кода при переходе от одной операционной системы к другой, что, однако, сказывается на размере файла — чуть более трех мегабайт при достаточно небольшом объеме пользовательского кода.
Начало работы
Первым делом CowerSnail повышает приоритет процесса и текущего потока.
Затем, используя API StartServiceCtrlDispatcher, запускает основной поток взаимодействия с C&C в качестве службы сервиса диспетчера управления.
Если попытка запуска потока в качестве службы удалась, дальнейшее взаимодействие происходит в потоке созданной службы, в противном случае CowerSnail функционирует «как есть». Зловред также способен принимать на вход аргументы для своей работы, например, адрес C&C сервера, а в случае их отсутствия необходимые для работы данные извлекаются из самого файла.
В теле потока службы обращение к основному методу взаимодействия с C&C выглядит следующим образом (сам метод обозначен как route).
Взаимодействие с C&C
Исходя из анализа трафика, бот взаимодействует с C&C по IRC-протоколу. Это видно из характерной команды «CHANNEL» и дальнейшего «переброса» пингами, что достаточно часто встречается у IRC-ботнетов в IoT.
Первые два байта пакета — это сигнатура «pk», которая фигурирует в каждом пакете за исключением первого. Следующий за ней DWORD — размер оставшейся часть пакета:
Имя каждого поля кодируется в Unicode и предваряется длиной поля. Следующий за статусной строкой RequestReturn/Request DWORD отображает количество переменных для переменной RequestReturn. В данном примере их три — «success», «I» и «result». Каждое из полей может в свою очередь содержать дополнительные вложенные элементы. На скриншоте ниже для примера представлен результат запроса SysInfo, при получении которого CowerSnail отправляет на C&C четырнадцать (0xE) различных строк с информацией о системе. Тип переменной указывается после её имени, значение следует за ним.
Структура пакета ответа и запроса несколько отличается. Запрос от сервера включает имя запроса, кодируемое как Request->arg->type->»Ping/SysInfo/Install», а также дополнительные параметры, передаваемые как вложенные в поле arg.
Примеры некоторых типов переменных:
0x00000005 – Целочисленная переменная
0x0000000A – Строка
После завершения регистрации зараженного хоста на C&C сервер, включающей в себя отправку информации о зараженной системе, CowerSnail «перебрасывается» пингами с севером, ожидая дальнейших команд.
Команды
В отличие от SambaCry, данный зловред не выкачивает майнер, а предоставляет стандартный набор функций бэкдора:
- Получение обновлений (LocalUpdate)
- Выполнение команд (BatchCommand)
- Установка CowerSnail в качестве сервиса с помощью командного интерфейса Service Control Manager (Install)
- Удаление установленного в качестве сервиса CowerSnail (Uninstall)
- Сбор информации о системе:
Заключение
SambaCry был предназначен для *nix подобных систем. CowerSnail в свою очередь написан с использованием Qt – то есть автор, скорее всего, не пожелал разбираться в деталях WinAPI и предпочел перенести код из *nix «как есть». Это, как и использование той же самой C&C, позволяют с большой долей уверенности предположить, что данный зловред был создан группой, ответственной за SambaCry. С учетом наличия двух разных троянцев, каждый под свою платформу и со своими особенностями, вероятно, это не последнее их вредоносное ПО.
CowerSnail: от создателей SambaCry