转储 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 命令即可。
通过 Python 脚本使用 PsExec
通常,在 Windows 机器上使用 PsExec 是为了管理目的,但在大多数黑客攻击场景中,您会使用像 Kali Linux 这样的操作系统。
Kali 有许多有用的内置工具。例如,Impacket 是一套非常有用的工具,它有自己的 PsExec 版本。
如果您使用的是 Kali Linux,则 Impacket 无需设置。它已安装好您的 PATH 中的所有工具。
远程计算机的远程控制语法是:
impacket-psexec USERNAME@IP_ADDRESS
在我们的例子中,这是:
impacket-psexec damon@192.168.237.249
Impacket 还具有一项功能,允许您使用用户的哈希值(而不是密码)远程访问其他计算机。这在黑客攻击中非常有用,因为您不一定能在找到用户的 NTLM 哈希值后破解它。
语法如下:
impacket-psexec <USERNAME@IP_ADDRESS> -hashes <NTLM_HASH>
在我们的示例中,命令是:
impacket-psexec damon@192.168.237.249 -hashes 00000000000000000000000000000000:820D6348890893116880101307197052
再次,一旦登录,就可以执行该用户可用的任何命令。
通常,在 Windows 机器上使用 PsExec 是为了管理目的,但在大多数黑客攻击场景中,您会使用像 Kali Linux 这样的操作系统。
Kali 有许多有用的内置工具。例如,Impacket 是一套非常有用的工具,它有自己的 PsExec 版本。
如果您使用的是 Kali Linux,则 Impacket 无需设置。它已安装好您的 PATH 中的所有工具。
远程计算机的远程控制语法是:
impacket-psexec USERNAME@IP_ADDRESS
在我们的例子中,这是:
impacket-psexec damon@192.168.237.249
Impacket 还具有一项功能,允许您使用用户的哈希值(而不是密码)远程访问其他计算机。这在黑客攻击中非常有用,因为您不一定能在找到用户的 NTLM 哈希值后破解它。
语法如下:
impacket-psexec <USERNAME@IP_ADDRESS> -hashes <NTLM_HASH>
在我们的示例中,命令是:
impacket-psexec damon@192.168.237.249 -hashes 00000000000000000000000000000000:820D6348890893116880101307197052
再次,一旦登录,就可以执行该用户可用的任何命令。
从 HTTP 服务器下载文件:Curl、Wget 和 Bash
Linux 机器上下载文件最常用的两个工具是curl和wget。
但是,还有许多其他二进制文件可用于下载文件。因此,作为附加内容,我们还将了解如何使用bash下载文件。
使用 Curl 下载文件
Curl 是一个非常强大的工具,可用于与 Web 服务器交互。它通常在 Web 应用程序渗透测试期间使用;但是,它也可以用于从 Web 服务器快速下载文件
将脚本或可执行文件下载到受害机器后,添加执行权限来运行它非常重要
chmod 755 ./linpeas.sh
看到全部 0 表示文件实际上并未下载,但我们可以看到它仍在运行。这是因为它正在被下载并直接在内存中执行
Linux 机器上下载文件最常用的两个工具是curl和wget。
但是,还有许多其他二进制文件可用于下载文件。因此,作为附加内容,我们还将了解如何使用bash下载文件。
使用 Curl 下载文件
Curl 是一个非常强大的工具,可用于与 Web 服务器交互。它通常在 Web 应用程序渗透测试期间使用;但是,它也可以用于从 Web 服务器快速下载文件
将脚本或可执行文件下载到受害机器后,添加执行权限来运行它非常重要
chmod 755 ./linpeas.sh
看到全部 0 表示文件实际上并未下载,但我们可以看到它仍在运行。这是因为它正在被下载并直接在内存中执行
入侵 Jenkins 服务器获取反向 Shell
对于此示例,我们有端口 8080 可以使用,因此让我们枚举代理 Web 服务。
我们可以通过打开浏览器并导航到 127.0.0.1:8080 与该服务进行交互
然后我们就可以看到 Jenkins 登录页面了!
Jenkins 是一个开源自动化服务器,它使世界各地的开发人员能够可靠地构建、测试和部署他们的软件。
我们需要在这里找到登录凭据。默认用户名是“admin”,密码是随机生成的字符串,可以在 Jenkins 日志中找到。但是,当管理员设置服务器时,这些会发生变化。为此,我们可以测试一些常用凭据并希望进入。
常见的凭证包括 admin:admin;admin:password 等。但是在攻击这些类型的服务器时,另一个好方法是使用服务名称作为用户/密码组合,在本例中为 jenkins:jenkins。
测试上述所有用户/密码组合,我们设法使用jenkins:jenkins进入,并看到 Jenkins 仪表板!
要获取反向 shell,我们需要检查是否安装了 Groovy 插件,这是一个脚本控制台,可以执行 Java 可以执行的几乎所有操作,包括:在 Jenkins 控制器和代理上创建子进程并执行任意命令。换句话说,在托管此服务的主机(受害者)上执行命令。
对于此示例,我们有端口 8080 可以使用,因此让我们枚举代理 Web 服务。
我们可以通过打开浏览器并导航到 127.0.0.1:8080 与该服务进行交互
然后我们就可以看到 Jenkins 登录页面了!
Jenkins 是一个开源自动化服务器,它使世界各地的开发人员能够可靠地构建、测试和部署他们的软件。
我们需要在这里找到登录凭据。默认用户名是“admin”,密码是随机生成的字符串,可以在 Jenkins 日志中找到。但是,当管理员设置服务器时,这些会发生变化。为此,我们可以测试一些常用凭据并希望进入。
常见的凭证包括 admin:admin;admin:password 等。但是在攻击这些类型的服务器时,另一个好方法是使用服务名称作为用户/密码组合,在本例中为 jenkins:jenkins。
测试上述所有用户/密码组合,我们设法使用jenkins:jenkins进入,并看到 Jenkins 仪表板!
要获取反向 shell,我们需要检查是否安装了 Groovy 插件,这是一个脚本控制台,可以执行 Java 可以执行的几乎所有操作,包括:在 Jenkins 控制器和代理上创建子进程并执行任意命令。换句话说,在托管此服务的主机(受害者)上执行命令。