在甲方做蓝队、在乙方做红队、还是自己搭实验环境折腾,只要跟企业内网安全沾边,迟早会撞上一个绕不开的话题:域渗透。Active Directory(AD)几乎统治了企业内网的身份认证与权限管理,拿下域控基本上等于拿下了整个内网。我见过太多人收藏了无数“域渗透技巧”帖子,真到授权评估或应急响应时,脑子里还是一团浆糊——因为碎片化知识救不了场。
这篇长文把域渗透拆成一条完整攻击链,按信息收集、初始访问、权限提升、横向移动、域控接管、持久化六个阶段整理了50个核心手法,每类手法都讲清楚攻击者为什么用它、它要满足什么前置条件、蓝队怎么在日志里盯它。不敢说看完你就从零基础变成域渗透专家,但至少能帮你把零散的知识连成一张地图,知道每个手法在整个攻击路径中处于什么位置、该怎么组合使用。这篇文章适合三类人:刚入门想建立体系的新手、做授权红队评估需要排查盲区的选手、搞防御体系建设想搞清楚攻击者思路的蓝队朋友。全文偏长,建议先收藏再分段阅读。
1. 域渗透攻击链路全景:为什么50个手法要按阶段组织
很多人学域渗透最大的误区是“手法崇拜”——今天看到一个抓取票据的技巧很酷就赶紧存下来,明天看到一个DCSync的命令觉得很牛又存一个。结果存了几百个技巧,真到实战却不知道第一步该干什么。其实域渗透跟盖楼差不多,攻击者不是靠某一个“神级漏洞”拿下整个域,而是靠一条环环相扣的链路,每一环都解决一个具体问题。
这条链路大体可以分为六个阶段。第一阶段是侦察与信息收集,目标是搞清楚内网长什么样:有哪些机器、哪些用户、哪些服务、哪些信任关系。第二阶段是初始访问,攻击者需要先拿到一个普通账户或一台主机的立足点。第三阶段是权限提升,从普通用户往管理员走,从单机管理员往域管理员走。第四阶段是横向移动,以已经拿下的主机为跳板,在域内逐步扩展控制面。第五阶段是域控接管,这是最高目标——拿到域控制器的最高权限。第六阶段是持久化,确保下次还能回来,防止被蓝队踢出去后进不来。
我为什么建议按照这个链路去组织50个手法,而不是按手法名字的字母顺序罗列?因为只有站在攻击链路上看单个技术,你才能真正理解它存在的意义。比如Pass-the-Hash这个手法,单独看就是“用哈希直接认证”,但它必须发生在已经拿到NTLM哈希之后;再比如黄金票据伪造,它光鲜亮丽,但你得先拿到krbtgt账户的哈希才能伪造,而拿krbtgt哈希的前提是你已经控制了域控——所以黄金票据本质上不是“打”进域的手段,而是“赖”在域里的手段。
还有一个很重要的认知:域渗透不是单点技术的比拼,而是知识广度和组合能力的比拼。我见过很多刚入门的朋友反复折腾某一个漏洞,花两周时间把一个BUFF溢出研究得很深,但真到授权评估里,可能一个未授权共享加上一个弱密码就能轻松拿到立足点。这就是体系化思维和碎片化研究的差距。所以这篇文章的50个手法,我不会只告诉你命令是什么,还会告诉你它处在攻击链的哪个环节、前置条件是什么、蓝队如何检测。
2. 侦察与信息收集阶段:攻击从这里开始
2.1 为什么侦察是域渗透最关键的环节
红队圈有一句老话:侦察决定了攻击的上限。域渗透更是如此,因为AD是一个关系型数据结构,里面存着用户、组、计算机、策略、信任关系这些对象,对象之间还通过组关系、委派关系、ACL紧密耦合。攻击者前期对AD搞不清楚,后面横向移动就是无头苍蝇。
很多新手会忽视侦察的价值,觉得“扫个端口就能打”。但在域环境下,光靠端口扫描远远不够。攻击者需要的是一张“情报地图”:域内有几个域控制器、有哪些管理员组、哪些用户设置了SPN、哪些机器开放了WinRM、哪些组策略还残留着弱配置。这张地图的精细程度,直接决定后续手法的成功率。
我自己的习惯是:拿到一个初步立足点之后的第一件事,不是急着尝试提权,而是花充足时间做AD对象层面的信息收集。你会发现安全做得好的企业,外部很难直接打进来,但内部AD的配置往往存在大量历史遗留问题——旧系统残留的委派、到处都是一样的本地管理员密码、满坑满谷的服务账户。这些信息不会出现在端口扫描结果里,只能靠AD枚举拿。
2.2 12个核心信息收集手法速查
我把信息收集阶段最有代表性的手法整理成一张表,每个手法都标注了攻击者视角的利用目的,以及蓝队视角的检测入口。这张表本身也很有收藏价值,建议直接保存。
| 序号 | 手法名称 | 攻击者利用目的 | 前置条件 | 关键命令/工具 | 检测入口 |
|---|---|---|---|---|---|
| 1 | LDAP匿名查询 | 不凭任何凭据枚举域对象,获取基础信息 | 开启匿名LDAP查询 | adfind、ldapsearch | 4658/5156日志 |
| 2 | SPN批量扫描 | 发现注册了SPN的服务账户,为Kerberoasting做准备 | 域内普通账户即可 | setspn -Q/ | 事件ID 4769 |
| 3 | 共享资源枚举 | 发现可读的网络共享,寻找敏感文件 | 任意域账号 | net view /all | 5140/5145共享访问日志 |
| 4 | DNS区域信息收集 | 获取域内主机名与IP对应关系,绘制网络拓扑 | 允许区域传送 | dig axfr | DNS服务器日志 |
| 5 | 组策略对象枚举 | 发现GPO中的弱配置、残留密码与异常脚本 | 域普通账户 | BloodHound、PowerView | 5156网络连接日志 |
| 6 | 域信任关系枚举 | 识别与当前域存在信任关系的其他域,规划跨域攻击路径 | 域内账户 | nltest /domain_trusts | 4624登录日志分析 |
| 7 | ACL对象枚举 | 审计AD对象上异常ACL,找出可利用的委派路径 | 域内账户 | BloodHound | 4662目录服务访问 |
| 8 | IPv6攻击面探测 | 发现IPv6地址配置异常,为mitm6等攻击做准备 | 目标启用IPv6 | mitm6、IPv6工具 | DHCPv6日志 |
| 9 | NetBIOS名称枚举 | 识别主机角色与可用服务 | 目标开启NetBIOS | nbtscan | 端口139/445访问 |
| 10 | 登录脚本与启动脚本检查 | 发现脚本中的硬编码凭据与后门 | 共享目录可读 | 手动检查SYSVOL | 4104脚本日志 |
| 11 | 用户字典构建 | 根据命名规则生成用户字典,为密码喷洒做准备 | 已获取部分用户名 | OSINT+手动整理 | 登录失败日志聚合 |
| 12 | 时间与补丁基线采集 | 判断系统补丁水平,为提权选型做参考 | 内网主机可达 | 系统info命令 | 4688进程创建 |
2.3 侦察手法中值得深挖的细节
在信息收集这块,我要重点讲一下SPN扫描和ACL枚举这两个容易被低估的环节。
SPN(Service Principal Name)是Kerberos协议里用来标识服务实例的属性。当某个账户注册了SPN,就意味着客户端可以请求这个账户的服务票据,而服务票据是用该账户的密码哈希加密的——这就给密钥分发中心提供了一个“可离线破解”的密码样本。攻击者在信息收集阶段会批量查询所有SPN,摸清哪些普通用户账户或服务账户绑定了SPN,然后有针对性地发起Kerberoasting。这里有个实操细节很多人不知道:不只服务账户(如MSSQL服务账户)会注册SPN,有些管理员为了省事,直接把普通域用户加了SPN,这类账户往往有较高的权限,破一个高权限账户直接价值翻倍。
ACL枚举则是更隐蔽的信息收集方式。AD对象上配置了非常多的访问控制权限,有些委派配置可能让某个普通用户对组策略对象有写权限,或者让某个服务账户对用户对象有重置密码的权限。这些关系单靠手工很难理清,但BloodHound这类工具可以自动采集并绘制成图,把“谁能控制谁”的关系完全可视化。我在授权评估中不止一次遇到这种情况:某个不起眼的普通用户,通过一连串ACL委派关系,居然能对高权限账户执行密码重置。要是前期不做ACL枚举,这条路径根本发现不了。
3. 初始访问与权限提升:拿到立足点再往上走
3.1 初始访问的8个手法拆解
初始访问阶段的目标是拿到一个最低权限的“借口”——可以是一个普通域用户口令,也可以是一台普通主机的代码执行权限。别小看这个阶段,很多大型内网安全做得其实不错,外部网络边界固若金汤,但就是被一个弱密码或一个历史遗留的匿名访问打开了缺口。下面是8个初始访问手法。
- AS-REP Roasting:攻击者向KDC请求某个未开启预认证用户的时间戳加密数据,将其保存到本地进行离线破解。破解成功后,等于直接拿到了该用户的明文密码。这个手法最恐怖的地方在于它不需要与用户进行任何交互,只要目标账户没有启用“不要求预认证”的防护,攻击者就能静默获取数据包。检测上要重点看源IP是否在短时间内发送了大量AS-REQ请求,以及是否出现了异常的Kerberos错误码。
- 密码喷洒:攻击者用极少量(通常是5个以内)的高频弱密码,对大量用户名尝试登录。这个手法规避了传统账户锁定的防护逻辑,因为正常情况下锁定阈值都设置在多次失败,单账户少次数尝试不会触发锁定。防御方往往只盯着单账户多次失败,忽略了多个账户同时失败的统计特征。
- Kerberoasting:攻击者用任意一个普通域账户申请注册了SPN的服务票据,下载到本地做离线密码破解。很多人把它归类到权限提升,但我认为它更像一个初始访问或权限扩展的手法——破解出服务账户密码后,攻击者可能直接获得一个高权限的系统账户。
- NTLM中继攻击:攻击者通过LLMNR/NBT-NS等协议毒化,诱使目标主机将NTLM认证请求发送到攻击者控制的服务器,随后将捕获的认证请求中继到目标服务(如SMB、LDAP),在不需要知道密码与哈希的情况下,通过重放完成身份认证。这里有个关键限制:SMB签名必须未强制开启,否则中继会失败。
- Web应用漏洞利用:钓鱼之外,利用内网Web应用的漏洞(SQL注入、文件上传、远程命令执行)拿到应用服务器权限,然后从应用配置文件中提取数据库口令、服务账号等敏感信息。这是跨系统攻击的典型入口,蓝队应该重点监控Web应用目录下可疑文件落地。
- 网络钓鱼附件投递:针对性投放带有宏或漏洞文档的钓鱼附件,通过社工手段诱导用户执行,然后借助C2框架在目标主机上建立通道。这不是纯粹的“技术”手法,但在域渗透中它往往是组合攻击的第一环,因为很多内网与互联网出口没有严格隔离。
- 开放共享与匿名访问:直接利用配置不当的匿名共享(如Everyone可读、Everyone可写)读取敏感文件或投放恶意载荷。这个手法看着不高级,但在测试中我遇到太多这种“裸奔”共享。
- 凭证转储后的首次登录:攻击者在某台主机上提取到本地管理员或域用户的明文密码后,用这些凭据直接尝试访问其他机器,包括域控制器。这其实是“本地提权+横向移动”的组合动作,但从攻击者的角度看,它就是初始访问的延伸。
3.2 权限提升的核心思路与8个手法
拿到立足点之后,权限提升就提上日程。所谓提权,本质上就是回答一个问题:当前这个身份不够用,我怎么在不被发现的情况下拿到更高权限?在域内,提权通常分两种路径:一种是本地提权,从普通用户提升到本机SYSTEM或管理员;另一种是域内提权,从一个普通域用户提升到具有域管理权限的身份。
本地提权的常见手法包括:
- 内核漏洞提权:利用操作系统内核漏洞,直接获取SYSTEM权限。这是最直接但不稳定的方式,因为高版本系统补丁打得很勤,成功率逐年下降。
- 未引用的服务路径:当Windows服务路径包含空格且未加引号时,系统会依次尝试解析路径中的每个空格位置。攻击者可在一个可写目录放置同名恶意程序,等待服务重启时获得SYSTEM权限执行。
- 易受攻击的驱动程序:第三方驱动漏洞可以直接获得内核态代码执行能力,但因为驱动加载门槛高,实际利用机会有所减少。
- 服务权限配置不当:某些服务配置为“本地系统账户”运行且允许普通用户修改其配置,攻击者可以将服务指向自己的恶意程序,待服务重启时获取SYSTEM权限。
- DLL劫持:把恶意DLL放置在程序搜索路径下的可控位置,让目标程序以高权限加载它。
- 始终安装提升:某些程序的安装配置允许一般用户以高权限执行安装,利用AlwaysInstallElevated策略可安装恶意MSI包获得SYSTEM权限。
- 令牌模拟:攻击者利用Windows令牌复制或模拟API,复制系统中的高权限令牌(如SYSTEM令牌)执行代码。通常需要先获得SeImpersonatePrivilege特权。
- 交互式登录脚本后门:在启动文件夹或注册表Run键中投放恶意程序,诱导管理员登录后触发。
域内提权更依赖AD配置缺陷,比如不安全的委派配置、异常ACL、组策略漏洞、历史遗留的本地管理员密码相同。这类路径通常不会产生太多告警,因为攻击者使用的都是合法身份和合法API,没有明显的“入侵”特征。
3.3 密码喷洒实战:从踩坑到参数选择
密码喷洒是我在授权评估中用得最多的初始访问手法,没有之一,因为它的成功率和隐蔽性都很均衡。但参数选择特别讲究,我踩过不少坑。第一,用户字典必须够准。如果直接用网上随便找的字典,很容易触发大量登录失败告警,搞脏环境。正确做法是先通过LDAP枚举收集真实用户列表,按命名规则过滤出有效账户。第二,密码集必须够“常见”。不要拿几十万行的大字典去喷,效率低且风险高。我一般用行业默认密码、季节相关密码、公司名称加年份这种组合,控制在几个到十几个。第三,单账户失败次数必须控制在锁定阈值之内。假设域策略是5次锁定,那每个账户最多尝试3到4次就得换下一轮,不然直接把账户喷锁定了,蓝队立刻上线。
实操中还有一个隐蔽性技巧:把喷洒流量分散到多个源IP或通过代理出口,避免单IP短时间内产生海量登录失败事件。蓝队的检测逻辑一般会从源IP维度聚合失败次数,只要让每个IP在时间窗口内的失败次数低于阈值,就能有效规避初级的检测规则。
3.4 权限提升实操中的关键原则
提权操作有一个核心原则:优先走配置缺陷,避免直接打内核漏洞。原因很简单,内核漏洞利用容易蓝屏,一蓝屏整个行动的隐蔽性就废了;而配置缺陷(比如开放的可写服务路径、弱ACL、错误的服务配置)是“无声”的,利用过程不会崩溃目标系统,也不会产生特殊的告警特征。
我建议新手先把未引用服务路径、服务权限错配、DLL劫持这类本地提权手段练熟,再把AS-REP Roasting、Kerberoasting、委派滥用这类域内提权手段吃透,最后才去碰易受攻击的驱动和内核漏洞。另一个建议是:提权前先做快照或至少记录当前系统状态,一旦利用失败导致服务异常,能快速恢复,避免把客户的业务搞挂。这不仅是技术问题,也是职业操守问题。
4. 横向移动与域控接管:从一台机器到整个域
4.1 横向移动的10个手法与落地逻辑
横向移动阶段,攻击者已经把某台主机作为跳板,目标是不断扩展控制面。横向移动的本质不是反复传文件、反复执行命令,而是利用身份验证机制在不同主机间复用凭据。下面是10个横向移动手法,先整体看一张表。
| 序号 | 手法 | 核心原理 | 利用条件 | 检测要点 |
|---|---|---|---|---|
| 1 | Pass-the-Hash | 直接使用NTLM哈希进行身份验证,不需要明文密码 | 已获取某账户哈希且目标开启NTLM认证 | 4624登录事件+异常源IP |
| 2 | Pass-the-Ticket | 将已获取的Kerberos票据注入当前会话,访问目标服务 | 已获取票据且票据未过期 | 4624日志,审计Ticket Grant |
| 3 | Over-Pass-the-Hash | 用NTLM哈希换取TGT票据,以票据方式访问目标 | 已获取哈希且能访问KDC | 4768/4769异常增多 |
| 4 | PsExec类远程执行 | 通过SMB协议在远程主机创建服务并执行程序 | 目标开放445且具管理员权限 | 7045服务安装事件 |
| 5 | WMI远程执行 | 通过WMI在远程主机执行进程 | 目标开放135/Winmgmt且具管理员 | 4624+4688关联分析 |
| 6 | WinRM远程执行 | 通过5985/5986端口用PowerShell远程执行命令 | 目标启用WinRM且具管理员权限 | 网络连接5985+4624 |
| 7 | 计划任务远程执行 | 在远程主机创建计划任务执行命令 | 目标开放RPC/SMB且具管理员权限 | 4698计划任务创建事件 |
| 8 | DCOM远程执行 | 通过DCOM接口在远程主机实例化对象并执行方法 | 目标开放DCOM端口且具管理员权限 | 4624+DCOM异常调用 |
| 9 | RDP受限模式绕过 | 通过Restricted Admin模式用哈希直接建立RDP会话 | 已获取哈希且支持Restricted Admin | 4624+4638日志 |
| 10 | SMB远程管理 | 通过SMB admin$共享释放服务并启动 | 已获取管理员凭据 | 5140/5145共享访问 |
横向移动手法看起来很多,但它们的共同底层逻辑都是:Windows认证体系允许“凭据复用”。你一旦拿到了某个账户的哈希或票据,就可以在其他主机上“扮演”这个账户,而不需要重新输入密码。这种属性是Windows架构设计的一部分,不是某个具体的漏洞。所以防御横向移动的根本思路不是封杀某条命令,而是减少管理员的凭据散布范围、及时轮换服务账户密码、限制高危端口开放范围。
4.2 Kerberos委派滥用:横向移动的高级手法
委派是Kerberos协议中一个相当强大的功能,它允许某个服务以用户身份去访问其他服务。但实际环境中很多企业配置了不安全的委派,导致攻击者可以滥用它扩大控制范围。
我举个具体的例子:某管理员给一个Web应用的服务账户配置了“非约束委派”,意思是该服务可以接收任何用户的票据并以这些用户的身份访问任意服务。攻击者只要能控制这个Web应用,就能诱导或等待一个高权限用户(比如域管理员)访问该服务,随后捕获到这位高权限用户的TGT票据。拿到TGT之后就不用多解释了,直接“扮演”域管理员。这种攻击的可怕之处在于它完全在合法认证流程内发生,单看日志很难发现异常,因为它没有破解密码,没有暴力破解,只是把系统自身的功能用到了极致。
约束委派则相对安全一些,它限制了服务只能模拟用户访问特定的SPN。但即便是约束委派,如果配置了“协议转换”选项,攻击者也可能通过协议转换绕过限制,风险依然是存在的。所以在实际加固中,我必须强调:尽量不用非约束委派,必须使用时严格控制受委派账户的权限,并且定期审计委派关系。这是很多安全基线检查中容易被忽视的点。
4.3 域控接管的8个手法解析
域控接管是域渗透的最高潮,攻击者一旦做到这一步,基本上整张内网的钥匙都拿到了。从攻击手法上看,域控接管可以分为两类:一类是利用漏洞直接获取域控权限,另一类是利用高权限账户通过合法机制“复制”出关键数据。
- MS14-068:利用Kerberos PAC签名验证漏洞,伪造域管理员权限的票据,可以无差别攻击未打补丁的域控。这个手法虽然已很陈旧,但偶尔在遗留系统里依然能碰到。
- DCsync:拥有域管理员权限(或特定权限)的攻击者,通过域控之间的复制机制(DRSUAPI)请求指定用户的哈希。这个手法极其有效且隐蔽,因为它使用的是复制协议,产生的日志非常少。
- DCSBackup:与DCsync思路类似,但利用的是备份接口,可以直接导出ntds.dit数据库文件和系统注册表配置。
- ntds.dit离线提取:如果攻击者已经能够访问域控的文件系统(比如通过VSS卷影副本),可以直接复制出ntds.dit并离线提取所有账户哈希与密钥。
- 卷影复制服务利用:通过VSS创建卷影,从卷影中复制正在使用的ntds.dit文件,规避文件锁定。
- AD CS证书滥用:AD证书服务配置不当(如错误模板、错误注册代理权限)时,攻击者可申请到高权限证书;然后用证书完成身份认证,本质上相当于拿了一张“万能开门卡”。
- PDC模拟器攻击:通过控制PDC模拟器(部分AD操作的单点),改变域内某些默认行为来扩大控制力。
- 组策略木马化:修改域组策略,向全网计算机下发恶意脚本或配置,实现批量控制。这个手法在“域控接管”后通常被用作大规模持久化,而不是打下的路径本身。
重点说说DCSync。DCSync之所以特别值得蓝队深入研究,是因为它的攻击源不再是“破解密码”,而是直接以合法身份调用目录复制协议。攻击者只需要一个具有复制权限的账户(很多时候这个账户就是域管理员本身),就能远程请求任意账户的哈希,包括krbtgt,然后离线解密。检测DCSync的方法主要看事件ID 4662(目录服务访问),特别是对“DS-Replication-Get-Changes”和“DS-Replication-Get-Changes-All”这两个权限的异常调用。但需要强调:很多企业基线没有打这些审计策略,日志根本记不到。所以域控加固的第一件事,就是把这几个目录服务访问审计项打开。
4.4 AD CS证书攻击:一条从普通用户到域管的隐藏路径
AD CS(Active Directory 证书服务)是域渗透里近年最热门的攻击面之一,因为它有着合法的身份属性,攻击者利用证书服务签发的合法证书,就可以以目标用户身份认证到任意服务,不需要知道密码,也不需要破解哈希。
常见的问题出在证书模板配置上。例如某个证书模板允许普通用户注册,却配置了“客户端身份验证”的用途,并且模板里带有高权限组(如Domain Admins)的注册权限。攻击者这时候只需要以普通用户的身份向证书服务器申请一张证书,证书里标注的身份是“域管理员”,然后用这张证书完成Kerberos认证,就直接获得了域管理员的TGT——全程没有使用任何恶意工具,没有破解密码,没有触碰LSASS进程,检测难度很大。
另一个常见问题是NTLM中继到证书注册接口。攻击者通过LLMNR/NetBIOS等协议毒化或ARP欺骗截获NTLM认证请求,将认证中继到AD CS的证书注册Web接口,利用目标机器的计算机账户申请一张证书,然后用该证书冒充这台机器访问服务。这种攻击尤其难防,因为它结合了协议层的身份认证缺陷和证书服务配置缺陷,且CS服务器默认没有对NTLM认证中继做额外防护。防御的核心是给AD CS服务器启用NTLM中继缓解措施、修改证书模板的安全权限、及时吊销可疑证书。我建议企业做AD安全评估时,一定要把证书服务纳入检查范围——这是一个很容易被遗忘但经常被攻击者利用的盲区。
5. 持久化手法:攻击者留下的后门藏在哪
5.1 为什么持久化比提权更容易被忽略
拿了一台机器的权限很容易,难的是下次还能回来。很多刚入门的同学觉得持久化就是“装个木马设个开机自启”,其实在域环境下,真正的持久化往往不依赖文件,而是依赖AD本身的对象属性和委派机制。这类持久化后门不落盘、不启动服务、不修改注册表,蓝队靠查杀文件很难发现,必须检查AD对象的异常变化才能找到。
5.2 6个主流持久化手法详解
- 黄金票据:拿到krbtgt账户的哈希后,攻击者可以伪造任意用户的TGT票据,甚至可以指定任意有效的SID,想冒充谁就冒充谁。因为krbtgt的哈希极少被轮换,很多企业几年都不改一次,一张黄金票据的“保质期”可能长达数年。这是最经典的域持久化手法之一。
- 白银票据:与黄金票据类似,但伪造的是服务票据(ST),范围限制在特定服务上。白银票据比黄金票据更隐蔽,因为它不经过KDC,而是直接在本地伪造票据并提交给目标服务。
- AdminSDHolder与SDProp:AdminSDHolder是AD中一个特殊的容器,它的ACL会定期(每60分钟)通过SDProp进程推送到所有受保护的高权限组。攻击者如果在AdminSDHolder对象上添加一条“允许某普通账户完全控制”的ACL,那么60分钟后这条ACL会应用到所有高权限组上,即使安全团队把该账户移出高权限组,也会被再次拉回来。
- SID History注入:SID History是跨域迁移账户时保留原对象SID的机制,攻击者如果能把高权限组的SID注入到普通用户的sIDHistory属性中,那么该普通用户在任何访问检查中都会被当作高权限组成员。蓝队不深入审计这个属性很难发现。
- 组策略计划任务:在域组策略中设置计划任务,让所有域成员机器定期从指定位置下载并执行恶意程序。这个手法相当于在全域铺了一个定时器,攻陷一台机器后可以快速批量扩散。
- 服务DLL注入与注册表自启动:这是保留了传统的本地持久化方式,将恶意DLL注册为服务或写入启动项。因为不涉及域对象,部署时最常见,但也最容易被EDR盯上。
持久化的检测思路不是“找文件”,而是“找异常关系”。蓝队应该重点留意几个异常特征:AdminSDHolder对象的ACL是否发生过变更、高权限组的成员列表是否出现非预期对象、账户的sIDHistory属性是否带上了高权限SID、关键服务的启动命令是否指向了可疑路径。
5.3 黄金票据成也隐蔽败也隐蔽
黄金票据确实威力巨大,但我得泼盆冷水:它并非完全无法检测。虽然伪造的TGT可能不触发密码错误告警(因为压根不验证密码),但它和正常用户获取TGT的行为存在差异。比如从时间特征上看,伪造票据可以任意指定生效时间,可能存在明显的异常时间戳;再比如从请求特征上看,如果某个IP突然以一个普通用户的身份访问了大量不同的服务,且这些服务的访问在短时间内密集发生,这种横向特征就值得调查。
蓝队另一个应对黄金票据的核心手段是“定期轮换krbtgt密码”。很多企业担心轮换krbtgt会导致服务中断,其实微软提供了标准流程(分两次重置密码并强制复制),只要按流程操作,风险是完全可控的。把krbtgt密码轮换纳入常规排程,是对黄金票据最釜底抽薪的防御。黄金票据的前提是拿到krbtgt哈希,而这个哈希的“保质期”完全取决于企业多久轮换一次。轮换之后旧票据自然失效,攻击者就算拿到了哈希也得重新再来。
6. 防御视角:50个手法的共性检测点与加固基线
6.1 蓝队应该盯住的关键日志与事件ID
说完了攻击者的50个手法,如果文章停在这里,对蓝队朋友来说价值就少了一半。我始终认为,攻防知识本身是一体两面,搞懂攻击手法不是为了做坏事,而是为了建立有效的防线。下面从防御视角把关键检测点整理出来,这些都是蓝队可以立刻落地的东西。
我把域内攻击链路的主要行为和对应的Windows事件ID整理成一张表,方便做检测规则时直接参照。需要说明的是,具体的事件ID在不同版本系统上可能有细微差异,但总体上保持一致。实际部署检测规则前,建议先在实验环境里测试一遍,确保日志确实能记到对应事件。
| 攻击行为阶段 | 关键行为 | 事件ID | 说明 |
|---|---|---|---|
| 侦察 | 目录服务访问 | 4662 | 对AD对象的查询审计 |
| 侦察 | 共享访问 | 5140/5145 | 对共享的访问与文件操作 |
| 初始访问 | Kerberos预认证请求 | 4768 | 异常的AS-REQ行为 |
| 初始访问 | 服务票据请求 | 4769 | 批量SPN请求的特征 |
| 初始访问 | 登录失败 | 4625 | 密码喷洒的聚合分析 |
| 提权 | 服务安装 | 7045 | 新服务创建,常见横向或后门 |
| 提权 | 计划任务创建 | 4698 | 计划任务持久化检测 |
| 提权 | 进程创建 | 4688 | 命令行为基线偏离检测 |
| 横向 | 登录成功 | 4624 | 异常来源IP与时间分析 |
| 横向 | 特权登录 | 4672 | 管理员登录行为审计 |
| 持续 | 用户权限变更 | 4728/4729 | 组成员变更检测 |
| 持续 | 目录对象修改 | 5136 | AD对象属性变更审计 |
| 域控接管 | 目录服务复制 | 4662+4624 | 对复制权限调用的监控 |
日志本身不会自动变成安全事件,还需要配合关联分析。我建议蓝队用“行为基线”的思路建立告警模型:什么账户一般在什么时间、从哪些机器、访问哪些资源。当某个账户的行为明显偏离这个基线(比如半夜从一台从未用过的机器发起批量登录请求),就值得重点关注。这种基于基线的检测比简单的特征匹配要可靠得多,因为你永远无法穷举所有攻击特征,但你可以很容易识别出异常行为。
6.2 域环境加固的六个基线动作
检测是事后的,加固才是事前的。从无数次红队评估的经验来看,企业AD的安全水平往往被六个基础配置决定:
- 第一,清理高权限组中的闲置账户与异常成员。每个高权限组成员必须能被业务解释清楚,不能存在“当初加进去的后来忘了”这种账户。
- 第二,为所有服务账户设置强密码并定期轮换。Kerberoasting之所以能成功,根本原因是服务账户密码太弱。
- 第三,禁用或升级危险委派配置。能用约束委派绝不用非约束委派,能用不进域的资源绝不通过AD委派访问。
- 第四,开启域控的关键审计策略。至少要覆盖事件ID 4662、4768、4769、4728、4729、5136,这是检测域内攻击的基础设施。
- 第五,轮换krbtgt密码并纳入例行排程。同时对AdminSDHolder的ACL做定期基线校验,发现变更立即告警。
- 第六,限制本地管理员组的域内分布。避免所有机器设置相同本地管理员密码,建议使用本地密码管理方案(如受限随机密码)来避免横向移动的“一击全中”问题。
我特别想强调第六点。在授权评估里,碰到过太多因为本地管理员密码统一而导致的“灾难性”横向移动:拿下一台机器,提取到本地管理员哈希,然后整个域内所有机器都能用同一个哈希登录——攻击者省去了所有横向的复杂操作。蓝队防守时要记住:统一本地管理员密码是最简单却也最危险的配置,它让横向移动的难度变成零。部署现代密码管理方案并不复杂,但很多企业因为没有牵头人一直拖着,成了内网最大的隐患之一。
6.3 从攻击链看检测规则的优先级
很多蓝队朋友问过我:攻击手法这么多,检测规则该从哪条开始建?我的建议是不要从50个手法里挨个建规则,而是先建三条覆盖攻击链最核心环节的规则。第一条规则盯登录行为,聚合同一源IP或同一账户在短时间内的多次失败,检测密码喷洒;再结合4624的异常登录(非工作时间、非办公网段),这能覆盖大多数初始访问和横向移动的入口行为。第二条规则盯特权账号的敏感操作,包括高权限组变更、目录对象的敏感属性变化、域管账户的登录与复制行为,这能覆盖大多数域控接管的“临门一脚”。第三条规则盯横向移动的执行通道,重点看7045服务创建、4698计划任务创建、5985/5986连接,这能把PsExec类、WMI类、计划任务类的远程执行基本覆盖住。
这三条规则建好之后,再根据企业自身的业务场景去细化和扩展。比如企业用了大量AD CS,就把证书申请行为的审计加上;企业历史遗留了非约束委派,就把委派相关的事件和对象变更加上。规则不用一上来追求全量覆盖,先把高危行为抓出来,再逐步迭代。
7. 零基础学习路线与收藏使用指南
7.1 从零基础起步的四步走
如果你是完全零基础的新手,我建议按下面的路线走,每步至少投入两周时间,稳扎稳打。
第一步,吃透Windows基础与AD基础。理解域、域控、OU、组策略、Kerberos认证流程、NTLM认证流程。推荐先抓住Kerberos和NTLM的“票据流动”和“哈希复用”这两个核心概念,其余的东西都可以在后面实操中慢慢加深。
第二步,本地搭建实验环境。建议在自己的实验环境中搭建一个精简的域环境,包含一台域控、两台成员服务器、几台Windows 10工作站,然后用文章里提到的基础手法逐步复现。可以用快照随时回滚,别担心把环境搞坏。实验环境的搭建方式有多种选择,既可以用物理机,也完全可以在一台高配电脑上用虚拟化方案跑两到三台虚拟机,关键是把域控和成员机的角色模拟出来。
第三步,系统化复现50个手法。按文章的攻击链顺序来,一个阶段一个阶段地过。每做完一个手法,记录三件事:前置条件是什么、关键命令是什么、蓝队会从什么日志里发现你。用这个“三问法”去复盘,而不是只看“命令跑通了”。
第四步,参与授权评估项目或内部攻防演练。只有在真实场景中演练一次,你才能真正理解知识储备和实战操作之间的差距。注意是“授权”二字,这一点怎么强调都不过分——未经授权的渗透测试,无论目的是什么,都是违法行为。想练手就在自己的实验环境或获准测试的范围里做,别拿真实业务系统当靶场。
7.2 这篇文章的收藏与使用方法
既然标题写了“适合收藏”,我专门说一下收藏之后怎么用,避免变成“收藏了等于学过了”。首先,把文章里的50个手法速查表单独摘出来,整理成一张类似“域渗透技术索引”的表格存到自己的笔记里,不要只存整篇文章的链接。然后,按阶段拆开用:信息收集和初始访问部分学完一遍后,去实验环境实操一遍,回头再把对应部分重读一遍,你会发现原来看不懂的细节突然通了。最后,把这篇文章当“排查手册”用:实战中横向移动卡住了、提权不顺利,翻回对应章节按“前置条件—操作要点—检测盲区”逐项排查,往往比盲目试错更高效。
7.3 学习域渗透的两个“不要”
作为过来人,分享两个掏心窝的建议。第一,不要痴迷于“一招鲜”。域渗透是体系战,有些攻击者把某个漏洞利用得炉火纯青,但换个版本换个补丁就完全抓瞎;真正的差距不是会多少工具,而是能不能把侦察信息、认证机制、系统配置串联成一条闭环路径。第二,不要忽视防御视角。我见过太多攻击手很强但完全没有防御意识的人,他们不理解蓝队的检测逻辑,导致操作时留下大量痕迹而不自知。真正的高手一定是站在攻防两端的视角思考问题——知道蓝队会看什么日志,才会知道自己的攻击行为是否隐蔽。
写在最后:一点经验之谈
50个手法讲完,说点题外话。我做安全评估这些年越来越觉得,域渗透技术本身变化很快,旧手法被修补,新手法不断出现,但攻击链路的逻辑始终是那六步:侦察、初始访问、提权、横向、接管、持久化。你把这六步的逻辑吃透了,不管未来出现什么新工具、新漏洞,你都能快速把它归位到攻击链的正确位置上,然后判断它解决了哪个环节的问题、需要什么前置条件、会产生什么可检测的痕迹。这才是这篇文章最想让你带走的“心法”。如果你现在正好在搭实验环境,建议把文中的手法按阶段逐个复现一遍,每复现一个就顺手在笔记里写下你的检测思路——坚持下来,你会发现自己对内网安全的整体理解会发生质变。