UAC 绕过——Windows 权限提升
在 Linux 机器上使用sudo命令。使用 sudo,您必须知道 root 密码才能以 root 权限执行命令。UAC 大致相同,在右键单击要以管理员权限运行的程序并选择“以管理员身份运行”后,它会提示您输入管理员密码
对 Windows 10 主机进行了初始枚举,发现端口 21 已打开并托管 FTP 服务器。FTP 服务器不允许匿名登录;但是,对 SMB 共享的枚举显示用户名为efrost。有了用户名和 FTP 服务器,使用 Hydra 对该服务进行暴力破解,并成功发现用户的 FTP 密码为Coldheart1234
目标主机的端口 445 和端口 3389 是开放的。为了快速取胜,首先使用Impacket Suite of Tools 中的 psexec.py试了对 SMB 的访问 。
在 Linux 机器上使用sudo命令。使用 sudo,您必须知道 root 密码才能以 root 权限执行命令。UAC 大致相同,在右键单击要以管理员权限运行的程序并选择“以管理员身份运行”后,它会提示您输入管理员密码
对 Windows 10 主机进行了初始枚举,发现端口 21 已打开并托管 FTP 服务器。FTP 服务器不允许匿名登录;但是,对 SMB 共享的枚举显示用户名为efrost。有了用户名和 FTP 服务器,使用 Hydra 对该服务进行暴力破解,并成功发现用户的 FTP 密码为Coldheart1234
目标主机的端口 445 和端口 3389 是开放的。为了快速取胜,首先使用Impacket Suite of Tools 中的 psexec.py试了对 SMB 的访问 。
通过 RDP 进行传递哈希攻击
自由网络
要通过 RDP 执行传递哈希攻击,我们可以使用Kali 预装的名为xfreerdp的工具。
从 172.16.1.100 转储了 SAM 哈希,然后我们尝试传递哈希以作为 172.16.1.200 上的本地管理员获取 RDP 会话。使用以下命令且不指定域,它将尝试以本地管理员帐户身份进行连接:
sudo xfreerdp /u:administrator /pth:3542d79d5d17bc9d3014d4d56b5e3060 /v:172.16.1.200 +clipboard
为了绕过此限制,我们需要编辑 DisableRestrictedAdmin 注册表项。为此,我们将使用带有 crackmapexec 和-x开关的传递哈希攻击来执行以下命令:
crackmapexec smb 172.16.1.200 -u Administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth -x 'reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f'
现在我们已将 DisableRestrictAdmin 设置为 0 或“关闭”,我们能够使用 xfreerdp 成功执行传递哈希攻击。
自由网络
要通过 RDP 执行传递哈希攻击,我们可以使用Kali 预装的名为xfreerdp的工具。
从 172.16.1.100 转储了 SAM 哈希,然后我们尝试传递哈希以作为 172.16.1.200 上的本地管理员获取 RDP 会话。使用以下命令且不指定域,它将尝试以本地管理员帐户身份进行连接:
sudo xfreerdp /u:administrator /pth:3542d79d5d17bc9d3014d4d56b5e3060 /v:172.16.1.200 +clipboard
为了绕过此限制,我们需要编辑 DisableRestrictedAdmin 注册表项。为此,我们将使用带有 crackmapexec 和-x开关的传递哈希攻击来执行以下命令:
crackmapexec smb 172.16.1.200 -u Administrator -H 3542d79d5d17bc9d3014d4d56b5e3060 --local-auth -x 'reg add HKLM\System\CurrentControlSet\Control\Lsa /t REG_DWORD /v DisableRestrictedAdmin /d 0x0 /f'
现在我们已将 DisableRestrictAdmin 设置为 0 或“关闭”,我们能够使用 xfreerdp 成功执行传递哈希攻击。
在 Windows 10 主机上执行此攻击
执行此攻击的不同方法的经验来看,我发现在 Windows 10 主机上唯一有效的方法有特定要求。也就是说,您需要知道具有 SeBackupPrivilege 的用户的密码,并且您需要在主机上具有 RDP(GUI)访问权限
对 backup_svc 帐户进行 kerberoast 并破解密码。现在,我们不再使用 evil-winrm 来获取 shell,而是使用xfreerdp
使用whoami /priv时,它并不显示我们拥有 SeBackupPrivilege
默认情况下,SeBackupPrivilege 在低完整性 shell 中未启用。要启用该权限,您需要使用“以管理员身份运行”打开命令提示符。将弹出 UAC 提示,要求输入当前用户的密码。这是 Windows 处理备份操作员组中用户权限的方式
一旦输入密码,权限即启用
执行此攻击的不同方法的经验来看,我发现在 Windows 10 主机上唯一有效的方法有特定要求。也就是说,您需要知道具有 SeBackupPrivilege 的用户的密码,并且您需要在主机上具有 RDP(GUI)访问权限
对 backup_svc 帐户进行 kerberoast 并破解密码。现在,我们不再使用 evil-winrm 来获取 shell,而是使用xfreerdp
使用whoami /priv时,它并不显示我们拥有 SeBackupPrivilege
默认情况下,SeBackupPrivilege 在低完整性 shell 中未启用。要启用该权限,您需要使用“以管理员身份运行”打开命令提示符。将弹出 UAC 提示,要求输入当前用户的密码。这是 Windows 处理备份操作员组中用户权限的方式
一旦输入密码,权限即启用
转储 LSASS 进程:任务管理器(GUI)
对于我们的第一个示例,我们可以使用我们创建的本地管理员帐户的凭据并通过 RDP 进入主机以获取 GUI 会话。
确认我们在系统上拥有本地管理员权限后,我们可以继续转储 LSASS 进程。
由于我们在受害者上有 GUI 访问权限,我们转储 LSASS 进程的第一种方法是使用任务管理器。
要创建进程转储文件,请右键单击任务栏(底部栏),然后单击任务管理器。
接下来,我们需要单击“更多详细信息”下拉箭头,然后转到“详细信息”选项卡。从那里,我们可以向下滚动,然后右键单击lsass.exe并选择“创建转储文件”。
对于我们的第一个示例,我们可以使用我们创建的本地管理员帐户的凭据并通过 RDP 进入主机以获取 GUI 会话。
确认我们在系统上拥有本地管理员权限后,我们可以继续转储 LSASS 进程。
由于我们在受害者上有 GUI 访问权限,我们转储 LSASS 进程的第一种方法是使用任务管理器。
要创建进程转储文件,请右键单击任务栏(底部栏),然后单击任务管理器。
接下来,我们需要单击“更多详细信息”下拉箭头,然后转到“详细信息”选项卡。从那里,我们可以向下滚动,然后右键单击lsass.exe并选择“创建转储文件”。
转储 LSASS 进程 – 远程(无 GUI)
要远程执行此攻击,我们需要满足以下列出的三个标准中的至少一个:
1. 内置本地管理员帐户的哈希值或密码(“不能”是添加到本地管理员组的本地用户)
2. 域管理员账户的哈希值或密码
3.本地系统账户(计算机账户)的哈希值
绕过 UAC 以转储 LSASS
我们以用户cmarko 的身份在目标上拥有反向 shell ,并且我们刚刚执行了 Print Nightmare (CVE-2021-1675) 来创建一个名为“pwnt”的本地管理员帐户
创建本地管理员用户后,可以像以前一样跳转到 RDP 会话,或者我们可以尝试立即使用这些凭据执行 RCE(远程命令执行)
使用CrackMapExec检查,这次它显示“Pwn3d!”,表明我们已经实现 RCE 并成功绕过 UAC
要远程执行此攻击,我们需要满足以下列出的三个标准中的至少一个:
1. 内置本地管理员帐户的哈希值或密码(“不能”是添加到本地管理员组的本地用户)
2. 域管理员账户的哈希值或密码
3.本地系统账户(计算机账户)的哈希值
绕过 UAC 以转储 LSASS
我们以用户cmarko 的身份在目标上拥有反向 shell ,并且我们刚刚执行了 Print Nightmare (CVE-2021-1675) 来创建一个名为“pwnt”的本地管理员帐户
创建本地管理员用户后,可以像以前一样跳转到 RDP 会话,或者我们可以尝试立即使用这些凭据执行 RCE(远程命令执行)
使用CrackMapExec检查,这次它显示“Pwn3d!”,表明我们已经实现 RCE 并成功绕过 UAC
AS-REP 烤制攻击
AS-REP Roasting 是攻击者用来转储已禁用Kerberos 预身份验证的用户帐户的 AS-REP (krbasrep5) 哈希值的一种技术。
与 Kerberoasting 不同,此类攻击涉及的用户不仅限于服务帐户。
任何帐户都可以通过简单勾选一个框来关闭预身份验证。
执行 AS-REP Roasting 攻击的唯一要求是拥有已禁用预身份验证的域中用户的有效用户名。
AS-REP Roasting 是攻击者用来转储已禁用Kerberos 预身份验证的用户帐户的 AS-REP (krbasrep5) 哈希值的一种技术。
与 Kerberoasting 不同,此类攻击涉及的用户不仅限于服务帐户。
任何帐户都可以通过简单勾选一个框来关闭预身份验证。
执行 AS-REP Roasting 攻击的唯一要求是拥有已禁用预身份验证的域中用户的有效用户名。
AD 升级 – Kerberoasting 攻击
Kerberoasting 攻击是一种允许攻击者请求任何具有已注册 SPN 的服务的服务票证的技术。一旦请求,该服务票证将以 TGS-REP 哈希的形式呈现给攻击者。
然后,攻击者获取此票证(哈希),并使用Hashcat之类的工具破解服务帐户密码。
目标是获取代表 AD 中的用户帐户运行的服务的 TGS 票证,然后尝试破解它们。
要执行 Kerberoasting 攻击,我们需要满足以下两个要求中至少之一:
-域帐户(任何帐户)的一组有效凭据
-在域中的目标主机上建立立足点(任何账户)
如果域服务帐户具有注册的 SPN,那么它应该是可 Kerberoast 攻击的;但是,攻击的成功取决于密码的强度以及破解的服务帐户的权限级别。
Kerberoasting 攻击是一种允许攻击者请求任何具有已注册 SPN 的服务的服务票证的技术。一旦请求,该服务票证将以 TGS-REP 哈希的形式呈现给攻击者。
然后,攻击者获取此票证(哈希),并使用Hashcat之类的工具破解服务帐户密码。
目标是获取代表 AD 中的用户帐户运行的服务的 TGS 票证,然后尝试破解它们。
要执行 Kerberoasting 攻击,我们需要满足以下两个要求中至少之一:
-域帐户(任何帐户)的一组有效凭据
-在域中的目标主机上建立立足点(任何账户)
如果域服务帐户具有注册的 SPN,那么它应该是可 Kerberoast 攻击的;但是,攻击的成功取决于密码的强度以及破解的服务帐户的权限级别。
使用 PsExec 进行黑客攻击
和任何合法工具一样,PsExec 也有可能被用于非预期用途。事实上,PsExec 有多种用途,可以让黑客的工作变得更加轻松,而且在远程系统上远程执行命令的能力也为黑客提供了多种攻击途径,而这些途径原本是无法获得的。
一个很好的例子就是在网络中横向移动。
PsExec 可以通过多种方式用于横向移动,但最简单的方法是在远程系统上执行交互式命令提示符。这与远程登录该计算机相同。
当无法远程桌面访问系统时,此功能非常有用。如果在远程系统上拥有足够的权限,则可以使用 PsExec 发出命令来启用 RDP(远程桌面协议),并将用户添加到远程桌面用户组。
PsExec 还允许以其他用户身份运行远程命令。
假设在 machine01 上可以访问标准用户帐户,但在 machine01 上发现一个密码,认为该密码可能是 machine02 的本地管理员密码。但是,无法通过 RDP 进入该系统。可以使用 PsExec 从 machine01 以 machine02 的本地管理员帐户身份在 machine02 上运行命令提示符。
使用 PSExec 的另一个好处是不需要用户密码即可以该用户身份运行命令。
假设通过Mimikatz 在 machine01 上为 machine02 的管理员用户找到了 NLTM 哈希。
利用使用 PsExec 的 Impacket,可以将用户的哈希传递到远程系统进行身份验证。这使得跨网络移动的速度更快,因为不需要使用Hashcat之类的工具来破解哈希。
和任何合法工具一样,PsExec 也有可能被用于非预期用途。事实上,PsExec 有多种用途,可以让黑客的工作变得更加轻松,而且在远程系统上远程执行命令的能力也为黑客提供了多种攻击途径,而这些途径原本是无法获得的。
一个很好的例子就是在网络中横向移动。
PsExec 可以通过多种方式用于横向移动,但最简单的方法是在远程系统上执行交互式命令提示符。这与远程登录该计算机相同。
当无法远程桌面访问系统时,此功能非常有用。如果在远程系统上拥有足够的权限,则可以使用 PsExec 发出命令来启用 RDP(远程桌面协议),并将用户添加到远程桌面用户组。
PsExec 还允许以其他用户身份运行远程命令。
假设在 machine01 上可以访问标准用户帐户,但在 machine01 上发现一个密码,认为该密码可能是 machine02 的本地管理员密码。但是,无法通过 RDP 进入该系统。可以使用 PsExec 从 machine01 以 machine02 的本地管理员帐户身份在 machine02 上运行命令提示符。
使用 PSExec 的另一个好处是不需要用户密码即可以该用户身份运行命令。
假设通过Mimikatz 在 machine01 上为 machine02 的管理员用户找到了 NLTM 哈希。
利用使用 PsExec 的 Impacket,可以将用户的哈希传递到远程系统进行身份验证。这使得跨网络移动的速度更快,因为不需要使用Hashcat之类的工具来破解哈希。
使用 PsExec,要使用 PsExec,目标系统必须启用一些端口和服务。最常用的是 TCP 端口 445 和 139。
可以使用其他端口,例如端口 135,但不太常用。您还需要配置防火墙设置以允许通过端口 445 和 139 进行入站和出站流量。
还必须启用服务器消息块 (SMB)。如果发现主机上的端口 445 和/或 139 已打开,则意味着 SMB 可能已启用。您还应验证本地和远程主机系统上是否都启用了文件和打印机共享。
最后,您需要在运行 PsExec 的机器上拥有管理访问权限。
为了验证目标计算机上是否打开了正确的端口, 可以运行Nmap扫描来检查端口 139 和 445 是否打开。对于此扫描,我们将使用:
sudo nmap -p- -sV TARGET_IP --open
在这个特定的案例中,我们使用了:
sudo nmap -p- -sV 192.168.214.122 --open
可以使用其他端口,例如端口 135,但不太常用。您还需要配置防火墙设置以允许通过端口 445 和 139 进行入站和出站流量。
还必须启用服务器消息块 (SMB)。如果发现主机上的端口 445 和/或 139 已打开,则意味着 SMB 可能已启用。您还应验证本地和远程主机系统上是否都启用了文件和打印机共享。
最后,您需要在运行 PsExec 的机器上拥有管理访问权限。
为了验证目标计算机上是否打开了正确的端口, 可以运行Nmap扫描来检查端口 139 和 445 是否打开。对于此扫描,我们将使用:
sudo nmap -p- -sV TARGET_IP --open
在这个特定的案例中,我们使用了:
sudo nmap -p- -sV 192.168.214.122 --open
使用 PsExec 作为 Windows 二进制文件
让我们一步一步地从 Sysinternals 获取本机 PsExec 并查看常用命令和参数。
要在 Windows 系统上使用 PsExec,您必须先从 Microsoft 下载。在 Google 上快速搜索“psexec”将返回正确的页面作为第一个结果。
点击链接后,将被引导至 PsExec 下载页面。您需要点击“下载 PsTools”链接来下载 PsExec。
在计算机上下载 PsTools 后,必须解压 zip 文件,右键单击它,然后在 Windows 11 上选择“全部解压”。
之后,系统会弹出一个窗口,询问要将内容提取到哪里。默认值是与 zip 文件所在的同一目录,这样就可以了。继续并单击“提取”。
提取文件后,需要将它们移动到计算机上的某个位置,只要您计划使用 PsExec,它们就会保留在那里。我们将文件移动到了 C:\PSTools。
现在,可以打开终端或命令提示符并导航到目录,或者打开目录文件资源管理器,右键单击,然后选择“在终端中打开”。
之后,就可以在 Windows 上使用 PsExec 了。
可以使用 PsExec 使用以下命令获取远程系统的 IP 配置:
.\PsExec.exe \\REMOTE_IP -u <USERNAME> -p <PASSWORD> ipconfig
对于我们的例子,完整的命令将是:
.\PsExec.exe \\192.168.0.225 -u stationx-admin -p stationx ipconfig
让我们一步一步地从 Sysinternals 获取本机 PsExec 并查看常用命令和参数。
要在 Windows 系统上使用 PsExec,您必须先从 Microsoft 下载。在 Google 上快速搜索“psexec”将返回正确的页面作为第一个结果。
点击链接后,将被引导至 PsExec 下载页面。您需要点击“下载 PsTools”链接来下载 PsExec。
在计算机上下载 PsTools 后,必须解压 zip 文件,右键单击它,然后在 Windows 11 上选择“全部解压”。
之后,系统会弹出一个窗口,询问要将内容提取到哪里。默认值是与 zip 文件所在的同一目录,这样就可以了。继续并单击“提取”。
提取文件后,需要将它们移动到计算机上的某个位置,只要您计划使用 PsExec,它们就会保留在那里。我们将文件移动到了 C:\PSTools。
现在,可以打开终端或命令提示符并导航到目录,或者打开目录文件资源管理器,右键单击,然后选择“在终端中打开”。
之后,就可以在 Windows 上使用 PsExec 了。
可以使用 PsExec 使用以下命令获取远程系统的 IP 配置:
.\PsExec.exe \\REMOTE_IP -u <USERNAME> -p <PASSWORD> ipconfig
对于我们的例子,完整的命令将是:
.\PsExec.exe \\192.168.0.225 -u stationx-admin -p stationx ipconfig
在 Metasploit 中使用 PsExec
Metasploit 是一款出色的黑客工具,应该很熟悉它。与 Impacket 一样,它内置于 Kali Linux 中。要启动Metasploit,需要输入“msfconsole”,然后将收到一条随机的欢迎消息。
然后需要选择要使用的模块。在我们的例子中,我们将使用这个:
exploit /windows/smb/psexec
设置完模块后,我们必须配置模块所需的各种选项。就此模块而言,它需要以下内容:
RHOST,SMBUser,SMBPass, 和LHOST
输入所有信息后,我们就可以通过输入漏洞来运行该模块。
建立连接后,将像使用以前的方法一样完全访问系统。只需输入 shell 命令即可。
Metasploit 是一款出色的黑客工具,应该很熟悉它。与 Impacket 一样,它内置于 Kali Linux 中。要启动Metasploit,需要输入“msfconsole”,然后将收到一条随机的欢迎消息。
然后需要选择要使用的模块。在我们的例子中,我们将使用这个:
exploit /windows/smb/psexec
设置完模块后,我们必须配置模块所需的各种选项。就此模块而言,它需要以下内容:
RHOST,SMBUser,SMBPass, 和LHOST
输入所有信息后,我们就可以通过输入漏洞来运行该模块。
建立连接后,将像使用以前的方法一样完全访问系统。只需输入 shell 命令即可。