Введение
Seqrite Недавно в лабораториях была выявлена кампания по распространению вредоносного ПО, которая злоупотребляла авторитетом государственных учреждений для повышения вероятности успешного заражения. Злоумышленники выдавали себя за легитимные государственные ведомства и рассылали вредоносные электронные письма, замаскированные под официальные уведомления, касающиеся налогообложения, возврата налогов, требований соответствия и нормативных актов. Используя узнаваемую государственную символику, ощущение срочности и финансовые стимулы, кампания была направлена на то, чтобы убедить получателей открыть вредоносные вложения или взаимодействовать со встроенным контентом. Эта деятельность подчеркивает сохраняющуюся эффективность методов социальной инженерии, использующих государственную тематику, для распространения вредоносного ПО и компрометации целевых пользователей.
Инфекционная цепь:

Первые результаты кампании:
Была обнаружена изощренная фишинговая кампания, нацеленная на индийские предприятия и налогоплательщиков, использующая темы, связанные с налогом на товары и услуги (GST), для распространения вредоносного ПО. Впервые обнаруженная на VirusTotal 06 июля 2026 года, кампания имитирует законные правительственные сообщения и использует налоговые приманки для повышения вовлеченности пользователей. Злоумышленники используют убедительные документы и имена файлов, которые очень похожи на официальные уведомления о GST, что затрудняет получателям различение вредоносного контента от законной правительственной переписки. Основная цель кампании, по-видимому, заключается в распространении вредоносного ПО и краже конфиденциальной информации, что подчеркивает продолжающееся злоупотребление методами социальной инженерии, связанными с правительственными сообщениями, для воздействия на индийскую финансовую и налоговую систему.
Первое письмо:
В проанализированном случае злоумышленник распространил фишинговое электронное письмо, имитирующее инфраструктуру GST (налога на товары и услуги) правительства Индии. Письмо было отправлено с адреса donotreply.@gst.gov.in и имело тему «Заявка на возврат GST RFD-01 подана по ARN AL27052600952P». Сообщение было составлено таким образом, чтобы выглядеть как официальное уведомление о возврате GST, пытаясь убедить получателей в том, что заявка на возврат была обработана или требует проверки. Для повышения доверия к письму был прикреплен архивный файл GST-Refund_July-26_AL27052600952P.rar, который ссылался на тот же номер заявки (ARN), что и в теме письма. Использование совпадающих идентификаторов в содержимом письма и во вложении является распространенной тактикой социальной инженерии, призванной укрепить легитимность и снизить подозрения.

Рис.: Электронная почта
Технический анализ:
После извлечения из архива был обнаружен исполняемый файл, замаскированный под документ или приложение, связанное с возвратом НДС. Первоначальный анализ показал, что полезная нагрузка представляет собой исполняемый файл на основе .NET, что указывает на его разработку с использованием платформы Microsoft .NET. Злоумышленники часто используют бинарные файлы .NET, поскольку их относительно легко разрабатывать, они поддерживают быстрое развертывание вредоносных функций и часто включают механизмы обфускации, которые усложняют статический анализ. Исполняемый файл служит основной вредоносной полезной нагрузкой, распространяемой в рамках фишинговой кампании, и представляет собой следующий этап цепочки атаки после успешного взаимодействия пользователя с вложением.

Анализ извлеченного исполняемого файла показал, что это двоичный файл, созданный на основе Microsoft .NET Framework. В отличие от нативных файлов Windows Portable Executable (PE), компилируемых непосредственно в машинный код, приложения .NET содержат код промежуточного языка, который выполняется средой выполнения Common Language Runtime.

Анализ начинается с исполняемого файла .NET, содержащего в своих ресурсах растровое изображение (AF). Вместо того чтобы хранить полезную нагрузку следующего этапа в виде обычного ресурса DLL, автор скрывает её внутри изображения, кодируя байты полезной нагрузки в значения RGB пикселей растрового изображения.

При запуске приложения вызывается функция ServiceChromatic(), передающая в качестве входных данных встроенное растровое изображение. Хотя функция содержит большое количество запутывающего кода, её фактическое назначение довольно простое: она перебирает растровое изображение в порядке столбцов, считывает значения красного, зелёного и синего цветов из каждого пикселя и восстанавливает исходный поток байтов. Функция извлекает первые 64 000 байтов из изображения и возвращает их в виде массива байтов (byte[]).
Полученный массив байтов затем напрямую передается в метод Assembly.Load(), в результате чего скрытая сборка .NET загружается полностью из памяти без записи на диск. В этом примере извлеченная полезная нагрузка представляет собой сборку следующего этапа, Windows Health Optimizer Plus.dll, которая впоследствии выполняется с помощью рефлексии.

Анализ погрузчика второй ступени:
После успешного извлечения и загрузки данных в память загрузчика второго этапа, Windows Health Optimizer Plus.dllВредоносная программа вызывает метод v3.aq() с тремя параметрами: v3.aq(“73537457”, “6C6E6A”, “CapitalCities”). Первые два аргумента — это строки в шестнадцатеричном формате. При преобразовании из шестнадцатеричного в ASCII, 73537457 преобразуется в “sStW”, а 6C6E6A — в «инъекция»Эти декодированные строки впоследствии используются сборкой второго этапа в качестве идентификаторов команд или операций. Их значения указывают на то, что вредоносное ПО дает указание следующему этапу обработать встроенную битовую карту полезной нагрузки (sStW) и выполнить операцию, связанную с внедрением (inj), что предполагает, что эти параметры служат инструкциями выполнения, управляющими поведением полезной нагрузки следующего этапа.

Извлечение полезной нагрузки на основе растровых изображений:
Затем используется метод извлечения полезной нагрузки на основе растрового изображения, задействуя пиксельное хранилище для сокрытия встроенных данных. Вместо использования изображения исключительно в качестве визуального контента, он считывает необработанные значения ARGB отдельных пикселей и восстанавливает скрытую двоичную полезную нагрузку из извлеченного потока байтов. Растровое изображение фактически выступает в качестве носителя для скрытых данных, позволяя полезной нагрузке оставаться скрытой в рамках легитимного формата изображения.
Извлеченная полезная нагрузка обрабатывается с помощью специальной процедуры расшифровки на основе XOR, где предоставленный строковый параметр преобразуется в байты UTF-16 Big Endian и используется в качестве материала ключа XOR вместе с дополнительным значением, полученным из зашифрованного буфера. После расшифровки полезная нагрузка восстанавливается непосредственно в памяти, раскрывая файл perfgurd.dll. Вредоносная программа загружает DLL из его закодированного представления, не записывая его на диск, что обеспечивает цепочку выполнения без файлов и снижает возможности обнаружения.

Анализ загрузчика третьего этапа – perfgurd.dll
Описанный ниже метод выступает в роли динамической оболочки выполнения, вызывающей определенный метод из загруженной сборки без прямого обращения к ее имени. Сначала он инициализирует переменную num значением 29, но если процесс выполняется в 64-битной среде (IntPtr.Size == 8), он изменяет значение на 15. Этот условный выбор указывает на то, что сборка содержит отдельные методы для 32-битных и 64-битных путей выполнения.
Параметр object_0 должен представлять собой загруженный объект сборки .NET. Код извлекает все типы внутри сборки с помощью GetTypes(), выбирает тип с индексом 20, а затем извлекает его методы с помощью GetMethods(). В зависимости от архитектуры системы, он выбирает либо метод 29, либо метод 15 из этого типа и вызывает его с помощью рефлексии через Invoke(null, null).
Поскольку оба аргумента функции Invoke() равны null, ожидается, что целевой метод будет статическим и не будет принимать параметров. Этот метод позволяет вредоносной программе скрывать фактическое имя метода и ход выполнения от инструментов статического анализа, поскольку выполнение полностью основано на индексах массива, а не на явных идентификаторах. На практике эта функция служит диспетчером, который передает выполнение на следующий этап вредоносной программы, при этом выбранный метод, вероятно, будет содержать основную вредоносную функциональность или процедуру инициализации полезной нагрузки.

В зависимости от архитектуры системы жертвы, вредоносная программа вызывает один из двух методов класса PerfGuard.Networking.EfficientServer из библиотеки perfgurd.dll. Для 32-битных систем выполняется метод с индексом 29, WaitForAdvancedController(), а для 64-битных — метод с индексом 15, WaitForGlobalAggregator(). Как показано ниже, вредоносная программа использует индексы методов, а не явные имена методов во время выполнения, что помогает скрыть ход выполнения и усложняет статический анализ.

Загрузчик сначала проверяет, запущен ли процесс с правами администратора. Если повышенный доступ недоступен, он использует cmstp.exe, легитимную утилиту Windows, для запуска основного процесса с повышенными привилегиями. Используя этот доверенный системный исполняемый файл, вредоносная программа пытается обойти обычные ограничения на выполнение и продолжить работу в контексте администратора.
Для обеспечения постоянного присутствия вредоносная программа создает свою копию в C:\Users\admin\AppData\Roaming с именем файла RVKLmPcYcNO.exe, как показано на рисунке ниже. Затем она генерирует сценарий PowerShell (.ps1) во временном каталоге, который отвечает за запуск скопированного исполняемого файла в скрытом режиме, тем самым снижая его видимость для пользователя. Для обеспечения автоматического выполнения после входа пользователя в систему вредоносная программа создает запись реестра Run в HKCU\Software\Microsoft\Windows\CurrentVersion\Run, указывающую на сценарий PowerShell. В результате сценарий PowerShell выполняется при каждом входе пользователя в систему, что, в свою очередь, запускает скопированный исполняемый файл вредоносной программы и обеспечивает постоянное присутствие после перезагрузки системы.


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

Итоговая полезная нагрузка развертывание – Ремкос РАТ

Анализ заключительного этапа показал, что вредоносная программа в конечном итоге развертывает Remcos RAT (троян удаленного доступа). Remcos — это коммерчески доступный инструмент удаленного администрирования, который часто используется злоумышленниками для получения постоянного доступа к скомпрометированным системам.
Наблюдаемая в этой кампании многоступенчатая архитектура загрузчика предназначена для сокрытия конечной полезной нагрузки и усложнения обнаружения. Исходный исполняемый файл, Windows Health Optimizer Plus.dll и perfgurd.dll, совместно функционируют как поэтапные загрузчики, которые расшифровывают, восстанавливают и выполняют Remcos полностью в оперативной памяти.
После запуска Remcos предоставляет злоумышленнику обширный контроль над скомпрометированным хостом.
Возможности компании Remco:
Анализируемый образец демонстрирует возможности, обычно присущие Remcos RAT, в том числе:
- Удаленное выполнение команд.
- Загрузка и скачивание файла.
- Управление файловой системой.
- Перехват нажатий клавиш и мониторинг нажатий клавиш.
- Сбор учетных данных.
- Системная разведка.
- Манипулирование процессами и услугами.
- Изменение реестра.
- Установление устойчивости.
- Снимок экрана.
- Функция удалённого доступа к рабочему столу.
- Мониторинг активности пользователей.
- Сбор системной и сетевой информации.
- Связь с контролируемой злоумышленниками инфраструктурой управления и контроля (C2).
- Развертывание дополнительных полезных нагрузок.
Эти возможности позволяют злоумышленникам сохранять долгосрочный доступ, отслеживать действия жертв, красть конфиденциальную информацию и проводить дальнейшие операции после взлома.
Вывод:
Эта кампания представляет собой сложную фишинговую операцию, связанную с налогом на товары и услуги (GST), предназначенную для распространения вредоносной программы Remcos RAT через многоступенчатую вредоносную структуру на платформе .NET. Атака начинается с мошеннического уведомления о возврате GST, в котором используется символика правительства Индии и темы, связанные с налогами, чтобы повысить доверие пользователей и побудить их к запуску вредоносного приложения.
Анализ инфраструктуры выявил множество случайных поддоменов в рамках aofmokighoig.hath.network Разрешение проблем, связанных с инфраструктурой, используемой для управления и контроля Remcos RAT. Использование динамических служб DNS, включая hash.network и synology.meВ сочетании с ротируемой инфраструктурой, размещенной компанией M247 Europe SRL, это соответствует операциям с вредоносным ПО, ориентированным на массовый оборот, и киберпреступлениям, мотивированным финансовыми выгодами. Фишинг, связанный с возвратом НДС, дополнительно указывает на преднамеренное нацеливание на индийских пользователей и организации. Хотя имеющиеся индикаторы подтверждают причастность к кластеру постоянных киберпреступных кампаний, имеющихся доказательств недостаточно, чтобы с уверенностью связать эту деятельность с каким-либо публично отслеживаемым субъектом угроз. На основе наблюдаемой инфраструктуры, характеристик вредоносного ПО и целей кампании предполагается, что она осуществляется оператором Remcos, ориентированным на Индию, или брокером первоначального доступа, использующим одноразовую динамическую инфраструктуру DNS.
В целом, сочетание фишингового первоначального доступа, поэтапных загрузчиков .NET, сокрытия полезной нагрузки на основе битовых карт, выполнения без файлов и отказоустойчивой инфраструктуры управления демонстрирует преднамеренные попытки обойти средства контроля безопасности, одновременно обеспечивая постоянный несанкционированный доступ к системам жертв. Эта кампания отражает продолжающуюся эволюцию распространенных методов распространения вредоносного ПО и подчеркивает эффективность многоуровневых цепочек заражения в обеспечении кражи учетных данных, удаленного доступа и более широких операций после взлома.
Seqrite Покрытие:
Trojan.Agent
Trojan.AgentCiR
Trojan.LoaderCiR
Trojan.Mauvaise.SL1
МНК:
| 3757dccb2adae65ccdf8d5e5c948b927 | Eml |
| 07d7d21c2c0920d198efb9ea54900a80 | GST-Refund_July-26_AL27052600952P.rar |
| 20476F3A51DFDDF3DC0603FC7858D894 | GST-Refund_July-26_AL27052600952P.com |
| 7842D12D9E37C75076133BE5B9904CB2 | Windows Health Optimizer Plus.dll |
| CC34D9760394104AD47877A0D57E9C63 | PerfGuard.dll |
| 2a34bdd25b404737ee5d3b52bf0b3b70 | РемкосРАТ |
C2:
185.242.4.122
MITRE ATT&CK:
| тактика | Использованные методы |
| Первоначальный доступ | T1566.001 |
| Типы | T1204.002, T1059.001, T1129 |
| Настойчивость | T1547.001, T1036 |
| Повышение привилегий | T1548.002 |
| Уклонение от защиты | Т1027, Т1027.013, Т1140, Т1218.003, Т1620, Т1055 |
| Доступ к учетным данным | T1056.001, T1555 |
| Дискавери | T1082, T1016, T1057, T1083 |
| | T1113, T1005, T1039 |
| Управление и контроль | T1071.001, T1105 |
| Боковое движение | T1021 |
| Влияние | T1489 |
Авторы:
Вайбхав Билладе
Румана Сиддики



