Event ID 4698: Запланированная задача создана - Threat Hunting
Архитектура Планировщика и векторы атак
Событие 4698 логируется в журнале Security при создании новой задачи в Планировщике заданий (Task Scheduler). Для аналитиков безопасности (SOC) это критический индикатор компрометации (IoC). В 90% случаев современные хакеры, программы-вымогатели (Ransomware) и APT-группировки используют именно Планировщик заданий для закрепления в системе (Persistence), чтобы их вредоносный код автоматически запускался после перезагрузки сервера.
Структура полезной нагрузки (XML Task Content)
Уникальность события 4698 в том, что оно содержит поле Task Content. Это полный XML-код созданной задачи, из которого можно вытащить всю суть (Payload) атаки:
<Command>— Какой именно файл или скрипт (.exe,powershell.exe) будет запущен.<Arguments>— Какие параметры переданы (например, закодированный Base64 скрипт).<UserId>— От чьего имени стартанет вирус (хакеры всегда ставятNT AUTHORITY\SYSTEM).
Пошаговое дерево решений (Парсинг и Защита)
Сценарий 1: Threat Hunting (Поиск вредоносных задач)
Любая задача, созданная пользователем (не инсталлятором Windows), запускающая скрипты из профиля AppData или Temp, должна быть немедленно расследована.
# Парсинг XML задач для поиска замаскированных скриптов PowerShell
$Events = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4698; StartTime=(Get-Date).AddDays(-7)}
foreach ($Event in $Events) {
$XML = [xml]$Event.Properties[5].Value
$Command = $XML.Task.Actions.Exec.Command
$Args = $XML.Task.Actions.Exec.Arguments
if ($Command -match 'powershell|cmd|cscript' -and $Args -match '-enc|-w hidden') {
Write-Host "[CRITICAL] Вредоносная задача: $($Event.Properties[0].Value)"
Write-Host "Command: $Command $Args"
}
}Сценарий 2: Анализ маскировки (Evasion)
Хакеры знают, что ИБ-шники мониторят автозагрузку. Поэтому они создают задачи с легитимными именами (например, Microsoft\Windows\UpdateCheck) и настраивают триггеры не на "Запуск ПК", а на "Простой компьютера" (Idle) или "Событие входа пользователя" (Logon). Всегда проверяйте секцию <Triggers> в событии 4698.
Сценарий 3: Защита от создания задач
Полностью запретить Планировщик нельзя. Однако вы можете использовать Application Control (AppLocker) или WDAC, чтобы запретить исполняемым файлам schtasks.exe запускаться из-под профиля обычного пользователя или веб-службы IIS.
Типовые ошибки администраторов
- Игнорирование системного спама: Компоненты Windows (например, .NET Optimization или Телеметрия) постоянно создают и удаляют фоновые задачи (генерируя >события 4699). Если не настроить Whitelisting (исключение известных системных путей) в вашем SIEM, вы пропустите реальную атаку в тысячах мусорных логов.
Планировщик заданий — излюбленный метод хакеров для закрепления в системе. Возьмем серверы на абонентское обслуживание: проведем глубокий аудит (Threat Hunting), настроим AppLocker, внедрим EDR и заблокируем исполнение несанкционированного кода навсегда.
Частые вопросы (FAQ)
Нужно ли включать отдельную политику для появления 4698?
Да. События планировщика не логируются по умолчанию. В GPO нужно включить: Advanced Audit Policy Configuration -> Object Access -> Audit Other Object Access Events (Success).
Удаляется ли лог 4698, если хакер удалил саму задачу?
Нет. Журнал Security (EVTX) работает в режиме 'только запись' (Append-only). Факт создания задачи (4698) останется в истории, даже если сама задача была уничтожена (Событие 4699).
Почему в поле 'SubjectUser' часто стоит SYSTEM?
Если задачу создало системное обновление (Windows Update) или агент SCCM, выполняющийся как служба, субъектом будет ядро ОС (SYSTEM). Злоумышленники также могут использовать эксплойты для запуска schtasks.exe от имени SYSTEM.
Заменяет ли 4698 антивирус?
Нет. Аудит лишь покажет факт создания 'грязной' задачи. Антивирус (Defender) должен просканировать сам файл (Payload.exe), который эта задача попытается запустить.
Как заблокировать запуск PowerShell из Планировщика?
Используйте политику Constrained Language Mode для PowerShell (через AppLocker Policy). Скрипты, не подписанные доверенным сертификатом, просто не смогут запуститься, даже если задача их вызовет.