ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

域渗透核心:哈希传递、票据传递、域权限提升

域渗透核心:哈希传递、票据传递、域权限提升 11-域渗透核心哈希传递、票据传递、域权限提升合规声明本文所有技术内容仅在本地靶场VulnHub、Metasploitable、自建域环境或已签署书面授权的渗透测试项目中演示。未经授权对他人系统进行渗透测试属违法行为可能触犯《刑法》第285条非法侵入计算机信息系统罪与第286条破坏计算机信息系统罪。本系列是面向防御者的白帽教程核心目标是让蓝队理解攻击链路从而做好检测与加固。一、为什么域渗透是薪资分水岭前面十篇我们聊了外网打点、Web漏洞利用、主机提权这些能力解决的是拿下第一台机器的问题。但真实的企业内网里几百上千台服务器通过 Active DirectoryAD域统一管理攻击者的目标从来不是单台机器而是域控Domain ControllerDC——拿下域控等于拿下整个域。这就是为什么招聘 JD 里熟悉域渗透往往和薪资上限直接挂钩单机渗透解决点的问题市场价一般内网横向解决面的问题价格上浮域渗透解决体的问题能从一台失陷的普通 PC 一路打到全域控制这是分水岭。域渗透攻击链可以概括为四步① 域内信息收集我是谁域里有什么谁是域管 ↓ ② 权限提升与凭据获取拿到高权限用户的 hash/票据 ↓ ③ 横向移动到域控PtH / PtT / 域提权漏洞 / DCSync ↓ ④ 全域控制导出 krbtgt hash、伪造黄金票据、建立持久化本文按这个链路把每一步的核心原理拆开讲透。理解原理比背命令重要一万倍——面试官问哈希传递为什么能成功你答不上来 NTLM 认证流程前面背再多命令都是白搭。二、前置知识域环境速览自建靶场前先搞懂几个概念域DomainAD 中最基本的逻辑单元所有计算机、用户、组都在域内统一认证。域控DC运行 AD DS 角色的服务器存储全域的账户数据库ntds.dit。krbtgt域内内置服务账号Kerberos 密钥分发中心KDC使用的账号它的 NTLM hash 是整个域的根密钥——后面黄金票据部分会反复出现。域管Domain Admins域内最高权限组。靶场搭建建议用两台虚拟机即可——一台 Windows Server 2016/2019 配置为 DC安装 AD DS 与 DNS 角色域名叫lab.local之类一台 Windows 10 加入域的普通成员机再建几个普通域用户。所有演示在虚拟机快照下进行打完恢复快照。三、域内信息收集先搞清楚地形拿到域内任意一台机器的 shell 后比如通过外网 Web 漏洞第一步不是急着提权而是收集域信息。以下命令全部在本地靶场的失陷成员机上执行。3.1 判断当前机器是否在域内net config workstation逐行解释该命令显示工作站配置输出中的工作站域Workstation domain字段如果是域名而非WORKGROUP说明机器加域了登录域字段显示当前登录账号所属的域。systeminfo | findstr /i domain逐行解释systeminfo输出完整系统信息findstr /i domain不区分大小写地过滤包含 domain 的行systeminfo输出中域Domain字段直接给出域名同时注意输出的补丁列表为后续提权选洞做参考。3.2 收集域用户、域管、域控net user /domain :: 枚举域内所有用户 net group domain admins /domain :: 列出域管理员组成员 net group domain controllers /domain :: 列出域控机器 net accounts /domain :: 查看域密码策略最小长度、锁定阈值逐行解释net user /domain向域控查询用户列表注意参数是/domain不带则查本机net group domain admins /domain域管名单是攻击者的头号目标拿到域管凭证基本等于游戏结束net group domain controllers /domain定位域控的 IP再配合nslookup解析net accounts /domain密码策略决定了后续爆破与喷洒spray的可行性——锁定阈值 5 意味着每用户试 4 次密码就要收手。更现代的工具是 PowerViewPowerShell 域信息收集脚本属于 PowerSploit 工具集和 BloodHound图数据库可视化攻击路径限于篇幅不展开靶场练习时务必上手。防御视角上这些查询会产生大量 4776/4662 等目录服务审计事件是检测侦察行为的重要信号。四、哈希传递Pass the HashPtH4.1 先补基础NTLM 认证流程拆解要理解 PtH 为什么能成必须先理解 NTLM 认证。NTLM 挑战-响应流程分三步① 协商Negotiate客户端告诉服务器我会 NTLM ② 挑战Challenge服务器生成一个 16 字节随机数Challenge下发给客户端 ③ 认证Authenticate客户端用自己的 NTLM hash 加密 Challenge 把加密结果NetNTLM hash发回服务器把用户名 Challenge 加密结果 转发给域控验证关键点来了域控验证的方式是取出该用户的 NTLM hash同样加密一遍 Challenge比对两次结果是否一致。整个过程从头到尾客户端不需要输入明文密码服务器不需要知道用户的 hash只做转发认证凭据是拥有 NTLM hash这件事本身。所以攻击者只要拿到了某用户的 NTLM hash比如通过上一系列的本地提权 hash 导出就可以直接把 hash 当作凭据向其他机器发起认证。服务器关心的只是Challenge 加密结果对不对它根本不区分这个 hash 是用户开机输入密码算出来的还是攻击者塞进来的——这就是哈希传递Pass the Hash。一句话总结NTLM 协议证明的是你持有 hash而不是你知道密码持有即可传递。4.2 NTLM hash 是怎么来的用户密码经过如下变换得到 NTLM hashUTF-16LE(密码) → MD4 → NTLM hashMD4 早已不安全且 NTLM 不加盐salt所以 hash 可以被彩虹表/离线爆破还原——这也是为什么 Windows 密码导入的 hash和明文在使用层面几乎等价。4.3 靶场演示思路在授权靶场中常见演示路径后续第 12 篇会给完整命令行在失陷的成员机上用提权后的 mimikatz 执行sekurlsa::logonpasswords导出内存中缓存的 hash用 Impacket 的psexec.py或wmiexec.py以域名/用户名hash的形式直接对目标机器发起认证若该 hash 属于本地管理员即可获得目标机 shell无需知道明文密码。注意 PtH 的适用边界NTLM hash 只能走 SMB、WMI、WinRM 等支持 NTLM 认证的协议传递的是登录凭据不是Kerberos 票据那是 PtT 的事。五、票据传递Pass the TicketPtT5.1 Kerberos 认证流程速成现代域环境默认优先走 Kerberos。流程记牢四个词AS → TGT → TGS → ST。① 客户端 → KDC(AS)用户密码 hash 加密时间戳请求认证预认证 ② AS 返回 TGTTGT 由 krbtgt 的 hash 加密客户端打不开也无需打开 ③ 客户端 → KDC(TGS)出示 TGT请求访问某服务如 cifs/fileserver ④ TGS 返回 ST服务票据用目标服务账号的 hash 加密 ⑤ 客户端把 ST 出示给目标服务器服务器用自己的 hash 解开验证用生活化的比喻TGT 是大厦门禁卡进大厦KDC办理一次ST 是某个房间的临时钥匙去前台TGS凭门禁卡换。整个体系的安全根基有两个krbtgt 的 hash能伪造它就能签发任意 TGT黄金票据服务账号的 hash能伪造它就能签发任意 ST白银票据。5.2 PtT 与 PtH 的区别PtT 传递的是票据文件TGT 或 ST本身而不是 hash。Kerberos 协议验证的是你有没有这张票不管票是正路办的还是偷来的。票据默认存在内存的 LSASS 票据缓存里可被 mimikatz 导出sekurlsa::tickets后注入到攻击者会话使用。票据有有效期TGT 默认 10 小时比 hash 的永久有效多一层时间限制但域管票据在有效期内畅通无阻。5.3 黄金票据Golden Ticket前提条件拿到 krbtgt 账号的 NTLM hash通常在拿下域控、导出 ntds.dit 之后获得或用 DCSync 直接导出。原理伪造一张 TGT。因为 TGT 的加密方就是 krbtgt 自己域控验证 TGT 时只会用 krbtgt hash 解密看格式对不对——攻击者用同一个 hash 加密出来的假票域控照样认。伪造时可以任意指定用户名域里不存在的用户也行组成员资格直接写进 Enterprise Admins票据有效期默认 10 小时可以写成 10 年。mimikatz 中的思路性命令仅在授权靶场执行kerberos::golden /user:fakeadmin /domain:lab.local /sid:域SID /krbtgt:krbtgt的hash /id:500 /ptt逐段解释/user:fakeadmin伪造一个任意用户名域内不存在也有效/domain与/sid域名和域 SID用前面信息收集阶段拿到的/krbtgt核心钥匙krbtgt 的 NTLM hash/id:500伪装成 RID 500 的内置 Administrator/pttPass The Ticket伪造完直接注入当前会话。防御要点黄金票据无法通过重置域管密码消除因为伪造的用户跟真实账号无关。唯一根治办法是重置 krbtgt 密码两次历史上 AD 会在 SID History 中保留旧密钥重置两次才能让旧 hash 彻底失效这本身就是黄金票据杀伤力的体现。5.4 白银票据Silver Ticket前提条件拿到某个服务账号如 SQL Server 服务账号、机器账号的 NTLM hash。原理伪造 ST服务票据。ST 由服务账号的 hash 加密验证发生在目标服务器本地不经过 KDC。所以白银票据不用惊动域控隐蔽性更好但只对特定服务有效伪造 cifs 的票只能访问文件服务缺少 KDC 的完整授权记录部分服务会校验 PAC 导致失败。对比项黄金票据白银票据伪造对象TGTST所需 hashkrbtgt服务账号影响范围整个域单个服务是否经过 KDC是否更隐蔽清除方式重置 krbtgt 两次修改服务账号密码六、MS14-068从普通域用户到域管在没有现成高权限凭据时域提权漏洞就是弯道超车的路径。经典案例 MS14-068CVE-2014-6321原理一句话版Kerberos PAC特权访问证书票据里携带用户组信息的字段校验存在缺陷——普通域用户可以伪造一份 PAC 声称自己是域管域控会照单全收给攻击者签发带域管权限的 TGT。利用前提三条都满足才可用拥有任意普通域用户账号密码目标域控未打 KB3011780 补丁拿到当前用户的 SID。靶场中用pykek工具ms14-068.py生成伪造票据再用mimikatz的kerberos::ptt注入之后就能以域管身份访问域控。现代环境基本都打了补丁但理解它有助于理解Kerberos 协议实现层面的坑这类思路。类似的还有 CVE-2020-1472ZeroLogonNetlogon 安全通道加密缺陷可直接重置域控机器账号密码都是打穿域的历史经典。七、DCSync不用登录域控的导出术原理DCSync 不是漏洞而是合法功能的滥用。域控之间通过目录复制服务DRSUAPI定期同步 AD 数据库任何拥有复制目录更改Replicating Directory Changes权限的账号都可以向域控发起复制请求导出任意账号的 hash——包括 krbtgt全程不需要登录域控、不落地任何文件。最典型的滥用场景某些组织会把普通账号或组赋予复制权限比如为了同步给某些只读应用更常见的是 Exchange 安装历史遗留的权限配置问题如著名的 Exchange 滥用链。拿到这种权限mimikatz 一条命令导出 krbtgtlsadump::dcsync /domain:lab.local /user:krbtgt逐段解释lsadump::dcsync调用 DCSync 技术模块/domain:lab.local目标域/user:krbtgt要复制出来的账号换成/user:administrator就能导出域管 hash。拿域控之后必做的一件事导出 ntds.ditAD 数据库文件或用 DCSync 导出 krbtgt hash目的只有一个——伪造黄金票据实现全域持久控制。即使之后密码被改、账号被禁一张十年期黄金票据随时可以复活权限。这也解释了为什么蓝队处置域失陷事件时重置 krbgt 两次 检查所有带复制权限的账号是标配动作。八、检测与防御技术讲完换上蓝队工牌。域渗透的每一步都对应可落地的防御措施8.1 防御体系分层凭据保护启用 Credential Guard基于 VBS 隔离 LSASS让 mimikatz 直接读 hash 变得极其困难限制本地管理员复用一台机器一份本地管理员口令LAPS 方案自动管理本地管理员密码关闭 NTLM、强制 Kerberos安全策略 → 网络安全: LAN Manager 身份验证级别设为仅 NTLMv2 起步逐步到拒绝全部。Kerberos 加固给高敏服务账号打 PAC 校验补丁MS14-068 对应 KB3011780启用 Kerberos 票据保护RFC 4120 的 armor 与 CVE-2021-XXXX 系列 Kerberos 加固补丁缩短 TGT 生命周期、敏感账号标记不可委派。特权账号保护——Tier 模型Tier 0域控、AD 管理员的账号永远不登录Tier 1/2 的普通服务器与 PC防止 hash 在低信任机器上残留被导管理员日常用普通账号办公运维时通过跳板机/PAM 系统换取临时特权会话。PAM特权访问管理特权账号密码定期自动轮换JIT 按需授权会话全程录像hash 导出即使发生hash 也很快过期。8.2 检测信号PtH 篇重点PtH 在 Windows 事件日志中的经典指纹——登录事件 4624登录类型 9NewCredentials4624 的Logon Type: 9表示使用显式凭据的远程登录runas /netonly 类场景PtH 工具大量触发此类型结合身份验证包: NTLM 同一账号短时间内在多台从未登录过的机器上出现 4624是高置信横向移动告警另外 4776NTLM 凭据验证频率异常、同源 IP 对多目标的 4624都是检测规则素材。黄金票据检测登录账号在 AD 里根本不存在4624 里出现幽灵账户名票据票据字段异常超长生命周期、加密类型降级到 RC4。DCSync 检测普通服务器向域控发起 RPC 目录复制流量本身就是异常检测 4662 事件中的复制操作 GUID这是一个非常可靠的黄金告警源。九、小结本篇拆解了域渗透的核心骨架NTLM challenge-response 决定了 PtH 的可行性Kerberos 的 AS→TGT→TGS→ST 链条决定了黄金/白银票据的伪造逻辑MS14-068 与 DCSync 提供了从普通权限跳到域控的跳板。所有演示都应在自建域靶场中完成且每学一个攻击手法都要能回答蓝队靠什么检测它。下一篇第 12 篇把这些原理落到工具上Metasploit、Impacket、CrackMapExec、mimikatz 四件套如何协同把理论攻击链变成可复现的操作链。
返回列表