导语:如果你曾经在一次渗透测试中运行过不安全的PXE启动部署,那么你就会知道它们可以为权限升级提供大量的可能性。获取PXE启动镜像的权限可以为攻击者提供一个连接已加入域的系统、域凭据和横向或垂直移动渗透的机会。本博文概述了许多不同的

如果你曾经在一次渗透测试中运行过不安全的PXE启动部署,那么你就会知道它们可以为权限升级提供大量的可能性。获取PXE启动镜像的权限可以为攻击者提供一个连接已加入域的系统、域凭据和横向或垂直移动渗透的机会。本博文概述了许多不同的方法来提升特权并从PXE启动镜像中检索密码。这些技术分为三个部分:后门攻击、密码抓取攻击和后登录密码转储。许多攻击将依赖于安装Windows镜像文章主题将从“镜像磁盘”开始。

推荐工具:

·VMware(工作站或Fusion)

·Microsoft Hyper-V

·Kali Linux iso

·Windows镜像(本文使用Windows 10专业版)

总体概述:

·PXE使用Hyper-V引导Windows镜像

·安装Windows镜像

·后门攻击

        o   在安装过程中添加本地管理员

        o   安装镜像磁盘 – 向所有用户添加批处理文件或可执行文件

        o   装载镜像磁盘 – 替换sethc.exe或其他辅助功能选项

        o   装载镜像磁盘 – 使用chntpw工具覆盖管理员密码

·密码抓取攻击

        o   在安装或登录过程中抓取VM内存文件以获取密码

        o   安装镜像磁盘 – 查看本地Unattend / Sysprep文件

        o   安装镜像磁盘 – 复制SAM文件并使用管理员帐户的HASH进行PTH攻击

        o   安装镜像磁盘 – 复制SAM文件并破解管理员帐户

·登录密码转储

PXE使用Hyper-V引导Windows镜像

通过新建虚拟机向导创建新的虚拟机。遵循指导的步骤,并确保选择“从基于网络的安装服务器安装操作系统”选项。向导完成后检查设置菜单,并确保“传统网络适配器”位于启动顺序的第一个位置。

image.png

保存并启动虚拟机。PXE网络安装应该启动并开始Microsoft Deployment Toolkit部署向导。

image.png

运行向导并开始目标镜像的安装任务序列。这可能需要一段时间。

image.png

安装Windows镜像

一旦完成设置(包括Windows操作系统设置),你应该有一个工作的Windows VM。确保安全关闭虚拟机并下载Kali Linux iso。转到设置菜单并选择DVD驱动器镜像文件的位置。

image.png

现在,更改引导顺序,使“CD”位于BIOS启动顺序的顶部。

image.png

保存设置并启动虚拟机。选择启动进入“Live(取证模式)”。

image.png

一旦启动Kali,请使用以下示例命令装入Windows分区。确保将分区改为本文示例所使用的/dev/sda2分区。

fdisk -l
mkdir /mnt/ntfs
mount -t ntfs-3g /dev/sda2 /mnt/ntfs

image.png

后门攻击

1.在安装过程中添加本地管理员。

这可能是获得对系统镜像的高级访问的最简单方式。在经过Windows PE启动过程之后,返回到VM的设置菜单。将“IDE”设置为BIOS部分“启动顺序”中的顶部。

image.png

保存设置,启动虚拟机,然后连接到控制台。虚拟机应该进入最初的Windows安装过程。按Shift + F10将弹出一个系统控制台。请注意,这与在Windows PE部署阶段按F8不同。输入以下命令以添加你的本地管理员用户。

net user netspi Password123! /add
net localgroup administrators /add netspi

image.png

检查管理员组成员资格。

image.png

现在用户已创建并添加到管理员组,请等待虚拟机完成设置并登录。

image.png

登录后,你将拥有本地管理员权限!我们可以执行更进一步的操作,通过PsExec获得本地系统。

PsExec.exe -i -s cmd.exe

image.png

本地系统的cmd可用于检查计算机帐户是否具有域用户权限。使用诸如BloodHound / SharpHound之类的工具来映射域,这可能是一个很好的起点。

2.安装镜像磁盘 – 将批处理或可执行文件添加到所有用户。

位于C:\Users\%用户名%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup中的快捷方式或文件将在用户登录启动时运行。将目录更改为管理员的启动目录并使用以下命令创建批处理文件。

@echo off
net user "startup" "password" /add
net localgroup "Administrators" /add "startup"

image.png

批处理文件将在管理员用户登录时运行。如果此攻击与攻击情形#4结合使用,则管理员用户可以使用空密码登录。检查以确认启动用户是在登录后创建并添加到管理员组。

image.png

3.安装镜像磁盘 – 替换sethc.exe或其他辅助功能选项。

替换sethc.exe(粘滞键)是一种经典的特权升级技术。sethc.exe位于%windir%\System32\sethc.exe中。下面的命令复制cmd.exe并将其重命名为sethc.exe。

cp cmd.exe sethc.exe

image.png

如果启用粘滞键,当连续单击五次“Shift”时,将弹出一个本地系统的cmd。

image.png

4.安装镜像磁盘 – 使用chntpw工具覆盖管理员密码。

chntpw工具可以清除Windows用户的密码。SAM和SYSTEM文件位于%windir%\System32\config\目录中。

image.png

netspi用户的密码被清除,并且可以在不输入密码的情况下登录帐户。

image.png

密码抓取攻击

5.在安装或登录时抓取VM内存文件以获取密码。

我的同事詹姆斯·休斯顿应对这次攻击的过程值得说出来。这里的一般想法是使用快照或暂停功能来捕获虚拟机内存中的密码。这可以在实际的PXE引导部署过程,安装或登录步骤中完成。此示例将在MDT部署过程中检索部署服务帐户的密码。

部署用户用于在部署任务序列的“计算机详细信息”步骤中将计算机加入域。

image.png

此时,暂停或拍摄虚拟机当前状态的快照。在Hyper-V中,使用检查点功能拍摄快照。在“设置”中的“检查点”菜单下,确保选择了“标准检查点”。这将确保应用程序和系统内存被捕获。快照位置也在此菜单中设置。

image.png

浏览到快照文件位置并查找你的虚拟机管理程序的相应文件。

·       VMWare:.vmem,.vmsn(快照内存文件),.vmss(暂停内存文件)

·       Hyper-V:.BIN,.VSV,.VMRS(虚拟机运行时文件)

由于此示例使用Hyper-V,请复制.VMRS文件以搜索密码。我使用Kali Linux以及字符串和grep来查找服务帐户和密码。如果在Windows部署向导过程中未显示用户名或密码,搜索“用户”或“密码”等关键字是一个很好的开始。

strings PXEtest.VMRS | grep -C 4 "UserID=deployment"

image.png

6.安装镜像磁盘 – 查看本地Unattend/Sysprep文件。

Unattend和Sysprep文件可以包含用于部署和设置的密码。以下位置包含与Sysprep相关的文件。

·       %WINDIR%\Panther

·       %WINDIR%\Panther\Unattend

·       %WINDIR%\SYSTEM32\Sysprep

在这种情况下,unattend.xml文件已被清理,但始终值得检查这些位置是否有密码和敏感信息。

image.png

7.安装镜像磁盘 – 复制SAM文件,并使用管理员帐户的HASH执行PTH攻击

SAM和SYSTEM文件位于%windir%\System32\config\目录中。

image.png

这个文件可以拷贝到你的本地机器上,Mimikatz可以用来提取哈希值。管理员散列可通过使用CrackMapExecInvoke-TheHash的散列攻击。

crackmapexec smb targetip -u username -H LMHASH:NTHASH
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose

如果域共享本地管理员密码,这可能是提升权限的非常有效的技术。

8.安装镜像磁盘 – 复制SAM文件并破解管理员帐户

像上面一样,一旦将SAM和SYSTEM文件复制到本地计算机上,管理员帐户可以使用Hashcat或John the Ripper破解。下面是一个Hashcat示例破解命令。访问hashcat wiki以获取设置和基本用法。

hashcat64.bin -m 1000 targethashes.txt wordlist.txt -r crackrule.rule -o cleartextpw.txt --outfile-format 5 --potfile-disable --loopback -w 3

登录密码转储

一旦上述技术可以访问PXE引导镜像,我们可以转储密码。Mimikatz是导出密码的好工具。

sekurlsa :: logonpasswords会从LSASS内存转储密码。

image.png

lsadump :: secrets转储LSA密文。

image.png

vault :: cred从证书管理器转储保存的凭证。但是,如果将保存的凭证设置为域密码类型,则此命令将不会成功检索凭证。该Mimikatz维基对如何提取这些凭据一个很好的解释。

缓解和预防

使用不需要任何身份验证或授权的PXE进行相关的部署过程固然是有安全风险的,特别是在用户的LAN上。强烈建议PXE安装需要凭据才能开始安装过程。例如,只需在System Center Configuration Manager中检查“计算机使用PXE时需要密码”,就可以在分发服务器上配置此功能。

上述攻击的主要内容中的一点是,包含敏感数据的应用程序或软件不应包含在任何镜像中。另外,共享本地管理员密码或服务帐户密码不应在镜像上(或域中的任何位置)使用。镜像可能会受到影响,这应该有助于降低域中计算机的风险。最后,PXE部署应该只能在隔离网络上使用。查看Microsoft提供的这些最佳实践,以获取有关保护PXE引导部署的更多信息。

参考

源链接

Hacking more

...