С конца января 2025 года в инфраструктуре заказчика фиксировалась устойчивая автоматизированная активность, связанная с обращениями к российским онлайн-сервисам. По характеру запросов она выглядела не как набор разрозненных действий, а как работа распределенной бот-инфраструктуры: сценарии повторялись, источники ротировались, а сами запросы со временем становились все менее отличимыми от действий реального пользователя.

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

Эта же инфраструктура использовалась и при обращениях к другим популярным ресурсам в РФ, включая почтовые платформы, маркетплейсы, социальные сети, телеком- и игровые сервисы. Это показало, что ProxyCB применялся не под один частный сценарий, а как универсальная сеть управляемых прокси-узлов для распределенных операций.

Особый интерес представляет не только сам бот, но и зрелость всей инфраструктуры. Устойчивый бинарный протокол обмена, механизмы централизованного администрирования, элементы многолетней инфраструктуры распространения и возможные пересечения с артефактами, связанными с TeamSpy, позволяют рассматривать ProxyCB как длительно развивающийся инструмент, адаптированный под практическую эксплуатацию в реальных атаках.

Инцидент у заказчика

Первый пик активности был замечен 29 января 2025 года. На графике показано количество срабатываний аномалии:

График количества срабатываний аномалии
График количества срабатываний аномалии

В части запросов используется меньшее количество cookie, чем передает обычный пользователь, некоторые заголовки написаны некорректно и дублируются, также в ответах капчи периодически используется нечитаемый Unicode вперемешку с обычной кодировкой. Например:
{“answer”: “2\u0428\u04266\u0416”, “captchaType”: “captcha”}

Позже стали попадаться ошибки XEvil (программа для автоматизации прохождения капчи), встречались они только с адресов, проверяющих аккаунты:
{“answer”: “XEVIL+ERROR:+No+handler+for+request+“http://rucaptcha.com/in.php””, “captchaType”: “captcha”}

В результате анализа сетевых логов одного из участвующих в активности адресов было установлено, что он часто обращается на 195[.]62.53.253 по TCP-портам 1002, 1001. На портах 80 и 443 этого адреса доступна панель авторизации ProxyCB:

Панель авторизации ProxyCB
Панель авторизации ProxyCB

Общая характеристика ProxyCB

ProxyCB представляет собой ботнет с централизованным управлением зараженными узлами, используемыми в качестве прокси. Его архитектура включает клиентскую часть, управляющий канал на порту 1001, рабочий канал на порту 1002, веб-панель администрирования на 80/443 и серверное ядро PCBServer 7, использующее отдельный административный протокол. Такое разделение говорит о том, что операторы построили не просто канал связи с ботами, а полноценный контур управления инфраструктурой.

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

Хронология ботов

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

На ранних этапах, судя по временным меткам и встреченным доменам C2, использовались другие серверные адреса, в том числе gogogobaby12[.]com, govenmahen[.]com и grabsfakus[.]com. Более поздние образцы уже связываются с доменами вроде kilo-torrent[.]org и соответствующей серверной частью ProxyCB. При этом по конечной нагрузке речь идет о том же семействе, поскольку менялись не базовые функции прокси-узла, а способы его доставки, маскировки и отдельные технические детали реализации (PE, DLL или, в наиболее свежих вариантах, Node.js).

Начало

Один из первых найденных образцов ProxyCB датируется 2011 годом и ориентирован на Windows XP. Мимикрирует он под программу «Знакомство с Windows», которая намеренно завершается ошибкой.

File name

tourstart.exe

MD5

88c96f23ed708f019404f35344206db1

SHA1

ea9413811d93eb47e31fb0fe2559a184834bd131

SHA256

724dabf7e59c1ae2f47d27b20bdf28fc278a8416431d342d12b676b95845910f

File type

PE32 executable

File size

67.00 KB

Compilation timestamp

2005-05-30 19:01:12 UTC (дата компиляции распакованного файла — 2011-11-21 13:44:22)

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

После распаковки образец создает DLL в каталоге system32, имя которой формируется на основе имени пользователя, и запускает ее через rundll32.exe. В случае ошибки может сам подгрузить созданную DLL и вызывать EntryPoint с вредоносным кодом. Дополнительно реализовано закрепление через ветку HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders (сработает на Windows XP).

Образец создан под работу на Windows XP, поэтому корректная работа на Windows 10 невозможна.

В итоговой DLL содержится бот ProxyCB, и значительных отличий от новых версий в нем не обнаружено. Отметить стоит «версию» бота. Для удобной атрибуции кампании в ботах есть параметр group, и в данном образце он равен 4. Удивительно и то, что на нынешних C2 еще остались упоминания подключения ботов с group = 4.

Первая связь с другим вредоносом

Следующее изменение в дроппере датируется 2012–2013 годами.

File name

23391f7d69a883ccd435bcae4d9844114faea9b1223c70984178c11d8e7316f2.exe

MD5

cdf5020d7a7ef2c2ee83a4afdd2413cd

SHA1

2d7f670ee948c1feea2fe1cd3d64f0235025c73f

SHA256

23391f7d69a883ccd435bcae4d9844114faea9b1223c70984178c11d8e7316f2

File type

PE32 executable

File size

68.00 KB

Compilation timestamp

 

1998-01-13 16:06:20 UTC (модифицирована)

В образце 2013 года основная логика самого бота по-прежнему не отличается от более раннего варианта: сохраняются тот же прокси-модуль ProxyCB, та же схема сетевого цикла и общий формат работы с C2. При этом меняется сопровождающая обвязка. На уровне инициализации вместе с адресами управления уже используется другой параметр group = 1.

В этот раз бот ProxyCB поставляется вместе с ботнетом Virut, который работает отдельно и не связан с С2 ProxyCB. Virut использует более сложный stage-модуль с section-based инъекцией. После запуска он перебирает системные процессы, открывает winlogon.exe, а затем использует именованные секции в BaseNamedObjects для отображения своего кода в память удаленного процесса. После этого в winlogon.exe патчатся несколько Zw*-stub в ntdll, а точка входа внедренного stage запускается через CreateRemoteThread. Уже внутри winlogon.exe (или других процессов) stage начинает загружать сетевые библиотеки и инициирует исходящие соединения.

Бот ProxyCB при этом ставится через сам дроппер, а не в результате инжекта.

Массовая вредоносная кампания

File name

cerber.exe

MD5

cecdd8e541a6c1c53464792fe75525be

SHA1

e2593f8d5be3d0006c5ba99d3f9a72f175e58c6c

SHA256

5f20a9e19b07572cedd99a5e6ef73cb8b4110929c5b6d94dfcc927be7df6a494

File type

PE32 executable

File size

132.00 KB

Compilation timestamp

2016-04-01 20:19:10 UTC

в распакованном боте — 2011-11-21 13:44:22

В 2016 году ProxyCB-боты замечены в составе многоступенчатых цепочек заражения. Первичный JScript-установщик получает первую стадию с yuilouters[.]com, после чего она обращается к selioprey[.]com за несколькими дополнительными модулями. Один модуль отвечает за кражу учетных данных (Pony stealer), а второй — ProxyCB-бот. На этом фоне сам бот ProxyCB снова остается почти неизменным, а основные изменения приходятся на цепочку доставки и разнесение функций по разным payload-модулям.

Современные варианты

File name

setup-235.exe

MD5

ca7b57b87fda8c18354ea6910b20ae73

SHA1

a124d2d6f511298daf6b754213c0146fe8790ad2

SHA256

dc8aaaae4e212ca3c31d94b3a150230e34d1a78544679763e90dc08ee795dadc

File type

PE32 executable

File size

1.5 MB

Compilation timestamp

2020-05-21 08:56:23 UTC

С 2018 года встречаются новые установщики, маскирующиеся под установщик uTorrent. В них легитимный клиент используется как отвлекающее приложение, тогда как установка ProxyCB происходила параллельно в фоновом режиме, загружая дополнительный модуль с ProxyCB-ботом.

Попытка дроппера установить бота ProxyCB с torrenta[.]top
Попытка дроппера установить бота ProxyCB с torrenta[.]top

Примечательно использование Inno Setup, так как этот тип установщиков регулярно встречается в более поздних образцах, связанных с ProxyCB. На этом этапе операторы, по-видимому, делали ставку на правдоподобную установку популярного ПО и вынесение вредоносного модуля в отдельную сетевую стадию.

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

Сообщение от администратора ботнета на форуме
Сообщение от администратора ботнета на форуме

Переход на Node.js

File name

setup.exe

MD5

07353e700edb077cb4de7bd165d0e040

SHA1

f8efadffb89a2c0065ed8864aea8ef4654eb71c6

SHA256

1f708bcd73b114ebf5f59095ff7f7df7cb4b6606054a5e23aa6d36e328bead1e

File type

PE32 executable

File size

18.89 MB

Compilation timestamp

2026-02-11 11:40:27 UTC

Наиболее свежие из найденных вариантов ProxyCB показывают уже не очередную модификацию дроппера классического PE-бота, а переход к реализации на Node.js. В одном из таких образцов Inno Setup-установщик, маскирующийся под установщик uTorrent, раскладывает в систему node.exe, proxy.js и nssm.exe, после чего через NSSM создает службу WinDefSvc для запуска бота. При этом полезная нагрузка размещается в каталоге C:\Program Files (x86)\Google, что продолжает характерную для предыдущих поколений ProxyCB тактику маскировки под легитимные компоненты (чаще всего Google или uTorrent).

Служба, запускающая бота
Служба, запускающая бота

Несмотря на смену языка реализации и способа запуска, логика самого бота почти не изменилась. Node.js-вариант сохраняет тот же управляющий цикл, ту же модель разделения main- и data-каналов и тот же набор рабочих режимов: SOCKS4, SOCKS5, HTTP CONNECT, GET и POST. По сути, это очередная упаковка того же прокси-модуля, адаптированная под более современную среду выполнения и новую цепочку доставки.

Технический анализ бота

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

File name

23c6e8163646ba03c0a5c6dcdf0f0df5688ec4a91c8bd9b663888440254bc12f.exe

MD5

de237777518dc9c0b7a03c536746d878

SHA1

a357466573e35d634a119b7f2e7a8a18f5018811

SHA256

23c6e8163646ba03c0a5c6dcdf0f0df5688ec4a91c8bd9b663888440254bc12f

File type

PE32 executable

File size

62.33 KB

Compilation timestamp

2023-11-17 22:20:27 UTC

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

Начало вредоносной ветки с генерацией мьютекса
Начало вредоносной ветки с генерацией мьютекса

Адрес сервера задается на этапе инициализации и сохраняется в глобальных переменных. Далее основной сетевой цикл выносится в отдельный поток bot_main_thread и, при успешном создании потока, процесс переходит к установлению соединения с С2.

Основной сетевой цикл
Основной сетевой цикл

Основной сетевой цикл реализован в bot_main_thread. Поток резолвит один или два заранее заданных адреса, после чего устанавливает TCP-соединение на управляющий порт (1001) и обменивается фиксированными 26-байтными сообщениями. В зависимости от opcode прокси либо подтверждает успешную авторизацию, либо применяет параметры перенаправления (новый хост/порт) с переподключением, либо запускает отдельный поток обработки задачи (bot_task_thread). Отдельно реализована динамическая настройка таймингов, которые сервер может корректировать в ходе работы. Перед соединением с С2 происходит проверка SMTP.

Проверка SMTP
Проверка SMTP

После получения команды от сервера запускается основной рабочий поток bot_task_thread. Поток открывает рабочее соединение (data-канал), выполняет короткое рукопожатие фиксированным сообщением и получает от сервера один байт, определяющий режим работы. Далее выбирается обработчик (сырой TCP, SOCKS или HTTP CONNECT/GET/POST), после чего начинается двунаправленное проксирование данных через общий цикл.

Всего у бота шесть команд от сервера

CMD

Назначение

Что делает бот

0x01

Hello / login

Используется при первичном подключении бота к C2. Бот отправляет hello-пакет, а входящий 0x01 трактуется как успешное подтверждение старта.

0x02

Запуск data-канала

Сервер передает параметры рабочей сессии, после чего бот открывает отдельное соединение и инициализирует worker/data-channel.

0x03

Ошибка

Бот воспринимает такой пакет как ошибочное состояние main-сессии, выходит из цикла и переподключается.

0x04

Keep-alive

Служебный ping-пакет для поддержания main-соединения. Отдельной рабочей логики не несет, но используется для проверки состояния сессии.

0x05

Редирект на новый C2

Бот получает новый IP:port, закрывает текущее main-соединение и переподключается уже к новому адресу. Изменение действует только в памяти работающего бота, без сохранения на диск.

0x06

Закрыть main-соединение

Бот явно закрывает текущее управляющее соединение и затем уходит в обычный цикл переподключения.

Сетевое взаимодействие

Обмен между прокси-узлом и сервером на управляющем канале построен на фиксированных сообщениях длиной 26 байт. Каждое такое сообщение начинается с постоянной сигнатуры и версии протокола, после чего следуют поля, смысл которых зависит от типа команды. Таким образом, один и тот же 26-байтный шаблон используется как для начального hello, так и для keep-alive, служебных ответов и команд на запуск рабочего канала.

Общий формат сообщения:

Смещение

Размер

Описание

0x00

4

magic1 = 0x7704B285

0x04

4

magic2 = 0x33E038CE

0x08

1

0x04

0x09

1

cmd

0x0A

2

botnetId / group / port (поле переиспользуется)

0x0C

2

isSmtp / flags (поле переиспользуется)

0x0E

4

v7 (служебный параметр/seed)

0x12

4

serial

0x16

4

creationTime

Структура сообщения остается неизменной по длине и смещениям, однако назначение отдельных полей определяется значением cmd. Поэтому одно и то же смещение в разных пакетах может интерпретироваться как group, data_port, флаг возможностей или идентификатор задачи. Это соответствует наблюдаемому поведению прокси-клиента и логике потоков bot_main_thread и bot_task_thread, где один и тот же буфер используется как для регистрации на main-канале, так и для запуска рабочей сессии.

Начало взаимодействия на управляющем канале

Первым отправляется hello-пакет от прокси-узла:

85 b2 04 77 ce 38 e0 33 | 04 | 01 | d8 02 | 00 00 | 00 00 00 00 | 09 80 86 48 | 7c c7 b0 fd

Здесь:

  • 85 b2 04 77 ce 38 e0 33 — магическое число,
  • 04 — версия,
  • 01 — команда hello/login,
  • d8 02 — значение group (0x02D8 = 728),
  • 00 00 — флаг SMTP/служебное поле (в данном примере — ноль),
  • 00 00 00 00 — поле v7, в этом пакете нулевое,
  • 09 80 86 48 — serial,
  • 7c c7 b0 fd — creationTime.

В ответ сервер отправляет собственный hello/ack:

85 b2 04 77 ce 38 e0 33 | 04 | 01 | d8 02 | 00 00 | 00 00 00 00 | 14 00 00 00 | 7c c7 b0 fd

Здесь ключевое отличие состоит в том, что поле 0x12-0x15 уже не несет исходный serial клиента, а используется сервером как параметр управления сессией. В данном примере значение 0x14 соответствует интервалу между keep-alive сообщениями. Поле creationTime при этом сохраняется прежним.

После успешного обмена hello пакеты keep-alive продолжают использовать тот же 26-байтный формат, но с cmd = 0x04. На стороне клиента это соответствует рабочему циклу bot_main_thread, который периодически отправляет пинг и принимает в ответ либо подтверждение, либо команду изменения состояния соединения.

Команда на запуск рабочего канала

Если серверу требуется передать клиентский трафик через конкретный прокси-узел, по управляющему каналу отправляется команда с cmd = 0x02:

85 b2 04 77 ce 38 e0 33 | 04 | 02 | ea 03 | 07 00 | 4c 1a 69 03 | 02 a1 06 00 | 76 f9 bd 1f

В этом случае поля структуры трактуются уже иначе:

  • ea 03 — data_port = 1002,
  • 07 00 — flags = 0x0007, то есть набор доступных режимов обработки,
  • 4c 1a 69 03 — служебный параметр v7, используемый как seed/cookie,
  • 02 a1 06 00 и 76 f9 bd 1f — идентификаторы конкретной задачи.

Именно эти значения затем помещаются в структуру, передаваемую в bot_task_thread. Рабочий поток использует их для установления нового TCP-соединения уже не на main-port, а на указанный data_port, после чего повторяет короткое рукопожатие и ожидает режим задачи.

Инициализация data-канала

После получения команды cmd = 0x02 прокси-узел открывает новое соединение и отправляет первый пакет на рабочий порт:

85 b2 04 77 ce 38 e0 33 | 04 | 02 | d8 02 | 00 00 | 00 00 00 00 | 02 a1 06 00 | 76 f9 bd 1f

Формат тот же, однако поля интерпретируются иначе:

  • поле 0x0A-0x0B снова содержит group (0x02D8 = 728),
  • поле 0x0C-0x11 в данном случае обнуляется,
  • последние 8 байт совпадают с идентификаторами задачи, ранее выданными сервером на управляющем канале.

Эта пара значений выполняет функцию синхронизации между командой на main-канале и новым рабочим соединением. Управляющий канал используется для выдачи параметров задачи, а рабочий канал — для фактического исполнения проксирования, при этом обе сессии связываются между собой через идентификаторы задачи.

Переход к туннелированию

После успешного рукопожатия на рабочем канале сервер передает один байт, обозначающий режим задачи. В зависимости от значения выбирается один из обработчиков: прямой TCP-туннель, SOCKS-режим или HTTP-режим (CONNECT, GET, POST). Далее выполнение переходит к общему циклу двунаправленного проксирования (proxy_loop), после чего клиентский трафик уже проходит через цепочку «пользователь → сервер → прокси-узел → целевой ресурс». Именно на этом этапе в сетевом дампе становятся видны обычные прикладные данные, например строка CONNECT <host>:443 и последующее TLS-рукопожатие.

Панель управления ProxyCB

На портах 80 или 443 доступна панель авторизации.

Панель авторизации ProxyCB
Панель авторизации ProxyCB

При успешной авторизации происходит переход на страницу с информацией о сервере:

Вкладка Server Info
Вкладка Server Info

Структура вкладок и их назначение

Вкладки панели можно условно разделить на три группы:

  1. Мониторинг и состояние инфраструктуры
    • Server Info — сводка по серверу, счетчики событий и базовые параметры работы.
    • Sys Info — статистика по серверным ресурсам.
    • Country Info / Group Info — агрегирование прокси-узлов по географии и группам.
    • Get List — список активных узлов и их основные атрибуты.
  2. Контроль доступа и эксплуатационные ограничения
    • Client IP — управление списком IP клиентов.
    • API Access — разграничение прав для дополнительных учетных записей API.
  3. Управление поведением прокси-узлов
    • Config — централизованная настройка параметров работы прокси (в т. ч. режимов доступа и других значений конфигурации), а также параметры, связанные с учетными данными панели.
Вкладка с IP клиентов
Вкладка с IP клиентов
Вкладка с количеством ботов
Вкладка с количеством ботов
Вкладка со списком групп ботов
Вкладка со списком групп ботов

Группа бота захардкожена и передается в hello-пакете.

Вкладка со статистикой по странам
Вкладка со статистикой по странам
Вкладка со статистикой по серверным ресурсам
Вкладка со статистикой по серверным ресурсам
Вкладка со списком ботов
Вкладка со списком ботов
Вкладка с настройкой конфигурации ботов и пароля к панели
Вкладка с настройкой конфигурации ботов и пароля к панели
Вкладка с настройками доступов у двух пользователей (у администратора есть все права)
Вкладка с настройками доступов у двух пользователей (у администратора есть все права)

На самом деле это не единственный способ управления ботнетом. О другом способе мы расскажем дальше.

Анализ ядра С2-сервера

Веб-панель — это лишь обертка над реальным каналом управления. В результате расследования удалось найти два sh-скрипта: первый скрипт отвечает за установку PCBServer 7, второй — за ее полное удаление.

Установка скриптов
Установка скриптов

Установочный скрипт создает демона под систему на init.d.

Запуск установщика
Запуск установщика

Порты 1001,1002 и 1003 есть в параметрах запуска демона PCB и остаются неизменными.

Скрипт запуска демона PCB
Скрипт запуска демона PCB
Рабочий демон ProxyCB
Рабочий демон ProxyCB

В коде pcb_x64 сразу заметны функции, отражающие функциональность веб-панели:

  • DB_AdminAuth
  • DB_AuthBot
  • DB_BotGetCountry
  • DB_BotGetGroup
  • DB_BotGetInfo
  • MPM_InsertBot
  • MPM_InsertClient
  • SA_ClientRouteProc
  • и т. д.

И множество других функций, часть из которых была показана в устройстве веб-панели.

Административный порт использует собственный бинарный протокол поверх TCP. Запросы имеют стандартный формат с полями:

  1. MAGIC (8 байт) — уникальный идентификатор для синхронизации.
  2. LEN (4 байта) — длина полезной нагрузки.
  3. CMD (1 байт) — команда для сервера.
  4. MD5 (пароль) (32 байта) — MD5-хэш пароля администратора в ASCII-hex.
  5. Payload — дополнительные данные, передаваемые в зависимости от команды.

Ответы от сервера всегда начинаются с 13 байт заголовка:

  1. MAGIC (8 байт) — проверка на соответствие.
  2. LEN (4 байта) — длина ответа.
  3. STATUS (1 байт) — статус выполнения команды (0 — успех, другие значения — ошибка).

Всего у панели есть 19 команд. В коде они реализованы через case.

Пример нескольких команд в коде
Пример нескольких команд в коде

Все возможные команды и их привязка к функции представлены в таблице.

0x00

Server Info

0x01

BotGetInfo

0x02

BotGetGroup

0x03

BotGetCountry

0x04

GetConfig

0x05

SetConfig

0x06

DB_AddAccessIp

0x07

DB_DelAccessIp

0x08

DB_GetAccessIpList

0x09

MCP_GetList

0x0A

Reboot (процесса)

0x0B

DB_ClearBotBase

0x0C

Reset admin stats (счетчики Server Info)

0x0D

DB_GetApiAccess

0x0E

DB_SetApiAccess

0x0F

Предположительно ping/check pass т. к. ничего не делает и просто возвращает 0 при удачной авторизации

0x10

Perf_Stat (информация по нагрузке сервера)

0x11

Change Salt

0x12

Dbg_CreateLog

Распространение ботов

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

Ранние образцы связаны с tut-torrent[.]ru и windows-rar[.]com:

Сайты с вредоносом
Сайты с вредоносом

В ноябре 2022 года появился новый домен torrenta[.]top:

Новый сайт с вредоносом
Новый сайт с вредоносом

Этот домен все еще активен, и через него прошло несколько вариаций дропперов. Часть из них ведет на GitHub-репозиторий, где среди легитимных файлов лежит бот (файл setup.msi).

Репозиторий с ботом
Репозиторий с ботом

Через другие дропперы обнаружен более ранний репозиторий с несколькими версиями ботов.

Более ранний репозиторий (файлы младше трех лет — это вредоносы)
Более ранний репозиторий (файлы младше трех лет — это вредоносы)

Связь ботнета с TeamSpy

TeamSpy (или TeamSpy Crew) — это кибершпионская группа, публично описанная в 2013 году. По оценкам исследователей, связанные с ней операции могли вестись с середины 2000-х годов, а к моменту раскрытия кампания продолжалась уже почти десятилетие. Группировка известна тем, что осуществляла скрытные атаки, используя легитимное программное обеспечение для удаленного управления TeamViewer.

В скриптах панели управления обнаружено упоминание домена mir-modov[.]ru. При анализе этого домена выявлено несколько вредоносных файлов, использовавшихся группировкой TeamSpy в своих атаках.

File name

setup.exe

MD5

d711e0af93179af04b050fe08c875df1

SHA1

456c2139c110d442e0a2c513449ab8270185e944

SHA256

9f272806c9626ce7040b73e6ffd489ecc12bb593748b11e55104cf476c195b76

File type

PE32 executable

File size

320.00 КиБ

Compilation timestamp

2014-07-09 07:58:13 UTC

Распакованный setup.exe
Распакованный setup.exe

Результатом запуска этого установщика будет фоновая установка TeamViewer и открытие игры для отвлечения внимания.

В середине 2017 года этот вредонос пропал с доменов mir-modov[.]ru, exe-craft[.]ru и worldoftankist[.]ru, а на различных форумах появилась реклама прокси-сервиса ProxyBunker (он же ProxyTank и ботнет ProxyCB). Стоит отметить, что реклама была и ранее, но в малом количестве, а после середины 2017 года в существующих темах произошли обновления или создались новые темы на новых форумах.

На домене kilo-torrent[.]org также выявлены следы инструментария TeamSpy. В этот раз вредоносный установщик оформлен под клиент uTorrent — приманку, которая неоднократно встречается и в дропперах, связанных с ProxyCB. На момент публикации домен kilo-torrent[.]org остается одним из основных С2 ботнета.

File name

uTorrent.zip

MD5

7f846f1b364b1b51528b8461aad5a412

SHA1

9c1af12030dec7afdc8ca014ae182b97175b3d22

SHA256

d973a6054c2952cb14feea309c9063f4aadcee441c4dca5394136bb69f69d232

File type

ZIP

File size

8.54 MB

Архив содержит легитимную утилиту TeamViewer, переименованную в setup.exe, вредоносную библиотеку msimg32.dll и архив msimg32.dat. Если распаковать msimg32.dat (пароль: tvratbetabot), то получится тот же инструментарий группировки TeamSpy.

Распаковка архива
Распаковка архива

Ранее по этому пути лежал другой архив.

File name

uTorrent.zip

MD5

fe495981709d430e806fb217903e07bf

SHA1

de1dd0071972156dc713b7a868018f72c725b649

SHA256

0dc6c8331b3ea5d01295d602696a7ba3d58aa730b66f361accc6a742cd75a514

File type

ZIP

File size

8.79 MB

В этот раз пароль от msimg32.dat — это superpass. Пароль superpass использовался TeamSpy в подключениях к зараженным устройствам. Других существенных отличий замечено не было.

Заключение

Исследование ProxyCB показало, что речь идет не о примитивном боте, а о развитой ботнет-платформе с собственной серверной логикой, панелью управления, административным бинарным протоколом и устойчивой инфраструктурой распространения.

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

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

IoC

Files

MD5

1bad7d07ae90b906e8f744146fdd8c12
6448d436b95b460b6cfb896f9f0fd6a7
1aaf34496209cbd8d5cfb5b932fd0591
4ba2b00487028565829b3abef8b8495a
de237777518dc9c0b7a03c536746d878
95b0e9fcc1025661b6550866d253f6ba
95a57385cfd1870391538c9d791aeeaa
9938bb672128f111fa050251d340b008
630064446d988fb8fdfd9993855ff3f1
cedf8a321ef594fc6ccaa0164001c945
6cf2f25edf83d9e662c385255b473953
915d049345f416bbbd81f3b56d309cd0
bc373714afa689e64d3f248260089cfa
74eefba5d93380e05a66333a5ed9866a
39988c3a8099d5f188751c2e500e6259
6c721f65384687ca25c952597c10bbb7
97231c24b8a7bb48a05d51760f68ef01
5fe66eb2c7b221b334c30b2260e20447
6c491796d2921da1f8dfad182dc6e33e
b99fe489a109498ed19227f76bb40c52
245132ff6ef9a9864069d71b86b285c2
ce66e63723c96ed705c07ff0015e171e
ed72de2c066a58bae0f4a7da5838fbfc

SHA1

44f49b416764edcbe2b9b4a428ee1beaacf76a7b
3629c84165945e7c67ee172e943a0aaaa9d91f5a
1c42f0bbf3c9055c3d20513edc2b69e95df22aa2
d54f13e14b91dc89a18431c9f0b413d4e3db96d4
a357466573e35d634a119b7f2e7a8a18f5018811
e8db6d571a5c243e9c8c2c402a44fb72b768245c
1bd4e4f7832dcd96e52a90b4ed5fe77d8036ec2e
7d9a125013b0726bd9b56b324eb4c7f868c7c1d8
9f1a0d635cd8af4eda188a2c53f08673ec5bc908
511354dfae2b02881fbcbbd6967b2a1468daf2ba
1ab8d0535b2ad173f00a80822f9855c4424cac67
593699f27883c94cf515853e47d2ebccda78bc69
f7e21cbc854e8d6ed8a5df8a0da08ca0f560d1ff
4e725bf77b56cf072a75f447e1c35f0bdc6a2b2a
2ff0c8eae79a8a968fd4f6e0a76c720196f5b36b
eef741044da953f30f91fde22a8309925890e9d1
eb0285af5c7e8bfa8f4e3022f9f03c796bb1ded1
963da37b1ee363f924c1f267cb3004ed5e997a40
1e0b35768b6cf5fdbafb7f2a919469306e87aa7c
074a9ea5ae0f825f5c9b596cfff95252c414a07e
4aaba2a1c2a0e3599a97e5ad837a37e351be326e
769496fbdd02934a7362bcd26c62f8e6cb4d7a86
68c0122742c89aa39da3bed36b9384f7cb64928e

SHA256

173463717e7833c4ed00225ba8cb041d13352778ef22462713e44e3845be6e82
ccd387acb8347ba8ed81d48c115bb40ef43a527a748ffbc78595022a8002cbda
5a43aaf1d8b274c6b41cccead680c9fbd1c2065c5bdac9a65fd3f4f31bd70413
004bf4aa9704664a23dc60721447fc5f17d11855a122365a6835fae868f5eb8c
23c6e8163646ba03c0a5c6dcdf0f0df5688ec4a91c8bd9b663888440254bc12f
6c7495d88efe39e0cd2685a120595d467e7b74e6fd64c828cf0bb6fb7207e704
7440cc0613ad6b8bb08601d42a0830c42f0965c59af3270d5845c256c334397d
f135d690e37b444f7d5a06e36cf68ea7b344e4a66da35e3937171e7a8cf94b75
600b74b215a7b031e7db0e56339032c953d663ccd2deafdc36b682f2cbd2a22a
9236c0d8ac5bac35c686356b7c1fa454078921b91c97783193169636978f268a
ecbb0051cb5e1cc71c638feea660b256903c46603f5295d43c906383b76cf121
fcc5d2361fc0bb2b9c12cac6e7d6d20cf96a02307f2f0c04d1cde84c5326d701
b090ddd90b9c15c5d12236b206d0265789211888c4828282964ee0397a162356
c81f9d4071c353959cde13da2c318c37eeb206fc5347b00011dc52e3bbc4c5e3
6e8edb920d0c68032a165ab3d4a2b43bf348a6b983b788a89ce9e1b0cf474678
f1d5d12bdf95e72e829530784280789a68230cba54e7e8eb3810ea162ad9b122
dffbd79a8bdfcfa5cfe1bdd49c4dc6a1f4a7dd8396d7f75e6ff95c3cee5741d6
33e83b7c18def5e0efebed50d86f45420531b82baf625972c7a9c961c0656044
38a9b8f54902b67132a21614652f728d72be70c3e1a0702659a882307bd2c3be
5d44f21b4a98a42b58a94233af3be2ae54dd6459e733310b02b01d17978dd5f5
08aae0a6003b46aa31c34fe4c64a3227c446b94df026ec5cda27ac092ab600b3
b8976b7cfea692aa77d580d1c03c1e9da4b44cb5cbde18ea3a9c587cdf61f79b
bbc42673786c572c253b3ead897170eb1f3f9f9b1616783ea024f831ff167bda

C2

kilo-torrent.org
kilotorrent.org
ndrpotoki.xyz
rdnmanerr.xyz
rdnmaner.xyz
torrent-trecker4.com
upteambuilding.com
kilo-torrent.ru
aktivator-dlya-windows-10.com
torrenta.top
exe-craft.ru