基于 Web 的报告功能:
基于风险的 Active Directory 弱点评级,以及全面的缓解路径。
精心设计的搜索栏和控件,可快速识别最具风险的错误配置。
您还可以观察指标随时间的变化,以帮助衡量缓解效率。
AD Miner 最初由 Forvis Mazars 创建,目前由 Grant Thornton 网络安全审计与咨询团队维护。
要运行 AD Miner,您首先需要一个包含 Active Directory 对象的 neo4j 数据库:
[!CAUTION] 强烈推荐使用 BloodHound Automation,因为它会安装 Graph Data Science Neo4j 插件,该插件:
- 显著提高计算时间和整体性能。
- 启用 Smartest Path 替代内置的 Neo4j shortestPath()(即,更容易利用的路径,而非节点跳数最少的路径)。
要设置您的 BloodHound 环境(包括 GUI 和 Neo4j 数据库),强烈推荐使用 BloodHound Automation,因为它能与 Graph Data Science 插件无缝集成。当然,使用默认的 BloodHound CE 安装也是完全可以的,但请注意,您将错过 GDS 的优势(例如,更智能的寻路、更快的执行速度等)。
默认情况下,BloodHound 会创建一个可在 7687 端口访问的 neo4j 数据库。
最简单的方法是使用 pipx 执行以下命令:
pipx install 'git+https://github.com/AD-Security/AD_Miner.git'
ADMiner 也可在一些 Linux 发行版上获取:
pacman -S ad-minernix-env -iA nixos.ad-miner可以使用 Docker 镜像进行构建。使用以下命令构建镜像:
docker build -t ad-miner .
要在 Windows 上使用 BloodHound Community Edition 数据运行,请使用以下命令:
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 数据运行,请使用以下命令:
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 主机上以默认设置运行。
运行工具:
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]
示例:
AD-miner -cf My_Report -u neo4j -p mypassword
每次 Neo4j 请求完成后都会生成缓存文件。此功能允许您在过程中的任何时刻暂停或停止 AD Miner,而不会丢失之前计算的结果。要利用缓存,请使用 -c 参数。缓存文件存储在当前仓库的 cache_neo4j 文件夹中。要使用缓存,报告名称必须与缓存文件的前缀匹配:
AD-miner -c -cf My_Report -u neo4j -p mypassword
为了更好地处理大型数据集,可以启用多线程,也可以使用 neo4j 数据库集群,如以下示例所示(其中 server1 处理 32 个线程,server2 处理 16 个线程):
AD-miner -c -cf My_Report -b bolt://server1:7687 -u neo4j -p mypassword --cluster server1:7687:32,server2:7687:16
如果已知密码续订策略,可以使用 -r 参数指定,以确保密码续订控制符合您的环境设置(默认为 90 天)。例如,如果密码策略设置为 180 天,可以使用以下命令:
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180
[!TIP] Bloodhound CE neo4j 数据库的默认密码是
bloodhoundcommunityedition,如果您使用 BloodHound Automation,则为neo5j。
选项:
-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 参数后指定该文件夹的路径。
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)。