使用 Responder 抓取 NTLM 哈希然后做什么?

admin 2024年6月12日15:37:27评论15 views字数 4659阅读15分31秒阅读模式
 

本地网络上有很多东西可供我们作为渗透测试人员利用。在 Windows 环境中,通常存在一些协议(LLMNR 和 NBT-NS),这些协议很容易被利用。实际上,您正在运行中间人攻击,并利用它来拦截用户发送的流量,以便获取他们的哈希密码。

为此,您需要控制 LAN 中的一台机器,对于我们来说,这通常意味着我们的笔记本电脑,或者如果客户通过 VPN 启用远程测试,则意味着一台虚拟机。

运行响应程序

多年来,首选工具一直是Responder。

如果您是在远程服务器而不是笔记本电脑上执行此操作,则应首先启动“tmux”。我之前曾在博客中介绍过持久 SSH 会话。超级 tl;dr 版本如下:

tmux new -s <session name>tmux new -s responder

如果断开连接,则需要重新建立 SSH 连接。然后您可以重新连接:

tmux attach -t <session name>tmux attach -t responder

值得你花精力去了解更多有关 tmux 的知识:

https://tmuxcheatsheet.com/

至于运行响应器,就这么简单:

responder -I <interface>responder -I eth0

它能够做很多事情,例如用虚假提示提示用户获取纯文本密码。在此默认配置下,它将查找 LLMNR 和 NBT-NS 流量。它将代表受害者正在寻找的服务器做出响应并捕获其 NTLM 哈希。

这些哈希必须先使用强力手段破解才能使用。这与您可以从注册表中提取的本地 Windows 帐户密码不同,您可以使用传递哈希来破解它们。

响应程序日志文件

当响应程序运行时,它会将详细日志保存在此文件夹中:

  /usr/share/responder/logs

对于每个捕获的哈希,都会有一个类似“SMB-NTLMv2-SSP-<ip>.txt”的文件。这将包含用于该主机的哈希。同一帐户会有重复的哈希,因为您可能多次捕获同一个用户。

为了完整起见,您可能想尝试破解每个不同的哈希,因为如果受害者输入了错误的凭据怎么办?实际上,当您拥有数百个唯一用户哈希时,这种风险非常小。如果您想破解所有内容,请获取所有这些“SMB-NTLMv2-SSP-<ip>.txt”文件并通过 hashcat 运行它们(稍后显示)。

当我有数百个哈希时,我使用的文件是“Responder-Session.log”。这相当于该工具在捕获事物时向终端吐出的内容。为了使用它,我使用 bash 循环提取每个用户名的第一个哈希。

Bash 循环提取唯一哈希值

首先,我们需要列出我们捕获的唯一用户名:

strings Responder-Session.log | grep "NTLMv2-SSP Hash" | cut -d ":" -f 4-6 | sort -u -f | awk '{$1=$1};1'

关于这一点的一些观点:

  1. 排序命令“-u”(唯一)“-f”(不区分大小写)。
  2. Cut 非常擅长在输出中分割一行,其中包含分隔符,可让您从结果中选择特定列。使用“-f 4-6”,我们表示我们的用户名也位于特定域,即“cornerpirate::DOMAIN”。这意味着如果跨域存在相同的用户名,那么您将包括它们。
  3. awk 命令会删除第一个字符,如果没有它,您的用户名前面就会有一个空格。

对于每个用户名,我们需要获取第一个 NTLMv2 哈希并将其保存到文件中:

for user in `strings Responder-Session.log | grep "NTLMv2-SSP Hash" | cut -d ":" -f 4-6 | sort -u -f | awk '{$1=$1};1'`doecho "[*] search for: $user";strings Responder-Session.log | grep "NTLMv2-SSP Hash" | grep -i $user | cut -d ":" -f 4-10 |  head -n 1 | awk '{$1=$1};1' >> ntlm-hashes.txtdone

结果保存在“ntlm-hashes.txt”中。请注意,它使用“>>”重定向到该文件。这意味着如果您再次运行此循环,您将看到添加重复的哈希值。因此,请记住在再次运行循环之前删除该文件。

除此之外,唯一的区别是 cut 命令获取所有列“4-10”,而不仅仅是用户名 4,并且使用“head -n 1”仅获取该用户哈希值的第一次出现。

我添加了“echo”命令,以便您确定它正在执行其工作。否则,此循环可能需要一些时间,您可能会担心。

对于大多数意图和目的来说,这个 for 循环将为你提供足够的哈希值来进行攻击。

Hashcat 命令破解 NTLMv2 哈希

在 x64 Windows 系统上,您的命令如下:

hashcat64.exe -m 5600 <hashes file> <wordlist> -o <output file>hashcat64.exe -m 5600 ntlm-hashes.txt Rocktastic12a -o cracked.txt

可以从Nettitude下载“Rocktastic12a” 。这个单词表大约有 13GB,是一个合理的单词表,不会占用过多的磁盘空间。它在大多数情况下都很有用。

当哈希被破解时,它们将被保存在输出文件(cracked.txt)中,您可以在其中提取它们以供使用。

使用 Metasploit 散播破解的密码

Metasploit 包含“smb_login”模块,通常用于密码暴力破解。它还有一个“USERPASS_FILE”选项,如下所述:

使用 Responder 抓取 NTLM 哈希然后做什么?

在尝试登录时,我们还需要适当设置“SMBDomain”值。在开始之前,我们需要确定我们拥有多少个域的凭证:

  cat cracked.txt | cut -d ":" -f 3 | sort -u -f

这将列出您已破解哈希值的域名的字母列表。您需要为每个域名创建一个“USERPASS_FILE”。以下循环将完成您需要的操作:

for domain in `cat cracked.txt | cut -d ":" -f 3 | sort -u -f`dogrep -i $domain cracked.txt| cut --output-delimiter=' ' -d ":" -f 1,7 >> userpass_$domain.txtdone

输出将存储在一个或多个名为“userpass_*.txt”的 txt 文件中。

对于每个目标域,您现在将选项放入“smb_login”中:

set SMBDomain <DOMAINNAME>set USERPASS_FILE /path/to/userpass_domain.txt

在点击“利用”之前,您需要使用“RHOSTS”选项告诉 Metasploit 要登录哪些主机。我假设您正在进行合法的渗透测试,因此您可以在网络上制造噪音。在红队交战中,您不会做这种事,因为您的任务是避免被发现。

“主要 yolo” 是向几乎每个使用 SMB 的 TCP 端口 445 的主机发送这些凭据。一个 IP 突然通过网络使用多个帐户登录,就像是放了一堆烟花让蓝队看到一样。这就是为什么你只会在 Pentest 上这样做,而不是在你需要巧妙的地方。

“次要的 yolo” 是查看响应者日志文件夹并提取人们登录的 IP 地址。这些系统可以提前高度确定凭证是否有效。

不管你如何操作,请适当设置“RHOSTS”,然后输入“exploit”。这将告诉你有效凭证的列表。它还将填充 Metasploits 受损凭证数据库,你可以通过“creds”命令访问该数据库。你绝对应该习惯使用 creds,因为在交战期间拥有可查询的已知有效凭证列表是一个巨大的优势。

怎么办?

回顾一下,我们从 LAN 上的攻击者的角度出发,在没有任何知识或密码的情况下找到了有效的域凭据。

如果你很幸运,那么一些被盗用的凭证已经拥有提升的权限,那么你就大功告成了。最近我有 250 个左右被盗用的账户,但每个账户都只属于“域用户”组。所以剩下的就是假设我们只有这些权限,我们能做什么?

使用 Bloodhound 进行域名侦察

Bloodhound 非常棒。当您有权访问域帐户时,您可以使用以下 Python 脚本https://github.com/fox-it/BloodHound.py 从您的计算机收集数据:

python3 bloodhound.py -d <DOMAIN> -u <USERNAME> -p <PASSWORD> -gc <DOMAIN_CONTROLLER_ADDRESS> -c all

如果你已经在机器上有一个交互式 shell,那么你也可以使用各种其他“摄取器”脚本。

这将在当前工作目录中创建一堆 .json 文件。有很多博客描述了如何安装 Bloodhound 用户界面。但是,其中许多在 2021 年已经过时了,因为以前安装起来比较困难。现在有一个 apt 包,因此使用 Docker 不再是最简单的途径(但是使用容器是短暂的,如果您需要避免缓存客户数据,这可能会对您有用)。

安装 neo4j:

apt-get install neo4j

然后使用以下命令运行:

neo4j console

按照终端中显示的说明进行操作。这将要求您使用 Web 浏览器设置带有用户名和密码的数据库。您需要知道这些凭据,以便 Bloodhound 稍后可以使用 Neo4j。

接下来安装bloodhound:

apt-get install bloodhound

只要 neo4j 正在运行,您只需在终端运行新命令“bloodhound”并输入您的 neo4j 凭据即可!

导入这些 json 文件,然后浏览 UI 以发现有关域的重要信息。您可以使用它来确认“域管理员”组中有多少用户、他们登录了哪些机器,以及加载更多内容。

检查 SMB 共享

CrackMapExec是一款很棒的工具。它允许您指定一组凭据,然后遍历整个网络以确定他们可以访问哪些 SMB 共享。通常情况下,这些共享上存在不安全的文件权限。

优先探索您有写权限的任何共享。如果该共享有可执行文件(.msi、.exe、.bat、.ps1 等),那么您就有机会修改它们。这样做会给您带来一个简单的特权提升向量,因为受害者会执行您提供的代码。警告:未经客户许可,请勿这样做。

如果您有读取任何配置文件的权限,那么请寻找纯文本凭据。这些显然会给您带来横向移动的机会。使用此技术获取数据库访问权限很常见。

如果您有权访问文档,那么请寻找有趣的内容。如果有一个访问量很大的 Excel 文件,那么请考虑使用动态数据交换 (DDE) 在其他用户的 PC 上执行命令。警告:这将在代码执行前向受害者发出安全警告,再次在客户许可的情况下执行此操作。

CrackMapExec 的文档非常棒。你可以用它做一些很棒的事情,所以我真心推荐它。

然后呢?

我必须停下旅程。基本上就是现在。此时您应该已经获得了重要资源的访问权限。您需要在执行此操作时保留详细的笔记,以便确切了解您如何获得哪些权限或访问级别。如果报告非常清楚地说明您访问了哪些内容以及您是如何到达那里的,客户会感谢您的。

我在报告中做了一个附录,名为“路由到域管理员”,从初始点开始,然后随着权限级别的提高,我会解释如何操作。执行某个步骤可能有多种方法,因此您也需要记录它们。

祝您狩猎愉快。

Grabbing NTLM hashes with Responder then what?https://cornerpirate.com/2021/06/17/grabbing-ntlm-hashes-with-responder-then-what/

原文始发于微信公众号(Ots安全):使用 Responder 抓取 NTLM 哈希然后做什么?

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月12日15:37:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用 Responder 抓取 NTLM 哈希然后做什么?https://cn-sec.com/archives/2842178.html

发表评论

匿名网友 填写信息