Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
AD_Miner — AD Miner 是一款 Active Directory 审计工具,利用 Cypher 查询从 #Bloodhound 图数据库中处理数据,以发现安全弱点。 | Kitploit
工具/GitHubGitHub/ad-security/ad_miner
权限提升侦察漏洞分析横向移动配置审计信息收集渗透测试错误配置学习与教育
GitHubad-security/ad_miner

AD_Miner

AD Miner 是一款 Active Directory 审计工具,利用 Cypher 查询从 #Bloodhound 图数据库中处理数据,以发现安全弱点。

1.6k16335个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
AD_Miner
AD_Miner 最新版本 最新发布 dev 分支最新提交 Rawsec 网络安全工具清单徽章
Discord

AD Miner 是一个 Active Directory(本地和 Entra ID)审计工具,它:

  • 利用 Cypher 查询 分析来自 BloodHound 图数据库 (Neo4j) 的数据。
  • 通过静态的基于 Web 的报告提供现有弱点的全面概览。

基于 Web 的报告功能:

  • 已识别弱点的 详细列表
  • 用于可视化分析的 动态图表
  • 随时间跟踪变化的 历史关键指标
  • 用于优先级排序的 风险评级

报告快速概览

Active Directory 风险的全面缓解路径

基于风险的 Active Directory 弱点评级,以及全面的缓解路径。

主页

动态 Web 界面

精心设计的搜索栏和控件,可快速识别最具风险的错误配置。

主页

通过演进界面监控进展

您还可以观察指标随时间的变化,以帮助衡量缓解效率。

主页

AD Miner 最初由 Forvis Mazars 创建,目前由 Grant Thornton 网络安全审计与咨询团队维护。

前置条件

要运行 AD Miner,您首先需要一个包含 Active Directory 对象的 neo4j 数据库:

  1. 要从域中提取数据,可以使用 SharpHound、RustHound-CE 或 BloodHound.py 等工具;对于 EntraID 环境,可以使用 AzureHound。

[!CAUTION] 强烈推荐使用 BloodHound Automation,因为它会安装 Graph Data Science Neo4j 插件,该插件:

  • 显著提高计算时间和整体性能。
  • 启用 Smartest Path 替代内置的 Neo4j shortestPath()(即,更容易利用的路径,而非节点跳数最少的路径)。
  1. 要设置您的 BloodHound 环境(包括 GUI 和 Neo4j 数据库),强烈推荐使用 BloodHound Automation,因为它能与 Graph Data Science 插件无缝集成。当然,使用默认的 BloodHound CE 安装也是完全可以的,但请注意,您将错过 GDS 的优势(例如,更智能的寻路、更快的执行速度等)。

  2. 默认情况下,BloodHound 会创建一个可在 7687 端口访问的 neo4j 数据库。

安装与设置

最简单的方法是使用 pipx 执行以下命令:

root@kitploit:~
pipx install 'git+https://github.com/AD-Security/AD_Miner.git'

ADMiner 也可在一些 Linux 发行版上获取:

打包状态

  • BlackArch: pacman -S ad-miner
  • NixOS: nix-env -iA nixos.ad-miner

可以使用 Docker 镜像进行构建。使用以下命令构建镜像:

root@kitploit:~
docker build -t ad-miner .

要在 Windows 上使用 BloodHound Community Edition 数据运行,请使用以下命令:

root@kitploit:~
docker run -v ${PWD}:/tmp ad-miner AD-miner -b bolt://host.docker.internal:7687 -u neo4j -p mypassword -cf YOUR_PREFIX

要在 Linux 上使用 BloodHound Community Edition 数据运行,请使用以下命令:

root@kitploit:~
docker run -v ${PWD}:/tmp --network host ad-miner AD-miner -b bolt://localhost:7687 -u neo4j -p mypassword -cf YOUR_PREFIX

注意,使用 -v 挂载卷对于获取输出数据至关重要。这假设 BHCE 服务器在 Docker 主机上以默认设置运行。

使用

运行工具:

root@kitploit:~
AD-miner [-h] [-b BOLT] [-u USERNAME] [-p PASSWORD] [-e EXTRACT_DATE] [-r RENEWAL_PASSWORD] [-a] [-c] [-l LEVEL] -cf CACHE_PREFIX [-ch NB_CHUNKS] [-co NB_CORES] [--rdp] [--evolution EVOLUTION] [--cluster CLUSTER]

示例:

root@kitploit:~
AD-miner -cf My_Report -u neo4j -p mypassword

每次 Neo4j 请求完成后都会生成缓存文件。此功能允许您在过程中的任何时刻暂停或停止 AD Miner,而不会丢失之前计算的结果。要利用缓存,请使用 -c 参数。缓存文件存储在当前仓库的 cache_neo4j 文件夹中。要使用缓存,报告名称必须与缓存文件的前缀匹配:

root@kitploit:~
AD-miner -c -cf My_Report -u neo4j -p mypassword

为了更好地处理大型数据集,可以启用多线程,也可以使用 neo4j 数据库集群,如以下示例所示(其中 server1 处理 32 个线程,server2 处理 16 个线程):

root@kitploit:~
AD-miner -c -cf My_Report -b bolt://server1:7687 -u neo4j -p mypassword  --cluster server1:7687:32,server2:7687:16

如果已知密码续订策略,可以使用 -r 参数指定,以确保密码续订控制符合您的环境设置(默认为 90 天)。例如,如果密码策略设置为 180 天,可以使用以下命令:

root@kitploit:~
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180

[!TIP] Bloodhound CE neo4j 数据库的默认密码是 bloodhoundcommunityedition,如果您使用 BloodHound Automation,则为 neo5j。

选项:

root@kitploit:~
  -h, --help            显示此帮助信息并退出
  -b BOLT, --bolt BOLT  Neo4j bolt 连接(默认:bolt://127.0.0.1:7687)
  -u USERNAME, --username USERNAME
                        Neo4j 用户名(默认:neo4j)
  -p PASSWORD, --password PASSWORD
                        Neo4j 密码(默认:bloodhoundcommunityedition)
  -e EXTRACT_DATE, --extract_date EXTRACT_DATE
                        提取日期(例如,20220131)。默认:最后登录日期
  -r RENEWAL_PASSWORD, --renewal_password RENEWAL_PASSWORD
                        密码续订策略(天数)。默认:90
  -c, --cache           对 neo4j 数据使用本地文件
  -l LEVEL, --level LEVEL
                        路径查询的递归级别
  -cf CACHE_PREFIX, --cache_prefix CACHE_PREFIX
                        要使用的缓存文件(用于多个公司的缓存文件)
  --gpo_low             对 GPO 执行更快但不完整的查询(比常规查询快)
  -ch NB_CHUNKS, --nb_chunks NB_CHUNKS
                        并行 neo4j 请求的块数。默认:20 * CPU 数量
  -co NB_CORES, --nb_cores NB_CORES
                        并行 neo4j 请求的 CPU 核心数。默认:CPU 数量
  --rdp                 在图中包含 CanRDP 边
  --evolution EVOLUTION
                        随时间演化:JSON 数据文件的位置。例如:'../../tests/'
  --cluster CLUSTER     集群节点,用于运行并行 neo4j 查询。例如:host1:port1:nCore1,host2:port2:nCore2,...

在图页面中,您可以右键单击图节点来对它们进行聚类或打开聚类。

演化

如果您有多个 AD-Miner 报告随着时间的推移生成,可以使用 --evolution 参数轻松跟踪演变:每个 AD-Miner 报告都会生成一个 JSON 数据文件,与 index.html 文件一起存放。您只需将这些不同的 JSON 文件收集到一个文件夹中,并在 --evolution 参数后指定该文件夹的路径。

root@kitploit:~
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180 --evolution evolution_folder/

主页上会出现一个“随时间演变”选项卡,为每个类别(权限、密码、Kerberos 和杂项)提供演变图表。

每个控制的详细演变也可用,可以通过每个类别的“显示演变”按钮查看。提供对数刻度以更好地突出时间上的微妙变化。

最聪明的路径

AD Miner 可以根据路径的实际可利用性来计算路径。事实上,有时最短路径很难利用(这里是因为 ExecuteDCOM 在 HasSession 之前)。

而存在一条更长但更简单的路径(这里使用 MemberOf 和 AdminTo 代替了 ExecuteDCOM)。

当您的 neo4j 数据库安装了 Graph Data Science 插件时,AD Miner 会自动切换到最聪明路径模式(https://neo4j.com/docs/graph-data-science/current/)。安装此插件最简单的方法是在 neo4j docker 中定义环境变量:NEO4J_PLUGINS=["graph-data-science"](默认情况下已与 BloodHound Automation 一起安装)。

目前,有 10 个控制项利用全图覆盖并优化了最聪明路径用于分析。

已实现的控制

以下列出了 AD Miner 中已实现的控制:

本地 Active Directory 控制

Entra ID 控制

贡献

如何贡献,请查看 这里。

下载工具
类别描述类别描述
Kerberos可 AS-REP Roast 的账户杂项操作系统过时的计算机
Kerberos可 Kerberoast 的账户杂项休眠账户
KerberosKerberos 约束委派杂项域功能级别
Kerberos针对计算机的 Kerberos 基于资源的约束委派 (RBCD)杂项幽灵计算机
KerberosKerberos 非约束委派杂项无成员的组
Kerberos旧的 KRBTGT 密码杂项无成员的 OU
Kerberos特权账户上的 Shadow Credentials杂项域控制器上的 Shadow Credentials
Kerberos普通账户上的 Shadow Credentials杂项意外的 PrimaryGroupID
密码对 LAPS 密码的访问杂项用户的 FGPP
密码未启用 LAPS 的计算机权限ACL 异常
密码可读取管理员 GMSA 密码的对象权限攻击路径瓶颈点
密码绕过密码要求权限管理其他计算机的计算机
密码具有明文密码的用户权限跨域通往域管理员的路径
密码密码过旧的用户权限来宾账户
密码密码永不过期的用户权限不充分的 DCSync 权限
权限不充分的 AdminCount 设置权限不充分的 GPO 修改权限
权限不充分的域管理员数量权限权限不足的机器账户
权限权限不足的机器账户权限在 ADCS 上拥有非层级 0 本地管理员权限
权限具有 SID 历史记录的对象权限通往 DNS 管理员的路径
权限通往域管理员的路径权限通往操作员组的路径
权限通往组织单位 (OU) 的路径权限通往服务器的路径
权限通往 AdminSDHolder 容器的路径权限"Pre-Windows 2000 Compatible Access" 组
权限受保护用户组之外的特权账户权限RDP 访问(计算机)
权限RDP 访问(用户)权限层级 0 违规(会话)
权限拥有强大跨域权限的用户权限具有本地管理员权限的用户
类别描述类别描述
Entra ID 杂项Azure 休眠账户Entra ID MS GraphMS Graph 的直接控制器
Entra ID 密码Entra ID 密码重置权限Entra ID MS Graph未同步到本地的 Entra ID 账户
Entra ID 密码不一致的最后密码更改时间Entra ID MS Graph已同步但对应本地账户被禁用的账户
Entra ID 权限对特权 Entra ID 角色的访问Entra ID 权限同时拥有本地和 Azure 特权的账户
Entra ID 权限跨本地/Entra ID 通往层级 0 的路径Entra ID 权限可能与 AADConnect 相关的用户
Entra ID 权限Entra ID 用户通往高价值目标的路径