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

Позвоните

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

ЧаВо | Форум

Ваши запросы

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

Позвоните

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

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

Профиль

Профиль

Trojan.XPath.4

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

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

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

Даты компиляции:

  • 11.01.2018 12:14:28 (версия для архитектуры x86)
  • 11.01.2018 12:16:21 (версия для архитектуры x64)

SHA1-хеши:

  • fc4844a6f9b5c76abc1ec50b93597c5cfde46075 (x86)
  • 2bf5cfe30265a99c13f5adad7dd17ccb9db272e0 (x64)

Описание

Многофункциональный троян-бэкдор для 32- и 64-битных операционных систем семейства Microsoft Windows. Является одним из компонентов семейства троянов Trojan.XPath. Используется для несанкционированного доступа к зараженным компьютерам и по команде выполняет на них различные вредоносные действия.

Trojan.XPath.4 написан на C++ и создан с использованием нескольких проектов с открытым исходным кодом. Один из них — библиотека Cyclone TCP, предназначенная для низкоуровневой работы с сетью. Вирусописатели модифицировали ее таким образом, что она задействует драйвер WinDivert вместо WinPcap. Второй проект — модифицированная библиотека libdsm, которая реализует работу через протокол SMB.

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

Троян считывает и расшифровывает конфигурационный файл из параметра Video или Scsi в ключе реестра [HKLM\\SOFTWARE\\Microsoft\\LoginInfo]. Далее он проверяет, совпадают ли первые 4 байта со значением 1E 5A CF 24 и равен ли 16-й байт 0xCE.

Затем Trojan.XPath.4 формирует уникальный идентификатор HWID (Hardware ID) зараженного компьютера на основе его аппаратной конфигурации.

Далее он проверяет доступность сетевого драйвера, для чего открывает устройство \\.\BainduHips. При этом в зависимости от версии операционной системы любые обращения к драйверу происходят различными способами. Первый задействуется в ОС Windows, начиная с Windows 2000 и заканчивая Windows Server 2003 R2, где используется драйвер на основе WinPcap. В более поздних редакциях Windows, в которых используется драйвер на основе WinDivert, применяется второй способ.

Чтобы определить, через какие сетевые интерфейсы должен работать троян, он ищет подключенные к сети интерфейсы с типами MIB_IF_TYPE_ETHERNET и IF_TYPE_IEEE80211. Если Trojan.XPath.4 запущен в системе младше Windows Vista, он отправляет своему драйверу IOCTL-код 0x80000800. Получив такой IOCTL-код, драйвер устанавливает собственные хуки на обработчики, которые отвечают за некоторые функции протокола TCP/IP.

Фактически троян способен функционировать в двух режимах. Первый — работа в режиме клиента (Client Mode), когда он соединяется с управляющим сервером и ждет от него команд. Второй — работа в режиме агента (Agent Mode), когда он прослушивает определенные порты, ожидая подключения к ним других клиентов и принимая от них команды. В этом режиме Trojan.XPath.4 выполняет функции сервера.

Работа в режиме Agent (Server) Mode

При работе с сетевым драйвером Trojan.XPath.4 фактически не прослушивает порт и не принимает на нем соединений. Вместо этого драйвер прослушивает трафик на сетевом интерфейсе и передает трояну отфильтрованные пакеты, поэтому порт, прослушиваемый трояном, нигде не фигурирует как открытый.

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

Trojan.XPath.4 ожидает поступления пакета размером 32 байта. Далее он берет первые 4 байта в качестве XOR-ключа для расшифровки остальных 28 байт. Алгоритм расшифровки представлен на следующем изображении:

#drweb

После расшифровки он сверяет байты с 4 по 12, и, если они совпадают со строкой 1I2#aLeb, больше не выполняет никаких действий. Если же указанной строки нет, он пытается расшифровать пакет не XOR-ключом, а одним из AES-ключей. Затем троян сверяет первые 4 расшифрованных байта со строкой 7r#K. Если совпадение не было найдено, то будет считать, что произошла ошибка, и дальнейшая обработка пакета прекращается. Если же искомая строка обнаруживается, то пакет после расшифровки будет иметь следующую структуру:


#pragma pack(push,1)
struct st_packet_header
{
_BYTE com_flag[4];
_DWORD packed_size;
_DWORD decomp_size;
_DWORD cmdid;
_BYTE pad[16];
};
#pragma pack(pop)

Если поле packed_size имеет значение 32, а поле decomp_size имеет значение 0, троян проверяет, создан ли туннель до другого бота. Если туннель создан, Trojan.XPath.4 перенаправляет команду в него, чтобы ее выполнил подключенный бот. Если же туннеля нет, троян выполняет команду самостоятельно.

Если значения указанных выше полей отличны от ожидаемых, троян округляет размер поля packed_size в большую сторону до значения, кратного 16, которое составляет размер полезной нагрузки пакета. Затем он принимает оставшуюся часть данных, расшифровывает их одним из двух AES-ключей и распаковывает алгоритмом LZMA. Далее он проверяет, совпадает ли размер распакованных данных с размером, указанным в поле decomp_size пакета st_packet_header. Если размеры совпадают, Trojan.XPath.4 отправляет полученную команду в туннель или выполняет ее сам, если туннель не создан.

Работа в режиме Client Mode

Троян будет работать в этом режиме, если в конфигурационном файле указан адрес управляющего сервера, а также режим работы 3, который соответствует режиму клиента (Client). В исследованном образце указан режим работы 4, который соответствует режиму агента (Agent).

Троян генерирует случайный номер порта в пределах 10000 ≤номер_порта≤ 65530 и привязывается к нему.

Далее он формирует пакет вида:


#pragma pack(push,1)
struct st_hello
{
_DWORD key;
_BYTE magic[8]; // "1I2#aLeb
_DWORD packet_id; // 0x00
_DWORD dword14; // 0x00
_WORD port;
_BYTE byte16[10];
};
#pragma pack(pop)

В поле port он указывает номер сгенерированного ранее порта. Далее он берет значение GetTickCount() в качестве XOR-ключа для шифрования пакета, после чего шифрует и сохраняет это значение в его первых 4 байтах. Троян создает сокет, подключается к управляющему серверу, указанному в конфигурационном файле, отправляет пакет и разрывает соединение. При получении этого пакета драйвер трояна внесет IP:port, с которого он был отправлен, в исключения сетевого экрана.

Далее Trojan.XPath.4 снова подключается к этому серверу, но в качестве сокета использует тот, к которому ранее троян привязывался через случайный порт. Затем Trojan.XPath.4 посылает серверу пакет TOKEN_CLIENT_LOGIN и ожидает дальнейших команд (дополнительная информация о командах указана в соответствующей таблице в разделе «Список команд»). Прием и отправка пакетов осуществляется также, как и в случае работы в режиме сервера (Agent (Server) Mode).

Отправка пакета

Если в пакете есть какие-либо данные, они упаковываются алгоритмом LZMA. При этом получается следующая структура данных:

  • Заголовок в виде структуры st_packet_header (эта структура описана в разделе работы в режиме Agent (Server) Mode):
    
    #pragma pack(push,1)
    struct st_packet_header
    {
    _BYTE com_flag[4];
    _DWORD packed_size;
    _DWORD decomp_size;
    _DWORD cmdid;
    _BYTE pad[16];
    };
    #pragma pack(pop)
    
  • Сжатые данные

Полученные данные вместе с заголовком шифруются первым AES-ключом, после чего отправляются адресату. Единственным пакетом, который не сжимается и не шифруется AES, является пакет st_hello.

Список команд

Идентификатор команды Имя команды Действие
0x138A AGENT_SERVER_ALIVE Подтверждение работы Agent-сервера
0x138D Выделить дополнительный сокет или выполнить команду, указанную в данных пакета
0x138E AGENT_CLIENT_NEW_CONNECT_ACCEPT Установить дополнительное соединение с Agent-сервером и выполнить команду
0x4E21 COMMAND_SERVER_ALIVE Подтверждение работы управляющего сервера
0x4E22 COMMAND_SERVER_CONNECT Отправить команду на подключение к управляющему серверу
0x4E24 COMMAND_SERVER_NOTIFY_CLIENT Установить дополнительное соединение с управляющим сервером и выполнить команду
0x4E25 Разорвать соединение
0x4E26 Обновить драйвер и модули трояна
0x4E27 Команда на самоудаление трояна
0x4E28 COMMAND_SERVER_READY Проверка готовности сервера
0x4E2A Завершить процесс трояна
0x4E34 Принудительно выключить компьютер
0x4E35 Принудительно выйти из учетной записи пользователя компьютера
0x4E36 Принудительно перезагрузить компьютер
0x4E37 Выключить компьютер
0x4E38 Принудительно выйти из учетной записи пользователя компьютера
0x4E39 Перезагрузить компьютер
0x5014 COMMAND_SHELL_START Запустить оболочку Shell
0x5015 COMMAND_CMDDLG_OPENED Запустить чтение данных из Shell
0x5016 Отправить данные в Shell
0x5017 COMMAND_SHELL_EXIT Закрыть Shell
0x5078 COMMAND_TUNNEL_START Запустить плагин для создания туннеля
0x5079 Отправить данные на сервер, к которому подключен туннель
0x507A Установить адрес сервера, до которого будет создан туннель
0x507B COMMAND_TUNNEL_NEW_CONNECTION Создать туннель до заданного сервера
0x507C Получить NetBios-имя для заданного IP-адреса
0x5082 COMMAND_TUNNEL_EXIT Отключить туннель
0x5E30 COMMAND_FILE_START Запустить файловый менеджер
0x5E31 Листинг каталога
0x5E32 Прочитать файл с указанной позиции
0x5E33 Создать файл
0x5E34 Записать в файл с указанной позиции
0x5E36 Прочитать файл с указанной позиции
0x5E37 Передать пустой пакет с кодом 0x98BC на сервер
0x5E38 Удалить заданный файл
0x5E39 Рекурсивно удалить заданный каталог или файлы
0x5E40 Получить размер файла
0x5E41 Создать папку
0x5E42 Переместить файл
0x5E43 Запустить файл с окном
0x5E44 Запустить файл без окна
0x5E45 Игнорируется
0x5E46 Игнорируется
0x5E47 Получить данные о файле (время создания, модификации, доступа, размер файла, тип файла, имя приложения, через которое этот файл может быть открыт)
0x5E49 Присвоить файлу заданные атрибуты
0x5E51 Отключить файловый менеджер
0x5E52 Рекурсивный листинг заданного каталога
0x891C TOKEN_CLIENT_LOGIN Авторизовать клиент на сервере
0xEA66 PUBLIC_ACTIVE Установить флаг public_active

Артефакты

Файл трояна содержит следы отладочной информации, которая раскрывает пути и имена исходных кодов:

  ..\\common\\LzmaLib.c
  z:\\desk_codes\\project_xpath\\xpath\\ringqueue.h
  z:\\desk_codes\\project_xpath\\xpath\\untils.h
  z:\\desk_codes\\project_xpath\\xpath\\ShellManager.h
  z:\\desk_codes\\project_xpath\\xpath\\file.h
  z:\\desk_codes\\project_xpath\\xpath\\tunnel.h
  z:\\desk_codes\\project_xpath\\xpath\\network.h
  z:\\desk_codes\\project_xpath\\xpath\\clientmode.h
  xPathMain.c
  cyclone_tcp\\core\\bsd_socket.c
  

Оригинальные имена функций:

  SendClientMagic
  FindPluginData
  DeCompressData
  GetSockInfo nocase
  StartShell
  UnInitShell
  UnInitFileManager
  recv_pack2
  x_gethostbyname
  OutputData
  tcpF
  WorkThread
  alloc_new_si
  x_decompress
  

Оригинальные названия команд:

  COMMAND_FILE_START
  PUBLIC_ACTIVE
  COMMAND_TUNNEL_EXIT
  COMMAND_TUNNEL_NEW_CONNECTION
  COMMAND_SERVER_READY
  AGENT_SERVER_ALIVE
  COMMAND_SERVER_CONNECT
  TOKEN_CLIENT_CONNECT
  AGENT_SERVER_ALIVE
  COMMAND_SERVER_ALIVE
  COMMAND_SERVER_NOTIFY_CLIENT
  AGENT_CLIENT_NEW_CONNECT_ACCEPT
  COMMAND_SHELL_START
  COMMAND_TUNNEL_START
  COMMAND_CMDDLG_OPENED
  COMMAND_SHELL_EXIT
  COMMAND_TUNNEL_EXIT
  TOKEN_CLIENT_LOGIN

Различные отладочные сообщения:

    get conf,agent:%d,client:%d,interval:%d,listen1:%d,addr1:%s:%d \n
    os init:%d-%d-%d bGetConfig:%d %d\tver:%10d\n
    ver:%d remote:%d listen:%d\n
    x_decompress bad in tcpR,socket:%d token:%d len:%d,target len:%d,%d\n
    dir: %ws,%ws,%ws,%d,%d,%d
    file: %ws,%ws,%ws,%d,%d,%d
    tunnel connect error :%x--%d,%d,%d\n
    init get ip:%s,%s,%s,%02x-%02x-%02x-%02x-%02x-%02x,%s\n
    ready accept port of client to agent:%d,local: %x--%d\n
    stack set ip:%s mask:%s gw:%s
    baidu_tx_web%d
    stack add ip:%s mask:%s gw:%s
    agent must with driver\n
    current if:%d\n
    the connect thread is ending.....\n
    the sub connect thread is ending.....\n
    listen thread1 out\n
    client unknown token %d\n
    errorrrrrrrrrrrrrrrrrr:%d,%d,%d\n
    tcp reverse decrypt error\n
    tcp reverse com flag error\n
    %04d %02d %02d-%02d:%02d:%02d :
    update alloc memory false\n
    update depack false,%d,%d,%d\n
    create update driver error\n
    alloc driver memory error,%d\n
    depack driver error\n
    write driver error\n
    client type wrong:%d,%d,%d
  

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

  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 дней

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