Содержание:
- Введение
- Обзор кампании
- Первоначальный доступ
- Цепочка заражения
- Технический анализ
- Этап 1: Первоначальная доставка (Архив → JavaScript)
- Этап 2: Анализ PowerShell Loader1
- Этап 3: Анализ PowerShell Loader2
- Этап 4 – Phantom Stealer v3.5.0: Сбор и утечка данных
- Атрибуция кампании
- Заключение
- МОК
- Seqrite Зона обнаружения
- Тактика, методы и процедуры атак MITRE (TTP)
Введение
Фишинговые кампании продолжают развиваться, маскируясь под обычные деловые сообщения, которым получатели, скорее всего, доверяют. В ходе нашего расследования мы обнаружили кампанию, использующую множество фишинговых приманок для распространения вредоносных файлов JavaScript, упакованных в сжатые архивные вложения. Хотя электронные письма имитируют различные доверенные организации, включая глобального поставщика логистических услуг и государственную налоговую службу, в конечном итоге они приводят к идентичной многоступенчатой цепочке заражения.
После запуска JavaScript-загрузчик запускает обфусцированный скрипт PowerShell, который выполняет весь вредоносный процесс в памяти, значительно уменьшая его объем на диске и затрудняя обнаружение. В конечном итоге цепочка заражения развертывает Phantom Stealer v3.5.0, который собирает конфиденциальную информацию из скомпрометированной системы и передает собранные данные через SMTP, используя закодированное содержимое.
В этой кампании подчеркивается, как злоумышленники все чаще сочетают убедительную социальную инженерию, основанную на бизнес-тематике, с многоуровневой обфускацией и методами выполнения без использования файлов, чтобы обойти традиционные средства защиты и скомпрометировать корпоративные среды.
Обзор кампании
Кампания основана на тщательно разработанных фишинговых письмах, имитирующих обычную деловую переписку, чтобы заставить получателей запустить вредоносный JavaScript-файл, скрытый в сжатых архивных вложениях. В ходе нашего анализа мы выявили два различных фишинговых письма, распространяющих одно и то же вредоносное ПО с использованием разных методов социальной инженерии.
Первое электронное письмо выдаёт себя за UPS Forwarding Hub , предоставляя информацию о бронировании отправлений и расценках, чтобы привлечь пользователей, занимающихся закупками или логистикой. Второе маскируется под официальное уведомление от Налогового управления Малайзии (LHDN) , запрашивающее документы для проверки корпоративного налога, чтобы оказать давление на получателей, ответственных за финансы или соблюдение нормативных требований.
Хотя методы обмана различаются, оба используют знакомые бизнес-процессы, требующие своевременного внимания. Используя известные бренды, реалистичные бизнес-сценарии и ощущение срочности, злоумышленники повышают вероятность того, что получатели откроют прикрепленный архив и выполнят встроенный JavaScript.
Первоначальный доступ
Кампания начинается с фишинговых писем, созданных таким образом, чтобы имитировать законную деловую переписку. В ходе нашего расследования мы обнаружили два фишинговых письма, построенных на основе разных бизнес-сценариев, но оба следовали одной и той же схеме атаки.
• Электронное письмо 1 – Уведомление об отправке UPS

Первое фишинговое письмо имитирует отправителя. Центр пересылки грузов UPS и позиционируется как обычный запрос на бронирование отгрузки. Адресованное почтовому ящику отдела закупок, электронное письмо содержит номер отгрузки, идентификатор предложения, сведения о доставке и сборы получателя, что создает впечатление подлинной логистической переписки, осуществляемой в ходе повседневной деловой деятельности. Для подтверждения своей подлинности письмо включает в себя фирменную символику, информацию об отгрузке и сжатый архивный файл, якобы содержащий соответствующие отгрузочные документы.
Интересно, В деталях отправки указана цитата от 25 июня 2025 года, хотя электронное письмо было отправлено в июне 2026 года. Это говорит о том, что фишинговый шаблон, вероятно, был повторно использован в предыдущей кампании или собран без тщательного обновления всех полей.
• Электронное письмо 2 – Уведомление о налоговой проверке в Малайзии

Второе фишинговое письмо имитирует другое. Налоговое управление Малайзии (LHDN) Этот документ написан полностью на малайском языке, что придает ему вид официального уведомления о налоговой проверке. В нем запрашивается подтверждающая документация для оценки корпоративного налога за 2026 год, и устанавливается 14-дневный срок подачи, чтобы создать ощущение срочности. Ссылаясь на официальные налоговые формы, государственные ведомства и контактную информацию, злоумышленники пытаются завоевать доверие получателей и убедить их открыть прикрепленный архив.
Использование локализованного языка и нормативного контекста придает электронному письму вид обычной деловой переписки, касающейся соблюдения налогового законодательства.
Единый механизм доставки
Хотя темы социальной инженерии различаются, в обоих электронных письмах распространяется один и тот же вредоносный файл JavaScript, упакованный в сжатые архивы. Это указывает на то, что злоумышленники используют одну и ту же цепочку доставки вредоносного ПО, адаптируя при этом приманку к различным бизнес-сценариям.
Цепочка заражения
На рис. 3 показана полная цепочка заражения, выявленная в ходе нашего анализа. В кампании используется многоуровневый рабочий процесс выполнения, в котором на каждом этапе последовательно восстанавливается и запускается следующий компонент, в конечном итоге развертывается Phantom Stealer v3.5.0.

Технический анализ
Этап 1: Первоначальная доставка (Архив -> JavaScript)
Оба фишинговых письма содержат вложение в виде сжатого архива. Содержащийся в нём JavaScript замаскирован под имена файлов, максимально соответствующие тематике фишингового письма. Во всех исследованных образцах злоумышленники используют имена, относящиеся к бизнесу, например:
- UPS Docs_Shipment Number 3264010420-Quote ID 203263067.js
- Банковский чек на счет-фактуру от мая 26 г. MBB531540 dd 20042026.js
- CKHT800A_RUJ ATC13529CWYE25M.js
Подбирая имя файла под приманку, используемую в социальной инженерии, вложение выглядит как законный транспортный документ, банковская выписка или налоговый файл, что повышает вероятность того, что получатели подпишут его без подозрений.
Анализ файла JavaScript
Вместо немедленного выполнения вредоносных действий, скрипт сначала скрывает свою функциональность с помощью нескольких уровней обфускации строк и косвенных вызовов функций.

Названия функций, вызовы методов, командные строки и т. д. заменяются числовыми индексами, которые ссылаются на скрытые строковые массивы, из-за чего скрипт кажется значительно сложнее, чем он есть на самом деле.
Скрипт содержит множество вспомогательных функций, которые просто выполняют базовые арифметические операции или операции сравнения. Эти обертки не дают никаких функциональных преимуществ, но существенно снижают читаемость, заставляя аналитиков отслеживать несколько уровней косвенной адресации, прежде чем добраться до фактической логики выполнения. Закодированные строковые массивы инициализируются только один раз и впоследствии используются повторно, что еще больше затрудняет понимание потока выполнения.
Возможности загрузчика JavaScript
Хотя обфускация изначально скрывает поведение скрипта, восстановление встроенных строк дает четкое представление о его предполагаемой функциональности. Расшифрованные строки выявляют ссылки на PowerShell, собственные COM-объекты Windows, файловые операции и WMI, что указывает на тщательно разработанный загрузчик, а не на автономную вредоносную программу.

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

Закодированная полезная нагрузка хранится в виде свойства объекта JavaScript и восстанавливается только во время выполнения, что позволяет загрузчику оставаться самодостаточным, скрывая при этом фактическую логику PowerShell от статического анализа.
После завершения инициализации JavaScript извлекает встроенную полезную нагрузку PowerShell, закодированную в Base64 и хранящуюся в объекте encodedData. Используя собственные компоненты Windows COM, загрузчик декодирует встроенное содержимое, восстанавливает сценарий PowerShell и записывает его во временный файл .ps1. Затем он запускает powershell.exe со скрытыми параметрами выполнения, чтобы передать управление следующему этапу цепочки заражения.
Типичная последовательность выполнения JavaScript с использованием PowerShell выглядит следующим образом:

Этап 2: Анализ PowerShell Loader1
Вместо того чтобы встраивать следующий этап непосредственно в открытый текст, загрузчик PowerShell сохраняет его в виде зашифрованной AES полезной нагрузки. Зашифрованное содержимое, ключ шифрования и вектор инициализации (IV) встраиваются в скрипт в виде строк, закодированных в Base64. Это позволяет загрузчику оставаться полностью автономным, гарантируя при этом, что фактическая вредоносная логика остается скрытой до момента выполнения.


Перед расшифровкой зашифрованных данных скрипт удаляет пробелы и переносы строк из встроенных строк Base64 для восстановления непрерывного потока данных. Затем он преобразует очищенные строки в массивы байтов с помощью метода .NET Convert.FromBase64String() . Та же процедура используется для обработки зашифрованных данных, ключа AES и вектора инициализации.
Процедура дешифрования AES
После преобразования компонентов, закодированных в Base64, в массивы байтов, загрузчик восстанавливает скрытую полезную нагрузку, используя класс .NET AesCryptoServiceProvider.

Скрипт настраивает шифр для работы в режиме CBC с заполнением PKCS7, после чего создает объект дешифратора, который обрабатывает зашифрованные данные полностью в памяти. Используя собственные криптографические библиотеки .NET вместо пользовательских процедур дешифрования, загрузчик обеспечивает надежную и компактную реализацию, скрывая следующий этап до момента выполнения.
Расшифрованные байты записываются в MemoryStream через CryptoStream, что позволяет всему процессу расшифровки происходить в памяти.
Типы
После успешного восстановления скрипта в открытом виде загрузчик немедленно передает управление, используя Invoke-Expression. Это позволяет скрипту выполняться непосредственно из памяти, что дает возможность начать следующий этап без создания дополнительных файлов в скомпрометированной системе.

Этап 3: Анализ PowerShell Loader2
Третий этап в этой цепочке заражения — это еще один расшифрованный в Base64 фрагмент кода, полученный в результате выполнения PowerShell на втором этапе.

В отличие от предыдущего этапа, который был сосредоточен на расшифровке встроенного скрипта, этот загрузчик отвечает за восстановление защищенной сборки .NET, мониторинг среды выполнения и запуск сборки непосредственно из памяти без записи на диск.
Подготовка окончательной полезной нагрузки для выполнения с использованием рефлексивного подхода.
Анализ вторичного скрипта PowerShell показал, что он содержит два различных полезных груза , каждый из которых выполняет свою функцию в цепочке заражения.
· Полезная нагрузка 1: Инжектор
Первая полезная нагрузка хранится в виде закодированного в Base64 блока, защищенного простым XOR-шифром. Этот модуль действует как инжектор в оперативной памяти, отвечающий за выполнение последующего этапа.
Перед выполнением загрузчик PowerShell декодирует данные Base64 и применяет процедуру расшифровки XOR, используя жестко закодированный ключ. “DEVILboy56@@” восстановить исходный код сборки в памяти.


Успешное XOR-расшифровка base64-блока приводит к созданию сборки .NET, загруженной непосредственно в память.


· Полезная нагрузка 2: Призрачный похититель
Вторая полезная нагрузка внедряется в загрузчик PowerShell в виде необработанного массива байтов, хранящегося в десятичном формате.

Анализ массива байтов выявил заголовок DOS «MZ» (4D 5A), подтверждающий, что это действительный образ исполняемого файла (PE), а не шелл-код или закодированные данные. В отличие от первой полезной нагрузки, этот PE не расшифровывается скриптом PowerShell. Вместо этого он передается непосредственно в качестве аргумента рефлексивной сборке .NET вместе с путем к легитимному исполняемому файлу aspnet_compiler.exe.


Данная конструкция четко разделяет обязанности каждого компонента.
- Скрипт PowerShell в основном выполняет функцию оркестратора, восстанавливая отражательный загрузчик и передавая ему целевой процесс и встроенную полезную нагрузку PE-файла.
- Фактическая логика внедрения и выполнения делегируется сборке .NET, работающей в оперативной памяти, что значительно снижает сложность этапа PowerShell и скрывает конечный вредоносный код до следующего этапа выполнения.
Этап 4 – Phantom Stealer v3.5.0: Сбор и утечка данных
После успешного запуска рефлексивного загрузчика .NET атака завершается развертыванием Phantom Stealer v3.5.0 . Этот вредоносный код нацелен на сбор широкого спектра конфиденциальной информации из скомпрометированной системы, включая информацию о хосте, установленные приложения, учетные данные браузера, файлы cookie, сохраненную платежную информацию, криптовалютные кошельки и данные, связанные с популярными мессенджерами. Собирая информацию из множества источников, вредоносное ПО стремится максимизировать ценность скомпрометированного хоста перед началом эксфильтрации.

Сбор информации
Phantom Stealer перечисляет зараженную систему и собирает информацию из многочисленных приложений и профилей пользователей. Собранные данные включают информацию о системе, установленном программном обеспечении, учетных данных браузера, cookie-файлы, сохраненные платежные карты, историю просмотров, а также файлы, связанные с криптовалютными кошельками и мессенджерами. Собранная информация организуется в отдельные файлы в зависимости от приложения или типа данных, что упрощает последующую эксфильтрацию.
Примерами добытых артефактов являются:
- Chromium_passwords_ .текст
- Кредитные карты Chromium .текст
- Chromium_cookies_ .json
- Gecko_passwords_ .текст
- Gecko_cookies_ .json
SMTP-аутентификация
После установления сеанса вредоносная программа проходит аутентификацию на SMTP-сервере с использованием механизма AUTH LOGIN . Имя пользователя и пароль передаются в закодированном в Base64 виде, прежде чем SMTP-сервер предоставит доступ для пересылки исходящих электронных писем.
В ходе нашего анализа были обнаружены следующие учетные данные:
Имя пользователя (Base64): cnVoaUBha3Rla21ldGFsLmNvbS50cg==
Расшифровано для: ruhi@aktekmetal[.]com[.]tr
Пароль также передается в закодированном виде Base64 до успешного завершения аутентификации.

После декодирования данных base64, собранных злоумышленником (показано на рис. 18), мы обнаружили, что фактические данные представлены в следующем формате.

Извлечение данных на основе SMTP
«Фантомный похититель» передает собранную информацию напрямую через Простой протокол пересылки почты (SMTP)Динамический анализ показал, что вредоносная программа устанавливает SMTP-сессию через TCP-порт 587, стандартный порт отправки для аутентифицированной доставки электронной почты. После подключения к почтовому серверу вредоносная программа инициирует Расширенный протокол SMTP (ESMTP) сеанс с использованием ЭХЛО командует и впоследствии модернизирует канал связи через STARTTLS, обеспечивая защиту передаваемых учетных данных и украденной информации с помощью шифрования TLS во время передачи.
Вместо того чтобы объединять всю украденную информацию в один архив, Phantom Stealer генерирует несколько файлов, каждый из которых соответствует определенному приложению или категории учетных данных.

После успешной передачи собранной информации вредоносная программа корректно завершает SMTP-сессию с помощью команды QUIT . Это завершает транзакцию электронной почты, используя стандартную семантику SMTP, что позволяет вредоносной связи максимально имитировать легитимный исходящий почтовый трафик.
Атрибуция кампании
На момент анализа мы не обнаружили убедительных доказательств, связывающих эту кампанию с конкретным субъектом угроз или набором вторжений. Хотя конечная полезная нагрузка идентифицирована как Phantom Stealer v3.5.0, вредоносное ПО широко распространено в киберпреступной экосистеме и используется многими операторами.
Заключение
Эта кампания демонстрирует, как современные фишинговые операции эволюционировали от простой доставки вредоносного ПО до тщательно спланированных многоэтапных цепочек атак. Имитируя легитимные деловые сообщения, связанные с логистикой, банковским делом и соблюдением нормативных требований, злоумышленники повышают вероятность взаимодействия с пользователем, скрывая сложный алгоритм действий за, казалось бы, обычными документами.
Вместо того чтобы напрямую раскрывать конечный компонент вируса, каждый этап выявляет только следующий элемент в цепочке заражения, что значительно усложняет статический анализ и уменьшает возможности для раннего обнаружения.
Для организаций эта кампания служит напоминанием о том, что к убедительным электронным письмам деловой тематики, даже тем, которые выглядят так, будто отправлены доверенными поставщиками логистических услуг, финансовыми учреждениями или государственными органами, следует относиться с осторожностью. Усиление безопасности электронной почты, обучение сотрудников проверке неожиданных вложений, ограничение выполнения ненужных скриптов и мониторинг подозрительной активности PowerShell, загрузки в память, внедрения процессов и необычного исходящего SMTP-трафика могут значительно повысить шансы обнаружения подобных угроз до того, как будет скомпрометирована конфиденциальная информация.
Эта кампания подчеркивает важность стратегии многоуровневой защиты, в рамках которой обеспечивается безопасность электронной почты, endpoint protectionМониторинг поведения и сетевая видимость работают вместе, чтобы выявлять сложные многоэтапные атаки, которые могут обойти традиционное обнаружение на основе сигнатур.
МОК-
6BBFC88534D5D515DDDB0EC9BB618530
8A620E451E64F418BC21FD458E952F2E
5F238710A5EF4F6DDBBE7A118C822705
a30b628d0c087f305b35be3e3f5281b3
34bfa888695b9aaa41bd575245972043
Seqrite Зона обнаружения
Trojan.Injector.S39585891
Trojan.YakbeexMSIL.ZZ4
PS.Trojan.Loader.50921.GC
Js.Trojan.Loader.50922.GC
Тактика, методы и процедуры атак MITRE (TTP)
| Тактика (ATT&CK ID) | Техники/Подтехника (ID) | Метод |
| Первоначальный доступ (TA0001) | Фишинг: Целевой фишинг (T1566.001) | Доставляет вредоносное ZIP-вложение. |
| Исполнение (TA0002) | Интерпретатор команд и сценариев: JavaScript (T1059.007) | Выполняет обфусцированный JavaScript. |
| Исполнение (TA0002) | Интерпретатор команд и сценариев: PowerShell (T1059.001) | Запускает скрытый PowerShell |
| Стелс (TA0005) | Зашифрованные/сжатые файлы и информация (T1027) | Использует многослойную обфускацию. |
| Стелс (TA0005) | Деобфускация/декодирование файлов или информации (T1140) | Расшифровывает данные в форматах Base64, AES и XOR. |
| Стелс (TA0005) | Отражающая кодовая нагрузка (T1620) | Загружает сборку .NET из памяти. |
| Стелс (TA0005) | Маскарад (T1036) | Использует имена файлов в деловой тематике. |
| Стелс (TA0005) | Технологический литьевой инжектор (Т1055) | Внедряет полезную нагрузку в aspnet_compiler.exe |
| Стелс (TA0005) | Выполнение системного двоичного прокси (T1218) | Злоупотребление легитимным исполняемым файлом .NET |
| Открытие (TA0007) | Обнаружение системной информации (T1082) | Собирает информацию о хосте. |
| Открытие (TA0007) | Выявление процессов (T1057) | Проверяет состояние целевого процесса |
| Доступ к учетным данным (TA0006) | Учетные данные из хранилищ паролей (T1555) | Извлекает сохраненные учетные данные. |
| Доступ к учетным данным (TA0006) | Учетные данные из веб-браузеров (T1555.003) | Крадет учетные данные браузера и файлы cookie. |
| Коллекция (TA0009) | Данные из локальной системы (T1005) | Собирает локальные данные приложения. |
| Коллекция (TA0009) | Архив собранных данных (T1560) | Организует украденные данные в файлы. |
| Эксфильтрация (TA0010) | Эксфильтрация по альтернативному протоколу (T1048) | Передает данные через SMTP. |
| Командование и управление (TA0011) | Протокол прикладного уровня: почтовые протоколы (T1071.003) | Использует протокол SMTP. |
| Командование и управление (TA0011) | Зашифрованный канал (T1573) | Шифрует SMTP с использованием STARTTLS. |
Авторы
- Прашил Мун
- Манодж Кумар Ниламегам



