mcpField
H
hunting-for-suspicious-scheduled-tasks

hunting-for-suspicious-scheduled-tasks

github.com/mukul975安全35.2k49 次安装8 周前更新
代码仓库

关于 hunting-for-suspicious-scheduled-tasks

面向 Windows 安全调查人员的计划任务威胁狩猎技能,帮助盘点任务、分析执行动作和触发条件,并关联事件与进程遥测。

主要功能

  1. 01枚举并基线比对计划任务
  2. 02监控任务创建及变更事件
  3. 03检查任务动作与触发条件
  4. 04识别隐藏或伪装任务
  5. 05关联任务执行与进程日志

适用场景

  1. 01排查通过计划任务实现的持久化
  2. 02调查异常的 4698 任务创建事件
  3. 03查找横向移动或恶意载荷计划执行

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill hunting-for-suspicious-scheduled-tasks

安装后在 Claude Code 中输入/hunting-for-suspicious-scheduled-tasks确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

猎捕可疑的计划任务

使用时机

  • 主动猎捕 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 定义的访问权限

工作流

  1. 枚举所有计划任务:使用 schtasks /query /fo CSV /v 或 Get-ScheduledTask PowerShell cmdlet 从目标系统收集完整的任务清单。
  2. 监控任务创建事件:跟踪新任务创建的事件 ID 4698,并将其与创建进程及用户账户上下文关联。
  3. 分析任务操作:检查每个任务执行的内容。标记运行脚本(PowerShell、cmd、wscript)、从用户可写路径(TEMP、AppData、Downloads)运行二进制文件,或使用编码/混淆命令的任务。
  4. 检查任务触发器:审查触发条件。由系统启动、用户登录或短间隔(1-5 分钟)触发的任务值得调查。
  5. 识别隐藏或伪装的任务:猎捕名称模仿合法 Windows 任务的任务、通过修改安全描述符使其从标准枚举中隐藏的任务,或存储在非标准注册表位置的任务。
  6. 与进程执行关联:将计划任务执行事件与进程创建日志匹配,以确认实际运行的内容。
  7. 建立基线与差异对比:将当前任务清单与已知良好的基线进行比较,以识别新增、修改或意外的任务。

检测查询

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 _time Computer SubjectUserName TaskName TaskContent
Splunk -- Schtasks.exe 可疑使用
index=sysmon EventCode=1 Image="*\\schtasks.exe"
| where match(CommandLine, "(?i)/create")
| where match(CommandLine, "(?i)(powershell|cmd|wscript|cscript|mshta|rundll32|regsvr32|http|https|\\\\temp\\\\|\\\\appdata\\\\)")
| table _time Computer User CommandLine ParentImage
KQL -- Microsoft Sentinel
SecurityEvent
| where EventID == 4698
| extend TaskName = tostring(EventData.TaskName)
| extend TaskContent = tostring(EventData.TaskContent)
| where TaskContent has_any ("powershell", "cmd.exe", "wscript", "http://", "https://", "\\Temp\\", "\\AppData\\")
| project TimeGenerated, Computer, Account, TaskName, TaskContent

常见场景

  1. Cobalt Strike 持久化:通过 schtasks.exe 创建计划任务,在用户登录间隔执行 PowerShell 下载载荷。
  2. 勒索软件暂存:创建任务以在未来某个时间运行加密载荷,通常选择非工作时间以造成最大影响。
  3. 通过 SD 修改隐藏任务:攻击者修改计划任务的安全描述符,使其从常规枚举中隐藏,同时保持执行能力。
  4. COM 处理程序滥用:任务使用 COM 处理程序而非直接可执行文件路径,使操作检查更加复杂。
  5. 通过任务进行横向移动:使用 schtasks /create /s REMOTE_HOST 远程创建计划任务,以在其他系统上执行。

输出格式

Hunt ID: TH-SCHTASK-[DATE]-[SEQ]
Host: [Hostname]
Task Name: [Full task path]
Action: [Command/Script executed]
Trigger: [Startup/Logon/Timer/Event]
Created By: [User account]
Created From: [Local/Remote]
Creation Time: [Timestamp]
Run As: [Execution account]
Risk Level: [Critical/High/Medium/Low]

评论

支持 Markdown