持久化研究-Scheduled Tasks

Author:zusheng

Link:https://isbase.cc

0x01 什么是Scheduled Tasks

Scheduled Tasks即任务计划程序,Scheduled Tasks能够在计算机上自动执行例行任务,Task Scheduler通过监视你选择的条件(称为触发器),然后在满足这些条件时执行任务。我们可以使用Task Scheduler启动应用程序,发送电子邮件或显示消息框。

触发器:

t1

Schtasks.exe

Schtasks.exe能够在本地或远程计算机上创建,删除,查询,更改,运行和结束计划任务。不带参数运行Schtasks.exe会显示每个已注册任务的状态和下一次运行时间。

创建任务:

删除任务:

运行任务:

结束正在运行的任务:

查询任务信息:

变更任务:

 

0x02 Metasploit与计划任务

Scheduled Tasks持久化技术可以手动或自动的进行利用。在Metasploit中,我们可以利用Script Web Delivery模块托管和生成各种格式的payload。

Script Web Delivery模块可以快速启动一个用于存放Payload的web服务器。使用Script Web Delivery模块结合Scheduled Tasks持久化技术利用的基本思路在于远程加载Payload。

加载Script Web Delivery模块并设置相关参数。

t2

Script Web Delivery模块默认payload为python/meterpreter/reverse_tcp,这里我们设置payload为windows/x64/meterpreter/reverse_tcp。

主要有以下Targets

Targets为Python时,生成的payload如下:

Targets为PHP时,生成的payload如下:

Targets为PSH时,生成的payload如下:

Targets为Regsvr32时,生成的payload如下:

Targets为pubprn时,生成的payload如下:

Targets为PSH (Binary)时,生成的payload如下:(在硬盘写入文件)

Targets为Linux时,生成的payload如下:

我们这里设置Targets为3,Targets 3是利用regsvr32远程加载payload,然后我们再利用Schtasks.exe将其加入计划任务中:

当任意用户登录时,恶意脚本成功运行。

扩展阅读 regsvr32.exe

regsvr32.exe用于注册Windows操作系统的动态链接库和ActiveX控件。

 

0x03 持久化工具包SharPersist

前面我们都是手工针对计划任务进行利用,安全研究员Brett Hawkins开发了一款Windows持久化利用工具包SharPersist。

工具地址:https://github.com/fireeye/SharPersist

技术表:

技术描述技术相关参数开关(-t)是否需要管理员特权是否操作注册表是否添加/修改/删除磁盘上的文件
KeePass具有恶意触发器的KeePass后门配置文件keepass
New Scheduled Task创建新的计划任务运行指定的命令schtask
Registry修改注册表reg
Startup Folder用户启动文件夹持久化利用startupfolder
Tortoise SVN Hook Script用户连接到SVN存储库时使用Tortoise SVN钩子脚本执行命令tortoisesvn
New ServiceWindows服务持久化利用service
Scheduled Task Backdoor向现有计划任务添加其他操作schtaskbackdoor

这里我们主要介绍New Scheduled Task和Scheduled Task Backdoor两项技术。

创建新的计划任务

列出特定的计划任务,识别所有者,触发器和要执行的动作

check功能

SharPersist的check功能可以检查名称和提供的参数是否可用。

Scheduled Task Backdoor

利用Scheduled Task Backdoor我们可以检查是否存在可以修改的计划任务以运行Payload,而不是创建新计划任务。

 

0x04 Empire与计划任务

Empire中有以下两个模块可以实施计划任务的持久化技术。

使用persistence/userland/schtasks模块会在目标计算机上创建一个名称为WindowsUpdate的计划任务,这里名称可以自定义设置。

Payload以base64字符串存放在注册表HKCU:\Software\Microsoft\Windows\CurrentVersion debug中

使用persistence/elevated/schtasks*模块需要管理员权限

目标计算机上会创建一个名称为Updater的计划任务,当任意用户登录时触发然后以SYSTEM用户启动。

当服务器重启用户登录时

 

0x05 防御