计划任务的隐藏与排查

0x1-创建

使用ax.exe和schtasks.exe。win8之后都用schticks.txt,at.exe被废弃,主要讲schtasks.exe。

schtasks.exe 是一个 Windows 命令行工具,用于创建、删除、查询、更改、运行和结束计划任务。以下是其详细的用法和参数介绍:

基本命令结构

  • schtasks /create:创建新任务。
  • schtasks /delete:删除任务。
  • schtasks /query:显示任务的信息。
  • schtasks /change:更改任务的属性。
  • schtasks /run:立即运行任务。
  • schtasks /end:结束正在运行的任务。

/create 参数

  • /tn:任务名称。
  • /tr:执行的任务动作(例如程序路径)。
  • /sc:任务计划类型(比如一次性、每日、每周等)。
    • 频率最小是每分,最大是每月
    • MINUTE:按分钟计划任务。可与 /mo 参数结合使用,指定分钟间隔。
    • HOURLY:按小时计划任务。可与 /mo 参数结合使用,指定小时间隔。
    • DAILY:按天计划任务。可与 /mo 参数结合使用,指定天数间隔。
    • WEEKLY:按周计划任务。与 /d 参数(指定星期几)和 /mo 参数(指定每几周一次)结合使用。
    • MONTHLY:按月计划任务。可与 /d 参数(指定日期)、/mo 参数(指定每几个月一次)结合使用。
    • ONCE:任务仅执行一次。通常与 /st (开始时间)和 /sd (开始日期)参数结合使用。
    • ONSTART:每次计算机启动时执行任务。
    • ONLOGON:每次用户登录时执行任务。
    • ONIDLE:计算机空闲时执行任务。
    • ONEVENT:响应系统事件执行任务。与 /ec(事件通道)、/mo(关联的 XPath 查询)和其他相关参数结合使用。
  • /mo:在 /sc 参数指定的频率下,任务执行的间隔。
  • /d:计划任务的天(例如每周的星期几)。
  • /st:任务开始时间。
  • /et:任务结束时间(可选)。
  • /sd:任务开始日期(可选)。
  • /ed:任务结束日期(可选)。
  • /ru:运行任务的用户帐户。
  • /rp:用户帐户的密码。
  • /rl:运行级别(最高或有限)。
  • /it:在用户登录时交互。

/delete 参数

  • /tn:要删除的任务名称。
  • /f:强制删除任务,不提示确认。

/query 参数

  • /fo:输出格式(TABLE、LIST、CSV)。
  • /nh:不显示列标题。
  • /v:显示详细信息。

/change 参数

  • /tn:要更改的任务名称。
  • /tr:更改任务的动作。
  • /sd:更改任务的开始日期。
  • /st:更改任务的开始时间。
  • /ru:更改任务的运行帐户。
  • /rp:更改帐户的密码。
  • /enable/disable:启用或禁用任务。

/run/end 参数

  • /tn:要运行或结束的任务名称。

例子

12月1号上午8点执行任务

1
schtasks /create /sc once /tn "TaskName" /tr "PathToProgram" /st 08:00 /sd 12/01/2023

每天上午8点执行任务

1
schtasks /create /sc daily /tn "MyTask" /tr "C:\path\to\program.exe" /st 08:00

每分钟执行任务

1
schtasks /create /sc minute /mo 1 /tn "OpenNotepad" /tr "notepad.exe"

查询所有任务

1
schtasks /query /fo LIST

查询创建时间powershell

1
2
$tasks = Get-ScheduledTask | Where-Object { $_.Date -ge (Get-Date).AddMonths(-1) }
$tasks | Format-Table Name, Date

0x2查看计划任务

命令

查看所有计划任务,效果不佳

1
schtasks /query /fo LIST

查询创建时间powershell

1
2
$tasks = Get-ScheduledTask | Where-Object { $_.Date -ge (Get-Date).AddMonths(-1) }
$tasks | Format-Table Name, Date

磁盘配置文件

C:\Windows\System32\Tasks

任务计划程序

在tasks删除不影响 任务计划程序,在任务计划程序删除影响tasks

注册表

1
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree

工具

Autoruns

适用于 Windows 的 Autoruns - Sysinternals | Microsoft Learn

image-20231206141644851

0x3隐藏计划任务

  • 删除磁盘配置文件
  • 删除任务计划任务程序中的任务
  • 指定不同权限
  • 删注册表SD的值

重点讲一下注册表SD的值,前几种方式在system权限下,使用工具还是能够查看到。

此时我们可以通过删除注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Schedule\TaskCache\Tree\下的SD记录,隐藏计划任务

使用psexec调用system,删除SD的值

0x4排查计划任务

image-20231206151102503

image-20231206151123270

image-20231206151137281

image-20231206151240633

0x5 工具

Autoruns

Procmon

PsExec

LastActivityView