早在 2013 年 9 月, 蜘蛛实验室 ( Spider Labs) 就发表过一篇题为 "SpiderLabs 在你内网中获取域管的五大方式" 的文章. 这篇文章是我继该文的, 应该说是非官方的 "Part 2" 部分.
1. Netbios 和 LLMNR Name Poisoning(中毒攻击)
虽说如今 Netbios/LLMNR 并不像 2013 年那么盛行, 但在测试中绝大多数人都能通过此类攻击, 获取 NTLMv1 和 NTLMv2 哈希值并对对其进行破解利用. 你可以借助像 https://github.com/trustedsec/hate_crack 这样的高级框架, 来帮助你完成对哈希值的破解任务.
我个人通常使用的都是一些通用的字典列表, 例如 "https://webcache.googleusercontent.com/search?q=cache:BV8AEB0cWtcJ:https://dazzlepod.com/uniqpass/+&cd=1&hl=en&ct=clnk&gl=us" 以及常用 hashcat 规则集 "base64". 但并不是所有密码都能被破解的, 对于一些强制性的复杂密码类型, 我们往往别无选择.
Responder 可以说是与 mitm 中毒和欺骗攻击相关首选工具. 目前该项目仍然由 Laurent Gaffie 维护.
https://github.com/Kevin-Robertson/Inveigh 是一款 Windows PowerShell 的 LLMNR/NBNS 协议欺骗 / 中间人工具.
它的核心是一个. NET 数据包嗅探器, 它侦听并响应 LLMNR/mDNS/NBNS 请求, 同时还会通过 Windows SMB 服务捕获传入的 NTLMv1/NTLMv2 身份验证尝试.
2. 中继攻击
较新的 MultiRelay 工具目前是由 Laurent Gaffie 维护的.
但我个人更喜欢 impacket 的工具, 用于中继和其他渗透测试需求. 我发现 Impacket 的工具, 在大多数 unix 上以及在 Mac OS 本地运行都非常的可靠和稳定. 与其他免费的开源工具相比, 这些工具在主机上执行时会留下的痕迹也相对小很多(如果你考虑这方面的问题, 那么无疑这是一个最佳的选择). 你可以安装 https://github.com/CoreSecurity/impacket , 为你的测试做准备.
(1) SMB 中继解释: smbrelayx.py
在 SMBRelay 攻击中, 攻击者要以中间人攻击方式来实施. 攻击者等待某人来验证在他网络上的目标服务器. 这样一来可以利用漏洞扫描器 + 管理员自动验证主机脚本. 当自动化进程连接到攻击者, 他通过他的目标 (网络上的其他系统, 也许是服务器) 进行身份验证. 目标会产生 challenge, 并将其发送给攻击者. 攻击者发送 challenge 回到原始扫描系统. 扫描系统拥有哈希值的加密功能正确密码的哈希值会将其发送给攻击者. 攻击者传递正确的加密的响应返回给他的目标, 并成功验证.
阻止这种攻击的唯一方法是强制执行服务器 SPN 检查禁用 SMB 端口. 当然了, 你也可以选择禁用 SMB 的数据输出端口: 137,138,129 和 445, 使用一些主机签名和数据包签名, 或启用一些额外的保护措施.
(2) NTLM 中继解释: ntlmrelayx.py
用户请求访问. 用户尝试通过提供用户凭据登录到客户端. 登录前, 客户端计算机缓存密码的哈希值并放弃密码. 客户端向服务器发送一个请求, 该请求包括用户名以及纯文本格式的请求. 服务器发送质询消息. 服务器生成一个称为质询的 16 字节随机数(即 NONCE), 并将它发送到客户端. 客户端发送应答消息. 客户端使用由用户的密码生成的一个密码哈希值来加密服务器发送的质询. 它以应答的形式将这个加密的质询发回到服务器. 服务器将质询和应答发送到域控制器. 服务器将用户名, 原始质询以及应答从客户端计算机发送到域控制器. 域控制器比较质询和应答以对用户进行身份验证. 域控制器获取该用户的密码哈希值, 然后使用该哈希值对原始质询进行加密. 接下来, 域控制器将加密的质询与客户端计算机的应答进行比较. 如果匹配, 域控制器则发送该用户已经过身份验证的服务器确认. 服务器向客户端发送应答. 假定凭据有效, 服务器授予对所请求的服务或资源的客户端访问权.
NTLM 身份验证是一个复杂的协议, 这里 http://davenport.sourceforge.net/ntlm.html 提供了非常详细的说明.
SMBRelay 和较新的攻击都利用了 SMB 签名, 并允许特权用户通过 SMB/NTLM 身份验证机制进行身份验证.
需要注意的是, 在不同网络上的 Windows 主机列表包含的目标很重要. 我有一个很好的技巧就是以随机方式创建非签名主机的目标列表
下面的主机, 使我能更快的获取域管允许域用户本地管理员访问 SQL 服务器, 该服务器与域控制器共享相同的本地管理员密码
默认情况下, 如果不指定要执行的二进制文件, ntlmrealyx 将运行 secretsdumps.
成功执行 NTLM 中继后, 你会在执行 ntmrelayx 的目录中找到名为 "IP_samhashes" 的哈希文件.
拿到哈希后, 我使用 impacket 的 wmiexec.py 脚本, 利用 pass-the-hash 技术最终获得了 DA
在上面的场景中, 我能够将凭据从一个网络中继到另一个网络, 并检索可以通过 wmiexec.py 传递的管理员散列. 并且可以让我在不破解哈希的情况下, 直接获取域管理员权限.
- 3. MS17-010
- nmap -Pn -p445 - open - max-hostgroup 3 - smb-vuln-ms17-010 script https://isc.sans.edu/forums/diary/Using+nmap+to+scan+for+MS17010+CVE20170143+EternalBlue/22574/
ETERNALBLUE,ETERNALCHAMPION,ETERNALROMANCE 和 ETERNALSYNERGY 是 2017 年 4 月 14 日 Shadow Brokers 泄露出的四个 NSA 威胁漏洞. WannaCry/WannaCrypt 是一个利用 ETERNALBLUE 漏洞进行传播的 "蠕虫式" 勒索病毒软件, EternalRocks 比比勒索病毒 WannaCry 更隐蔽危害也更大, WannaCry 只利用了 2 个漏洞, 而 EternalRocks 则利用了 7 个漏洞. Petya 也是一个勒索病毒程序, 首先它会利用 Microsoft Office 中的 CVE-2017-0199 漏洞, 然后通过 ETERNALBLUE 进行传播.
4. Kerberoasting
我曾多次成功在 Active Directory 域环境中, 使用被称之为 Kerberoasting 的攻击来提升权限. Tim Medin https://twitter.com/TimMedin 在 SANS Hackfest 2014 https://files.sans.org/summit/hackfest2014/PDFs/Kicking the Guard Dog of Hades - Attacking Microsoft Kerberos - Tim Medin(1).pdf 上展示了这种技术, 从那以后也出现了许多与该技术细节相关的精彩文章和会议讲座.
Microsoft 的 Kerberos 实现可能有点复杂, 其主要利用了旧版 Windows 客户端的传统 Active Directory 支持, 以及使用的加密类型和用于加密和签署 Kerberos 票据的 key material. 实质上, 当域帐户被配置为在环境中运行服务时 (例如 MSSQL), 服务主体名称(SPN) 在域中被使用将服务与登录帐户相关联. 当用户想要使用特定资源时, 他们会收到一个当前运行该服务帐户的 NTLM 哈希和签名的 Kerberos 票据.
下面的例子来自 mubix 的网站 https://room362.com/post/2016/kerberoast-pt1/ :
- root@wpad:~/impacket/examples# ./GetUserSPNs.py -dc-ip 192.168.168.10 sittingduck.info/notanadmin
- Impacket v0.9.15-dev - Copyright 2002-2016 Core Security Technologies
- Password:
- ServicePrincipalName Name MemberOf PasswordLastSet
- ---------------------------------- ---------- ------------------------------------------------ -------------------
- http/win10.sittingduck.info uberuser CN=Domain Admins,CN=Users,DC=sittingduck,DC=info 2015-11-10 23:47:21
- MSSQLSvc/WIN2K8R2.sittingduck.info sqladmin01 2016-05-13 19:13:20
- 5. mitm6
Mitm6 是一个非常强大的工具, 用于在典型的 Windows 广播网络上获取和提升权限. 当其他攻击都失败时, 你可以尝试 smbrelay + mitm6 或 ntlmreayx 攻击. 总之请发挥你的想象力, 你将收获意想不到的惊喜!
与 ntlmrelayx 的用法:
mitm6 与 ntlmrelayx 应该说是最好的拍档. 在这种情况下, 目标 DNS 会被欺骗, 导致受害者以 HTTP 和 SMB 的连接方式连接到 ntlmrelayx. 为了确保 ntlmrelayx 在 IPv4 和 IPv6 上侦听, 我们可以使用 - 6 参数. 要获取 WPAD 的凭据, 我们需要在命令提示符中 - wh 参数后添加主机, 并指定 WPAD 文件所在的主机(因为 DNS 服务器是 mitm6, 所以本地域中的任何不存在的主机名都可以使用).
mitm6 是一个可以利用默认 Windows 配置, 接管默认 DNS 服务器的渗透测试工具. 首先让 mitm6 开始在攻击者机器的主接口上侦听, 并通过 DHCPv6 向 Windows 客户端请求 IPv6 配置. mitm6 将会应答这些 DHCPv6 请求, 并为受害者分配本地链路范围内的 IPv6 地址. 而在实际的 IPv6 网络中, 这些地址由主机本身自动分配, 不需要由 DHCP 服务器来配置, 这使得我们有机会将攻击者 IP 设置为受害者的默认 IPv6 DNS 服务器, 并将受害者流量重定向到攻击者机器而不是合法服务器.
来源: http://netsecurity.51cto.com/art/201804/569842.htm