红队:Evil-Winrm 详细指南插图

背景

Evil-winrm 工具最初是由 Hackplayers 团队编写的。该工具的目的是尽可能简化渗透测试,尤其是在 Microsoft Windows 环境中。Evil-winrm 使用 PowerShell 远程协议 (PSRP)。系统和网络管理员经常使用Windows Remote Management 协议进行上传、编辑和上传。WinRM 是一种基于 SOAP 且对防火墙友好的协议,可通过默认 HTTP 端口 5985 与 HTTP 传输一起使用。有关 PowerShell 远程处理的更多信息,请考虑访问 Microsoft 的官方网站。

Evil-winrm简介

Evil-winrm 是用 ruby​​ 语言编写的开源工具,使后期开发变得尽可能容易。此工具具有许多很酷的功能,包括使用纯文本密码远程登录、SSL 加密登录、使用 NTLM 哈希登录、使用密钥登录、文件传输、日志存储等。该工具的作者不断更新此工具并添加许多新功能这使得内部评估更容易。使用 evil-winrm,我们可以获得远程主机的 PowerShell 会话。该工具随所有现代 Kali Linux 一起提供,但如果您想下载,则可以从其官方 git 存储库下载它。

下载链接: https://github.com/Hackplayers/evil-winrm

Winrm 服务发现

正如我们之前所讨论的,如果在远程主机中启用了 Winrm 服务,则会使用 evil-winrm 工具。为了确认,我们可以使用 nmap 查找两个默认的 winrm 服务端口 5895 和 5896 是否打开。从 nmap 结果中,我们发现 winrm 服务已启用,因此我们可以使用 evil-winrm 登录并执行我们将在横向阶段探索的其他任务。

Evil-winrm 帮助 – 列出可用功能

许多渗透测试人员和 CTF 参与者在内部评估期间经常使用此工具,但我们中的许多人仍然不知道该工具的额外功能,这些功能可以使我们的评估比以往任何时候都容易得多。要列出 evil-winrm 的所有可用的酷功能,我们可以简单地使用-h标志,它将列出所有带有描述的帮助命令。我们将在本文中涵盖尽可能多的内容,并鼓励大家也尝试使用其他功能。

红队:Evil-Winrm 详细指南插图1

使用纯文本密码登录

假设我们在枚举阶段获得了明文密码,并且注意到远程主机启用了 winrm 服务。然后我们可以使用 evil-winrm 在目标系统上进行远程会话,方法是发出带有-i标志的远程主机的 IP 地址、带有-u标志的用户名和带有-p标志的密码。在下图中,我们可以看到它已经建立了一个远程 PowerShell 会话。

红队:Evil-Winrm 详细指南插图2

使用纯文本密码登录 – 启用 SSL

正如我们之前提到的,winrm 服务通过 HTTP 协议传输流量,然后我们可以使用安全套接字层 (SSL) 功能来确保连接安全。一旦启用 SSL 功能,我们的数据将通过加密的安全套接字层传输。使用 evil-winrm,我们可以使用-S标志以及我们之前用来建立与远程主机的连接的命令来实现目标。

红队:Evil-Winrm 详细指南插图3

使用 NTLM Hash 登录 – 通过哈希攻击

在内部评估或解决任何与 Windows 权限提升和 Active Directory 利用相关的 CTF 期间,我们经常通过利用我们的利用和攻击获得 NTLM 哈希。如果我们在 Windows 环境中,我们可以利用 evil-winrm 通过执行传递哈希攻击来建立 PowerShell 会话,我们将哈希作为密码而不是使用纯文本密码。除此之外,这种攻击还支持其他协议。我们可以使用-H标志以及我们之前用哈希替换密码部分的命令来传递哈希。以下链接提供了有关传递哈希攻击的更详细指南:

红队:Evil-Winrm 详细指南插图4

加载 Powershell 脚本

Evil-winrm 还提供了一项功能,允许我们使用来自我们的基础机器的脚本。我们可以使用-s标志以及我们在本地机器上存储脚本的脚本文件路径,直接将脚本直接加载到内存中。此外,它还提供了我们在导入任何脚本之前经常需要的 AMSI 功能。在下面的示例中,我们绕过 AMSI 然后直接从我们的系统调用 Invoke-Mimiktz.ps1 脚本到目标机器并将其加载到内存中。之后,我们可以使用任何 mimikatz 命令。出于演示目的,我们在这里从缓存中转储了凭据。转储凭据后,我们可以再次使用获得的 NTLM 哈希进行传递哈希攻击。按照以下步骤使用 evil-winrm 重现攻击。

红队:Evil-Winrm 详细指南插图5
红队:Evil-Winrm 详细指南插图6

使用 Evil-winrm 存储日志

此功能旨在在获取远程会话后执行枚举时将日志保存到我们的本地系统。我们在玩CTF或者做实时内部渗透测试的时候,都需要保留references,以便上报。Evil-winrm 允许使用-l标志将所有日志保存到我们的基础机器中。我们可以使用 evil-winrm 进行任何远程会话并添加 -l 标志,这样它将把所有日志保存到我们的基础机器的/root/evil-winrm-logs目录中,并带有日期和 IP 地址,以后可以用作参考. 在下面的示例中,我们同时使用了 ipconfig 命令和保存在基本机器中的命令输出。

红队:Evil-Winrm 详细指南插图7

我们可以通过检查保存的日志内容来验证它,你会注意到它已经捕获了我们使用 ipconfig 命令的终端的屏幕截图。

红队:Evil-Winrm 详细指南插图8

禁用远程路径完成

默认情况下,它带有远程路径完成功能,但如果我们希望禁用远程路径完成,我们可以在命令中添加-N标志。这取决于个人是否喜欢打开或关闭自动完成功能,但如果您对自动完成功能感到满意,则可以随意使用其默认功能。

红队:Evil-Winrm 详细指南插图9

禁用彩色界面

每当我们使用 evil-winrm 建立任何远程会话时,它都会生成一个漂亮的彩色命令行界面。尽管如此,如果我们希望禁用彩色界面,那么我们也可以在建立会话时使用-n标志和我们的命令来实现。

红队:Evil-Winrm 详细指南插图10

运行可执行文件

此功能旨在解决我们在进行 PowerShell 会话时在评估期间遇到的实时问题和困难,我们不能将其放到命令行中。在这种情况下,我们希望能够在 evil-winrm 会话中运行 exe 可执行文件。假设我们有一个要在目标系统中运行的可执行文件。

红队:Evil-Winrm 详细指南插图11

 Hackplayers 团队再次设计了这个工具并添加了一个额外的功能,我们可以在 evil-winrm PowerShell 会话中像魅力一样运行所有可执行文件。同样,当我们使用 -s 标志来执行 PowerShell 脚本路径时,这次我们使用-e标志来执行 exe 可执行二进制文件。在下面的示例中,我们发布了一个路径,其中 WinPEAS.exe 可执行文件存储在本地计算机中,并使用evil-winrm 菜单中的附加功能( Invoke-Binary )运行它。此功能允许我们执行通常在命令行 shell 中运行的任何 exe 二进制文件。

红队:Evil-Winrm 详细指南插图12

一旦我们设置了可执行文件路径,我们就可以使用我们希望在目标系统中运行的任何可执行文件。在下面的示例中,我们调用 WinPEASx64.exe 并使用 evil-winrm 将其运行到目标系统中。如我们所见,它按预期工作正常。

红队:Evil-Winrm 详细指南插图13

使用 Evil-winrm 进行服务枚举

有时,许多开发后枚举工具无法检测到目标系统中运行的服务名称。在这种情况下,我们可以使用 evil-winrm 来查找目标系统中运行的服务名称。为此,我们可以再次转到菜单并使用服务功能。它将列出所有运行到受感染主机的服务。当我们看到目标系统中安装了任何未引用的服务并且其他后期开发工具无法识别服务名称时,此功能非常方便。

红队:Evil-Winrm 详细指南插图14

使用 Evil-winrm 进行文件传输

毫无疑问,evil-winrm 已尽最大努力使我们的工作尽可能简单。我们总是需要将文件从攻击机器传输到远程机器以执行枚举或其他操作。我们可以简单地使用带有文件名的上传命令,而不是设置 python 服务器并从目标系统下载它。这是 evil-winrm 工具提供的一项拯救生命的功能,尤其是在我们面对目标系统中设置的出站流量规则以及我们将 evil-winrm 与代理一起使用时的情况下。在下面的示例中,我们正在上传目标系统中的notes.txt文件。

上传 /root/notes. 文本文件

红队:Evil-Winrm 详细指南插图15

同样,我们可以使用下载命令和文件名将文件从目标系统下载到攻击者的机器上。

红队:Evil-Winrm 详细指南插图16

我们可以通过导航我们在攻击机器上下载 notes.txt 的路径来验证它。

红队:Evil-Winrm 详细指南插图17

从 Docker 使用 Evil-winrm

此工具也可以安装在 docker 中。如果我们在安装了evil-winrm的docker中有另一个系统,那么我们也可以从docker中调用它。它将像在主基础系统中一样工作,没有任何问题。为此,请遵循 docker 语法以及 evil-winrm 命令从 docker 调用它。

docker run –rm -ti –name evil-winrm oscarakaelvis/evil-winrm -i 192.168 。1 . 105 -u 管理员 -p ‘Ignite@987’

红队:Evil-Winrm 详细指南插图18

使用 Evil-winrm 使用密钥登录

Evil-winrm 还允许我们使用公钥和私钥建立远程会话,使用公钥的-c标志和私钥的-k标志。此外,我们还可以添加-an S标志来启用 SSL 来使我们的连接加密和安全。

邪恶的 winrm -i 10.129 。227 。105 -c 证书。pem -k 私钥。pem -S

红队:Evil-Winrm 详细指南插图19

结论

我们已经简要探讨了 Evil-winrm 工具及其特殊功能,这些功能将使我们的内部评估更加容易。我们探索了多种使用 evil-winrm 建立远程会话的技术。此外,我们还探索了它的一些高级功能,这些功能将提高我们在生产环境和 CTF 中的生产力。最后,我要感谢 Hackplayers 制作了这么棒的工具。我希望你今天学到了一些新东西。