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

Позвоните

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

ЧаВо | Форум

Ваши запросы

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

Позвоните

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

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

Профиль

Профиль

BackDoor.Spyder.1

Добавлен в вирусную базу Dr.Web: 2020-12-20

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

Упаковщик: отсутствует

Дата компиляции: 01.12.2016 05:57:59

SHA1-хеш:

  • 4c871eae022c8088f6e8d46e17002cd0c0006650

Описание

Бэкдор, написанный на языке С++ и предназначенный для работы в 64-разрядных операционных системах семейства Microsoft Windows. Используется для целевых атак на информационные системы, сбора информации о зараженном устройстве, загрузки функциональных вредоносных модулей, координации их работы и обеспечения взаимодействия с управляющим сервером. В инфицированной системе существует в виде динамической библиотеки и загружается системной службой при помощи метода DLL Hijacking. Далее функционирует в оперативной памяти компьютера.

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

Бэкдор представляет собой вредоносную DLL-библиотеку. Имена функций в таблице экспорта образца дублируют экспортируемые функции системной библиотеки apphelp.dll.

#drweb

На зараженном компьютере файл бэкдора размещался в каталоге C:\Windows\System32\oci.dll. Оригинальное имя файла из таблицы экспорта — dll. Загружался методом DLL Hijacking системной службой MSDTC (Microsoft Distributed Transaction Coordinator Service).

Функционально образец является загрузчиком для основной полезной нагрузки, которую хранит в секции .data в виде DLL, при этом некоторые элементы DOS и PE заголовков равны нулю.

#drweb

#drweb

Работа загрузчика

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

#drweb

Вначале проверяются сигнатуры заголовков. Если они не равны стандартным, то устанавливается значение ошибки ERROR_BAD_EXE_FORMAT, при этом на работу загрузчика данное действие никак не влияет.

Затем происходит выделение памяти для образа в соответствии со значением IMAGE_NT_HEADERS64.OptionalHeader.SizeOfImage, и формируется вспомогательная структура loader_struc.

struct loader_struc
{
  IMAGE_NT_HEADERS64 *pPE_header;
  LPVOID ImageBase;
  HMODULE *p_imported_modules
  QWORD number_of_imported_modules
  HMODULE (__stdcall *pLoadLibrary)(LPCSTR lpLibFileName);
  FARPROC (__stdcall *pGetProcAddress)(HMODULE hModule, LPCSTR lpProcName);
  BOOL (__stdcall *pFreeLibrary)(HMODULE hLibModule);
  QWORD unk;
};

Далее следует стандартный процесс загрузки PE-модуля в память и вызов точки входа загруженного модуля (DllMain) с аргументом DLL_PROCESS_ATTACH, а после выхода из нее — повторный вызов с DLL_PROCESS_DETACH.

Работа основного модуля

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

  • IMAGE_DOS_HEADER.e_magic
  • IMAGE_NT_HEADERS64.Signature
  • IMAGE_NT_HEADERS64.FileHeader.Magic

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

Анализ основного модуля затруднен, так как периодически используются нетипичные способы вызова функций. Для хранения и обработки структур используется библиотека UT hash. Она позволяет преобразовывать стандартные C-структуры в хеш-таблицы путем добавления одного члена типа ut_hash_handle. При этом все функции библиотеки, такие как добавление элементов, поиск, удаление и т. д., реализованы в виде макросов, что приводит к их принудительному разворачиванию и встраиванию (inline) компилятором в код основной (вызывающей) функции.

Для взаимодействия с управляющим сервером используется библиотека mbedtls.

Функция DllMain

В начале исполнения проверяется наличие события Global\\BFE_Notify_Event_{65a097fe-6102-446a-9f9c-55dfc3f45853}, режим исполнения (из конфигурации) и командная строка, затем происходит запуск рабочих потоков.

#drweb

Модуль имеет встроенную конфигурацию следующей структуры:

struct cfg_c2_block
{
    int type;
    char field_4[20];
    char addr[256];
}
struct cfg_proxy_data
{
    DWORD dw;
    char str[256];
    char proxy_server[256];
    char username[64];
    char password[32];
    char unk[128];
};
struct builtin_config
{
    int exec_mode;
    char url_C2_req[100];
    char hash_id[20];
    char string[64];
    char field_BC;
    cfg_c2_block srv_1;
    cfg_c2_block srv_2;
    cfg_c2_block srv_3;
    cfg_c2_block srv_4;
    cfg_proxy_data proxy_1;
    cfg_proxy_data proxy_1;
    cfg_proxy_data proxy_1;
    cfg_proxy_data proxy_1;
    int CA_cert_len;
    char CA_cert[cert_len];
};

Поле hash содержит некое значение, которое может являться идентификатором. Это значение используется при взаимодействии с управляющим сервером и может быть представлено в виде строки b2e4936936c910319fb3d210bfa55b18765db9cc, которая по длине совпадает с SHA1-хешами.

Поле string содержит строку из одного символа: 1.

CA_cert — сертификат центра сертификации в формате DER. Он используется для установки соединения с управляющим сервером по протоколу TLS 1.2.

#drweb

Информация о сертификате находится в примечании к описанию.

В функции DllMain предусмотрено создание нескольких рабочих потоков в зависимости от ряда условий.

  • Основной поток — thread_1_main
  • Поток запроса нового сервера — thread_2_get_new_C2_start_communication
  • Поток исполнения зашифрованного модуля — thread_4_execute_encrypted_module

Для выполнения необходимо, чтобы значение параметра builtin_config.exec_mode было ненулевым.

  • если значение builtin_config.exec_mode равно 1 или 2, и командная строка процесса содержат подстроку -k netsvcs, то запускаются основной поток и поток получения нового адреса управляющего сервера;
  • также, если builtin_config.exec_mode равен 2, то запускается поток, который расшифровывает и запускает хранящийся в системе модуль;
  • если значение равно 3, то запускаются основной поток и поток для получения нового адреса управляющего сервера.

В рассматриваемом образце значение параметра exec_mode равно 3.

Основной поток

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

#drweb

В структуру funcs_struc типа funcs_1 заносятся 3 указателя на функции, которые будут поочередно вызваны внутри функции init_global_funcs_and_allocated_cfg.

#drweb

В функции set_global_funcs_by_callbacks происходит вызов каждой функции-инициализатора по очереди.

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

  1. каждой функции передаются две структуры: первая содержит указатели на некоторые функции, вторая — пустая;
  2. каждая функция переносит указатели на функции из одной структуры в другую;
  3. после вызова функции-инициализатора происходит очередное перемещение указателей на функции из локальной структуры в глобальный массив структур по определенному индексу.

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

#drweb

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

#drweb

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

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

Фрагмент кода формирования хеш-таблицы.

#drweb

Стоит отметить, что здесь располагается значение сигнатуры, которое позволяет определить используемую библиотеку: g_p_struc_10->hh.tbl->signature = 0xA0111FE1;.

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

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

Инициализация соединения с управляющим сервером

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

#drweb

Список кодов ошибок, обнаруженных в рассматриваемом образце.

enum ERROR_CODES
{
    ERROR_CODE_1392 = 0x1392,
    ERROR_BAD_ARGS = 0x5208,
    ERROR_CODE_520B = 0x520B,
    ERROR_CODE_520D = 0x520D,
    ERROR_CODE_59D8 = 0x59D8,
    ERROR_CODE_59DB = 0x59DB,
    ERROR_CODE_59DC = 0x59DC,
    ERROR_INVALID_ARGUMENT = 0x59DE,
    ERROR_CODE_59DF = 0x59DF,
    ERROR_CODE_61A8 = 0x61A8,
    ERROR_BAD_ALLOCATION = 0x61A9,
    ERROR_BAD_PACKET_SIGNATURE = 0x61AA,
    ERROR_CODE_61AB = 0x61AB,
    ERROR_CODE_61AC = 0x61AC,
    ERROR_CODE_61AD = 0x61AD,
    ERROR_CODE_61AF = 0x61AF,
    ERROR_CODE_61B0 = 0x61B0,
    ERROR_CODE_61B1 = 0x61B1,
    ERROR_BUFFER_NOT_EMPTY = 0x61B2,
    ERROR_CODE_6590 = 0x6590,
    ERROR_CODE_6592 = 0x6592,
    ERROR_BAD_ALLOC = 0x6593,
};

После ряда подготовительных действий бэкдор разрешает хранящийся в конфигурации адрес управляющего сервера и извлекает порт. Адреса в конфигурации хранятся в виде строк: koran.junlper[.]com:80 и koran.junlper[.]com:443. Далее программа создает TCP-сокет для подключения. После этого создает контекст для защищенного соединения и выполняет TLS-рукопожатие.

#drweb

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

  • пакет, полученный после обработки протокола TLS, — «транспортный» пакет»;
  • пакет, полученный после обработки транспортного пакета, — «пакет данных». Содержит идентификатор команды и дополнительные данные.

Заголовок транспортного пакета представлен следующей структурой.

struct transport_packet_header
{
  DWORD signature;
  WORD compressed_len;
  WORD uncompressed_len;
};

Данные располагаются после заголовка и упакованы алгоритмом LZ4. Бэкдор проверяет значение поля signature, оно должно быть равно 0x573F0A68.

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

struct data_packet_header
{
  WORD tag;
  WORD id;
  WORD unk_0;
  BYTE update_data;
  BYTE id_part;
  DWORD unk_1;
  DWORD unk_2;
  DWORD len;
};

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

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

Порядок обработки команд сервера:

  • верификация клиента;
  • отправка информации о зараженной системе;
  • обработка команд по идентификаторам.

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

Этап верификации

Для выполнения этапа верификации значения полей tag и id в полученном от управляющего сервера первичном пакете должны быть равны 1.

Процесс верификации состоит в следующем:

  1. Бэкдор формирует буфер из 8-байтного массива, который следует после заголовка пакета и поля hash_id, взятого из конфигурации. Результат можно представить в виде структуры:
    struct buff
    {
        BYTE packet_data[8];
        BYTE hash_id[20];
    }
    
  2. Вычисляется SHA1-хеш данных в полученном буфере, результат помещается в пакет (после заголовка) и отправляется на сервер.

Отправка информации о системе

Следующий полученный пакет от управляющего сервера должен иметь значения tag, равное 5, и id, равное 3. Данные о системе формируются в виде структуры sysinfo_packet_data.

struct session_info
{
  DWORD id;
  DWORD State;
  DWORD ClientBuildNumber;
  BYTE user_name[64];
  BYTE client_IPv4[20];
  BYTE WinStationName[32];
  BYTE domain_name[64];
};
 
struct sysinfo_block_2
{
  WORD field_0;
  WORD field_2;
  WORD field_4;
  WORD system_def_lang_id;
  WORD user_def_lang_id;
  DWORD timezone_bias;
  DWORD process_SessionID;
  BYTE user_name[128];
  BYTE domain_name[128];
  DWORD number_of_sessions;
  session_info sessions[number_of_sessions];
};
 
struct sysinfo_block_1
{
  DWORD unk_0; //0
  DWORD bot_id_created;
  DWORD dw_const_0; //0x101
  DWORD os_version;
  WORD dw_const_2; //0x200
  BYTE cpu_arch;
  BYTE field_13;
  DWORD main_interface_IP;
  BYTE MAC_address[20];
  BYTE bot_id[48];
  WCHAR computer_name[128];
  BYTE cfg_string[64];
  WORD w_const; //2
  WORD sessions_size;
};
 
struct sysinfo_packet_data
{
  DWORD id;
  sysinfo_block_1 block_1;
  sysinfo_block_2 block_2;
};

Поле sysinfo_packet_data.id содержит константу — 0x19C0001.

Значение sysinfo_packet_data.block_1.bot_id извлекается из реестра. Бэкдор находит его в параметре instance ключа SOFTWARE\Clients\Mail\Hotmail\backup, который, в свою очередь, в зависимости от привилегий может находиться в разделе HKLM или HKCU.

Если значение отсутствует, то с помощью UuidCreate генерируется случайный GUID, форматируется в виде строки XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX и сохраняется. Если идентификатор уже существовал, то параметру sysinfo_packet_data.block_1.bot_id_created присваивается значение 1, а если идентификатор был создан — значение 2.

Значение параметра sysinfo_packet_data.block_1.cpu_arch:

  • 1 — x86
  • 2 — x64

Примечателен процесс определения бэкдором значений MAC-адреса и IP-адреса. Вначале программа ищет сетевой интерфейс, через который прошло наибольшее количество пакетов, затем получает его MAC-адрес и далее по нему ищет IP-адрес этого интерфейса.

#drweb

Версия ОС кодируется значением от 1 до 13 (0, если возникла ошибка), начиная с 5.0 и далее по возрастанию версии.

В поле sysinfo_packet_data.block_1.cfg_string помещается значение string из конфигурации бэкдора, которое равно символу 1.

Обработка команд

После верификации и отправки системной информации BackDoor.Spyder.1 приступает к обработке главных команд. В отличие от большинства бэкдоров, команды которых имеют вполне конкретный характер (забрать файл, создать процесс и т. д.), в данном экземпляре они носят скорее служебный характер и отражают инструкции по хранению и структурированию получаемых данных. Фактически все эти служебные команды нацелены на загрузку новых модулей в PE-формате, их хранение и вызов тех или иных экспортируемых функций. Стоит отметить, что модули и информация о них хранятся в памяти в виде хеш-таблиц с помощью UT-hash.

tag id Описание
6 1 Отправить на сервер количество полученных модулей.
2 Сохранить в памяти параметры получаемого модуля.
3 Сохранить в памяти тело модуля.
4 Загрузить сохраненный ранее модуль. Поиск выполняется в хеш-таблице по идентификатору, полученному в пакете с командой. Модуль загружается в память, вызывается его точка входа, затем получаются адреса 4 экспортируемых функций, которые сохраняются в структуре для дальнейшего вызова. Вызвать экспортируемую функцию № 1.

#drweb

5 Вызвать экспортируемую функцию № 4 одного из загруженных модулей, затем выгрузить его.
6 Отправить в ответ пакет, состоящий только из заголовка data_packet_header, в котором поле unk_2 равно 0xFFFFFFFF.
7 Вызвать экспортируемую функцию № 2 одного из загруженных модулей.
8 Вызвать экспортируемую функцию № 3 одного из загруженных модулей.
5 2 Отправить на сервер информацию о текущих параметрах подключения.
4 - Предположительно экспортируемая функция № 1 может возвращать таблицу указателей на функции, и по этой команде программа вызывает одну из данных функций.

После обработки каждого полученного от сервера пакета бэкдор проверяет разницу между двумя значениями результата GetTickCount. Если значение превышает заданное контрольное значение, то отправляет на сервер значение сигнатуры 0x573F0A68 без каких-либо дополнительных данных и преобразований.

#drweb

Поток запроса нового сервера

BackDoor.Spyder.1 может запросить адрес нового сервера, если в конфигурации представлен для этого URL url_C2_req. Для запроса по этому URL программа может использовать как системный, так и представленные в конфигурации HTTP-прокси. Обращение происходит с помощью WinHTTP API InternetOpenUrlA.

Ответ должен представлять собой строку в кодировке Base64 между двумя маркерами: DZKS и DZJS. Следует отметить, что аналогичный алгоритм и маркеры применялись в семействе PlugX (BackDoor.PlugX.28, BackDoor.PlugX.38).

Декодированная строка распаковывается с помощью функции RtlDecompressBuffer, в результате получается адрес нового управляющего сервера и порт для подключения.

#drweb

Поток исполнения зашифрованного модуля

Если параметр конфигурации exec_mode имеет значение 2 и командная строка содержит -k netsvcs, бэкдор создает отдельный поток для исполнения модуля, хранящегося в файле.

Для этого сначала выполняется поиск файла C:\Windows\System32\1.update. Если такой файл существует, программа считывает его и расшифровывает.

#drweb

Этот файл содержит путь к зашифрованному файлу, содержащему DLL-модуль, который бэкдор считывает, расшифровывает и загружает.

#drweb

Особенности версии для x86

Версия бэкдора, предназначенная для работы в 32-разрядных операционных системах Microsoft Windows, детектируется Dr.Web как BackDoor.Spyder.3 (83e47dbe20882513dfd1453c4fcfd99d3bcecc3d). Основное отличие этой модификации — наличие отладочных сообщений.

#drweb

Сообщения записываются в журнал, расположенный в каталоге %WINDIR%\temp\deskcpl.ttf. В зависимости от параметров инициализации они могут выводиться с помощью OutputDebufStringA, а также шифроваться с помощью простой XOR-операции с байтом 0x62.

#drweb

Сообщения, касающиеся коммуникации с управляющим сервером и обработки команд, выводятся с помощью функции OutputDebugStringA. Примечательно, что для таких сообщений используется префикс [Spyder].

#drweb

Примечания

Информация о сертификате CA_cert для установки соединения с управляющим сервером:

SHA1 Fingerprint=BF:46:40:E4:AF:56:DB:E0:D0:86:6E:16:B0:3F:C7:23:77:26:14:31
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = SecureTrust CA, O = SecureTrust Corporation, C = US
        Validity
            Not Before: Jan  1 00:00:00 2011 GMT
            Not After : Dec 31 23:59:59 2025 GMT
        Subject: CN = SecureTrust CA, O = SecureTrust Corporation, C = US
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (4096 bit)
                Modulus:
                    00:bd:c3:26:8b:e1:37:7f:f0:fa:0a:0d:83:a7:dd:
                    22:31:14:83:08:d7:74:3b:31:08:84:ef:25:cf:2d:
                    44:fc:2d:54:77:0b:17:e2:70:4d:be:2f:c1:fc:ed:
                    d9:6b:9e:db:60:28:27:c4:1e:6d:15:3d:dd:b9:43:
                    64:37:58:b4:bd:48:85:fa:d1:d6:f7:5a:33:eb:ec:
                    b7:86:62:92:1f:89:d7:a4:bd:d3:1f:f3:18:9d:a4:
                    15:27:16:7b:26:9f:5c:53:87:bd:40:22:d2:5e:cd:
                    ab:d5:6f:1d:ac:c3:0d:f1:d9:d5:f5:6a:d3:16:76:
                    58:df:f7:0b:20:0d:ed:7b:97:ae:66:0a:e6:cc:9f:
                    73:50:fb:ce:16:a6:dc:45:d0:2f:70:3e:c8:c8:59:
                    4d:c4:62:ec:b0:e9:01:9c:57:92:e4:78:83:4f:a6:
                    ab:1b:94:45:ff:15:ed:dc:59:95:f3:71:22:9c:06:
                    38:bb:e6:0f:b3:ec:af:5b:bd:1a:2f:b1:7f:ce:c8:
                    4d:32:9f:8f:44:9b:ae:fc:e5:72:24:b4:3a:3b:f3:
                    d0:79:30:79:a2:0e:bd:55:e9:cd:c0:4d:7e:07:fc:
                    37:b5:7f:69:be:d6:e3:37:ce:9e:ff:d2:05:e4:3c:
                    59:7e:f0:d4:ab:01:e4:7b:07:f6:a4:f0:e3:c3:7e:
                    58:07:2d:e8:96:9c:ac:8b:e6:dc:49:6a:51:9a:b3:
                    b0:62:cf:3c:b4:4a:f9:89:ae:2c:73:17:01:43:63:
                    ec:e8:2b:7b:1c:3c:81:41:fa:db:93:45:3a:21:1f:
                    2a:3a:8f:30:d4:52:59:91:03:03:11:b8:18:ca:39:
                    4c:9a:e2:57:33:e6:bc:c5:4a:8e:76:79:50:fd:bd:
                    32:78:9c:79:58:4f:b9:d3:bb:05:eb:39:43:db:3e:
                    b5:2d:51:18:ed:ee:9d:31:3a:2e:6b:37:37:34:28:
                    4a:89:cb:65:b4:7d:bf:be:a1:67:cb:5c:71:9c:be:
                    c3:3b:f7:a7:df:37:4d:0f:c7:57:f5:5b:d2:db:54:
                    2c:91:5b:3b:7f:ec:1f:45:e4:7b:a5:0d:a1:c2:1f:
                    64:af:51:cd:32:3a:83:25:9c:90:ac:77:66:4d:12:
                    23:f5:5b:3c:90:b5:41:1b:54:55:a4:24:66:e6:e9:
                    65:46:95:ff:ef:67:f5:a6:80:f6:d5:e6:3f:2f:c2:
                    7b:25:d8:b3:b4:4d:f4:b8:7c:38:cc:de:3e:4f:43:
                    9a:ca:be:c1:66:95:2d:2c:16:a9:56:9b:68:5d:8c:
                    78:90:84:d4:86:51:10:f1:9b:14:23:43:bb:91:1e:
                    02:01:ee:11:63:c4:f2:81:7f:83:68:5e:86:bd:8a:
                    88:7c:2d
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:TRUE, pathlen:0
            X509v3 Subject Key Identifier:
                E0:63:19:89:FA:AD:19:5D:E3:B3:A5:E2:85:D2:2F:87:B1:55:76:1B
            X509v3 Authority Key Identifier:
                keyid:E0:63:19:89:FA:AD:19:5D:E3:B3:A5:E2:85:D2:2F:87:B1:55:76:1B
            X509v3 Key Usage: critical
                Digital Signature, Key Agreement, Certificate Sign, CRL Sign
            Netscape Cert Type:
                SSL Client, SSL Server, Object Signing, SSL CA, Object Signing CA
    Signature Algorithm: sha256WithRSAEncryption
         08:33:53:e4:be:95:0a:1b:d7:6e:44:6b:2d:42:2a:45:7f:8b:
         89:fd:fb:d0:cf:5f:8f:83:77:5d:3b:2c:11:46:9f:44:3b:69:
         f2:e2:e7:fe:4e:c9:43:5c:89:5f:e2:e2:5a:5e:4c:4d:39:ed:
         ce:2d:63:d4:a1:93:ff:ff:3f:b0:77:86:e8:f1:5e:a3:4d:d3:
         ba:eb:41:0f:85:0c:04:fb:6c:42:19:bc:2b:d1:db:c6:51:e3:
         97:cd:5b:e5:d5:b4:1f:43:e7:7c:eb:86:08:16:86:0b:46:23:
         9d:f4:e9:18:b6:ce:e5:f4:96:7b:ee:5f:f5:8d:ff:dd:65:29:
         b9:12:94:f7:da:d3:c0:64:53:e6:2b:36:ec:6f:d3:26:3c:c2:
         ab:ba:10:cd:d8:39:43:8b:21:fe:68:ab:48:25:34:07:a6:cc:
         cc:b5:70:60:c4:ae:91:73:19:ff:9d:ff:82:ca:4a:9c:8e:70:
         94:96:5f:7c:b3:e8:f7:e4:3e:cc:af:41:7e:24:47:fe:ad:d5:
         a7:80:32:80:9c:7f:0c:00:3b:92:4c:ec:8e:ef:93:fb:8a:1f:
         ff:be:f0:ab:33:c7:4b:2b:5d:fc:31:e6:bf:f4:1d:c0:e3:d0:
         c5:94:a9:21:b1:8c:26:4b:c2:82:51:cf:1b:63:09:b1:ec:45:
         31:49:ba:51:42:22:7a:41:90:2f:28:0e:40:76:91:3c:33:34:
         84:66:b9:7e:0e:68:5a:37:38:01:b1:92:64:a5:a8:9c:34:84:
         6a:c6:01:d0:30:f8:d5:52:0f:6e:3e:40:06:a2:b8:4c:b1:69:
         4d:16:8f:d0:c4:72:b6:0e:09:57:6c:5e:cd:bc:ab:e3:ce:80:
         ae:a7:6c:3d:3c:01:a5:a3:4f:4d:e0:52:36:12:cc:7a:e2:5e:
         f3:d7:22:a7:6c:7c:60:d4:fd:f4:37:94:70:dd:4c:9b:00:cd:
         7d:9d:42:f7:e7:b2:25:f6:63:06:1e:4d:dc:4b:ef:5c:45:5d:
         a7:b9:b7:33:21:4e:91:40:ba:ca:ec:70:d0:a5:f7:0c:0a:ea:
         97:11:fa:47:8b:dd:24:b0:c2:98:ff:94:4f:f6:c8:0f:e9:a5:
         2d:bf:b6:7c:f4:45:f3:cb:5a:fd:a0:38:ce:ca:60:24:34:74:
         77:ea:91:bc:dc:68:90:53:5f:0a:f4:40:13:69:68:2e:31:f9:
         df:7d:07:05:53:42:8a:8b:e0:49:75:ee:04:94:9e:87:1a:25:
         9e:82:16:87:a2:69:dd:eb:44:21:4c:98:1d:72:8b:46:74:5c:
         33:24:5c:c2:ab:7b:1f:c4:d4:d5:9a:40:77:15:73:d3:53:62:
         60:da:5d:7c:2a:9e:12:25
-----BEGIN CERTIFICATE-----
MIIFgTCCA2mgAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRcwFQYDVQQDEw5TZWN1
cmVUcnVzdCBDQTEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xCzAJ
BgNVBAYTAlVTMB4XDTExMDEwMTAwMDAwMFoXDTI1MTIzMTIzNTk1OVowSDEXMBUG
A1UEAxMOU2VjdXJlVHJ1c3QgQ0ExIDAeBgNVBAoTF1NlY3VyZVRydXN0IENvcnBv
cmF0aW9uMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
ggIBAL3DJovhN3/w+goNg6fdIjEUgwjXdDsxCITvJc8tRPwtVHcLF+JwTb4vwfzt
2Wue22AoJ8QebRU93blDZDdYtL1IhfrR1vdaM+vst4Zikh+J16S90x/zGJ2kFScW
eyafXFOHvUAi0l7Nq9VvHazDDfHZ1fVq0xZ2WN/3CyAN7XuXrmYK5syfc1D7zham
3EXQL3A+yMhZTcRi7LDpAZxXkuR4g0+mqxuURf8V7dxZlfNxIpwGOLvmD7Psr1u9
Gi+xf87ITTKfj0SbrvzlciS0Ojvz0HkweaIOvVXpzcBNfgf8N7V/ab7W4zfOnv/S
BeQ8WX7w1KsB5HsH9qTw48N+WAct6JacrIvm3ElqUZqzsGLPPLRK+YmuLHMXAUNj
7Ogrexw8gUH625NFOiEfKjqPMNRSWZEDAxG4GMo5TJriVzPmvMVKjnZ5UP29Mnic
eVhPudO7Bes5Q9s+tS1RGO3unTE6Lms3NzQoSonLZbR9v76hZ8tccZy+wzv3p983
TQ/HV/Vb0ttULJFbO3/sH0Xke6UNocIfZK9RzTI6gyWckKx3Zk0SI/VbPJC1QRtU
VaQkZubpZUaV/+9n9aaA9tXmPy/CeyXYs7RN9Lh8OMzePk9Dmsq+wWaVLSwWqVab
aF2MeJCE1IZREPGbFCNDu5EeAgHuEWPE8oF/g2hehr2KiHwtAgMBAAGjdjB0MA8G
A1UdEwQIMAYBAf8CAQAwHQYDVR0OBBYEFOBjGYn6rRld47Ol4oXSL4exVXYbMB8G
A1UdIwQYMBaAFOBjGYn6rRld47Ol4oXSL4exVXYbMA4GA1UdDwEB/wQEAwIBjjAR
BglghkgBhvhCAQEEBAMCANUwDQYJKoZIhvcNAQELBQADggIBAAgzU+S+lQob125E
ay1CKkV/i4n9+9DPX4+Dd107LBFGn0Q7afLi5/5OyUNciV/i4lpeTE057c4tY9Sh
k///P7B3hujxXqNN07rrQQ+FDAT7bEIZvCvR28ZR45fNW+XVtB9D53zrhggWhgtG
I5306Ri2zuX0lnvuX/WN/91lKbkSlPfa08BkU+YrNuxv0yY8wqu6EM3YOUOLIf5o
q0glNAemzMy1cGDErpFzGf+d/4LKSpyOcJSWX3yz6PfkPsyvQX4kR/6t1aeAMoCc
fwwAO5JM7I7vk/uKH/++8Kszx0srXfwx5r/0HcDj0MWUqSGxjCZLwoJRzxtjCbHs
RTFJulFCInpBkC8oDkB2kTwzNIRmuX4OaFo3OAGxkmSlqJw0hGrGAdAw+NVSD24+
QAaiuEyxaU0Wj9DEcrYOCVdsXs28q+POgK6nbD08AaWjT03gUjYSzHriXvPXIqds
fGDU/fQ3lHDdTJsAzX2dQvfnsiX2YwYeTdxL71xFXae5tzMhTpFAusrscNCl9wwK
6pcR+keL3SSwwpj/lE/2yA/ppS2/tnz0RfPLWv2gOM7KYCQ0dHfqkbzcaJBTXwr0
QBNpaC4x+d99BwVTQoqL4El17gSUnocaJZ6CFoeiad3rRCFMmB1yi0Z0XDMkXMKr
ex/E1NWaQHcVc9NTYmDaXXwqnhIl
-----END CERTIFICATE-----

Список отладочных сообщений 32-битной модификации бэкдора:

[work]cmdline:%s
[work]dwDataLen=%d buf_temp=%d
[work]%s no exist
[work]get work err5
[aut]begin tid=%d.
[update_thread]begin tid=%d.
[update_thread]work=%s
[update_thread]get_work ret=%d
[update_thread]wait for work thread exit...
[update_thread]work thread exit ok
[update_thread]load work failed
[pt]proxy_thread begin tid=%d.
[]dwMajorVersion=%d dwMinorVersion=%d
[]rtlVer.dwMinorVersion=%d
[work]DllMain
[work] DLL
[work] VBR/SRV
[wk]RtlGetCurrentUserToken ok
[wk]ImpersonateLoggedOnUser ok
[wk]OpenURL %s Ret=%d
[wk]Err1
[wk]Err4
[wk]GetConfigStrFromURL err
[wk]DecodeStrBuffer err
[wk]DecodeLen err
[wk]RevertToSelf
[]IsProxyEnable Ret=%d
[aut]GetConfigStrFromURL PROXY_NO Ret=%d
[aut]GetConfigStrFromURL PROXY_USER Ret=%d
[aut]JmpAddClientConfig %s with address: %s.
[aut]GetRandom=%d
[aut]szWebURL Not Set
[aut]address_update_thread Exit.
[update_thread]get_work_path ret=%d
[pt]Using IE proxy setting.
[pt]IE proxy NOT setup.
[pt]SmpGetRegProxy Counts=%d
[pt]IE proxy type = %u NOT support, address: %s.
[pt]IE proxy type = %u, address: %s found.
[pt]Add proxy config %s, address=%s.
[work_thread]begin tid=%d
[wt]JmpAddClientConfig %s with address: %s.
[wt]JmpAddProxyConfig %s.
[wt]Proxy:%s
[wt]start Jumper error = %u.
[wt]Jumper start success!
[wt]JmpShutdown
[wt]JmpShutdown=%d
[wt]JmpTeardown=%d
[wt]tid=%d Exit
[Spyder] client module init error = %d.
[Spyder] register mod %d error = %u.
[spyder] alloc mem for ca cert failed.
[spyder] server address already exists in conf list.
[Spyder] alloc client error = %d.
[Spyder] ALLOC client uid = %u.
[Spyder] set ca for client id=%u error=%d
[Spyder] proxy setting exists, srv=%s
[spyder] use proxy [%s] to connect [%s] res = %u.
[Spyder] direct connect to %s error = %u.
[Spyder] connect to %s result = %u, protcol=%u.
[jmp] big packet: recv new big pkt while previous one not handled, old=%u, new=%u.
[jmp] packet size exceed limit = %#X, id=%u.
[jmp] failed to realloc packet buffer, error = %u, pkt id=%u.
[jmp] big packet recv completed, id=%u, size=%u, ext id=%u.
[Spyder] PAUSE ext = %u Before.
[Spyder] PAUSE ext = %u After.
[Spyder] UNINIT ext = %u Before.
[Spyder] UNINIT ext = %u After.
duplicate session id for ext type id = %u.
[Spyder] can't find recv item for type id = %u.
[Spyder] ext type id = %u recved = %u, new recv = %u, but total size = %u
[Spyder] ext type id = %u recv completed, total size = %u.
[Spyder] find ext with same type id = %u while updating, free old ext.
[Spyder] alloc mem for completed ext error = %u.
[Spyder] ext recv %s, free tem buffer, type id = %u.
[Spyder] ext type = %u already loaded, unlaod now for updating.
[Spyder] failed to unload ext from memory.
[Spyder] load ext id = %u into memory error.
[Spyder] MOD LOAD AT %p, size=%u.
[Spyder] alloc mem for loaded item failed, unload ext type id = %u.
[Spyder] inint module type = %u begin.
[Spyder] inint module type = %u end.
[Spyder] alloc mem for mod_pfn error = %u.
[Spyder] unlaod ext id = %u error.
[Spyder] unload_and_free_all_exts.
[Spyder] UNLOAD ext = %u BEFORE.
[Spyder] UNLOAD ext = %u AFTER.
[Spyder] FREE ext = %u AFTER.
[Spyder] free ext cache = %u .
[Spyder] free ext mem = %u .
[Spyder] link setup Result=%d, local = %#X:%u, remote = %#X:%u, uid=%u.
[Spyder] connected callback at %02u:%02u:%02u, id = %u.
[Spyder] Link disconnected at %02u:%02u:%02u, id = %u.
[Spyder] recv data size = %u invalid, from uid=%u.
[Spyder] receive challenge = %I64X.
[Spyder] failed to get host info.
[Spyder] send host info error = %u.
[jmp] LOGIN SUCCESS, link id = %u.
[jmp] internal data process error.
[jmp] unknown state = %u.
[jmp] core process data error, close link = %u.
[Spyder] ext summary size error = %u.
[Spyder] ext recv prepare failed.
[Spyder] EXTENSION recv BEGIN, type = %u.
[Spyder] dll payload recv error.
[Spyder] ext active begin.
[Spyder] ext active result = %s.
[Spyder] ext free cmd not handled.
[Spyder] unhandled ext sub cmd = %u.
[Spyder] call ext failed = %d, sub=%u.
[spyder] unhandled subcmd=%u in tunnel cmd.
[Spyder] unhandled main cmd = %u, sub cmd = %u.
[Spyder] Can't get link id for ext data delevery.
[Spyder] SEND_DATA via link id=%u error = %d.
[Spyder] client link disconnect id = %u.
[Spyder] client send data error = %#X, id = %u.
[Spyder] enum session error = %u.
[Spyder] get Host info error.
[Spyder] save sn value error = %u.
[Spyder] gszUniqueSN=%s
[Spyder] create guid error = %d.
[jmp] Get adapter info error = %u.
[jmp] adapters info buf size=%u, count=%u.
 Alloc buf for adapter info error = %u.
get adapter info with buf error = %u.
[jmp] IP=%s not match preset mac address, desc=%s.
[jmp] master adapter FOUND! IP = [%s], desc=%s.
[jmp] master adapter has more than one ip: %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 дней

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