Поддержка
Круглосуточная поддержка

Позвоните

Бесплатно по России:
8-800-333-79-32

ЧаВо | Форум

Ваши запросы

  • Все: -
  • Незакрытые: -
  • Последний: -

Позвоните

Бесплатно по России:
8-800-333-79-32

Свяжитесь с нами Незакрытые запросы: 

Профиль

Профиль

Trojan.Belonard.2

Добавлен в вирусную базу Dr.Web: 2019-01-14

Описание добавлено:

Пакер: VMProtect

Дата компиляции: 21.10.2018, 14:53:39

SHA1:

  • 75ec1a47404193c1a6a0b1fb61a414b7a2269d08 (Mp3enc.asi)

Описание

Является одним из компонентов троянца Belonard. Попадает на устройство за счет Trojan.Belonard.1. Загружает и исполняет Trojan.Belonard.3.

Принцип действия

В DllMain проверяет имя процесса, куда загружена dll. Если это не rundll32.exe, тогда создает поток, а в нем – ключ [HKCU\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers] '<путь до исполняемого файла процесса>, которому присваивает значение "RUNASADMIN". Библиотека также имеет экспорт "xW", в котором сразу переходит к выполнению основного функционала.

Если у диска, на котором располагается троянец, не выставлен флаг FILE_READ_ONLY_VOLUME, тогда удаляет файл Mssv24.asi. Если удалить не получилось, переименовывает его в файл со случайным именем и расширением .dat, после чего удаляет. Создает мьютекс "qfincshmkhftobll".

Кроме того, программа пытается прочесть содержимое файла platform\Servers\DialogGameName.res. Если найти файл не получилось, троянец создает его и записывает в него 16 случайных байт. После этого троянец меняет время создания/модификации/доступа файла, копируя эти данные у Mssv12.asi, Mssv29.asi, Mss32.dll или hl.exe.

Троянец собирает данные о системе и формирует из них следующую структуру:


#pragma pack(push, 1)
struct st_info
{
  _BYTE byte0; // 0x01
  _BYTE bIsWow64Process;
  _BYTE DialogGameNameResData[0x10];
  _DWORD dwProductVersionMS;
  _WORD ProductVersionLS; // (dwProductVersionLS & 0xffff0000) >> 16
  _WORD DefaultUILang;
  _DWORD TotalMemory; // in Mb
  _DWORD dwNumberOfProcessors;
  _WORD wProcessorArchitecture;
  _WORD wProcessorLevel;
  _WORD wProcessorRevision;
  _QWORD ticks;
  _BYTE IsTokenElevated;
  _BYTE IsWinDHCPServiceRunning;
  _BYTE IsWinDHCPDllExists;
  _BYTE IsDavapiDllExists;
  _BYTE IsSpwinresDllExists;
  _BYTE IsWmcodecsDllExists;
  _BYTE IsSsdp32DllExists;
  char szSystemDir[];
  char szSysWow64Dir[]; // absent for x86 OS
  char szMp3encAsiPath[];
  char szProcessExePath[];
  char szCurrentDir[];
  _BYTE IsMssv24AsiExists;
  _BYTE IsDialogServerNameResExists;
  _BYTE DialogServerNameResData[0x0e];
  _BYTE IsCstrikeSaveFolderExists;
  _DWORD dwCstrikeSaveFilesCount;
  _BYTE IsSteamClient;
  _BYTE ModSHA256[32];
}
#pragma pack(pop)

При наличии файла platform\Servers\DialogGamePage.res читает из него информацию о ранее загруженной полезной нагрузке и добавляет эту информацию к st_info.

Собранные данные оборачиваются в структуру:


#pragma pack(push,1)
struct st_packet
{
  _BYTE byte0; //0x00
  _BYTE aeskey2[0x20];  // absent if size of resulting st_packet structure is less to 342 bytes
  _BYTE aeskey[0x20];
  _DWORD size;
  _BYTE data[size]; // st_info struct
}
#pragma pack(pop)

После чего данные шифруются публичным RSA-ключом, зашитым в троянца. Только первые 342 байта данных шифруются RSA, остальное (при наличии) шифруется AES-ом в режиме CFB с размером блока 128 бит, где ключ получается из st_packet->aeskey2, вызовом EVP_BytesToKey(cipher, md_sha256, 0, &st_packet->aeskey2, 32, 5, key, iv).

В начало зашифрованных данных дописывается нулевой байт, после чего они отправляются на управляющий сервер: wcnclfbi.valve-ms[.]ru:28748. В ответ сервер отдает зашифрованные данные следующей структуры:


struct st_payload
{
  _BYTE hash1[32];
  _DWORD totalsize;
  _BYTE hash2[32];
  _DWORD dword44;
  _DWORD dword48;
  _DWORD dword4c;
  _WORD word50;
  char payload_name[];
  _BYTE payload_sha256[32];
  _DWORD payload_size;
  _BYTE payload_data[payload_size];
}

Для расшифровки используется AES в режиме CFB с размером блока 128 бит. Ключ получается из st_packet->aeskey, как было описано выше. Сначала расшифровываются первые 36 байт данных, из них последний DWORD - это реальный размер полезной нагрузки и заголовка. К AES-ключу добавляется DWORD и хэшируется SHA256. Полученный хэш должен совпасть с первыми 32 расшифрованными байтами. После этого расшифровываются остальные принятые данные. Следующие 36 байт используются аналогично, но DWORD по смещению 0x44 больше не является размером полезной нагрузки, а используется просто для хэширования. В заголовке пакета есть имя, с которым сохраняется полезная нагрузка, ее размер и sha256-хэш.

Троянец записывает в platform\Servers\DialogGamePage.res зашифрованную структуру:


struct gamepage
{
  _BYTE byte0; // 0x01
  char modname[];
  _BYTE modsha256[32];
  _BYTE byte1; // 0x03
  _DWORD dword2;
  _QWORD qword3;
}

Алгоритмы шифрования/дешифровки аналогичны троянцу Trojan.Belonard.1:


def encbuf(data):
    c = random.randint(11, 245)
    d = random.randint(11, 245)
    e = random.randint(11, 245)
    f = random.randint(11, 245)
    enc_r = ''
    y = c
    z = c
     
    for i in range(len(data)):
        y = (ord(data[i]) + f*z + e*y + d)&0xff
        z = ord(data[i])
        enc_r += chr(y & 0xff)
    enc_r = '%c%c%c%c%s' % (d,f,e,c,enc_r)
    return f,e,d,enc_r
 
def decbuf(f,e,d,enc):
    y = ord(enc[0])
    dec = ''
    for i in range(1,len(enc)):
        y = (ord(enc[i]) - e*ord(enc[i-1]) - f*y - d)&0xff
        dec += chr(y)
    return dec

Троянец сохраняет полученную полезную нагрузку в файл Mssv16.asi(Trojan.Belonard.3) и запускает его экспорт "x" через rundll32.exe.

Некоторые строки программы зашифрованы. Алгоритм дешифровки:


def decrypt(d):
    s = ''
    c = ord(d[0])
    for i in range(len(d)-1):
        c = (ord(d[i+1]) + 0xe2*c - 0x2f*ord(d[i]) - 0x58) & 0xff
        s += chr(c)
    return s

Рекомендации по лечению

  1. В случае если операционная система способна загрузиться (в штатном режиме или режиме защиты от сбоев), скачайте лечащую утилиту Dr.Web CureIt! и выполните с ее помощью полную проверку вашего компьютера, а также используемых вами переносных носителей информации.
  2. Если загрузка операционной системы невозможна, измените настройки BIOS вашего компьютера, чтобы обеспечить возможность загрузки ПК с компакт-диска или USB-накопителя. Скачайте образ аварийного диска восстановления системы Dr.Web® LiveDisk или утилиту записи Dr.Web® LiveDisk на USB-накопитель, подготовьте соответствующий носитель. Загрузив компьютер с использованием данного носителя, выполните его полную проверку и лечение обнаруженных угроз.
Скачать Dr.Web

По серийному номеру

Выполните полную проверку системы с использованием Антивируса Dr.Web Light для macOS. Данный продукт можно загрузить с официального сайта Apple App Store.

На загруженной ОС выполните полную проверку всех дисковых разделов с использованием продукта Антивирус Dr.Web для Linux.

Скачать Dr.Web

По серийному номеру

  1. Если мобильное устройство функционирует в штатном режиме, загрузите и установите на него бесплатный антивирусный продукт Dr.Web для Android Light. Выполните полную проверку системы и используйте рекомендации по нейтрализации обнаруженных угроз.
  2. Если мобильное устройство заблокировано троянцем-вымогателем семейства Android.Locker (на экране отображается обвинение в нарушении закона, требование выплаты определенной денежной суммы или иное сообщение, мешающее нормальной работе с устройством), выполните следующие действия:
    • загрузите свой смартфон или планшет в безопасном режиме (в зависимости от версии операционной системы и особенностей конкретного мобильного устройства эта процедура может быть выполнена различными способами; обратитесь за уточнением к инструкции, поставляемой вместе с приобретенным аппаратом, или напрямую к его производителю);
    • после активации безопасного режима установите на зараженное устройство бесплатный антивирусный продукт Dr.Web для Android Light и произведите полную проверку системы, выполнив рекомендации по нейтрализации обнаруженных угроз;
    • выключите устройство и включите его в обычном режиме.

Подробнее о Dr.Web для Android

Демо бесплатно на 14 дней

Выдаётся при установке