在内网中没有凭据

假设你无法通过探测外部服务获得任何密码,因此决定潜入大楼内部。你等到午饭后,潜入 Cyber Space Kittens 的办公室,找到吸烟室。即使你不抽烟,但你也知道抽烟的人有结伙心理。你点上一支烟,但是可以不和他们说话,但当他们走进他们的大楼时,你就可以跟着他们一起进去,轻松极了!

既然你已经闯入了 CSK 的内部环境,你可不想在那里呆太久被抓住。你拿出你非常信任的 drop box,找到一间空办公室,把它插上网络,检查你的手机,看看它是否正确传回了 beacon 到了你的家中,确认之后迅速逃回安全的地方。

当你汗流浃背地回到家时候,迅速地找到你的笔记本电脑,登陆你的 VPN 服务器,当你看到那个 beacon 还在连接家里的时候,你就可以松一口气了。现在你可以现在用 SSH 连接 beacon,可以慢慢地去拓展受感染主机的内部网络,在多个主机之间移动,并尝试拿到你所关心的数据。

Responder

就像在上一个活动中一样,我们使用 Responder 在网络上侦听并伪造请求以获得网络上的凭据。回顾一下上本书,当网络上的系统执行查找 DNS 主机名失败时,受害者系统就会使用 Link-Local Multicast Name Resolution(简称 LLMNR)和 Net-BIOS Name Service(NBT-NS)进行回退 DNS 名称解析。当受害者的电脑无法进行 DNS 查找时,他就会开始询问网络上的任何人是否知道该主机名的解析方法。

一个简单而通用的例子:假设你电脑里有一个固定的共享硬盘驱动器目录,为:\cyberspacekittenssecretdrive\secrets。有一天,IT 部门从网络中删除了共享驱动器,它就不存在了。但由于名为 cyberspacekittenssecretdrive 的服务器仍然有一个挂载的驱动器,因此系统将不断询问网络是否有人知道此驱动器并回应它的 IP。虽然现在这种文件共享示例可能很少见,但是,由于以前连接的系统很可能不再存在于网络上,所以这个问题仍然会发生。我们已经从已挂载的驱动器、具有硬编码服务器的应用程序以及许多次的错误配置中看到了这一点。

我们可以使用像 Responder 这样的工具来利用那些寻找有主机名的系统,并使用我们的攻击服务器对其进行响应。更好的是,Responder 可以更进一步,充当 WPAD(Web Proxy Auto-Discovery Protocol,Web 代理自动发现协议)服务器,通过我们的攻击者服务器代理所有数据,但这是另一种攻击了。

  • cd /opt/Responder
  • ./Responder.py -I eth0 –wrf

现在,因为我们处于 Windows 的企业环境中,我们可以假设它很可能正在运行 Active Directory(活动目录)。因此,如果我们能够响应来自受害者主机的 DNS 查找请求,我们就可以使他们的系统连接到我们的 SMB 共享服务。由于它们正在连接到 \cyberspacekittenssecretdrive 驱动器,因此我们将强制受害者使用他的 NTLMv2 凭证(或缓存的凭证)进行身份验证。我们捕获的这些凭证不是直接的 NTLM 哈希,而是 NTLM 请求/响应哈希(NTLMv2-SSP)。这些哈希表的唯一缺点是,破解它们的速度要比普通的 NTLM 哈希表要慢得多,但是相比于我们要进行的大型凭证爆破动作来说,这不是一个大麻烦。

在内网中没有凭据 - 图1

我们可以获取 NTLMv2哈希,将其传递给本地的 hashcat 程序破解此密码。在 hashcat 中,我们需要指定散列格式 “-m”( https://hashcat.net/wiki/doku.php?id=example_hashes )为 Net-NTLMv2 。

  • hashcat -m 5600 hashes\ntlmssp_hashes.txt passwordlists/*

现在,假设我们并不是真的想破解哈希,或者我们不介意提醒用户有一些值得可疑的地方。我们所能做的是强制一个基本身份验证弹出窗口,而不是采用 -F(ForceWpadAuth)和 -b(basic auth)的要求使用 Net-NTLMv2凭据。

  • python ./Responder.py -I eth0 -wfFbv

在内网中没有凭据 - 图2

从上面的图像中可以看到,用户将被提示输入用户名和密码,大多数人只是按部就班的按提示输入。一旦他们提交了他们的用户名和密码,我们将能够捕获他们的密码明文!

在内网中没有凭据 - 图3

更好的 Responder(MultiRelay.py)

使用 Responder 和破解 NTLMv2-SSP 哈希的问题是,破解这些哈希所需的时间可能很长。更糟糕的是,我们所处的环境中的管理员的密码可能是20多个的字符。那么,在这些情况下我们能做什么呢?如果所处环境不强制执行 SMB 签名( 我们可以通过快速的 nmap 脚本扫描找到 - https://nmap.org/nsedoc/scripts/smb-security-mode.html ),我们可以使用一个巧妙的小技巧来重新播放捕获的 SMB 请求。

Laurent Gaffie 在 Responder 中加入了一个处理身份验证重放攻击的工具。根据 Laurent 的网站描述,MultiRelay 是一个强大的渗透测试实用程序,包含在响应程序工具的文件夹中,使你能够在选定的目标上执行目标 NTLMv1 和 NTLMv2 中继器。目前已经实现多中继将 HTTP、WebDav、代理和 SMB 身份验证传递给 SMB 服务器。这个工具可以定制为接受一系列用户账户信息来中继到一个目标。这背后的概念是只针对域管理员、本地管理员或特权帐户。”[http://g-laurent.blogspot.com/2016/10/introducing-responder-multiray-10.html]

从较高的层面来看,MultiRelay 不会强制受害者对我们的 SMB 共享进行身份验证,而是将任何含有身份验证的请求转发给我们选择的受害者主机。当然,中继用户需要有另一台机器的访问权限;如果攻击成功,我们不需要处理任何密码和哈希破解。首先,我们需要配置我们的 Responder 和 MultiRelay:

  • 编辑 Responder 配置文件以禁用 SMB 和 HTTP 服务器
    • 编辑 Responder.conf
    • 将 SMB 和 HTTP 更改为 Off
  • 开始 Responder
    • python ./Responder.py -I eth0 -rv
  • 在一个新的终端窗口中启动多中继
    • /opt/Responder/tools
    • ./MultiRelay.py -t -c -u ALL

一旦可以实现通过中继连接到受害者主机,我们就需要考虑要在受害者的主机上执行什么操作。默认情况下,MultiRelay 可以生成一个比较基础的 shell,但我们也可以自动执行 Meterpreter PowerShell payloads、Empire PowerShell payloads、dnscat2 PowerShell payloads、PowerShell 脚本(用于下载和执行 C2代理)、Mimikatz,或者只是运行 calc.exe 作为测试娱乐。

在内网中没有凭据 - 图4

参考文献

PowerShell Responder

一旦我们攻击进了 Windows 系统,我们就可以在受害者机器上使用 PowerShell 进行 Responder 攻击。原始 Responder 的两个功能都可以通过以下两个工具执行:

更简单的是,这一切都已经集成在 Empire 中了。