排查可疑计划任务
使用时机
- 在 Windows 环境中主动狩猎持久化机制时
- 在进程创建日志中检测到 schtasks.exe 或 at.exe 使用情况后
- 调查能够在重启和用户注销后存活的恶意软件时
- 在事件响应期间枚举失陷系统上所有持久化机制时
- 当 Windows 安全事件 ID 4698(已创建计划任务)针对异常任务触发时
先决条件
- Windows 安全事件 ID 4698/4699/4702(任务已创建/已删除/已更新)
- Sysmon 事件 ID 1:schtasks.exe 进程创建及其命令行
- Windows 任务计划程序操作日志(Microsoft-Windows-TaskScheduler/Operational)
- 用于 Register-ScheduledTask cmdlet 的 PowerShell 日志
- 访问端点上的任务计划程序 XML 定义文件
工作流程
- 枚举所有计划任务:使用
schtasks /query /fo CSV /v 或 Get-ScheduledTask PowerShell cmdlet 从目标系统收集完整的任务清单。
- 监控任务创建事件:跟踪事件 ID 4698 的新任务创建情况,并与创建进程及用户账户上下文进行关联分析。
- 分析任务操作:检查每个任务所执行的内容。标记运行脚本(PowerShell、cmd、wscript)、位于用户可写路径(TEMP、AppData、Downloads)下的二进制文件,或使用编码/混淆命令的任务。
- 检查任务触发器:审阅触发条件。由系统启动、用户登录或短间隔(1-5 分钟)触发的任务值得进一步调查。
- 识别隐藏或伪装任务:狩猎模仿合法 Windows 任务名称的任务、修改安全描述符以躲避标准枚举的任务,或存储于非标准注册表位置的任务。
- 与进程执行进行关联:将计划任务执行事件与进程创建日志进行匹配,以确认实际运行的内容。
- 基线比对与差异分析:将当前任务清单与已知良好的基线进行比对,识别新增、修改或意外的任务。
检测查询语句
Splunk —— 计划任务创建
index=wineventlog EventCode=4698
| spath output=TaskName path=EventData.TaskName
| spath output=TaskContent path=EventData.TaskContent
| where NOT match(TaskName, "(?i)(\\\\Microsoft\\\\|\\\\Windows\\\\)")
| table _tim…