Специалисты Fortra Intelligence and Research Experts (FIRE) выявили активную фишинговую кампанию, в рамках которой используется бесфайловое вредоносное ПО, защищённое пятью отдельными слоями обфускации. Такой подход существенно повышает вероятность успешного заражения и даёт злоумышленникам дополнительное время для кражи учётных данных или эксфильтрации информации. Каждый уровень маскировки преследует конкретные цели: обход средств предотвращения на уровне электронной почты и конечных устройств, снижение вероятности обнаружения после доставки, а также усложнение криминалистического анализа и задержку реагирования.
Описание
Бесфайловая вредоносная программа представляет собой многоступенчатый загрузчик на JScript и PowerShell, который развёртывает сборку .NET непосредственно в памяти. В изученном образце цепочка включает пять различных методов обфускации, после чего выполняется рефлексивная загрузка финальной стадии без записи исполняемого файла на диск. Первая фиксация этой кампании произошла в отношении крупного международного поставщика программного обеспечения и SaaS-услуг, расположенного в Северной Америке. Уровень сложности указывает на то, что целями являются аналогичные крупные предприятия с высокой ценностью для атакующих.
На данный момент недостаточно данных, чтобы определить, является ли такая степень изощрённости результатом работы одной продвинутой постоянной угрозы (APT) или же загрузчик используется несколькими группами в рамках модели "криптер как услуга". Сам загрузчик демонстрирует, как злоумышленники вкладывают всё больше ресурсов в методы уклонения. Многоуровневая обфускация предназначена для обхода статических сигнатур, AMSI (антивирусного интерфейса сканирования) и методов обнаружения на основе строк, скрывая код на нескольких этапах выполнения и восстанавливая его только во время выполнения. В результате у защитников остаётся меньше традиционных возможностей обнаружить вредоносную активность до её выполнения.
Успешное заражение может привести к краже учётных данных, утечке информации и доставке дополнительной вредоносной нагрузки при минимальном количестве исполняемых артефактов на диске. Бесфайловое ПО может быть использовано для дальнейшей компрометации с целью вымогательства или хищения данных, что грозит простоем операций, штрафами за несоответствие требованиям и потерей доверия клиентов. В качестве первоочередных мер эксперты рекомендуют отслеживать запуск wscript.exe, который порождает conhost.exe --headless powershell.exe с параметром EncodedCommand; сигнализировать о выполнении PowerShell с вызовом [scriptblock]::Create из переменных окружения процесса; а также искать случайно именованные переменные окружения, за которыми следует Reflection.Assembly::Load.
Подробный анализ последовательности обфускации показывает, что первый уровень (JScript на диске) восстанавливает строки посимвольно во время выполнения, дополняя файл ложным модулем и случайными именами переменных. Второй уровень использует сдвиг на −65 и обратный порядок байтов для маскировки команды запуска PowerShell. Третий уровень применяет 16-байтовый циклический ключ для шифрования самого загрузчика PowerShell. Четвёртый уровень дробит полезную нагрузку на 364 переменные окружения и объединяет их во время выполнения, а также разбивает имена методов для обхода AMSI. Пятый уровень кодирует байты в символы CJK (китайские иероглифы), избегая типичных эвристик Base64 и hex.
Предоставленный анализ указывает на то, что техника обфускации может быть как специализированным инструментом, автоматически генерирующим уникальные варианты для каждого образца (что свидетельствовало бы о коммерциализации), так и ручной настройкой под конкретную кампанию или цель (что говорит о более ресурсоёмком субъекте угрозы). Различить эти сценарии можно только по дополнительным данным: повторение одинаковой схемы кодирования у несвязанных групп указывает на общий конструктор, а изменение ключей, имён переменных и легенд в рамках одного субъекта - на индивидуальную работу. Пока таких данных недостаточно.
С точки зрения тактик, техник и процедур (TTPs) по классификации MITRE ATT&CK кампания использует: T1027 (обфускация/сжатые файлы), T1027.013 (зашифрованный/закодированный файл), T1140 (деобфускация/декодирование), T1562.001 (обход AMSI через разделение строк), T1620 (рефлексивная загрузка кода), T1059.005 (JScript) и T1059.001 (PowerShell). Воздействие на организацию включает минимальное количество артефактов на диске, что снижает ценность охоты по упавшим файлам и повышает зависимость от телеметрии скриптовых блоков, цепочек процессов, переменных окружения и памяти. Обнаружение традиционными статическими сигнатурами затруднено, поскольку строки реконструируются в рантайме, загрузчик живёт в переменной окружения, а полезная нагрузка распределена по сотням фрагментов CJK.
Для немедленного реагирования (в течение 24 часов) рекомендуется проверить запуски wscript.exe в связке с conhost.exe --headless powershell.exe, а также поискать вызовы [scriptblock]::Create($env:<name>) и Reflection.Assembly::Load для массивов байтов, собранных из строк. Особое внимание следует уделить именам переменных окружения z6ti4ttoCGD1 и kYcT4A1u9jXwA. В краткосрочной перспективе (неделя) следует внедрить детекторы для большого количества случайно именованных переменных окружения с последующей рефлексивной загрузкой, а также проверить песочницы на наличие цикла декодирования CJK и 364-кратной конкатенации переменных. В дальнейшем нужно мониторить варианты, которые повторяют схему размещения в переменных окружения, но меняют ключи, имена или финальную нагрузку, а также сохранять телеметрию командной строки, скриптовых блоков, AMSI и журналов PowerShell.
Основной риск рассматриваемого образца заключается в архитектуре загрузчика: согласованная попытка скрыть исполняемое тело в энергозависимом состоянии процесса, восстановить его только во время выполнения и выполнить рефлексивно в памяти. Наиболее эффективные меры защиты направлены на поведение загрузчика, а не на единичный хеш полезной нагрузки: охота за цепочками WSH-к-скрытому-PowerShell, оповещение о выполнении из переменных окружения и использование цикла декодирования CJK и имён переменных в качестве индикаторов компрометации. Специалисты Fortra продолжают расследование, чтобы определить, является ли данная обфускация результатом использования коммерческого криптера или индивидуальной разработкой, но созданные на основе поведения детекторы остаются актуальными в любом случае.
Индикаторы компрометации
SHA256
- 3e08e1f04db3afbe10bda13bde59845a515044fe38ae75dca164fb54dd440c2a