渗透技巧 -- Windows隐蔽创建计划任务-分析和学习
文前漫谈
最近一周刚放出来的一个持久化工具 netero1010/GhostTask (github.com)。利用计划任务实现持久化。
号称能够对抗取证调查、利用Silver Ticket创建计划任务横向。
win32编程本身也有对 Task Scheduler的支持 C/C++ Code Example Creating a Task Using NewWorkItem。之前也写过一个调用api的创建计划任务的持久化工具,痛点就是一查就查出来了 :)
不同的是GhostTask单纯从注册表的角度实现了计划任务的创建,还能够一定程度上实现计划任务的隐蔽。本文对其进行分析学习
Usage Show
首先,需要 “NT AUTHORITY/SYSTEM” 权限(),command
GhostTask.exe localhost add demo "cmd.exe" "/c notepad.exe" LAB\Administrator weekly 14:12 monday,thursday
创建的计划任务名为demo,在事件查看器确实没有发现
回看注册表,依然能观察到创建的 demo
注册表读写
代码分析
main函数逻辑很清晰,关键的两个函数 AddScheduleTask() 和 DeleteScheduleTask()
Func AddScheduleTask()
我比较感兴趣的就是他如何实现有效隐藏计划任务,关键代码
原理是22 年的 Microsoft的一篇威胁报告
修改删除 SD 键值的value,计划任务并不会被 schtasks /query
命令或者 任务计划程序
显示。但是修改这个键值需要 System 用户的权限。
MicroSoft 还提出个建议,完全删除 Tree和Tasks 两个注册表项以及 C:\\Windows\System32\Tasks
中创建的 XML 文件,任务将继续根据定义的触发器运行,还能做到无文件持久化,直到系统重新启动或者任务关联的svchost.exe进程终止
还顺带嘲讽了一波。完
贴图后用