«Исполнение — это не просто «запуск вредоносного кода». Это фундаментальный этап атаки, где абстрактная угроза превращается в конкретное действие в вашей системе. Понимание всех возможных векторов исполнения — от очевидных скриптов до скрытых механизмов операционной системы — критически важно для построения реальной, а не декларативной защиты.»
Что такое исполнение в контексте кибератаки
В модели киберубийства MITRE ATT&CK этап Execution (TA0002) — это момент, когда злоумышленник получает возможность запустить свой код на целевой системе. Цель — не просто «запустить что-то», а получить контроль, инициировать вредоносную активность и закрепиться. Это точка перехода от подготовки к активному воздействию.
Вопреки упрощенному представлению, исполнение редко выглядит как запуск явного вирусного .exe. Чаще это злоупотребление легитимными инструментами и механизмами операционной системы, что позволяет маскироваться под обычную активность и обходить примитивные сигнатуры.
Векторы исполнения: от скриптов до системных механизмов
Злоумышленники используют широкий спектр методов, которые можно условно разделить на несколько категорий.
Злоупотребление интерпретаторами и оболочками
Самый распространенный вектор — использование встроенных средств автоматизации и управления.
- PowerShell: Мощный инструмент администрирования Windows. Злоумышленники используют его для выполнения кода, обхода защиты (например, с помощью параметра
-WindowStyle Hidden) и взаимодействия с удаленными системами. Командлеты вродеInvoke-CommandилиStart-Processстановятся оружием. - Командная строка (cmd.exe): Классический вектор. Используется для выполнения команд, запуска пакетных файлов (.bat, .cmd) и управления системой. Пример из реальных инцидентов:
cmd.exe /Q /c move %TEMP%sys.tmp %WINDIR%policydefinitionspostgresql.exe— маскировка вредоносного файла под легитимный компонент. - Оболочки Unix (sh, bash, zsh): Аналогичный вектор для Linux/macOS. Позволяет выполнять произвольные команды, часто с использованием конвейеров и перенаправления вывода для скрытности.
- Скриптовые языки (Python, JavaScript, VBScript): Их наличие в корпоративной среде часто избыточно. Python-скрипт, скачанный из интернета, или JS-файл, исполненный через
cscript.exe, — типичные методы. Контроль установленного ПО и выполнение скриптов только из доверенных мест — базовая мера.
Исполнение через механизмы операционной системы
Более сложные техники, эксплуатирующие внутренние API и функции ОС.
- Планировщики заданий (Windows Task Scheduler, cron, systemd timers): Используются для первоначального запуска и поддержания устойчивости. Например, команда
schtasks /create /tn "mysc" /tr C:UsersPublictest.exe /sc ONLOGON /ru "System"создает задание, запускающееся при каждом входе в систему от имени SYSTEM. - Службы Windows (services.exe, sc.exe): Позволяют выполнять код с высокими привилегиями. Инструменты вроде PsExec создают временную службу для удаленного выполнения команд. Блокировка таких инструментов через политики сокращения поверхности атаки (ASR) эффективна.
- Windows Management Instrumentation (WMI): Инфраструктура для управления системами. Через WMI можно выполнять процессы, собирать информацию и перемещаться по сети. Несмотря на устаревание консольной утилиты
wmic.exe, сам протокол остается мощным вектором через PowerShell или COM. - Компоненты Windows (COM, DDE, Native API): Низкоуровневые механизмы. Например, Dynamic Data Exchange (DDE) в документах Office может быть использован для выполнения команд без макросов. Объектная модель компонентов (COM) позволяет загружать и выполнять код через легитимные процессы.
Исполнение через взаимодействие с пользователем
Техники, требующие действия пользователя, но остающиеся эффективными.
- Запуск из фишинговых вложений: Пользователя убеждают открыть файл (.doc, .pdf, .xls, .lnk, .js), который запускает код. Это может быть как эксплуатация уязвимости (например, в обработчике PDF), так и социальная инженерия («включите редактирование, чтобы увидеть содержимое»).
- Запуск по ссылке: Переход по ссылке может привести к эксплуатации браузера или автоматической загрузке и запуску исполняемого файла.
Исполнение в современных средах
- Контейнеры: Развертывание вредоносного контейнера или эксплуатация привилегированного для выполнения команд на хосте.
- Облачные API: Использование CLI (AWS CLI, Azure PowerShell) или прямых вызовов API для выполнения команд в облачной инфраструктуре.
- Сетевое оборудование: Злоупотребление интерфейсами командной строки (CLI) на маршрутизаторах и коммутаторах через устаревшие версии ПО или скомпрометированные учетные данные.
Меры противодействия и обнаружения
Защита от векторов исполнения требует многослойного подхода, выходящего за рамки простого антивируса.
| Категория мер | Конкретные действия | Цель |
|---|---|---|
| Принцип наименьших привилегий | Запрет установки ненужного ПО (Python, AutoIT). Ограничение прав на запуск планировщика задач, WMI, служб. Использование непривилегированных учетных записей для повседневной работы. | Лишить злоумышленника возможности использовать инструменты и получить высокие привилегии. |
| Контроль приложений и скриптов | Политики AppLocker или WDAC для разрешения запуска только доверенных исполняемых файлов, скриптов, установщиков. Блокировка выполнений из временных каталогов пользователя. | Предотвратить запуск несанкционированного кода, даже если он уже находится на диске. |
| Мониторинг и анализ поведения | Сбор журналов (Sysmon, события PowerShell, журналы планировщика). Создание базовых профилей поведения для служебных процессов (svchost.exe, rundll32.exe) и детектирование аномалий. Отслеживание цепочек родительских процессов. | Обнаружить аномальное использование легитимных инструментов (например, PowerShell, запущенный из офисного документа). |
| Технические ограничения | Блокировка удаленного выполнения через WMI и DCOM для некритичных пользователей. Отключение устаревших компонентов вроде WMIC. Использование ASR-правил для блокировки общих векторов (PsExec, исполняемые файлы из email). | Сузить доступную злоумышленнику поверхность атаки. |
| Защита инфраструктуры | Изоляция систем управления (SCCM, Ansible) и сетевого оборудования. Своевременное обновление прошивок. Многофакторная аутентификация для доступа к панелям управления. | Не допустить компрометации инструментов, которые могут привести к массовому выполнению кода. |
Ключевой вывод: этап исполнения редко бывает изолированным. Успешная атака — это цепочка: фишинговое письмо (Initial Access) → запуск скрипта (Execution) → создание службы (Persistence) → сбор данных (Collection). Обнаружив аномалию на этапе исполнения (например, powershell.exe, необычно вызывающий из временной папки), можно прервать всю цепочку до наступления реального ущерба.
Задача защитника — не просто блокировать «вирусы», а понимать контекст: почему этот легитимный инструмент запускается здесь и сейчас, с такими параметрами и из этого родительского процесса. Именно этот контекст превращает разрозненные события в инцидент.