【安全狐】Windows隐藏计划任务技术及排查方法

news2024/11/27 2:18:34

0x00 前置知识

计划任务SCHTASKS命令

SCHTASKS

image-20220818155119836

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-20220818160621500

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

    /RU  username      指定任务在其下运行的“运行方式”用户
                       帐户(用户上下文)。

image-20220818160404695

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

image-20220818160844957

1.2 删除注册表SD记录

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

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

image-20220818165848180

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

PsExec64.exe -s -i cmd

PsExec64可到Microsoft的sysinternals下载

https://docs.microsoft.com/zh-cn/sysinternals/downloads/psexec

image-20220818170041949

删除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-20220818170342120

image-20220818170451735

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

image-20220818170619382

计划任务实际还会运行

image-20220818171157373

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

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

image-20220818171339260

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

image-20220818171607701

image-20220818171623704

1.3 删除磁盘上的配置文件

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

image-20220818171753581

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

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

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

image-20220818172804273

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

image-20220818172850603

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

image-20220818173007590

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

image-20220818171339260

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-20220818171607701

image-20220818173924687

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

image-20220818173252961

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1456623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

掘根宝典之C++深复制与浅复制(复制构造函数,默认复制构造函数)

到目前为止我们已经学了构造函数,默认构造函数,析构函数:http://t.csdnimg.cn/EOQxx 转换函数,转换构造函数:http://t.csdnimg.cn/kiHo6 友元函数:http://t.csdnimg.cn/To8Tj 接下来我们来学习一个新函数…

FL Studio21.2.3最新版一键安装版专业版水果FLStudio 2024最新下载

FL Studio21.2.3.4004中文破解版系统要求: 版本:v21.2.3 内部版本 [4004] 开发商: Image-Line 格式:独立、VST 位深度:64位 界面语言:英语、德语、西班牙语、法语、中文。 系统环境 Microsoft Window…

AcuAutomate:一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具

关于AcuAutomate AcuAutomate是一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具,该工具旨在辅助研究人员执行大规模的渗透测试任务。 在大规模的安全测试活动中,AcuAutomate可以帮助我们同时启动或停止多个Acunetix扫描任务。除此之外&#xff…

ASUS华硕枪神8笔记本电脑G614JIR,G814JVR,G634JYR,G834JZR工厂模式出厂Windows11系统 带重置还原功能

适用ROG枪神8系列笔记本型号: G614JIR、G614JVR、G634JYR、G634JZR G814JIR、G814JVR、G834JYR、G834JZR 链接:https://pan.baidu.com/s/1tYZt6XFNC2d6YmwTbtFN7A?pwd3kp8 提取码:3kp8 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主…

minio+nginx 集群快速搭建

文章目录 1、概要2、整体架构流程3、集群搭建3.1、服务器准备3.2、下载并安装3.3、minio集群配置3.4、minio.service配置3.5、启动 4、nginx 转发 1、概要 minIO 是一个开源的分布式对象存储服务,可用于构建高可用性和高扩展性的存储集群。 分布式架构:…

Ubuntu本地安装code-server结合内网穿透实现安卓平板远程写代码

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

http协议概念与使用

一、http相关概念 1.1 什么是 http HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。 服务器以一个状态行作为响应,响应的内容包括消息协…

STM32-点亮 LED

目录 1 、电路构成及原理图 2 、编写实现代码 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 本人使用的是朗峰 STM32F103 系列开发板,此笔记基于这款开发板记录。 1 、电路构成及原理图 首先,通过朗峰 F1 开发板 LED 部分原理图看到…

计算机专业必看《编程之神》

前言 这是一部关于数学家艾伦图灵(Alan Turing)的人物传记电影,非常值得一看. 影片中,艾伦图灵被描绘成一个富有创造力、勇气和独立思考的人物。他的天才思维和对计算机的理解在纠缠复杂的密码解密过程中发挥了重要作用。 图灵的天才 提出图灵…

20. 【Linux教程】emacs 编辑器

前面小节介绍了如何使用 vim 编辑器和 nano 编辑器,本小节介绍 emacs 编辑器,emacs 编辑器最开始是作为控制台的编辑器,并且 emacs 编辑器仍然提供最早的命令行模式。 1. 检查 Linux 系统中是否安装 emacs 编辑器 使用如何命令检查 emacs 编…

显微测量|台阶仪二维超精密测量微观形貌

台阶仪通过扫描被测样品表面,获取高分辨率的表面形貌数据,能够揭示微观结构的特征和性能。 标题了解工作原理和性能特点 台阶仪利用扫描探针在样品表面上进行微观测量,通过探测探针和样品表面之间的相互作用力,获取表面形貌信息…

C++学习Day06之继承中的对象模型

目录 一、程序及输出1.1 程序检验对象1.2 开发人员工具查看对象模型1.2.1 查看对应工程目录文件1.2.2 查看对象模型 二、分析与总结 一、程序及输出 1.1 程序检验对象 父类中私有属性,子类访问不到,是由编译器给隐藏了,但仍然在子类对象模型…

【Visual Studio】技巧 :自动与活动文档同步

在这里插入图片描述 工具 -> 选项 -> 项目和解决方案 - 勾选上面的 我厉害不!!!

B端系统升级方案模板:针对美观性和体验性升级(总体方案)

大家好,我是大美B端工场,专注于前端开发和UI设计,有需求可以私信。本篇从全局分享如何升级B端系统,搞B端系统升级的有个整体思维,不是说美化几个图标,修改几个页面就能解决的,这个方案模板&…

数据安全之认识数据资产管理平台

文章目录 一、什么是数据资产二、什么是数据资产管理平台1、什么是数据资产管理平台2、为什么需要数据资产管理平台 三、数据资产管理平台的主要功能四、数据资产管理平台的工作原理五、数据资产管理平台的应用场景六、安全资产管理平台与数据资产管理平台的区别与关系1、安全资…

IDEA配置Maven的步骤

目录 一 下载Maven 二 下载以后解压。在这个文件夹下新建一个文件夹,命名为“maven-repository” 三 在maven文件夹下,打开conf,选择settings文件,用notepad打开,改动3个地方 四 打开IDEA,左上角选择“…

尚硅谷最新Node.js 学习笔记(四)

目录 八、express框架 8.1、express介绍 8.2、express使用 express下载 express初体验 8.3、express路由 什么是路由? 路由的使用 获取请求参数 获取路由参数 8.4、express响应设置 8.5、express中间件 什么是中间件? 中间件的作用 中间件…

网络同步—帧同步和状态同步解析

概述 同步就是要多个客户端表现效果是一致的,而且对于大多数的游戏,不仅仅要表现一致,还要客户端和服务器的数据也是一致的。所以同步是个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。 帧同步和…

普中51单片机学习(九)

蜂鸣器 蜂鸣器简介 在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产…

版本控制(Git)

Fork 本课程网站的仓库 将版本历史可视化并进行探索是谁最后修改了 README.md文件?(提示:使用 git log 命令并添加合适的参数)最后一次修改_config.yml 文件中 collections: 行时的提交信息是什么?(提示&am…