之前做安全应急响应的时候曾经遇到过需要排查目标Windows机器的计划任务中可疑启动项的情况,最近发现了Windows的SCHTASKS命令可以很好地在这种情况下发挥作用。
结论写在前面:
# 参数含义:查询计划任务列表,格式CSV,输出计划任务详细参数,无列表题(/NH 可选)
# 结果输出到c:/result.csv
SCHTASKS /Query /FO csv /V /NH >c:/result.csv
# 紧急搜索涉及powershell执行的计划任务
SCHTASKS /Query /FO table /V |find "powershell"
# 若出现提示“错误:无法加载列资源”,依次执行以下命令,先切换编码再执行SCHTASKS命令
chcp 437
SCHTASKS /Query /FO csv /V >c:/result.csv
SCHTASKS命令的用法如下:
SCHTASKS /parameter [arguments]
描述:
允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任
务。
参数列表:
/Create 创建新计划任务。
/Delete 删除计划任务。
/Query 显示所有计划任务。
/Change 更改计划任务属性。
/Run 按需运行计划任务。
/End 中止当前正在运行的计划任务。
/ShowSid 显示与计划的任务名称相应的安全标识符。
/? 显示此帮助消息。
Examples:
SCHTASKS
SCHTASKS /?
SCHTASKS /Run /?
SCHTASKS /End /?
SCHTASKS /Create /?
SCHTASKS /Delete /?
SCHTASKS /Query /?
SCHTASKS /Change /?
SCHTASKS /ShowSid /?
我们目的是查询计划任务详情,看看SCHTASKS命令查询的语法:
SCHTASKS /Query [/S system [/U username [/P [password]]]]
[/FO format | /XML [xml_type]] [/NH] [/V]
[/TN taskname] [/HRESULT] [/?]
描述:
允许管理员显示本地或远程系统上的计划任务。
参数列表:
/S system 指定要连接到的远程系统。
/U username 指定 schtasks.exe 要执行的用户上下文。
/P [password] 指定给定的用户上下文密码。如果省略则
提示输入。
/FO format 为输出指定格式。有效值: TABLE、LIST、CSV。
/NH 指定在输出中不显示列标题。
只对 TABLE 格式有效。
仅适用于 TABLE 和 CSV 格式。
/V 显示详细任务输出。
/TN taskname 指定要检索其信息的任务路径\名称,
否则会检索所有任务的信息。
/XML [xml_type] 以 XML 格式显示任务定义。
如果 xml_type 为 ONE,则输出为一个有效 XML 文件。
如果 xml_type 不存在,则输出将为
所有 XML 任务定义的串联。
/HRESULT 为获得更出色的故障诊断能力,处理退出代码
将采用 HRESULT 格式。
/? 显示此帮助消息。
示例:
SCHTASKS /Query
SCHTASKS /Query /?
SCHTASKS /Query /S system /U user /P password
SCHTASKS /Query /FO LIST /V /S system /U user /P password
SCHTASKS /Query /FO TABLE /NH /V
其中:
SCHTASKS /Query /FO TABLE /V
可以输出详细的计划任务参数,可以在后面加 |find查询想要的内容
SCHTASKS /Query /FO TABLE /V |find "neirong"
如果不确定目标特征的话,也可以输出到CSV用Excel打开快速筛选定位:
SCHTASKS /Query /FO csv /V >c:/1.csv
这样输出的结果会重复出现标题行,可以先执行一次获知标题行,然后输出纯内容:
SCHTASKS /Query /FO csv /V /NH>c:/2.csv
有些情况下,运行会提示“错误:无法加载列资源”
查阅以下文章,发现需要切换一下编码
schtasks /query显示错误:无法加载列资源
依次执行命令即可
chcp 437
SCHTASKS /Query /FO csv /V >c:/1.csv