Event ID 4689: Процесс завершен (Process Exited) - Зачистка и Аудит
Архитектура отслеживания процессов (Process Exit)
Событие 4689 логируется в журнале Security, когда запущенная программа (процесс) завершает свою работу и выгружается из оперативной памяти. Это парное (антонимичное) событие для >4688 (Process Created). Если 4688 говорит, что вредоносный скрипт или легитимная служба запустились, то 4689 говорит, когда именно они остановились и с каким статусом.
Ключевые поля события 4689
| Имя поля (Attribute) | Значение для ИБ и Траблшутинга |
|---|---|
| Process Name | Путь к файлу завершенного процесса (например, C:\Windows\System32\cmd.exe). |
| Process ID (PID) | HEX-идентификатор процесса (например, 0x1E4A). Нужен для связки с событием запуска 4688. |
| Exit Status | Код завершения. 0x0 означает успешное штатное завершение. Любой другой код (например, 0xC000013A) означает фатальную ошибку, краш (Crash) или убийство процесса. |
Пошаговое дерево решений (Корреляция процессов)
Сценарий 1: Расчет длительности вредоносной активности (SIEM)
Если вы поймали инцидент (хакер запустил powershell.exe для скачивания Payload), вам нужно понять, успел ли скрипт отработать. Если процесс завершился через 1 секунду, вероятно, его заблокировал антивирус (Defender). Если он висел в памяти 30 минут — данные украдены.
- Найдите событие 4688 (Запуск) и возьмите оттуда New Process ID (например,
0x12A4). - Найдите событие 4689 с тем же Process ID (0x12A4).
- Вычтите время 4688 из времени 4689. Вы получите точное время жизни (Uptime) вредоноса или системного скрипта.
Сценарий 2: Выявление принудительного убийства процессов (Kill)
Если вредоносная программа (или неопытный администратор через диспетчер задач) "убивает" критические системные процессы (например, MsMpEng.exe - Антивирус, или vssvc.exe - Служба теневого копирования), событие 4689 зафиксирует смерть с нештатным кодом Exit Status (например, 0x1).
Типовые ошибки администраторов
- Отключение аудита 4689: Многие администраторы отключают аудит Process Termination, оставляя только 4688, чтобы сэкономить место на жестком диске (снизить шум). Это фатальная ошибка для Форензики (DFIR), так как без 4689 вы не сможете узнать код завершения (упал скрипт с ошибкой или отработал успешно).
Тюнинг аудита Windows (Advanced Audit Policy) и создание правил корреляции в SIEM — сложная инженерная задача. Передайте нам обслуживание инфраструктуры: мы настроим отправку логов (Winlogbeat/WEF), отфильтруем системный спам, выстроим дашборды (Grafana/Kibana) и обеспечим 100% прозрачность процессов на серверах.
Частые вопросы (FAQ)
Почему в 4689 нет аргументов командной строки (Command Line)?
Потому что ядру ОС нет смысла дублировать огромную строку аргументов при выгрузке программы из памяти. Вся информация о запуске хранится в историческом логе 4688. Связывайте их по Process ID.
Что означает Exit Status 0xC000013A?
Этот статус (STATUS_CONTROL_C_EXIT) означает, что консольное приложение (cmd или powershell) было прервано пользователем вручную путем нажатия комбинации клавиш Ctrl+C в окне терминала.
Генерируется ли 4689 при выключении сервера?
Да. При завершении работы (Shutdown) ядро Windows последовательно закрывает все пользовательские и системные процессы, что вызовет лавину событий 4689.
Чем 4689 отличается от 7034 (Service Terminated)?
4689 фиксирует закрытие ЛЮБОГО .exe файла в системе на уровне ядра (включая блокнот notepad.exe). 7034 — это высокоуровневое событие Диспетчера Служб (SCM), которое реагирует только на падение официально зарегистрированных служб (Services).
Можно ли увидеть, кто именно 'убил' процесс?
Само событие 4689 не содержит имени 'убийцы'. Чтобы узнать, кто завершил чужой процесс (например, через taskkill), вам нужно включить аудит доступа к объектам ядра (Event 4656) для процессов.