Pull to refresh
0

Win64/Expiro – кроссплатформенный файловый инфектор

Reading time5 min
Views13K
Файловые вирусы уже хорошо известны и давно изучены, но подобные инфекторы, в абсолютном большинстве случаев, нацелены на модификацию 32-битных файлов. Одно из таких семейств — Expiro (Xpiro) было обнаружено достаточно давно и мало чем может удивить сегодня. Однако недавно нашей антивирусной лабораторией была обнаружена новая модификация Expiro, которая способна заражать 64-битные файлы. Кроме того, тело этой модификации является универсальным и полностью кроссплатформенным, так как может заражать 32-битные и 64-битные файлы (и наоборот, т. е. из зараженных 32-битных файлов заражать 64-битные). В нашей системе именований вирус получил название Win64/Expiro.A (aka W64.Xpiro или W64/Expiro-A). При этом 32-разрядные зараженные файлы обнаруживаются как Win32/Expiro.NBF.

Инфектор нацелен на получение максимального деструктивного профита и выполняет заражение исполняемых файлов как на локальных, так и на сетевых дисках. В полезную нагрузку этой вредоносной программы входит установка расширений для браузеров Google Chrome и Mozilla Firefox. Вредоносный код похищает хранимые на компьютере цифровые сертификаты и пароли браузера Internet Explorer, Microsoft Outlook, FTP-клиента FileZilla. Такие расширения служат для перенаправления пользователя на вредоносные URL, а также похищение различной конфиденциальной информации. Вирус отключает ряд сервисов на скомпрометированном компьютере, включая Windows Defender и центр обеспечения безопасности (Windows Security Center), а также может завершать ряд процессов.

Инфектор

Само тело вируса, в 64-битном зараженном файле, представляет из себя добавленную в конец исполняемого файла новую секцию .vmp0 размером 512 000 байт (на диске). Для передачи управления на основное тело вирус вставляет вредоносный стартап-код размером 1269 байт на место точки входа. При этом оригинальные байты переносятся в начало .vmp0 секции. Этот стартап-код представляет из себя распаковщик для основного кода, который располагается в секции вируса. Ниже на скриншоте представлен шаблон стартап-кода, который будет записан на место точки входа 64-битного файла при заражении.



При формировании этого кода для заражения, часть данных инструкций будет перезаписана, таким образом обеспечивается уникальность данных оригинальной секции .vmp0. При этом изменению подвергаются инструкции типа add, mov или lea, в которых фигурируют непосредственные смещения (immediate). В конце кода добавляется инструкция перехода к распакованному коду секции .vmp0.



Аналогичный код стартапа для 32-битных файлов также располагается в секции .vmp0 и имеет вид.



Что в 32-битном варианте выглядит так:



Размер этого стартап кода в 64-битном варианте равен 1269 байт, а в 32-х 711 байт.

Вирус заражает исполняемые файлы, проходя рекурсивно по директориям логических дисков, при этом заражение исполняемого файла происходит с применением создаваемого .vir-файла, в котором вредоносный код формирует новое содержимое файла, а затем записывает его в инфицируемый файл блоками по 64K. Если вирус не может открыть файл на чтение/запись, он пытается изменить у него дескриптор защиты и информацию о владельце (owner).

Не являются исключением для заражения и подписанные исполняемые файлы. После заражения такого файла, он перестает быть подписанным, так как вирус записывает свое тело после последней секции, где в оригинальном файле располагается оверлей с цифровой подписью. Кроме этого, вирус корректирует значения поля Security Directory в Data Directory, выставляя поле RVA и Size в 0. Соответственно, в дальнейшем, такой файл также может быть исполнен, поскольку лишен любой информации о цифровой подписи. Ниже показаны различия в оригинальном и зараженном 64-битном файле, который снабжен цифровой подписью. Слева в модифицированной версии видно, что на месте оверлея начинается секция .vmp0 и оригинальные байты точки входа.



С точки зрения завершения security-процессов, Expiro не оригинален и использует подход на основе получения их списка с использованием API CreateToolhelp32Snapshot и последующим завершением с использованием OpenProcess/TerminateProcess. Expiro завершает следующие процессы в системе: «MSASCui.exe», «msseces.exe» and «Tcpview.exe».



Для поддержания своего присутствия в системе, Expiro создает два мьютекса с именем gazavat.

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



В теле вируса используется обфускация при вызове различных API и передачи им значений, смещений строк и прочего. Например, в следующем коде, при передаче аргумента SERVICE_CONTROL_STOP (0x1), в функцию в API advapi32!ControlService, которая используется для отключения сервисов, используется арифметика из зарезервированных констант.



Этим кодом вирус пытается отключить следующие сервисы: wscsvc (Windows Security Center), windefend (Windows Defender Service), MsMpSvc (Microsoft Antimalware Service), NisSrv (часть Microsoft Antimalware).

Полезная нагрузка

В качестве полезной нагрузки вирус пытается установить расширения для браузеров Google Chrome и Mozilla Firefox. Манифест-файл для устанавливаемого расширения Chrome выглядит следующим образом:



В директории с расширениями, каталог этого плагина будет называться dlddmedljhmbgdhapibnagaanenmajcm. Расширение использует для своей работы js-срипты background.js и content.js. После деобфускации шаблон background.js имеет вид.



В переменной HID сохраняется идентификатор системы, с ее версией и Product ID. Переменная SLST содержит список доменов, которые используются для перенаправления пользователя на вредоносные ресурсы, часть из них перечислена в переменной SLST.



Манифест расширения для Mozilla Firefox выглядит следующим образом.



Часть кода из скрипта content.js, которая отвечает за парсинг элементов форм.



С точки зрения бота, Expiro умеет выполнять следующие действия:
  • изменять список URL управляющих серверов;
  • исполнять команды в интерпретаторе cmd.exe;
  • загружать и исполнять плагины;
  • загружать файлы из сети и сохранять их в %commonapddata%\%variable%.exe;
  • осуществлять DoS-атаку TCP flood;
  • перечислять файлы по маске \b*.dll в директории %commonappdata% и исполнять код из них;
  • запускать прокси-сервер (SOCKS, HTTP);

Вредоносный код осуществляет похищение учетных данных программы FileZilla, используя файл %appdata%\FileZilla\sitemanager.xml. При похищении паролей, хранимых в Internet Explorer используется специальный COM-объект. Если загруженный код обнаруживает форму ввода данных кредитной карты на веб-странице, он пытается скопировать данные оттуда. При этом выполняется проверка вводимых данных кредитных карт на соответствие формату «VISA»/«MasterCard» и отображает окно с сообщением:

«Unable to authorize.\n %s processing center is unable to authorize your card %s.\nMake corrections and try again.»

Заключение

Метод заражения исполняемых файлов является очень эффективным вектором распространения вредоносного кода. Описанная модификация Expiro представляет из себя серьезную угрозу как для домашних пользователей, так и для работников компаний. Поскольку вирус заражает файлы и на локальных дисках, съемных устройствах и по сети, эпидемия может принять довольно серьезные масштабы. В случае с Expiro дело ухудшается тем, что если в системе остается хотя бы один зараженный файл, который будет исполнен, процесс тотального заражения дисков начнется снова. С точки зрения доставки полезной нагрузки файловый инфектор является также довольно предпочтительным вариантом именно в виду активности распространения своего тела.
Tags:
Hubs:
Total votes 21: ↑18 and ↓3+15
Comments4

Articles

Information

Website
www.esetnod32.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Словакия