使用 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 控制器和代理上创建子进程并执行任意命令。换句话说,在托管此服务的主机(受害者)上执行命令。
不安全的GUI应用程序——Windows权限提升
我们首先在桌面上找到要执行的应用程序的快捷方式。执行后,我们将检查正在运行的进程,发现该应用程序正在以管理员身份运行。然后,我们将从该应用程序中脱离出来,进入管理员 shell。作为额外奖励,我们还将查看另一个可以以类似方式滥用的 GUI 应用程序,名为hhupd.exe。
可以配置 Windows 应用程序,以便用户被授予以管理员权限运行某个 GUI 应用程序的权限。当程序需要提升权限才能执行其某些功能时,这通常是必要的。
查找以管理员身份运行的应用程序
由于本文中的示例需要 GUI,因此假设在初始枚举期间,我们找到了用户bob的凭据,并且 RDP 在端口 3389 上打开。我们将 2 + 2 放在一起,然后使用xfreerdp登录。
我们可以通过执行该程序,然后使用tasklist命令或检查任务管理器检查正在运行的进程来测试该程序是否以管理员权限运行。
我们首先在桌面上找到要执行的应用程序的快捷方式。执行后,我们将检查正在运行的进程,发现该应用程序正在以管理员身份运行。然后,我们将从该应用程序中脱离出来,进入管理员 shell。作为额外奖励,我们还将查看另一个可以以类似方式滥用的 GUI 应用程序,名为hhupd.exe。
可以配置 Windows 应用程序,以便用户被授予以管理员权限运行某个 GUI 应用程序的权限。当程序需要提升权限才能执行其某些功能时,这通常是必要的。
查找以管理员身份运行的应用程序
由于本文中的示例需要 GUI,因此假设在初始枚举期间,我们找到了用户bob的凭据,并且 RDP 在端口 3389 上打开。我们将 2 + 2 放在一起,然后使用xfreerdp登录。
我们可以通过执行该程序,然后使用tasklist命令或检查任务管理器检查正在运行的进程来测试该程序是否以管理员权限运行。
CVE-2019-1388 – hhupd.exe
Windows 证书对话框 (hhupd.exe) 中存在权限提升漏洞,允许攻击将权限提升至 SYSTEM,已记录为 CVE-2019-1388。
hhupd.exe 被称为 HTML Help 1.32 Update,由 Microsoft Corporation 开发。
此 CVE 影响许多 Windows 版本,包括 Windows 7、8、10 至 1903 版本以及服务器 2008 – 2019 至 1903 版本
现在我们要做的就是单击“页面”按钮,然后单击“另存为”.
在 Windows 10 上,有一个齿轮图标取代了“页面”选项卡。
就像我们之前看到的 Procmon 突破一样,我们只需要在 TOP 搜索栏中输入“cmd.exe”,它就会突破 IE 并产生一个 SYSTEM shell。
Windows 证书对话框 (hhupd.exe) 中存在权限提升漏洞,允许攻击将权限提升至 SYSTEM,已记录为 CVE-2019-1388。
hhupd.exe 被称为 HTML Help 1.32 Update,由 Microsoft Corporation 开发。
此 CVE 影响许多 Windows 版本,包括 Windows 7、8、10 至 1903 版本以及服务器 2008 – 2019 至 1903 版本
现在我们要做的就是单击“页面”按钮,然后单击“另存为”.
在 Windows 10 上,有一个齿轮图标取代了“页面”选项卡。
就像我们之前看到的 Procmon 突破一样,我们只需要在 TOP 搜索栏中输入“cmd.exe”,它就会突破 IE 并产生一个 SYSTEM shell。
利用 CVE-2021-1675.ps1 漏洞利用打印后台处理程序
在机器上获得了 PS1 脚本,就可以将其复制到当前 HTTP 服务器运行的同一目录中。这将允许直接下载到目标的内存中。
有了工作目录中的 PowerShell 脚本,我们现在可以使用以下echo命令将以下函数附加到脚本的底部:echo Invoke-Nightmare -DriverName '"Xerox" -NewUser "pwnt" -NewPassword "Password123"' >> CVE-2021-1675.ps1
此命令将创建一个名为pwnt 的新用户,密码为Password123,然后脚本会将该用户添加到本地管理员组。
在脚本底部硬编码命令将允许它在使用 IEX 将脚本下载到内存时自动执行。
使用net user命令可以确认当前不存在名为“pwnt”的用户。
脚本执行后,从输出中可以看到漏洞利用程序创建了一个恶意 DLL,该 DLL 创建了指定的用户,然后将其添加到本地管理员组。然后,漏洞利用程序清理并删除该 DLL.
看到 RDP 已打开,可以使用xfreerdp通过 RDP 进入受害者机器,然后使用“以管理员身份运行”打开 cmd 提示符以启用我们的所有权限。
在机器上获得了 PS1 脚本,就可以将其复制到当前 HTTP 服务器运行的同一目录中。这将允许直接下载到目标的内存中。
有了工作目录中的 PowerShell 脚本,我们现在可以使用以下echo命令将以下函数附加到脚本的底部:echo Invoke-Nightmare -DriverName '"Xerox" -NewUser "pwnt" -NewPassword "Password123"' >> CVE-2021-1675.ps1
此命令将创建一个名为pwnt 的新用户,密码为Password123,然后脚本会将该用户添加到本地管理员组。
在脚本底部硬编码命令将允许它在使用 IEX 将脚本下载到内存时自动执行。
使用net user命令可以确认当前不存在名为“pwnt”的用户。
脚本执行后,从输出中可以看到漏洞利用程序创建了一个恶意 DLL,该 DLL 创建了指定的用户,然后将其添加到本地管理员组。然后,漏洞利用程序清理并删除该 DLL.
看到 RDP 已打开,可以使用xfreerdp通过 RDP 进入受害者机器,然后使用“以管理员身份运行”打开 cmd 提示符以启用我们的所有权限。