Бесфайловая атака в действии: вредонос появляется из ниоткуда и исчезает без следа

Бесфайловая атака в действии: вредонос появляется из ниоткуда и исчезает без следа

Слышали о таком виде вредоносного ПО как fileless malware? Термин «бесфайловый» описывает не отсутствие следов, а способ исполнения. Код не ложится на накопитель в виде привычного исполняемого модуля, а загружается по сети, расшифровывается в буфер и запускается прямо в оперативной памяти. Следы всё равно появляются — журналы сценариев, необычные цепочки процессов, артефакты в реестре, подписки на события, а также характерные участки в адресном пространстве. Разберём по шагам жизненный цикл таких атак, используемые техники и практические меры, которые действительно снижают риск.

Что на самом деле означает «бесфайловость»

Классический цикл «сохранить и запустить» заменяется на подгрузку и выполнение из памяти. В качестве промежуточного хранилища часто используют реестр, планировщик задач или инфраструктуру WMI. Нередко это сочетается с подходом living off the land — злоумышленник задействует штатные системные утилиты Windows, известные под общим сокращением LOLBins, чтобы скрыться среди легитимных действий.

Сценарий от первичного запуска до закрепления

Точка входа. Макрос в документе, вредоносная ссылка, сценарий с социальной инженерией, эксплойт в уязвимом приложении или запуск доверенной системной утилиты. Цель — минимальная видимость и быстрый выход на управляющий сервер.

Доставка полезной нагрузки. Загружается зашифрованный модуль, который сразу раскладывается в память. Это может быть оболочка команд, сборка .NET, собственный исполняемый код или скрипт на JavaScript.

Маскировка и выполнение. Нагрузка внедряется в адресное пространство доверенного процесса — браузера, офисного приложения, системной службы. Дальше выполняются задачи нападения: сбор учётных данных, перемещение по сети, обход мониторинга.

Повторный старт. Закрепление достигается через таймеры, WMI-подписки, ветки автозагрузки с компактным однострочным скриптом. При перезагрузке этот фрагмент снова подтягивает модуль в память и запускает его.

Ключевые техники на Windows

PowerShell и загрузка .NET-кода в память

Популярная схема — доставить байтовый массив, превратить его в сборку .NET напрямую в памяти и вызвать нужную точку входа. На диске при этом не появляется ни исполняемый файл, ни библиотека. Такой подход исторически применяли и открытые фреймворки, и коммерческие инструменты. Защитные механизмы Microsoft дают заметный шанс на детект: интерфейс AMSI перехватывает содержимое скриптов до запуска, режим Script Block Logging и журналирование модулей пишут важные фрагменты в логи, режим Constrained Language ограничивает доступ к опасным интерфейсам. Любые попытки отключить AMSI или заглушить телеметрию хорошо видны в расследованиях и должны повышать приоритет инцидента.

Штатные утилиты как исполняющая оболочка

Доверенные двоичные файлы часто используют для запуска чужого кода. Типичные примеры — rundll32, regsvr32, mshta, wscript и cscript, а также installutil. Эти компоненты помогают обойти простые политики и выглядят легитимно в первом приближении. В реальности они становятся транспортом: загружают скрипт или оболочку в память, после чего управление переходит к вредоносной логике. Управляет этим белый список приложений. На практике лучше перейти на модель Windows Defender Application Control или настроить AppLocker. Полезна и группа правил Attack Surface Reduction, которая режет цепочки вроде «офисный документ запускает сценарный хост» и блокирует обфусцированные команды.

Инъекции и исполнение в чужом процессе

Чтобы раствориться в шуме, код размещают внутри уже работающего приложения. Распространены отражённая загрузка библиотек, подмена образа процесса в технике hollowing, принудительное создание удалённого потока, маппинг секций памяти без сопоставления с файлом. Такие операции оставляют следы — частные страницы с правами на выполнение без файлового соответствия, структуры формата PE в памяти, новые потоки у процесса, которому это не свойственно. Охота по этим признакам ведётся через трассировку событий Windows, телеметрию загрузки модулей, сетевые события и Sysmon с корректно настроенным конфигом. В терминах MITRE ATT&CK это техники T1055, T1218, T1546, T1112 и T1027.

Закрепление без размещения на диске

Персистентность строят на механизмах, которые вызывают короткий скрипт и повторяют подгрузку в память. Чаще всего это планировщик, подписки WMI, ветки Run и RunOnce. Иногда используют шаблоны в документах, COM-объекты или службы, которые дергают сценарный движок. Формального исполняемого файла на диске нет, но события старта и сами «крючки» остаются в журналах и реестре.

Попытки «ослепить» защиту и что с этим делать

Атакующие стремятся убрать с дороги сенсоры. По AMSI это изменения возвращаемых кодов функций, подмена адресов в таблицах импорта, плотная обфускация. По трассировке событий отключают интересующие провайдеры или патчат ключевые функции. Политика безопасности должна считать эти действия самостоятельными индикаторами компрометации. Практика такова: AMSI включён, журналы PowerShell собирают блоки сценариев и модули, старая версия PowerShell отключена, WDAC или AppLocker работают в режиме белых списков, правила ASR включены, макросы из интернета блокируются, метка происхождения MOTW соблюдается, WMI и планировщик под централизованным аудитом.

Как это выглядит на Linux и macOS

Linux

Часто применяют связку memfd_create и fexecve. Получается запуск образа без файлового следа на диске. Встречаются инъекции через ptrace, а также подмена библиотек через переменную окружения LD_PRELOAD. Закрепление нередко строят на systemd-таймерах, заданиях cron, правилах udev. Доставку делают через конвейеры оболочки. Детект держится на аудите системных вызовов, сенсорах eBPF и анализе исполняемых страниц без файлового бэка. Для пост-инцидентного разбора пригодится проект Volatility — он помогает вытащить из снимка памяти следы инъекций, скрытые потоки, незамапленные участки.

macOS

В экосистеме Apple встречаются загрузки кода через JXA и AppleScript, манипуляции рантаймом Objective-C, инъекции в процессы через закрытые интерфейсы. Закрепление реализуют через LaunchAgents и LaunchDaemons, профили конфигурации и незаметные плагины, которые подкачивают сценарии из сети. Контроль обеспечивают механизмы Endpoint Security и политика на профили. FileVault защищает том, но не мешает исполнению из памяти в уже запущенной системе, поэтому логика противодействия та же, что и на других платформах.

Что видит синяя команда

  • Нестандартные пары процессов. Офисный редактор стартует PowerShell, браузер запускает административную утилиту, служба печати устанавливает внешнее соединение.
  • Исполняемые страницы без файлового соответствия. Частные области памяти с правами на выполнение, где обнаруживаются структуры формата PE, при этом образа на диске нет.
  • Попытки заглушить телеметрию. Выгрузка библиотек мониторинга, отключение трассировки, вмешательство в AMSI.
  • Нетипичная сеть у «тихих» процессов. Долгие зашифрованные сессии, редкие порты, неожиданные домены.
  • Подозрительные события в WMI, планировщике и реестре. Новые подписки на системные события, задачи с загрузкой сценария из интернета, однострочные команды в ветках автозагрузки.

Источники данных и инструменты

Журналы и трассировка событий Windows. Включите расширенный аудит, сбор блоков сценариев PowerShell, журналирование модулей, запись сетевых событий. Логи централизуйте в SIEM.

Sysmon. Настройте события на дерево процессов, сетевые соединения, изменение реестра, активности WMI, подпись образов. Базовые конфиги удобно взять за основу и доработать под особенности инфраструктуры. ссылка

Снимки памяти. При подозрении снимайте дамп оперативной памяти и разбирайте его через Volatility третьей версии. Ищите незамапленные секции, отражённые загрузки библиотек, скрытые потоки. ссылка

Охота по поведению. Ищите длинные строки в кодировке Base64, рефлексию .NET, нетипичные ключи запуска, сценарии в папках документов, загрузку скриптовых движков доверенными бинарями. Полезно держать список разрешённых связок «кто кого имеет право запускать» и реагировать на отклонения.

Практические меры защиты

  • Белые списки приложений. Перейдите от блокировок к разрешительной модели. Windows Defender Application Control или AppLocker закрывают целые классы обходов. Ограничьте доступ к системным утилитам, которые часто используют как оболочку для чужого кода.
  • Правила Attack Surface Reduction. Включите набор, который блокирует запуск сценариев из офисных документов, создание исполняемых из приложений пакета Office, обфусцированные команды и другие популярные трюки. ссылка
  • Жёсткая политика PowerShell. Отключите вторую версию, применяйте Constrained Language там, где не нужен полный доступ к .NET, включите журналы Script Block и модулей, а также транскрипцию сессий.
  • Неприкосновенность AMSI и телеметрии. Любая попытка вмешательства трактуется как серьёзный сигнал. Добавьте правила, повышающие приоритет такого события.
  • Контроль WMI, планировщика и автозагрузки. Введите регулярный аудит подписок, задач и веток Run. Реагируйте на однострочники, которые тянут код из интернета.
  • Макросы и метка происхождения. Запретите активный контент в документах, пришедших извне, следите за корректным применением метки MOTW. Обучайте сотрудников узнавать деловые приманки.
  • Сегментация и выход в интернет. Ограничьте исходящие соединения с рабочих мест, применяйте прокси и правила egress-контроля, ловите нетипичные туннели.
  • EDR с анализом памяти. Выбирайте платформы, которые видят страницы с правами на выполнение без файлового бэка, отражённые библиотеки и техники hollowing.

Идеи для охоты и проверки гипотез

Поиск странных связок процессов в журналах безопасности Windows

# Событие 4688 за сутки. Ищем пары "родитель → потомок", нетипичные для офисных и браузерных приложений
 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688; StartTime=(Get-Date).AddDays(-1)} |
   Where-Object {
     $_.Properties[9].Value -match '(WINWORD|EXCEL|POWERPNT|Acrobat|chrome|msedge).exe' -and
     $_.Properties[5].Value -match '(powershell|wscript|cscript|mshta|rundll32|regsvr32).exe'
   } |
   Select-Object TimeCreated,
                 @{n='Parent';e={$_.Properties[9].Value}},
                 @{n='Child'; e={$_.Properties[5].Value}},
                 @{n='Cmd';   e={$_.Properties[8].Value}} |
   Format-Table -Auto
 

Простейшая идея для YARA по снимку памяти

// Находим признаки формата PE в частной странице, где нет привязки к файлу. 
 // Применять только в рамках законного форензик-анализа памяти
 rule InMemory_PE_NoMapping {
   strings:
     $mz = { 4D 5A }
     $pe = { 50 45 00 00 }
   condition:
     $mz at 0 and $pe in (0x40..0x200)
 }
 

Юридическая и этическая часть

Проверки проводите только на собственном оборудовании или с письменным согласием владельца. Цель материала — помочь защитникам выстроить надёжную архитектуру и сформировать понятные детекты. Инструкций для нападения здесь нет.

Краткая памятка

  • Бесфайловая атака — это исполнение из памяти, а не исчезновение следов. Журналы и артефакты остаются.
  • Главные союзники защитника — AMSI, расширенное журналирование PowerShell, трассировка событий Windows, Sysmon и разрешительная модель запуска.
  • Штатные утилиты полезны админам, но без ограничений превращаются в удобный рантайм для чужого кода.
  • EDR с анализом адресного пространства ловит страницы с правами на выполнение без файлового соответствия и техники инъекции.
  • Правила ASR и белые списки уменьшают поверхность атаки кратно и убирают целые классы обходов.
бесфайловая атака вредонос из памяти PowerShell .NET LOLBins WMI AMSI ETW
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

Техно Леди

Технологии и наука для гуманитариев

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS