Грязные дела делаются грязно и дешево: Русский RAT (DCRat)

Когда-нибудь обман будет настолько дешевым – что мы будем вынуждены стать самыми честными

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

DCRat так же известен как DarkCrystal RAT – малварь, был впервые выпущен в 2018 году, а затем переработан и вновь запущен год спустя. Этот вирус был разработан и поддерживается одним человеком под псевдонимами boldenis44, crystalcoder и Кодер.

Цена DCRat составляет – 500р за 2 месяца. Неудивительно, что он так популярен как среди профессионалов, так и среди любителей.

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

В глубь кристалла

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

Сам DCRat состоит из трех компонентов:

  • Исполняемый файл стилера/клиента
  • Одна PHP-страница, служащая конечной точкой/интерфейсом командно-контрольной системы (C2)
  • Инструмент администратора

Инструмент администратора представляет собой автономный исполняемый файл, написанный на языке программирования JPHP, малоизвестной реализации PHP работающей на виртуальной машине Java. JPHP предлагает некоторые потенциальные преимущества для причинения вреда.

Как язык программирования, целевая аудитория JPHP – это прежде всего разработчики начального уровня, создающие кроссплатформенные настольные игры. Простота использования, а также переносимость его кода хорошо подходят для этой цели. Автор вредоносного ПО мог выбрать этот формат, потому что он малоизвестен, или ему не хватало навыков программирования на других, более популярных языках.

Согласно документации JPHP, эта реализация “компилирует исходники PHP в байт-код виртуальной машины Java (JVM), который затем может выполняться на JVM”. Проект JPHP также предоставляет специализированную русскоязычную интегрированную среду разработки (IDE) под названием DevelNext. Эта IDE использовалась для разработки инструмента администратора, а также некоторых ранних версий клиента DCRat.

Данные о местоположении, доступные в общедоступных профилях GitHub, указывают на то, что основная группа разработчиков JPHP в подавляющем большинстве базируется в СНГ. Решение автора использовать JPHP могло быть обусловлено либо предполагаемым уровнем доверия, либо просто убеждением, что бы получить поддержку по вопросам или улучшением, связанным с фреймворком JPHP, было бы проще благодаря общему знакомству с русским языком.

Изучение сборки DCRat

.exe написан на .NET, ранние версии были написаны на JPHP. JPHP медленный, так как работает на JVM, на .NET вес намного меньше, так как не включает все библиотеки JPHP.

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

Клиенты DCRat развертывались с использованием маяков Cobalt Strike через Prometheus TDS (система направления трафика).

Подробный анализ клиента DCRat был опубликован Mandiant в мае 2020 года. Всего через несколько дней после публикации этого отчета автор вредоносного ПО перенес распространение на новый домен. Ясно, что киберпреступники все больше узнают об огласке СМИ, и сообщества безопасности, и они привыкают вносить быстрые изменения в ответ на это “разоблачение”.

Стоит отметить, что существует второй RAT с открытым исходным кодом под названием DcRat, который можно найти в репозитории GitHub пользователя “qwqdanchun”. Скорее всего, это совершенно несвязанный проект. Хотя он не имеет большого сходства кода с DCRat, он мог послужить источником вдохновения, или вдохновить.

Какие будут предложения?

DCRat, плагины, среда разработки плагинов и дополнительные инструменты в настоящее время размещены на crystalfiles.ru. Эти компоненты были перенесены туда с dcrat.ru (сайт конфискован Федеральным бюро). Веб-сайт crystalfiles служит только точкой загрузки для RAT. У него нет дополнительной информации или ресурсов для потенциальных или существующих клиентов.

DCRat

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

DCRat - lolz
всем лолзерам привет, остальным соболезную

Возможно, RAT также продается на других форумах с ограниченным доступом или в “даркнете”. Наиболее распространенное имя файла в разных версиях RAT – 1ac770ea1c2b508fb3f74de6e65bc9c4.zip.

Все новости и обновления для DCRat публикуются в телеграм канале.

DCRat - telegram

Помимо ТГ-канала @DarkCrystalRAT, есть еще два ТГ-бота: один для продажи @DCRatSeller_bot и тех. поддержка @CrystalSupport_bot.

Последние цены на лицензии DCRat (без учета временных скидок):

  • 600 руб. – два месяца
  • 2500 руб. – год
  • 4500 руб. – пожизненно
DCRat - telegram

Автор

Хотя разработчик DCRat пишет на форуме lolz[.]guru под ником – Кодер, его дескриптор Telegram – @boldenis, а имя пользователя GitHub – boldenis44, исходя из ссылки на ресурс, спрятанной в исходном коде DCRat. Должно быть, он использовал последнее имя на lolz[.]guru в какой-то момент, поскольку некоторые пользователи все еще называют его так. Он указал свой джаббер – crystalcoderexploit[.]im. Дата рождения и адрес, указанные в их профиле на рисунке, скорее всего – фейковые.

В профиле на форуме lolz[.]guru указано, что разработчик русский и работает один.

DCRat - lolz profile
DCRat - github profile

У Boldenis44 также есть аккаунты на форуме по взлому игр blast[.]hk, российском сервере Minecraft gamai[.]ru, а также на российском даркмаркете DarkNet[.]ug.

[su_image_carousel source=”media: 2157,2156″ limit=”0″ controls_style=”light” crop=”none” dots=”no” autoplay=”0″ speed=”fast” outline=”no”]

Также существует профиль Darkcrystal Rat в ВК, (dcrat_1994), но неясно, принадлежит ли он тому же человеку, что и Boldenis44/Кодер.

Аватарка была взята из фильма “Кто Я” И была изменена.

DCRat - vl profile cache
(старая) кэшированная версия сайта

В ВК был найден еще один профиль, в котором упоминался URL crystalfiles[.]ru, – Родион Балканов (https://vk.com/bagyuvix). Однако страница была удалена.

DCRat - vk search profile

Хронология

31 июля 2018 г. – на форуме lolz[.]guru создан профиль Кодер.

1 сентября 2019 г. – создан Telegram-канал DarkCrystalRat.

2 сентября 2019 г. – зарегистрирован dcrat[.]ru.

DCRat - domen info

4 сентября 2019 г. – введение специального формата плагинов: DCLIB.

19 ноября 2019 г. – Редизайн инструмента администратора.

12 мая 2020 г. – Mandiant публикует анализ клиента DCRat.

27 мая 2020 г. – зарегистрирован crystalfiles[.]ru; распространение переходит на новый домен.

DCRat - domain info crystalfiles.ru

30 мая 2020 г. – выпущена версия 3.0 .

Октябрь 2020 г. – выпуск DCRat Studio.

18 марта 2021 г. – выпущена версия 4.0 .

31 декабря 2021 г. – временная скидка 50% на все типы лицензий в преддверии Нового года.

6 марта 2022 г. – В связи падения рубля цены изменились с рублей на доллары по курсу 1 доллар США = 100 рублей.

28 марта 2022 г. – Ограниченная по времени скидка на двухмесячную, годовую и пожизненную лицензии до 5, 19 и 39 $.

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

Софт админа RAT

Автор вредоносного ПО решил разработать инструмент администрирования RAT в JPHP, используя нишевую российскую IDE под названием DevelNext. DevelNext компилирует программу PHP в байт-код Java, который затем может выполняться на JVM.

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

Одним из примеров вредоносного ПО, использующего эту IDE, является рудиментарный бэкдор под названием IceRAT, обнаруженный в начале 2020 года. Это вредоносное ПО

Одним из примеров вредоносного ПО, использующего этот IDE, является элементарный бэкдор под названием IceRAT, обнаруженный в начале 2020 года. Эта вредоносная программа нацелена на русскоязычных жертв, устанавливая на их конечные точки ПО для майнинга. Более старым примером является программа, написанная для OSX в рамках кампании, направленной на криптовалютные кошельки Jaxx, которая была обнаружена в 2018 году.

Содержание архива

Инструмент администратора поставляется в виде ZIP-архива со следующей структурой:

Имя файлаОписание
DCRat.exeПанель запуска администратора (создана с использованием оболочки Launch4j)
dcrat_updservice.exeИнструмент обновления админки
updatelauncher.batСкрипт, выполняющий dcrat_updservice.exe
Notify.wavАудиофайл уведомления (2,5 сек)
data/Расположение вспомогательных утилит
design/Содержит файл DeleteAll_legacy.json
lib/Расположение всех Java-модулей сборщика
plugins/Используется для хранения загруженных плагинов; по дефолту содержит только тестовый плагин
profiles/Пустой каталог, используемый для хранения сохраненных профилей пользователя

Каталог lib является домом для основного модуля сборки, а также нескольких легитимных модулей JPHP, от которых зависит конструктор.

SHA256 ХЭШ
SHA256Описание
9967ea3c3d1aee8db5a723f714fba38d2fc26d8553435ab0e1d4e123cd211830JSON-модуль
6014d44d8f7da00f03db051b3dcea9a03ec3837977118c69a4512ef558a6df2aОсновной модуль конструктора
cf4068ebb5ecd47adec92afba943aea4eb2fee40871330d064b69770cccb9e23Модуль граф. интерфейса
5b37e8ff2850a4cbb02f9f02391e9f07285b4e0667f7e4b2d4515b78e699735aJPHP core module
4aef566bbf3f0b56769a0c45275ebbf7894e9ddb54430c9db2874124b7cea288Модуль zend
d637e3326f87a173abd5f51ac98906a3237b9e511d07d31d6aafcf43f33dac17Модуль jfoenix
c25d7a7b8f0715729bccb817e345f0fdd668dd4799c8dab1a4db3d6a37e7e3e4Модуль javafx
2d43eb5ea9e133d2ee2405cc14f5ee08951b8361302fdd93494a3a997b508d32Модуль Google gson
15f36830124fc7389e312cf228b952024a8ce8601bf5c4df806bc395d47db669Модуль PHP
9c287472408857301594f8f7bda108457f6fdae6e25c87ec88dbf3012e5a98b6Модуль среды выполнения JPHP PHP
434e57fffc7df0b725c1d95cabafdcdb83858ccb3e5e728a74d3cf33a0ca9c79Модуль XML
0f26584763ef1c5ec07d1f310f0b6504bc17732f04e37f4eb101338803be0dc4Модуль JPHP SDK
4bec0794a0d69debe2f955bf495ea7c0858ad84cb0d2d549cacb82e70c060cbaМодуль javafx
03ead999502aefbf1380bd2e9c4a407acb7a92a7b2fe61f6995aba3fca85efd4Модуль objectweb asm

Точка входа сборщика указана в <main_module>.jar/.system/application.conf and points to dct/forms/MainForm.phb.

# MAIN CONFIGURATION
app.name = DCRat2.0
app.uuid = fabb4b64-bb3a-4418-a495-a0e669188d81
app.version = 1

# APP
app.namespace = dct
app.mainForm = MainForm
app.showMainForm = 1
app.fx.splash.autoHide = 0

Каталог данных содержит специальный компилятор для создания исполняемого файла клиента, специальный инструмент обфускации EXE, коммерческий инструмент защиты .NET под названием .NET Reactor, а также утилиты сжатия WinRAR и UPX.

SHA256 ХЭШ
SHA256Имя файлаОписание
d0680ac62e94f953df031533acd0acb718ad8494f938d84198c655507709e5df7zxa.dllЛегитимная 7zip DLL
914cca033fc8ca52830a21b5dca55263cee1e74ab5571702906ee9c25aedafd7DCRAC.exeОбфускатор DCRat EXE
812cd4b5e80bc4e83a2e01a6f3fb24346ecf57dcaf8ff6fc3e55a2a6b953da23 DCRCC.exe, DarkCrystalRATCSharpCompiler.exeКомпилятор DCRat
b11ad1adfa96eacf5f18cf87785884947a6d35a1baebf4f20f16402b04d5109f Default.SFXЧасть WinRAR
a0b6bb521e52a99abf5ac1017302da014d37296619078d42d9edf5d86d137f63 NCC2.dllЧасть .NET Reactor
38274608d5a4b53ec22f8099f798ba46ce0ed41db65a33dfb3853f0dbf849f6f NCC3.dllЧасть .NET Reactor
c41cd461470ff3c936e225cea37e5190cb06e3cd70a3d76ca8e5d3aceead5493NCCheck.dllЧасть .NET Reactor
770d7b5e40ed9b0aff5d0e3fc2ccf9ba10d4925d3441f38b71a35bd26e6e8d98 Rar.exeЧасть WinRAR, подписана
35a21f1aebf8ea0ab9be1814131fec1fa079d91b701e505054b69eccbdfd0732 RarExt.dllЧасть WinRAR, подписана
db28575f61b1adc88a28ae51ce3b00226e4974ca60894896e414ea408c6ff9fe RarExt64.dllЧасть WinRAR, подписана
ca08ed8423afda4b41757a1f3adf4f855732dc0628fe2ea5d8a96b13f56b9f84 WinCon.SFXЧасть WinRAR, подписана
2293fe261d5c6f5f2a33004b11f068037677b7aa5a6f792031e31555f31f0d69 Zip.SFXЧасть WinRAR
83445595d38a8e33513b33dfc201983af4746e5327c9bed470a6282d91d539b6 dnlib.dllDNLib – библиотека чтения/записи сборок .NET
e817802f166662a7df0b144571354d74b10e34d120f91ae9d84ca3ba925241c6 dotNET_Reactor.Console.exeЧасть .NET Reactor 
78684aea83b1a5c402a87ba0ce2e7ad5b0338462cc804e97369203ce53d29834 dotNET_Reactor.exeЧасть .NET Reactor 
5981e508e89c65c445fca892e91b8ec39b1d8563804d0999d963d640aa592444 enc.vbeКодирование сценариев VBS
d634cde09d1aa1320a1d4c589d35d306f8350129faf225b2bca394128c2c4442 upx.exeUPX 3.96 Windows 32-bit
1317d70682bd11e5d320af850d6ecbb5a70c200d626ec7bf69c47566894db515 wRar.exeЧасть WinRAR, подписана

.PHB

Вместо файлов классов Java JAR-архивы JPHP состоят в основном из файлов PHB.

PHB – это пользовательский формат файлов, используемый исключительно JPHP. Файлы PHB – это просто архивы, содержащие несжатые, незашифрованные файлы классов Java и заголовок PHB. Каждому файлу класса Java предшествует заголовок файла класса, содержащий такую ​​информацию, как имя модуля, имена методов, путь к файлу PHP и длину файла класса.

Файлы классов можно извлечь с помощью следующего скрипта Python, а затем декомпилировать с помощью таких инструментов, как JAD или jd-gui.

Python скрипт
import os
import sys
import struct

in_file = sys.argv[1]
out_dir = os.path.splitext(in_file)[0] + "_extracted"
in_size = os.path.getsize(in_file)

os.mkdir(out_dir)

with open(in_file, 'rb') as f:
  buf = f.read()
  magic = b'\xCA\xFE\xBA\xBE'
  offsets = [i for i in range(len(buf)) if buf.startswith(magic, i)]
  count = 0
  for of in offsets:
    file_name = os.path.splitext(in_file)[0] + "_" + str(count) + ".class"
    f.seek(of - 4)
    class_len = struct.unpack('>i', f.read(4))[0]
    file_data = f.read(class_len)
    with open(os.path.join(out_dir, file_name), "wb") as f2:
      f2.write(file_data)
    count += 1

Структура файла PHB (пример):

*клик*
1C 9A 4A 92         PHB signature
01 33 53 D3
00 00 00 00
00 00 00 33              
00 33                     len of the following string
44 3A 5C 49         string "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 00 2D
00 2D                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81"
[...]
00 01
FF FF FF FF
FF FF FF FF
00 07                    len
55 6E 6B 6E         "Unknown"
[...]
00 00 00 00
00 00 03 4F         number of class files
00 00 00 36         start of class file header #1
00 36                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81_closure0"
[...]
00 00 00 00
00 00 00 00
FF FF FF FF
00 00
FF FF FF FF
FF FF FF FF
00 01
00 00 00 00
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65              
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65              
01 00 00 00
39 00 00 00
18
00 33                     len
44 3A 5C 49         "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 0A 98          len of class file #1
CA FE BA BE         start of class file #1
[...]
00 00 00 36         start of class file header #2
00 36                    len
24 70 68 70         "$php_module_mba8a6a7b4b0144048b64e6456cd9fb81_closure1"
[...]
00 00 00 00
00 00 00 00
FF FF FF FF
00 00 FF FF
FF FF FF FF
FF FF 00 01
00 00 00 00
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65
00 00 00 08
00 08                    len
5F 5F 69 6E         "__invoke"
76 6F 6B 65
01 00 00 00
40 00 00 00
18
00 33                     len
44 3A 5C 49         "D:\IdeaProjects\DCRat2.0\src\dct\forms\MainForm.php"
[...]
00 00 0A 9B         len of class file #2
CA FE BA BE        start of class file #2
[...]

Лицензия

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

DCRat - admin panel
админ панель

Проверки состоят из HTTPS-запросов к жестко заданному домену dcrat[.]ru.

Валидация пиров

При первой проверке достоверности передается случайное 64-символьное значение, которое перед передачей хэшируется и кодируется в Base64. Ответ от сервера C2 должен содержать такое же значение, и оно должно быть аналогично хэшировано и закодировано, чтобы считаться действительным. Этот обмен обеспечивает элементарную проверку равных, гарантируя, что инструмент администратора взаимодействует с подлинным сервером DCRat.

Валидация подписки

Второй запрос HTTPS проверяет подлинность компьютера, на котором запущен инструмент администратора. Собирается несколько свойств хоста для создания уникального отпечатка. Он передается на dcrat[.]ru и (предположительно) сопоставляется с действительной записью подписчика.

DCRat - License validation HTTPS queries

Выход силой

Инструмент администратора также выполняет необычную финальную HTTPS-проверку публичного ресурса, размещенного на GitHub под личным именем “boldenis44”. Функции запроса и ответа имеют глобальный “выключатель”. По усмотрению автора DCRat, нажатие этого переключателя сделает все экземпляры инструмента администратора DCRat непригодными для использования, независимо от срока действия лицензии.

[su_image_carousel source=”media: 2241,2240,2239″ limit=”0″ controls_style=”light” crop=”none” dots=”no” autoplay=”0″ speed=”fast” outline=”no”]

Эта функция была обнаружена в отдельных сборках инструмента администратора, датированных серединой 2021 и началом 2022 года.

Функционал админки

Инструмент администратора позволяет выполнять следующие действия:

  •  Вход на активный сервер C2
  •  Выдача задач зараженным клиентам
  •  Создание сборок загрузчика и/или клиента
  •  Просмотр и запрос статистики установки
  •  Отправляйте отчеты об ошибках автору DCRat

Необходимо выполнить вход на активный сервер C2, на котором размещен бэкенд PHP.

DCRat - login C2 server

Параметры входа имеют неясный синтаксис:

http://<server>/@<reversed_base64_PHP_pagename_minus_php_suffix>

password

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

Функции сгруппированы с помощью вкладок.

DCRat - functions tab

Users

На этой вкладке перечислены активные/зарегистрированные зараженные хосты. Список обновляется с помощью периодического опроса C2.

Builder

На этой вкладке можно настроить (и создать) сборки клиента. В анализируемой версии админки “ядро” клиента загружается из домена dcrat[.]ru в виде строки Base64, становясь входными для “DCRCC.exe”.

DCRat - configuration page for client runtime
Защита \ ‘лолз на заднике :)

Вот доступные параметры для конфигурации: 

  • Сеть: 
    • Задает список первичных и вторичных хостов C2 (транспортные протоколы ограничены HTTP/S). 
  • Защита:
    • Необязательная обфускация собранного файла клиента с помощью .NET Reactor.
    • Имя мьютекса для использования во время выполнения – по умолчанию это случайная 20-символьная буквенно-цифровая строка, перед которой стоит префикс DCR_MUTEX.
    • DCR_MUTEX-<20_ALPHANUM_RAND>
    • Отключить диспетчер задач Windows через запись в реестре
    • Указать (подделать) отметку времени создания PE
    • Задержка запуска в секундах
  • Плагины: 
    • Настройте и включите плагины
  • Установка: 
    • Путь для распаковки модулей при запуске клиента
    • Механизм сохранения для использования
    • Используемый скрипт команды первого запуска
    • Значение тега, отображаемое на хостах, на которых запущена сборка DCRat 
    • Автофункции – функции для автоматического запуска после запуска:
      • Стилер
      • Кейлоггер 
      • Деинсталляция
    • Force Admin – попробуйте принудительно получить права администратора при запуске
    • Построить кэш-хранилище
  • Сборка:
    • Дополнительное сжатие сборки UPX 
    • Расширение файла для использования
    • Значок PE-файла

Loader

Настройка и сборка бинарного загрузчика. Поддерживается ряд стекируемых “Действий”, объединяемых для определения поведения во время выполнения:

  • Загрузить файл
  • Выполнить файл
  • HTTP-запрос
  • CMD-скрипт
  • Ждать
  • Окно сообщения

Tools

Обеспечивает загрузку и конвертирует файлы cookie из Netscape в JSON.

Settings

Настройте параметры сборщика:

  • Изменить фоновое изображение графического интерфейса
  • Автоматически опрашивать C2 на наличие подключенных (зараженных) хостов
  • Показать уведомления

Statistics

Готовые отчеты для опроса зараженных клиентов (страна, версия Windows и т.д.). 

USER-ID

Зараженные хоста?

Bug Report

Отправьте сообщение об ошибке сопровождающему(им) DCRat. 

Tasks

Настройка заданий для выполнения на одном или нескольких клиентах DCRat. Задачи могут быть сохранены (экспортированы) или загружены (импортированы) из текстового файла. Задачи хранятся в виде обращенной строки Base64. 

Global Functions

Задачи, которые будут выполняться для всех зарегистрированных клиентов DCRat. 

DCRat Client

Ниже мы рассмотрим особенности клиента DCRat (стилера) и DCRat Loader. Поведение во время выполнения для обоих настраивается с помощью инструмента администратора DCRat.

Client Loader

Инструмент администратора предоставляет функцию для генерации исполняемого файла DCRat “Loader”. В версии, которую мы анализировали, генерация загрузчика в формате DLL не поддерживалась. Вполне возможно, что автор может добавить эту поддержку в новых сборках.

Поведение загрузчика при выполнении настраивается с помощью одного или нескольких консервированных “Действий”. Типичная сборка может представлять собой комбинацию “Загрузить файл”, “Подождать” и “Выполнить файл”, которая будет молча извлекать файл, а затем запускать его после достаточно долгого ожидания, чтобы не вызвать подозрений.

DCRat - Client Loader

Исходный код загрузчика встроен в инструмент администратора в виде серии строк Base64, которые декодируются для раскрытия исходного кода C#. Код для исполняемого файла выбирается на основе действий, выбранных пользователем. Поставляемый в комплекте “DCRCC.exe” генерирует исполняемый файл.

Если выбрано, то созданный исполняемый файл будет защищен с помощью DotNET Reactor:

“-control_flow_obfuscation 1 -flow_level 9 -resourceencryption 1 -stringencryption 1 -suppressildasm 0 -all_params 1 -obfuscate_public_types 1 -exception_handling 0”

Persistence

Постоянство для DCRat ограничено обычными местами “автозапуска” Windows:

  • Реестр, использует HKLM\Software\Microsoft\Windows\CurrentVersion\Run
  • Реестр, использует HKCU\Software\Microsoft\Windows\CurrentVersion\Run
  • Реестр, использует HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon (REG_SZ: “Shell”)
  • Запланированная задача /ONLOGON 
  • Запланированная задача /sc минута RandomMinMax(5,15) 

Исполняемый файл клиента копирует себя в корень системного диска, используя имя случайно выбранного запущенного процесса, исключая “svchost.exe”.

Config

Конфиг DCRat встроен в двоичный файл клиента как строковый ресурс в Base64-кодировке. Он имеет формат JSON и содержит C2 URL, тег, имя мьютекса и несколько параметров выполнения, а также специфические для плагинов параметры конфигурации для включенных плагинов.

ИмяТипОписание
H1stringОсновной URL C2
H2stringВторичный URL C2
TAGstringТег, заданный во время сборки (например, идентификатор жертвы, идентификатор кампании и т.д.)
MUTEXstringИмя мьютекса; по умолчанию это случайное буквенно-цифровое значение, которому предшествует префикс “DCR_MUTEX-“, но оно может быть установлено в любую строку
DBGboolВключение/выключение дебаггера
BCSintРазмер кэш-памяти
AURintТочное использование неизвестно; контролирует поведение переименования/сохранения файлов
ASboolАвто-стилер вкл\выкл
AKboolАвто-кейлогер вкл\выкл
ADboolАвтоматическая деинсталляция вкл/выкл
PLUGINCONFIGSobjectПараметры конфигурации плагина

Ниже приведен пример конфигурации, найденный в образце, распространяемом через Prometheus TDS:

*клик*
{
    "H1": "http[:]//co44089.tmweb[.]ru /9rsk8lug9peq4f23cjhyo3fz2q7j81vhnvil6c6tjdc7adzbia1ki04d9p65b5wfe4ronb0rtm/4vsyc5bajheyp1gt5i63igklh15828uwuwsek0x0p9frsqy1l2boc3l936aratwc7jddw2djzm40u83r6f/ybxoa2zsmu9ovinlf57463869tj",
    "H2": "http[:]//co44089.tmweb[.]ru /9rsk8lug9peq4f23cjhyo3fz2q7j81vhnvil6c6tjdc7adzbia1ki04d9p65b5wfe4ronb0rtm/4vsyc5bajheyp1gt5i63igklh15828uwuwsek0x0p9frsqy1l2boc3l936aratwc7jddw2djzm40u83r6f/ybxoa2zsmu9ovinlf57463869tj",
    "TAG": "GFN",
    "MUTEX": "DCR_MUTEX-bQ2or3bMKAwvUmZaLKHY",
    "DBG": false,
    "BCS": 0,
    "AUR": 1,
    "AS": true,
    "AK": true,
    "AD": false,
    "PLUGINCONFIGS": {
        "MessageOnStartConfig": {
            "caption": "GFN hacker",
            "text": "Wait 10 minutes",
            "icon": "Information",
            "buttons": "OK",
            "uniq": "chpf05oqbupjilp1ccxqb65xf"
        },
        "XMRigMinerCFG": {
            "SavePuth": "C:/WindowsDefender/RunShell.exe",
            "Gate": "xmr.pool.minergate.com:45700",
            "UserName": "[email protected]",
            "Password": "x",
            "DopArguments": "--donate-level=1 --pause-on-battery",
            "CPUPriority": "0",
            "cpumaxthreadshintn": "25",
            "mode": "light"
        }
    }
}

Отпечаток хоста

В рамках начальной регистрации клиент DCRat сообщает ряд атрибутов хоста своему C2. Эта информация определяется с помощью комбинации WMI, классов инструментов .NET и запросов к реестру Windows:

  • Имя компьютера хоста
  • Имя пользователя хоста 
  • Продукт/версия Windows 
  • Значение тега (встроенный; идентификатор кампании) 
  • Администратор 
  • Имя/Имена видеокарты 
  • Продукт/вендор процессора
  • Метки локальных, сетевых, съемных дисков
  • Имеет микрофон 
  • Установленная(ые) веб-камера(ы) 
  • Текст активного окна 
  • Страна, город, широта/долгота (геопозиция)
  • Установлен антивирусный(ые) продукт(ы) 
  • Установлен продукт(ы) брандмауэра 
  • Производитель BIOS 
  • Производитель материнской платы 
  • Производитель процессора 
  • Физическая память 
  • Сетевые интерфейсы (IP, WiFi/Ethernet) 
  • Установленная версия .Net
DCRat - Host Fingerprint

Все транзакции HTTPS используют случайный User Agent, выбираемый из встроенного массива из 12:

Юзер агентов
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.53",

"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 OPR/81.0.4196.60",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Edg/96.0.1054.29",

"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0"

Функционал стилера

Функции стилера предварительно настраиваются с помощью инструмента администратора “Builder”. Задачи кражи определяют последовательность операций, выполняемых при краже хранимой информации:

DCRat может воровать из следующих источников:

  • Куки браузера
  • Пароли, хранящиеся в браузере 
  • Содержимое форм, хранящихся в браузере 
  • История браузера 
  • Сохраненные кредитные карты (через Windows DPAPI и Chrome SQLite Database)
  • Telegram 
  • Учетная запись Steam
  • Токены Discord 
  • Учетные данные FileZilla
  • Скриншоты 
  • Кейлоггер
  • Содержимое буфера обмена
  • Sysinfo
DCRat - Stealer Functionality

Компонент стилера также способен запускать индивидуальные плагины, что делает его расширяемым для размещения информации, которую авторы вредоносных программ находят на конкретных объектах.

(D)Dos

DCRat содержит примитивный многопоточный код для выполнения различных форм DOS-атак, включая HTTP(S) POST, UDP и TCP, на конкретную комбинацию хоста и конечной точки.

Тактика задержки

Обычный для многих семейств вредоносных программ, DCRat использует инструменты командной строки Windows для задержки выполнения. С выполнением клиента DCRat связаны вызовы инструмента командной строки Windows для настройки службы времени, w32tm. При настройке с подходящими аргументами командной строки, он может действовать как механизм задержки. В случае DCRat передаются аргументы, действующие как 10-секундные задержки. Совпадающие экземпляры w32tm в конечной точке XDR могут быть возможным, хотя и несколько слабым, сигналом выполнения клиента DCRat:

DCRat - Delay Tactics

Плагины

Плагины могут разрабатываться сторонними разработчиками с использованием специальной IDE под названием DCRat Studio. Официальные плагины доступны для загрузки с сайта crystalfiles[.]ru, и их функциональность включает в себя эксфильтрацию данных/кражу учетных данных, манипулирование системой и майнинг криптовалюты.

DCRat - Plugins

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

  • AutoKeylogger (устарел)
  • AntiVM (объединен с AntiAnalysis)
  • MiscInfoGrabber
  • WebBrowserPassView
  • RunOnce
  • DesktopGrabber
  • StartupPlus
  • AntiKiller
  • AntiSNG
  • BlockInput
  • MessageOnStart
  • ClipboardLogger
  • RegEditor
  • FileSearcher
  • FileGrabber
  • TitleKiller (устаревший)
  • ProcessKiller
  • CryptoStealer
  • TelegramNotifier
  • AntiAnalysis
  • Clipper
  • CountryBlackList
  • VPNGrabber
  • ForceAdmin
  • SystemRestorePointsCleaner
  • UserPingCounter
  • ActiveWindowNotifier
  • FakeSteamWindows
  • Discord notifications (сторонние)
  • IgnorTags (стороннее приложение)
  • Kryptex Miner (третье лицо)
  • XMRig (третье лицо)

Выводы

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

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

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

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

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

Индикаторы компрометации (IOC’с)

DCRat Stealer; Delay Command; Process/.BAT invocation:
“w32tm /stripchart /computer:localhost /period:5 /dataonly /samples:2”
DCRat Stealer; Self Preservation; Windows Registry changes:
    HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System
    REG_DWORD: “DisableTaskMgr”:1

DCRat Stealer; Persistence; Windows Registry:
    HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    REG_SZ: “Shell”: “explorer.exe, %STEALER_EXE_PATH%”
HKCU|HKLM\Software\Microsoft\Windows\CurrentVersion\Run: <STEALER_EXE_PATH>

DCRat Stealer; Persistence; Windows Scheduled Tasks:
schtasks.exe /create /tn <STEALER_EXE_NO_EXTENSION> /sc ONLOGON /tr <STEALER_EXE_PATH> /rl HIGHEST /f
schtasks.exe /create /tn <STEALER_EXE_NO_EXTENSION> /sc minute /mo <RND_MIN5_MAX15> /tr <STEALER_EXE_PATH> /f

DCRat Stealer; Host Fingerprint; WMI Queries:
SELECT * FROM AntivirusProduct: displayName
SELECT * FROM FirewallProduct: displayName
SELECT * FROM Win32_BIOS: Manufacturer
SELECT * FROM Win32_BaseBoard: Manufacturer, SerialNumber
SELECT * FROM Win32_Processor: Name
SELECT * FROM Win32_ComputerSystem: TotalPhysicalMemory
SELECT * FROM Win32_VideoController: Name, AdapterRAM
SELECT * FROM Win32_PnPEntity WHERE (PNPClass = ‘Image’ OR PNPClass = ‘Camera’)

DCRat Stealer; Host Fingerprint; Windows Registry:
READ: HLKM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release
READ: HKLM\SYSTEM\ControlSet001\Control\Class\ {4d36e968-e325-11ce-bfc1-08002be10318}\<SUBKEY_1..SUBKEY_N>\{AdapterString,DriverDesc,qwMemorySize}

DCRat Stealer; Runtime; Mutex (Default format, if not overridden):
    DCR_MUTEX-<20_ALPHANUM_ULCASE_RAND>

DCRat Builder/Admin Tool; C2 Network Traffic:
    DNS + HTTPS: dcrat[.]ru, crystalfiles[.]ru
Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.
Этот веб-сайт использует файлы cookie, чтобы обеспечить вам наилучший опыт.