ADExplorer实战:域环境安全排查与离线快照分析指南

发布时间:2026/10/1 11:52:36
ADExplorer实战:域环境安全排查与离线快照分析指南
接手一个几百人规模的域环境我最怕的从来不是服务器宕机而是“这堆账号和权限到底是怎么变成现在这样的”。打开AD用户和计算机一个个翻翻到眼睛发酸也理不出头绪。后来把ADExplorer变成内网安全排查的固定配置整个效率完全不一样了。ADExplorer是微软Sysinternals家族里的一款Active Directory对象查看与编辑工具整个程序只有一个exe不需要安装绿色运行。它最核心的定位不是“好看的图形界面”而是“把AD域内的所有对象数据快速变成一份离线快照”然后在这个快照里做各种查询、属性查看、权限分析和前后对比。对域管理员、安全工程师、做AD风险审计的人来说它几乎是一把万能钥匙。这篇就围绕内网安全场景把ADExplorer的实际用法、能查什么、怎么查、以及我踩过的坑完整整理一遍。1. ADExplorer是什么不只是一款“加强版ADUC”1.1 直连域控并全量加载把AD变成一份本地快照ADExplorer和ADUCActive Directory Users and Computers最大的区别在于它的工作方式。ADUC本质上是MMC管理单元每次打开OU、打开用户属性时都会实时向域控制器发LDAP请求。对象少还好说对象一旦上了五千、一万那种“点一下卡三秒”的体验谁用谁知道。ADExplorer的思路完全不同。它启动后会通过LDAP协议连接你指定的域控制器然后把整个AD数据库中可以读取的对象信息全量拉下来加载到本机内存中。之后你浏览任何OU、查任何属性、展开任何组成员关系操作的都是本地这份数据缓存不再依赖网络和域控响应。这意味着你在上面浏览、搜索、翻阅ACL的速度跟对象数量基本解耦翻几千个用户和翻几十个用户一样顺滑。更关键的一点它可以把这份加载好的数据保存为快照文件.dat之后随时离线打开。你可以把一个高危域环境的数据完完整整导出一份到隔离机器上分析完全不影响生产域控也不会在日志里留下持续查询的痕迹。对安全分析和应急排查来说这个能力非常宝贵。对比项ADExplorerADUC数据加载方式连接时全量加载到本地缓存实时逐项查询域控离线分析支持保存快照后离线打开不支持深层属性查看可直接查看全部AD属性需开启高级功能字段有限ACL分析能力支持查看安全描述符和有效权限部分支持操作路径长批量搜索能力支持LDAP过滤器全库扫描基本靠筛选器能力有限快照对比支持两次快照差异对比不支持1.2 工具定位与使用边界ADExplorer是微软官方出品的Sysinternals工具签名可信杀毒软件一般不会误报。下载后建议通过官方渠道获取打开文件属性确认数字签名是Microsoft Windows Component Publisher或Microsoft Corporation再运行。有一点需要先说清楚ADExplorer虽然以只读浏览为主但当你双击一个对象的具体属性值并处于可编辑状态时它确实可以把修改写回AD也可以重置用户密码。功能本身没问题但“能不能做”和“该不该做”是两回事。我在实际使用中把它严格定位为“只读分析工具”所有修改操作一律不在ADExplorer里完成宁可切回ADUC或者用PowerShell。2. 从安全排查角度拆解ADExplorer的核心功能2.1 用户与计算机对象批量排查一眼看出账号风险域环境中最容易出问题的是账号。离职员工的账号没禁用、服务账号密码永不过期、高权限账号长期没人登录这些问题在ADUC里一个个看效率极低但在ADExplorer里可以用属性列表和LDAP过滤器快速捞出来。连接域控后左侧目录树会完整展示整个域的结构包括各个OU、默认容器、Computers、Users、Domain Controllers等。点击任意用户对象右侧会显示详细的属性列表这些属性就是AD数据库里最原始的信息。安全排查时我最关注的几个属性userAccountControl账号状态的核心标志位可以判断账号是否禁用、是否要求密码永不过期等。lastLogonTimestamp最后一次登录的大致时间是找“僵尸账号”的重要依据。pwdLastSet密码最后一次修改时间服务账号如果多年没改过密码风险极高。adminCount账号是否直接或间接加入过受保护组1代表被AdminSDHolder机制标记过。objectSidHistory是否存在历史SID非空的SIDHistory往往是跨域提权的关注点。description和info不少管理员喜欢把密码、主机名甚至内网架构写在描述里这在安全视角下属于信息泄漏。用户账户控制标志位是一个按位存储的整数值几个常用值值得记住标志值含义512正常启用的普通账号514禁用账号512 266048启用且密码永不过期512 6553666050禁用且密码永不过期66048 2262144使用可逆加密存储密码高风险应避免我在检查时会特别关注那些“密码永不过期”的账号尤其是加入了特权组的。服务账号密码永不过期本身不一定立即导致问题但如果服务账号同时拥有域管权限那就相当于给攻击者留了一个长期有效的后门。2.2 组成员与嵌套关系分析找到隐藏特权路径很多安全事故追根溯源都会发现真正的漏洞不在账号本身而在组成员关系。A账号在普通组A组A嵌套到组B组B又嵌套到域管理员组最后A账号实际拥有域管权限。在ADUC里要一层层点进去看非常痛苦。ADExplorer看组成员关系非常直观。双击任意组对象在Group Members区域就能展开所有直接成员而且支持递归查看。右键一个用户或组直接查看其所在的全部组memberOf以及多层嵌套展开这对于排查“这个账号为什么有权限”非常关键。我通常的做法是先找出所有特权组Domain Admins、Enterprise Admins、Schema Admins、Backup Operators、Account Operators、Print Operators等然后把每个特权组的直接成员和嵌套成员全部展开列一张清单逐个核对是否合理。这里要特别提醒不要只看Domain AdminsBackup Operators和Print Operators这种组一旦被滥用同样可以在域内提权到域管很多人会忽略它们。2.3 权限与ACL分析揪出“不该有的授权”组成员关系看的是“你在哪个组”而ACL分析看的是“你对某个对象有什么权限”。很多委派权限问题只用组成员分析是看不出来的必须看ACL。ADExplorer选中任意对象后可以打开安全描述符视图查看该对象的Owner、DACL自主访问控制列表、SACL系统访问控制列表。DACL里每一行都代表一个主体对对象的权限允许或拒绝某种操作。更实用的是有效权限Effective Permissions计算。你选定一个用户或组ADExplorer会基于对象的ACL和组成员关系自动算出来这个主体对该对象的真实权限。这个功能在排查“为什么普通员工能重置域管密码”“为什么这个服务账号能读全站属性”这类疑难问题时特别好用。从安全角度有几个权限位必须高度敏感权限名称风险说明Replicating Directory Changes可同步目录变更配合抓取密码哈希Replicating Directory Changes All可同步全部目录数据风险极高Reset Password可重置目标对象密码等于接管账号Take Ownership可获取对象所有权进而改写ACLGenericAll / WriteDACL可改写对象全部属性或ACL本身如果看到一个普通业务账号对这些高权限位有“允许”授权基本可以断定这是一条风险路径应尽快确认原因并通过ADUC/PowerShell修正。2.4 快照对比用“时光机”定位变更ADExplorer还有一个被很多人忽略但极其好用的功能快照对比。你可以对同一个域在不同时间分别导出快照文件然后启动ADExplorer加载其中一份快照再通过对比功能选择另一份快照。工具会自动列出两份快照之间的差异包括新增了哪些对象、删除了哪些对象、哪些对象的属性发生了变化。这个能力在应急溯源时价值巨大。比如某天发现域管组多了一个不认识的账号如果手上有事发前的快照一对比就能直接确认这个账号是什么时候出现的。退一步讲即使平时没有做基线快照的习惯现在开始也不晚——先导一份当前状态存档再定期导出积累一个周期后就能形成AD变更的“时光机”。我个人的习惯是敏感环境每一个季度导一份完整快照存放在离线位置。域对象起码几千个的规模一份快照文件也就几十MB到一两百MB存储成本完全可以接受。3. 手把手实操一次典型AD安全排查过程3.1 连接前的准备账号、DC与连通性检查首先要想清楚用哪个账号连接。ADExplorer读取数据用的是发起程序的用户的权限你登录Windows用的是普通域账号连上去能看到的对象和属性就只是这个账号权限范围内的。要做全量安全排查建议准备一个专用的审计账号加入“Domain Users”的基础上按需授予“读取所有AD属性”的委派权限或者临时加入Domain Admins组排查完再移出。我不建议日常挂着域管账号去跑ADExplorer安全风险太大。其次是选哪台域控。优先选全局编录GC服务器。全局编录包含整个林的目录信息可以一次拿到所有域的数据和部分跨域属性排查效率更高。如果环境里只有一个DC那就没得选了直接填它。连接前先做三个连通性确认确认本机到DC的网络通ping DC的IP确认基础网络可达。确认DNS解析正确运行nltest /dsgetdc:域名查看返回的DC列表是否符合预期。确认LDAP端口可达用telnet或Test-NetConnection测试389LDAP、636LDAPS、3268GC、3269GC SSL端口。如果网络设备有相关ACL规则有些端口可能被阻断。这些做完了再启动ADExplorer在连接窗口输入目标域名或DC主机名。认证方式建议选择“使用当前会话身份”之外的手动输入审计账号这样排查操作和本机登录身份解耦日志里也更清晰。3.2 保存一份“无干扰”快照建立排查基线连接成功之后第一件事不是急着乱翻而是先存档一份当前状态的快照。操作路径菜单File - Save Snapshot As选择保存位置输入文件名建议包含环境标识和日期比如ad_snapshot_corp_20250115.dat。保存过程其实就是把内存里已经加载的数据写盘速度取决于对象数量一般几千个对象的域十几秒就能完成。保存快照不只是为了以后的对比。它最大的价值在于快照保存完成后你可以关掉网络连接、断开DC访问在完全隔离的情况下继续分析。这意味着你在分析过程中不会对生产环境产生任何额外LDAP查询也不会因为某个误操作直接连到生产去修改对象。对高危环境来说这种隔离分析方式尤其重要。需要特别提醒的是快照是连接那一刻的数据状态不是实时数据。分析的时候要清楚快照的时间点别拿一个月前的快照去断言当前状态。如果快照太旧重新连一次DC导一份新的。3.3 用LDAP过滤器定位高风险对象动手实践ADExplorer的批量查找能力非常强。打开查找窗口后可以通过LDAP过滤器直接在全库里筛选对象。我把自己每次排查必跑的几条过滤器整理出来直接抄作业即可。第一条找出所有被AdminSDHolder机制标记过的对象 ((objectCategoryperson)(objectClassuser)(adminCount1))这条查询的结果基本就是所有曾经直接或间接加入过受保护组的账号通常数量不会太多人工逐个核实完全可行。第二条找出所有SIDHistory非空的用户 ((objectCategoryperson)(objectClassuser)(objectSidHistory*))SIDHistory用于域迁移时保留历史权限但如果环境里根本没有做过跨域迁移出现这个属性就要高度警惕。第三条找出所有被禁用的账号 (userAccountControl:1.2.840.113556.1.4.803:2)安全核查时要把“该禁用却没禁用”的账号列出来尤其关注离职员工账号。禁用标志位是按位匹配所以用位匹配规则普通等于匹配不准确。第四条找出密码永不过期的账号 (userAccountControl:1.2.840.113556.1.4.803:65536)排查结果出来后再和特权组成员交叉对照基本就能定位高风险账号。在ADExplorer里执行过滤器时我建议先只填一个条件跑确认结果数量和预期一致再逐步叠加条件。过滤器语法写错的时候经常返回空结果容易让人误判“没有问题”多条件查询尤其容易踩这个坑。3.4 检查AdminSDHolder与特权组权限审计的核心动作权限审计不能只看用户本身必须看特权对象和受保护对象的ACL。先定位AdminSDHolder对象。在ADExplorer里可以通过搜索找到所在位置正确路径一般是域根下的System容器。查看它的安全描述符时重点看DACL里有没有非正常主体。AdminSDHolder对象的ACL如果被篡改每60分钟就会自动覆盖到所有受保护组成员上这等于给攻击者留了一个持久化后门。排查方法很简单逐条看DACL条目出现不认识的主体就立刻核实。然后检查特权组的成员。依次展开Domain Admins、Enterprise Admins、Schema Admins、Backup Operators、Print Operators、Account Operators这些组用嵌套成员展开功能查看完整成员列表。不要只数人头要逐个确认这个人是否还在职、这个服务账号是否还在用、这个组是否嵌套了不该出现的组。对每个组成员再通过Effective Permissions计算它对整个域的权限。很多时候一个账号不在Domain Admins组里但它通过嵌套或者委派实际已经拥有了对某些关键对象的高权限只有通过有效权限计算才能暴露出来。3.5 用Compare对比两次快照把变化摆到台面上快照对比的操作分四步第一步确保手上至少有两份同域不同时间的快照文件。没有历史快照的情况下就先导一份当前快照作为新的起点。 第二步用ADExplorer打开其中一份快照。 第三步调出快照对比功能选择另一份快照文件作为对比基准。 第四步等待对比完成逐项查看结果列表。对比结果一般会分成几类左侧有右侧没有新增、右侧有左侧没有删除、两侧都有但属性值不一致修改。我一般优先看新增的对象尤其是新增的用户、组、计算机然后在新增对象里重点看是否出现在特权组里、是否有密码永不过期属性、创建者是谁。其次是修改类优先看用户账户控制标志位的变化比如某个账号从禁用变成了启用或者密码永不过期标志被加上了。对比功能对容量大的域可能会耗时较长但结果非常直观。平时不做基线快照的话遇到安全事件时没有对照物排查完全靠猜属于事倍功半。4. 常见问题与排查技巧实录4.1 连接不上域控多半不是工具的问题ADExplorer提示找不到域、找不到服务器的时候先别怀疑工具坏了。我从经验来看60%以上是网络或账号权限问题。可以用下面这几个命令快速定位问题排查目标命令DNS解析能否找到DCnltest /dsgetdc:你的域名DC的LDAP端口是否通Test-NetConnection DC_IP -Port 389全局编录端口是否通Test-NetConnection DC_IP -Port 3268当前会话身份有效期whoami /all还有一种情况是域控做了LDAP签名要求或者TLS要求旧版本ADExplorer连不上。这时检查工具版本尽量从官方渠道拉最新版同时确认使用的账号没有被“拒绝登录本机”之类的策略限制。4.2 属性看不到、搜索结果为空先检查这三点ADExplorer里看不到某个属性或者过滤器结果为空优先排查三个原因第一账号权限不足。普通域账号对部分AD属性默认没有读取权限比如一些自定义扩展属性。换高权限审计账号再试。第二过滤器语法错误。LDAP过滤器区分大小写的地方不多但括号匹配、属性名错误都会导致空结果。建议从简到繁先用(objectClassuser)这种最简条件验证语法本身能用再加条件。第三当前打开的是快照而且快照保存时间早于你想查的对象创建时间。快照不会自动更新离线分析时尤其容易犯这个错发现数据和预期不一致先看右上角或状态栏的快照时间。4.3 快照文件的加载、存储与时效陷阱ADExplorer支持直接打开.dat快照文件这一点强烈建议多用。但有几个坑要注意快照文件不要放在域脚本目录、共享目录或者能被普通用户修改的位置防止被篡改或删除。存放离线介质或者受控安全的目录。快照加载速度取决于文件大小和机器性能对于上万对象的大域第一次打开可能会卡几十秒到一两分钟不要重复双击多次触发多个实例。如果需要频繁分析同一个快照保持一个ADExplorer实例打开即可。快照不能跨域混用一个域的存储快照在另一个域加载会出现大量对象“找不到父容器”的错误因为这个工具本身设计就是单域视角。4.4 安全使用建议好工具别“用歪”最后聊几条我自己踩过坑之后总结的安全使用纪律。第一ADExplorer这台机器本身要安全。它是绿色工具很多人会随意拷贝到U盘带到各种环境使用。工具没有后门但拷贝的U盘可能感染恶意程序带过去反而给目标环境制造风险。建议固定使用一台干净的维护终端。第二永远以只读分析为主。ADExplorer确实支持属性写回和密码重置但它的界面设计不适合做批量修改操作一旦误改影响面可能很大。实际需要改属性、改密码切到ADUC或PowerShell至少有明确的操作记录可追溯。第三导出快照属于敏感操作。一份完整AD快照基本等于整个域的用户、组、权限、配置的汇总一旦泄露对攻击者来说是绝佳情报。保存快照的介质要加密不要放在公共网盘不要通过IM工具传输。第四如果你是负责AD安全防御的人建议自己也用ADExplorer做周期性基线快照。这种自我保护式的审计能让重大变更发生时第一时间有据可查。我自己的习惯是每个大域环境专门建立一个“AD安全快照目录”按季度导一次完整快照配合域内变更记录使用。ADExplorer最厉害的地方不是某个单点功能而是它把整个AD变成了一份随时可回溯的离线数据资产让安全分析不再需要整天绑在域控上小心翼翼地点来点去。工具是有边界的使用者心里更要有边界。宁可慢一点、多备份也别在域控上随手试错。