AD中NTLM认证完整拆解:用adsec从攻防两侧看懂哈希冒充与认证中继
AD中NTLM认证完整拆解用adsec从攻防两侧看懂哈希冒充与认证中继【免费下载链接】adsecAn introduction to Active Directory security项目地址: https://gitcode.com/gh_mirrors/ad/adsec企业AD环境里一条明文密码都没泄露整个域照样能被拿下——攻击者用的凭证不是密码而是NTLM哈希。开源项目adsecActive Directory Security 101用课件、可搭建的攻防实验环境和8个循序渐进的练习带你把NTLM的挑战-应答机制和Pass-the-Hash等经典攻击拆明白以攻促防。项目速览adsec是什么adsec是一门面向初学者的Active Directory安全入门课程目标是让没接触过AD的读者在自己的实验环境里完整走一遍攻防流程。项目由三部分组成恰好对应学理论→搭环境→动手打内容位置说明理论课件slides/AD-Security-101.pdf完整讲义定期穿插指向对应练习实验环境指南lab-setup/README.md本地三台虚拟机手动搭建或用Terraform一键部署到Azure攻防练习exercises/README.md8个练习侦察→NTLM→Kerberos→ACL→持久化练习所需的攻击工具Mimikatz、PsExec、impacket、SpoolSample等都预打包在 exercises/attacker-tools/ 的加密ZIP里解压密码 infected省去到处找工具的麻烦。NTLM认证如何工作一套出题→作答→对答案机制一句话服务器出一道随机数题客户端用密码哈希当钥匙作答服务器用自己的计算结果对答案——全程明文密码不出网。完整认证分三步协商Negotiate客户端先声明自己支持的版本NTLMv1还是NTLMv2和能力选项相当于握手定规则挑战Challenge服务器返回一个随机数——NTLMv1是8字节NTLMv2是16字节。每次认证都不同目的就是防止重放上一次的认证数据应答Authenticate客户端用**NTLM哈希NTHash**作为密钥对随机数做运算连同用户名发回服务器用数据库里存的哈希做同样的运算结果一致即通过。NTHash口令的另一种指纹它的计算方式极其简单NTHash MD4密码的UTF-16LE编码得到的16字节值存放在两个关键位置存储位置存的是什么SAM数据库本机本地账户的哈希单台机器NTDS.dit域内所有账户的哈希域控制器关键点在于认证过程只用到哈希参与运算明文密码始终不出现在流程里。这意味着拿到哈希就能直接以该用户身份完成认证无需破解出密码——这是后文所有攻击的结构性根基。NTLMv1与NTLMv2安全性差在哪对比项NTLMv1NTLMv2响应算法基于DES加密挑战值基于HMAC-MD5的密钥散列服务器挑战8字节16字节客户端随机数无有客户端挑战时间戳与目标信息不包含包含在响应Blob中安全性弱易离线破解相对安全仍是被诟病的对象NTLMv1的响应只依赖8字节随机数、不含任何上下文截获后即可离线爆破或用彩虹表快速还原口令。任何环境都应禁用NTLMv1、强制NTLMv2这是基线而非可选项。从机制到威胁NTLM的三大经典攻击理解了机制就能理解攻击——下面每一种都是从前面某个特性里推出来的。 Pass-the-Hash哈希即密码因为认证只校验哈希的运算结果所以哈希本身就是一枚凭证。练习2exercises/2-NTLM.md完整演示了这条链在已攻陷机器上用Mimikatz读取本地账户的NTLM哈希核心是lsadump::sam从SAM库导出哈希用哈希直接调起PTH功能换取以该用户身份运行的Shell核心是sekurlsa::pth /user:Administrator /ntlm:hash哈希注入认证再用PsExec连接另一台机器完成横向移动。练习里有个刻意设计的细节两台成员服务器设置了相同的本地管理员密码因此NTLM哈希也完全相同——这正是企业里本地管理员密码不统一管理的典型隐患。 NTLM Relay把认证转发给更有价值的目标因为NTLM认证不绑定目标服务的身份截获的认证可以被重放到另一个服务上。练习3exercises/3-NTLM-Relay.md演示了完整攻击链创建一个新的计算机账户为后续Kerberos委派做准备用impacket的ntlmrelayx.py启动中继服务器目标指向域控的LDAP服务利用MS-RPRN协议的设计缺陷与著名的PetitPotam攻击同源强制目标机器主动向攻击者发起NTLM认证认证被中继到域控后攻击者便以该机器账户身份修改目录对象——例如写入msds-allowedtoactonbehalfofotheridentity属性为Kerberos的RBCD委派攻击铺路这正是练习6的入口。 强制认证让目标主动来敲门上面攻击链最难的一环是如何让受害者主动向攻击者发起认证业界称之为强制认证Coerced Authentication。手段不止MS-RPRN打印通道一种还有MS-EFSRPC、WebDAV等。这也解释了为什么攻击者即使没控制任何域内账户仍可能通过NTLM中继拿下整个域——防御时这一环要最先堵上。防御清单五步堵住NTLM攻击面强制NTLMv2并启用签名优先做。用组策略把网络安全LAN管理器身份验证级别设为仅发送NTLMv2响应并强制SMB签名。NTLMv1降级和中继链路同时被挡且对业务几乎无感。启用扩展保护EPA。在Exchange、IIS等支持的服务上把认证与具体TLS通道绑定中继过去的认证在别的服务上无法通过——这是对Relay的治本手段。分阶段限制NTLM。微软提供了网络安全限制NTLM系列策略先审计入站/出站NTLM流量再按区域拒绝最后迁移到Kerberos。能不能彻底关闭取决于环境——有老应用依赖NTLM时直接禁用会引发兼容性问题。练习2的思考题恰好要求你论证这一点值得亲自验证。统一管理本地管理员密码。部署LAPS本地管理员密码解决方案让每台机器有独立随机密码哈希复用凭证复用的链条在源头断掉。修补强制认证漏洞并监控目录异常。及时修复MS-RPRN、MS-EFSRPC等漏洞在域控上监控异常LDAP写操作尤其关注新计算机账户委派属性变更的组合事件——这是练习3攻击链的指纹。动手实践搭一个自己的AD攻防环境理论都落得了地。环境搭建有两条路线详见项目速览中的环境指南本地虚拟机三台Windows Server 2019——域控ADSEC-DC 成员服务器ADSEC-00/01各自至少2核4GBAzure用仓库提供的Terraform脚本一键部署需自备订阅。本地路线拿到机器后先执行 lab-setup/domain-setup-scripts/ 里的create-domain.ps1把ADSEC-DC提为域控再用domainprepare.ps1注入练习所需的用户、组和OU即可得到完整测试域。代码库获取方式git clone https://gitcode.com/gh_mirrors/ad/adsec建议的学习路线每个练习末尾的思考题都是防御自查别跳过编号主题练习文件1信息收集与侦察exercises/1-Reconnaissance.md2NTLM与Pass-the-Hashexercises/2-NTLM.md3强制认证与NTLM Relayexercises/3-NTLM-Relay.md4Kerberos Roastingexercises/4-Kerberos-Roasting.md5–6Kerberos委派与RBCDexercises/5-Kerberos-Delegation.md、exercises/6-Kerberos-RBCD.md7–8ACL滥用与持久化exercises/7-ACL.md、exercises/8-Persistence.md所有工具都在项目速览提到的ZIP工具包里解压即用动手门槛只剩环境本身。带走什么NTLM的设计哲学是哈希即凭证认证不传密码、只验哈希这既保护了口令也把哈希本身变成了可以盗用、可以转发的资产。理解了挑战-应答的每一步你就自然理解了Pass-the-Hash、Relay和强制认证为什么成立以及签名、EPA、LAPS为什么能挡住它们。 下一步建议直接做练习3——亲手走一遍强制认证→中继→写委派属性的完整链条再回头对照上面的防御清单逐条自查你会对认证协议即攻击面有更深的体会。【免费下载链接】adsecAn introduction to Active Directory security项目地址: https://gitcode.com/gh_mirrors/ad/adsec创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考