Windows隐藏计划任务技术

Windows隐藏计划任务技术

0x00 前置知识

计划任务SCHTASKS命令

SCHTASKS

image-202208181551198361894×769 27.9 KB

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 如果指定的任务已经存在,则强制创建

任务并抑制警告。

image-202208181606215001291×151 22.6 KB

可使用/RU参数指定任务在其下运行的“运行方式”用户帐户

/RU username 指定任务在其下运行的“运行方式”用户

帐户(用户上下文)。

image-202208181604046951454×151 37.3 KB

默认情况下,很容易使用任务计划程序或者autoruns工具查看到

image-202208181608449571573×433 70.8 KB

1.2 删除注册表SD记录

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

直接使用命令reg delete删除这个值,会提示权限拒绝错误,我们需要system权限才能删除这个记录。

image-202208181658481801576×514 35.9 KB

使用psexec获得一个system权限的cmd

PsExec64.exe -s -i cmd

PsExec64可到Microsoft的sysinternals下载

learn.microsoft.com

PsExec - Sysinternals

在远程系统上执行进程。

image-202208181700419491456×631 81.5 KB

删除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 所选项下面的要删除的值名称。

如果省略,则删除该项下面的所有子项和值。

image-202208181703421201398×152 21.4 KB

image-202208181704517351579×321 20.6 KB

删除后,我们用任务计划程序或者autoruns查看,都无法看到对应的计划任务

image-202208181706193821578×585 117 KB

计划任务实际还会运行

image-202208181711573731329×845 119 KB

此时,有两个地方可以看到计划任务存在。

一是在C:\windows\system32\Tasks目录下会有计划任务的配置文件,如下:

image-202208181713392601235×614 48.9 KB

二是在注册表中也能看到,在Tree下面对应计划任务的名称和ID,在Tasks下面为计划任务的实际配置信息:

image-202208181716077012057×855 102 KB

image-20220818171623704597×408 7.03 KB

1.3 删除磁盘上的配置文件

即使我们删除了磁盘上的配置文件,重启后计划任务仍会运行,要想找到计划任务,只能在注册表里面查找。

image-202208181717535811239×459 34.6 KB

从攻击方的角度,我们可以将计划任务名称伪装成常见的合法的计划任务,迷惑防守方,然后删除计划任务对应的SD记录和C:\Windows\system32\Tasks下面对应的配置文件,极大地提升检测和响应难度。

0x02 隐藏计划任务的检测和清除

1、查看恶意进程父进程是否为计划任务进程,计划任务进程一般为svchost.exe -k netsvcs:

image-20220818172804273769×628 35.5 KB

2、查看日志文件Microsoft-Windows-TaskScheduler%4Operational.evtx中事件ID 200/201/102关于计划任务的执行和完成情况:

image-202208181728506031243×438 41.6 KB

如果没有日志,可以在任务计划程序里面临时开启(应急完成后,如果不需要可以关掉,但建议开启):

image-202208181730075901335×273 28.1 KB

3、检查在C:\windows\system32\Tasks下是否存在执行恶意文件的计划任务配置文件,有的话提取相关证据后删除,如果没有,我们只能在注册表中进行搜索。

image-202208181713392601235×614 48.9 KB

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个记录。

image-202208181716077012057×855 102 KB

image-202208181739246871474×775 82.2 KB

5、重启计划任务服务或者系统。如果要重启计划任务服务,需要以system权限操作,管理员无权限:

image-202208181732529611370×571 40.2 KB

在系统或者服务重启后,将会完全清理计划任务。对于运行恶意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

参考资料

Microsoft Security Blog – 12 Apr 22

Tarrask malware uses scheduled tasks for defense evasion | Microsoft Security...

Microsoft Detection and Response Team (DART) researchers have uncovered malware that creates “hidden” scheduled tasks as a defense evasion technique. In this post, we will demonstrate how threat actors create scheduled tasks, how they cover their...

Est. reading time: 9 minutes

attack.mitre.org

Scheduled Task/Job: Scheduled Task, Sub-technique T1053.005 - Enterprise |...

https://mp.weixin.qq.com/s/CM-Z-2ljHHZM2XO_7EzXGw

相关推荐

中国哪里产珍珠?
365亚洲体育平台

中国哪里产珍珠?

📅 07-17 👁️ 1155
Win11如何卸载自带的播放器?如何彻底删除?
365bet亚洲平台

Win11如何卸载自带的播放器?如何彻底删除?

📅 09-11 👁️ 2442
渭南全部美食推荐
beat365官方网站大全

渭南全部美食推荐

📅 07-29 👁️ 8487