Trojan.BtcMine.1259 - новый троян-майнер


Trojan.BtcMine.1259 - вредоносная программа, предназначенная для добычи криптовалюты Monero (XMR) и установки бэкдора Gh0st RAT (BackDoor.Farfli.96).

Распространяется майнер посредством другого вредоноса - трояна-загрузчика Trojan.DownLoader24.64313, который, в свою очередь, распространяется с помощью бэкдора DoublePulsar.

Сразу же после старта Trojan.BtcMine.1259 проверяет, не запущена ли на инфицированном компьютере его копия. Если таковая обнаружена, завершает свою работу. Обращаясь к ключу системного реестра HKLM\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\, троян получает количество ядер процессора зараженной машины. В случае, если оно больше или равно указанному в конфигурации трояна числу потоков, тогда он расшифровывает и загружает в память хранящуюся в его теле библиотеку.

Расшифрованные данные имеют следующую структуру:

struct st_module
{
  char name[4];
  char ver[4];
  _DWORD size;
  _DWORD unkd;
  _DWORD hash_offset;
  _BYTE module[];
  _BYTE signature[32];
  _BYTE unkb[12];
};

Эту библиотеку троян загружает в память и вызывает экспорт "DllFuUpgradrs". Ему передается указатель на буфер, в который была скопирована библиотека, размер буфера, блок данных base64 из конфигурации и строка "DhlVipVersfs". Сама библиотека представляет собой модифицированную версию системы удаленного администрирования с открытым исходным кодом, известной под наименованием Gh0st RAT (детектируется, как BackDoor.Farfli.96).

В этоц библиотеке троян ищет "MinerdDll" и передает на него управление. В качестве параметра передается строка и ее длина:

TTTTTTTTTTTTdU44U1d7Q135/I8mevCgfmeNUJwfnL8LnEJuNy4KFDDUi8Dk9Ut1DguMO8Hs9Yt21ZHMCIkCioHzZS62mPS7G7prmi0gwHwPqCDsRSgpmBpYr2Dpme7Pts8ZRnz+qfi+wLewYUNmcD7xIUhqCpY+ZlxSnFXBYTWux+gaZSo8sYsgiWQxIh8dQaQ5wOAuTVRzCApEEdfSdyR5jwmzhJQF7POmLxEMJaL/oVH3t5UCBdgxLHrvAqSq1DAsCmhgAaMoJ5kABaEW11K7Z7Z6uBfBQsXmBJZcFZAaUfCeWGBCRboStENQfha1ebFcFHV9o093Kt3LJRs/b0kvAXNOB+KDQNvqzokKEjBbxfZwUauIOx9jzLsYvFbQHJZ2th8JWPwFCadwydiMKb18olnK+3oACGTEf7tgAS2zOz3dWRdDbYpSPYm5ZhbN+ZsoarMFrVIEyXhScEAU5iHZ1tHp5R1pLmB9QX29iNrr98uj0HiFD+Ht4MZhIZPQhSzgSHzshixW6ltP4KJI0Ft3Q4eThGLGbP6oloyxrD6nIcFVzJrFRRRi0J6k7Z/oWOXq9T0+K5UpHo72Pp3sMEdYlwEtBqUL7nitEQqD7s7jG4/PqCWOPTlj6QgCwlLHV67x5S5jah7+jtb+vrgq5xG/a4fi3EiJHJb/0jk/n7AYlc3gv0AZYglADIVKH3R3nLUpNxqm70JJVjuhR3MdwysmvvPoxNOKk0mvdPYwT9LOtNSoyJwNST3/ski6p5EnIyyIqvWszZcJQMYJ1Y53VQRD4ZkcJxFOnb/mnLn2bIDfWGWXe6eDiqRw9MCHsoHDS0MolA8C2i/CdMBx2LyuzbUDthVF


MinerdDll
Данный модуль проверяет переданную ему в качестве параметра длину строки и, если она составляет менее 10 символов, завершает свою работу. Расшифровывает данные конфцигурации. Пример конфигурации:

Trojan.BtcMine.1259 Primer konfiguracii

где:

  • "vmicheart" – имя службы, с которым запускается троян;
  • "Hyper-V Heartbeat" – показываемое имя службы;
  • "zugqrvjw" - имя event, используемое для контроля повторного запуска трояна;
  • "%SystemRoot%\Speech\svchost.exe" – путь, по которому устанавливается троян;
  • "36" – размер буфера для генерации случайного значения;
  • "hxxp://btc.*****.cn:5317/btc.jpg" – URL конфигурации для обновления трояна;
  • "7023190" – ключ для расшифровки конфигурации, полученной по ссылке выше;
  • "данные base64" – конфигурация для зашифрованной троянской библиотеки;
  • "4" – количество потоков.


Обновление
Для установки собственного обновления троян загружает в память данные, полученные с сайта, URL которого указан в конфигурации. Пример конфигурации:

Trojan.BtcMine.1259 Primer konfiguracii obnovleniya

где:

  • 0000141 – размер данных;
  • "V9.2" – версия трояна;
  • "hxxp://btc.***.cn:5317/btc.dll" – зашифрованная библиотека, которая после расшифровки сохраняется в Update.dll;
  • "base64_data" – конфигурация для функции Dll_Walcom2.


По указанной ссылке троян скачивает файл библиотеки, расшифровывает его, загружает в память и вызывает экспорты. В первую очередь вызывается экспорт "Versions". Результат сравнивается с версией, указанной в конфигурации на обновление. Если версия у загруженной библиотеки больше или равна текущей, то вызывается экспорт KillMinerd_Data, которому передается пустой буфер. В отдельном потоке с интервалом в 1 секунду троян завершает процессы по имеющемуся у него списку. Список формируется подгруженной библиотекой в буфере, переданном в KillMinerd_Data.

Для завершения работы процессов троян перебирает их с использованием функций Process32First/Process32Next и с помощью функции NtQueryInformationProcess/NtReadVirtualMemory читает из PEB аргументы, с которыми был запущен процесс. В случае обнаружения строки из списка в строке аргументов процесса - этот процесс завершается, а исполняемый файл процесса удаляется. После этого троян запускает экспорт Dll_Walcom2 подгруженной библиотеки.


Update.dll
Эта библиотека имеет три экспорта:

  1. .10003080 Dll_Walcom2
  2. .10003250 KillMinerd_Data
  3. .10003240 Versions


Versions
Возвращает строку с текущей версией трояна – в исследованном образце она включает значение "V9.2".


KillMinerd_Data
Заполняет полученный буфер строками:

  • "STRATUM+TCP://"
  • " -p x"
  • " -xmr"
  • "minergate-service.exe"
  • "tasklsv.exe"


Все строки дополняются нулями до длины 128 байт.


Dll_Walcom2
Экспорт принимает 4 аргумента:

  • зашифрованную конфигурацию (base64, затем RC4 с ключом, растянутым до 256 байт);
  • размер зашифрованной конфигурации;
  • 5 (SW_SHOW) или 0 (SW_HIDE) — передаются в StartupInfo при старте майнера;
  • ненулевое значение для 64-битной системы.


Расшифрованная конфигурация имеет следующий вид:

Trojan.BtcMine.1259 Rasshifrovannaya konfiguraciya

где:

  • "-a cryptonight -o stratum+tcp://xmr-*****.com:8100 -u 44kZUM51KgQFd64tgTBQHC5FSfSmo9gjeMLp7CB1YF6fS3PWZaTM6eu5RUHy52kCvGMzep6nLhzDEcWy6Ey5BzMDNBoKguz -p x" — параметры запуска майнера;
  • "80" — сколько ядер задействовать (в процентах);
  • "24" — интервал перезапуска майнера (в часах);
  • "%SystemRoot%\Speech\" — домашний каталог майнера;
  • "csrss.exe" — имя для майнера;
  • "35" — количество случайных байт, которые будут дописаны в конец файла майнера.


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

  • "\WINDOWS\SYSTEM32\TASKMGR.EXE"

или

  • "\360\360SAFE\NETMON\360TASKMGR.EXE"

зловред завершает работу процесса своего майнера. По указанному в конфигурации пути сохраняет майнер и библиотеку msvcr120.dll. При этом троян содержит как 32-, так и 64-разрядную версию майнера и библиотеки. Соответствующая реализация майнера используется на зараженном компьютере в зависимости от разрядности операционной системы. При запуске майнера проверяет третий параметр функции Dll_Walcom2. Если он равен 0 (SW_HIDE), тогда заголовок окна майнера будет иметь вид

  • "C:\\Windows\\System32\\mstsc.exe"

а если SW_SHOW, тогда заголовок окна будет содержать версию и разрядность трояна.