Когда подозрительный файл запускается в системе, первое, что нужно установить — какое именно имя процесса он получил в памяти и какие дочерние процессы породил. Без этой информации невозможно корректно настроить правила детекта, изолировать инцидент или собрать доказательства для расследования. В статье разбираются нативные и сторонние средства Windows, позволяющие зафиксировать имя процесса на этапе создания, а также подходы к анализу уже завершившихся запусков.
- Почему простое наблюдение в диспетчере задач недостаточно
- Нативный аудит Windows: политика «Аудит создания процессов»
- Sysmon: де-факто стандарт для глубокой видимости
- EDR и XDR: автоматическая корреляция и блокировка
- Procmon и ручной захват в лабораторной среде
- WMI и PowerShell: запрос уже запущенных процессов
- ETW и пользовательские потребители событий
- Форензические артефакты: восстановление имени после факта
- Типичные сценарии и что искать
- Сценарий 1: Файл запущен напрямую пользователем
- Сценарий 2: Запуск через «живой по земле» (LOLBins)
- Сценарий 3: Инъекция в легитимный процесс
- Сценарий 4: Запуск от имени SYSTEM через задачу/службу
- Практический чек-лист настройки базового мониторинга
- Ограничения и противодействие атакующим
- Когда подключать специалиста по реагированию на инциденты
- С чего начать прямо сейчас
Почему простое наблюдение в диспетчере задач недостаточно
Диспетчер задач и tasklist показывают снимок состояния в момент запроса. Короткоживущие процессы (например, дропперы, запускающие полезную нагрузку и завершающиеся за миллисекунды) успевают исчезнуть до того, как аналитик откроет консоль. Более того, имя процесса в списке может не совпадать с именем исходного файла: легитимный бинарный файл может быть переименован, запущен через интерпретатор (PowerShell, mshta, wscript) или внедрен в легитимный процесс через инъекцию. Фиксация требует постоянного мониторинга событий создания процесса с записью контекста: командной строки, родительского процесса, хеша образа, пользователя и целостности подписи.
Нативный аудит Windows: политика «Аудит создания процессов»
Базовый механизм без стороннего ПО — включение политики аудита Audit Process Creation (Event ID 4688). Она записывает в журнал Security каждое создание процесса с указанием:
- Имени нового процесса (New Process Name).
- Полной командной строки (при включенной опции «Include command line» в подполитике Audit Process Creation).
- Имени родительского процесса (Creator Process Name) и его PID.
- SID учётной записи, инициировавшей запуск.
- Уровня целостности (Mandatory Label).
По умолчанию командная строка не логируется. Включается через gpedit.msc → Computer Configuration → Windows Settings → Security Settings → Advanced Audit Policy Configuration → Detailed Tracking → Audit Process Creation → «Include command line in process creation events». После включения события 4688 начинают содержать поле CommandLine, что критично для различения легитимного запуска powershell.exe от обфусцированной команды.
Ограничения нативного аудита:
- Высокая громкость событий на рабочих станциях (тысячи в час), требующая централизованного сбора (SIEM, Windows Event Forwarding).
- Отсутствие хеша образа процесса (нужно коррелировать с Sysmon или отдельным скриптом).
- Возможность обхода: злоумышленник с правами администратора может отключить аудит или очистить журнал.
Sysmon: де-факто стандарт для глубокой видимости
System Monitor (Sysmon) от Microsoft Sysinternals — наиболее распространённый бесплатный драйвер ядра, генерирующий богатые события в отдельный журнал Microsoft-Windows-Sysmon/Operational. Ключевые события для фиксации имени процесса:
- Event ID 1 — Process Create: Image (путь к исполняемому файлу), CommandLine, CurrentDirectory, User, LogonId, IntegrityLevel, Hashes (MD5, SHA1, SHA256, IMPHASH), ParentImage, ParentCommandLine, ParentProcessId.
- Event ID 5 — Process Terminated: позволяет сопоставить начало и конец жизни процесса.
- Event ID 10 — Process Access: фиксирует попытки открытия процесса с правами VM_READ, VM_WRITE, PROCESS_CREATE_THREAD — индикатор инъекций.
Конфигурация Sysmon задаётся XML-файлом. Минимально полезный набор правил для перехвата подозрительных запусков включает:
- Логирование всех созданий процессов (
). - Сбор хешей SHA256 и IMPHASH для каждого образа.
- Исключение известного шума (например, частые запуски conhost.exe, dllhost.exe из легитимных путей) через условия
C:\Windows\System32\conhost.exe в блоке.
Sysmon не предотвращает выполнение, только фиксирует. Драйвер подписан Microsoft, работает в режиме ядра и устойчив к завершению из пользовательского режима без прав SYSTEM. Для продакшена конфигурацию рекомендуется брать из проверенных репозиториев (SwiftOnSecurity, Olaf Hartong) и адаптировать под среду.
EDR и XDR: автоматическая корреляция и блокировка
Корпоративные решения EDR (CrowdStrike, SentinelOne, Microsoft Defender for Endpoint, Kaspersky EDR, Elastic Defend) используют те же источники данных (ETW, колбэки ядра, мини-фильтры ФС), но добавляют:
- Дерево процессов в реальном времени с визуализацией родительско-дочерних связей.
- Автоматическое обогащение: репутация хеша (VirusTotal, внутренние базы), совпадение с MITRE ATT&CK, детекты на поведении (например, rundll32.exe без аргументов DLL, mshta.exe с HTTP-URL).
- Возможность ретроспективного поиска: «покажи все процессы с именем svchost.exe, запущенные не из C:\Windows\System32\ за последние 30 дней».
- Реактивные действия: изоляция хоста, убийство процесса, карантин файла.
Если в организации развёрнут EDR, ручной разбор Sysmon/4688 нужен только для углубленного расследования (threat hunting) или когда EDR пропустил событие из-за агрессивных исключений.
Procmon и ручной захват в лабораторной среде
Process Monitor (Procmon) — инструмент для ад-хок анализа на конкретной машине. Он перехватывает вызовы файловой системы, реестра, сети и процесса/потока. Для фиксации имени процесса подозрительным файлом:
- Запустите Procmon от администратора.
- Установите фильтр: Operation is Process Create → Include.
- Добавьте колонки: Process Name, PID, Command Line, Parent Process, Image Path, Integrity, User.
- Включите «Enable Boot Logging», если нужно поймать процессы на ранней загрузке (редко требуется для подозрительных пользовательских файлов).
- Запустите подозрительный файл (в изолированной ВМ!).
- Сохраните лог в .pml или экспортируйте в CSV для парсинга скриптами.
Procmon не подходит для постоянного мониторинга: он потребляет много памяти, не работает как сервис и не выживает после перезагрузки без настройки Boot Logging. Его роль — воспроизведение инцидента в песочнице и сбор эталонного поведения для написания правил детекта.
WMI и PowerShell: запрос уже запущенных процессов
Если процесс уже работает и нужно зафиксировать его параметры «здесь и сейчас» без предварительной настройки аудита:
- Get-WmiObject Win32_Process | Select-Object Name, ProcessId, ParentProcessId, CommandLine, ExecutablePath, CreationDate, @{N=’Owner’;E={$_.GetOwner().User}}
- Get-CimInstance Win32_Process — более современный аналог, работает через WS-MAN.
- Get-Process -IncludeUserName (PowerShell 7+) — быстрый снимок, но без командной строки и родителя.
Для удалённого опроса используйте Invoke-Command с WinRM или WMI RPC (порт 135 + динамические порты). Ограничение: WMI видит только процессы, живущие в момент запроса. Короткоживущие уже исчезнут.
ETW и пользовательские потребители событий
Event Tracing for Windows (ETW) — низкоуровневая трассировка, на которой строятся Sysmon, EDR и Windows Performance Recorder. Провайдер Microsoft-Windows-Kernel-Process (GUID {22FB2CD6-0E7B-422B-A0C7-2FAD1FD0E716}) генерирует события создания/завершения процесса (Opcode 1/2) с минимальной задержкой и без записи в журналы событий. Собственный потребитель (на C#, C++ или через logman/tracelog) позволяет:
- Получить события в реальном времени без нагрузки на Event Log.
- Фильтровать по имени образа, командной строке, родителю до записи на диск.
- Интегрироваться с внутренними системами детекта без развёртывания агентов.
Сложность: необходимость парсить бинарные события (TDH), обрабатывать потерю буфера при высокой нагрузке, поддерживать совместимость версий Windows. Обычно оправдано только для разработчиков собственных сенсоров.
Форензические артефакты: восстановление имени после факта
Если мониторинг не был настроен заранее, имя процесса можно восстановить из артефактов:
| Артефакт | Что даёт | Инструменты извлечения |
|---|---|---|
| Prefetch (C:\Windows\Prefetch\*.pf) | Имя исполняемого файла, путь, количество запусков, последнее время запуска, список загруженных DLL, объём прочитанных/записанных данных | PECmd (Eric Zimmerman), WinPrefetchView, dfir-prefetch-parser |
| Amcache (C:\Windows\AppCompat\Programs\Amcache.hve) | Полный путь к файлу, SHA1, имя продукта, версия, время первого/последнего запуска, признак выполнения (File/Shortcut/Installer) | AmcacheParser, Registry Explorer, KAPE |
| Shimcache (AppCompatCache) в SYSTEM hive | Путь к исполняемому файлу, время последней модификации файла (не запуска!), флаг выполнения | AppCompatCacheParser, Registry Explorer |
| UserAssist (NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist) | Запуски через Explorer (ярлыки, Start Menu), счётчик запусков, время последнего запуска (ROT13-кодированные GUID) | UserAssistView, Registry Explorer |
| SRUM (C:\Windows\System32\sru\SRUDB.dat) | Сетевая и CPU активность по процессам за последние 30–60 дней, имя приложения, пользователь, байты в/вы | SRUM-Dump, KAPE |
| Event Logs (System, Application, PowerShell Operational) | Кодовые ошибки запуска, блокировки AppLocker/WDAC, события PowerShell (4103, 4104 — Script Block Logging) | Get-WinEvent, EVTXtract, Hayabusa, Chainsaw |
Важно: Prefetch и Amcache заполняются асинхронно (через несколько минут после запуска). Shimcache обновляется при перезагрузке. Для актуального расследования собирайте образ диска (KAPE, FTK Imager) и парсите офлайн.
Типичные сценарии и что искать
Сценарий 1: Файл запущен напрямую пользователем
Родительский процесс — explorer.exe или cmd.exe/powershell.exe интерактивной сессии. Имя процесса совпадает с именем файла (если не переименован). Проверяйте: подпись файла, репутация хеша, нестандартное расположение (Temp, Downloads, AppData), аргументы командной строки.
Сценарий 2: Запуск через «живой по земле» (LOLBins)
Файл — скрипт (.ps1, .vbs, .js, .bat) или библиотека, запускаемая через rundll32.exe, regsvr32.exe, mshta.exe, wmic.exe, certutil.exe. Имя процесса в логе — имя LOLBin, а не исходного файла. Исходный файл виден в командной строке аргументов. Детектируйте по аномальным аргументам: HTTP URL в mshta, /i:http в regsvr32, encodedcommand в powershell.
Сценарий 3: Инъекция в легитимный процесс
Подозрительный файл запускает легитимный процесс (например, notepad.exe, svchost.exe из System32) в режиме suspended, пишет в его память шелл-код и резюмирует поток. В логах создания процесса (4688, Sysmon EID 1) имя — легитимное. Индикаторы: несоответствие командной строки типичной для этого бинаря, вызов NtCreateThreadEx/CreateRemoteThread (Sysmon EID 8 — CreateRemoteThread), нестандартные загруженные модули (EID 7 — Image Load) или расхождение хеша образа на диске и в памяти.
Сценарий 4: Запуск от имени SYSTEM через задачу/службу
Родитель — services.exe или svchost.exe (taskhostw). Проверяйте: кто создал задачу/службу (Event ID 4698, 7045), не подменён ли бинарник службы (ImagePath в реестре), не использована ли уязвимость повышения привилегий.
Практический чек-лист настройки базового мониторинга
- Включите Advanced Audit Policy: Audit Process Creation (Success) + «Include command line».
- Разверните Sysmon с конфигурацией, собирающей хеши SHA256/IMPHASH и логирующей все Process Create (Event ID 1).
- Настройте форвардинг журналов Security и Sysmon в SIEM / лог-агрегатор (Winlogbeat, NXLog, Azure Monitor Agent).
- Создайте базовые детекты: процесс не из System32/SysWOW64 с именем системного бинаря; PowerShell с EncodedCommand/DownloadString/Invoke-Expression; mshta/regsvr32/rundll32 с сетевыми индикаторами; родитель Office-приложений, порождающий cmd/powershell.
- Включите PowerShell Script Block Logging (Event ID 4104) и Module Logging (4103) для перехвата обфусцированных скриптов.
- Настройте хранение логов минимум 90 дней (требования соответствия и ретро-хант).
- Проводите еженедельный threat hunting: поиск аномалий в дереве процессов, редких комбинаций «родитель → ребёнок», процессов без подписи с высокой энтропией имени.
Ограничения и противодействие атакующим
Атакующие знают про Sysmon и 4688. Типичные техники обхода:
- Unhooking / ETW patching: перезапись функций ntdll.dll в памяти процесса, чтобы драйвер не получал колбэки. Защита: драйверы EDR в режиме ядра, VBS/HVCI (Virtualization-Based Security), мониторинг целостности модулей ntdll.
- PPID Spoofing: указание фальшивого родительского PID через PROC_THREAD_ATTRIBUTE_PARENT_PROCESS в CreateProcess. В логах родитель будет легитимным (например, explorer.exe), хотя реально запустил злоумышленник. Детект: расхождение между PPID в событии создания и реальным вызывающим потоком (требует EDR/колбэков ядра).
- Process Hollowing / Herpaderping: создание процесса в suspended, замена образа в памяти, резюме. Имя процесса в логе — легитимный путь, но на диске файл другой. Детект: сравнение хеша из события создания (Sysmon логирует хеш образа на диске) с хешем в памяти (требует дамп памяти или EDR).
- Direct Syscalls: вызов системных функций напрямую, минуя ntdll, чтобы избежать userland-хуков. Не скрывает событие создания процесса от ядра (ETW/Sysmon), но скрывает от пользовательских API-хуков.
- Clearing logs: wevtutil cl Security, wevtutil cl «Microsoft-Windows-Sysmon/Operational». Защита: форвардинг логов на удалённый коллектор в реальном времени, защита журналов SACL, алерт на очистку журналов (Event ID 1102).
Когда подключать специалиста по реагированию на инциденты
Самостоятельный сбор логов и анализ дерева процессов достаточен для триажа: понять, был ли запуск, какой процесс появился, каковы его связи. Эскалация нужна, если:
- Обнаружены признаки компрометации: инъекция в системный процесс, обход защиты, движение по сети (Pass-the-Hash, SMB admin shares), выгрузку данных.
- Требуется форензический образ диска и памяти для судебного порядка или страхового кейса.
- Инцидент затрагивает несколько хостов, контроллеры домена или критическую инфраструктуру.
- Нет компетенций по анализу дампов памяти (Volatility, Rekall) или реверс-инжинирингу вредоносного кода.
Материал носит информационный характер и не заменяет профессионального расследования инцидентов информационной безопасности. При обнаружении признаков активной компрометации критических систем обратитесь к квалифицированным специалистам DFIR и соблюдайте процедуры сохранения доказательств, установленные в вашей организации и законодательством.
С чего начать прямо сейчас
Если у вас нет настроенного сбора событий создания процессов — начните с включения Advanced Audit Policy и развёртывания Sysmon на тестовой группе хостов. Это даст видимость за 15–30 минут работы без затрат на лицензии. Параллельно настройте форвардинг логов в центральное хранилище; локальные журналы перезаписываются за часы на активных станциях. Для разовых проверок подозрительных файлов используйте изолированную ВМ с Procmon и снапшотом до запуска. Регулярно пересматривайте исключения в Sysmon и EDR: слишком широкие исключения — основная причина пропуска инцидентов.
