安全软件
点击放大


<di="center">
<img src="doc/img/ADMiner-Logo-Color.png" alt="AD_Miner" width="50%">
<br>
</div>
<di="center">
<a target="_blank" rel="noopener noreferrer" href=" title="Latest AD_Miner release">
<img src=" alt="Latest AD_Miner "></a>
<a target="_blank" rel="noopener noreferrer" href=" title="Latest release">
<img src=" alt="Latest release"></a>
<a target="_blank" rel="noopener noreferrer" href=" title="Latest commit in dev">
<img src=" alt="Latest commit in dev"></a>
<a target="_blank" rel="noopener noreferrer" href=" title="Rawsec's CyberSecurity In">
<img src=" alt="Rawsec's CyberSecurity In badge"></a>
<br>
<a href="
<img src="doc/img/discord.png" alt="Discord" width="15%">
</a>
</div>
</b>
Web-based reports features:
<p align="center">
<img src="doc/img/main1.gif" alt="Main page" width="70%" />
</p>
<p align="center">
<img src="doc/img/gpo2.gif" alt="Main page" width="70%" />
</p>
<p align="center">
<img src="doc/img/evol.gif" alt="Main page" width="70%" />
</p>
AD Miner has been initially created by For and is maintained by Grant Thornton Cybersecurity Audit & Ad Team.
To run AD Miner, you first need a neo4j database which contains the Acti objects:
1. To extract the data from the domain, you can use tools like SharpHound, RustHound-CE or BloodHound.py and AzureHound for EntraID en.
> [!CAUTION]
> We strongly recommend using BloodHound Automation, as it installs the Graph Data Science Neo4j plugin, which :
> - significantly impro time and o performance.
> - enables the use of Smartest Path instead of built-in Neo4j shortestPath() (i.e., Paths that are easier to exploit rather than least nodes hops).
</div>
2. To set up your BloodHound en (including the GUI and Neo4j database), BloodHound Automation is highly recommended due to its seamless integration with the Graph Data Science plugin. Though it is perfectly fine to use the default BloodHound CE installation, be aware that you will miss out on the benefits of GDS (e.g., smarter pathfinding, impro speed, etc.).
4. By default, BloodHound creates a neo4j base accessible on port 7687.
The easier way is to do the following command using pipx:
ADMiner is also a on some Linux distributions:
![Packaging status]()
pacman -S ad-minernix-env -iA nixos.ad-minerA Docker image is a to build. Build the image with the following commmand:
To run this on Windows with the BloodHound Community Edition data, use the commands below:
To run this on Linux with the BloodHound Community Edition data, use the commands below:
Note that mounting the with -v is critical to get the output of the data. This assumes that the BHCE server is running on the Docker host with default settings.
Run the tool:
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] [--e E] [--cluster CLUSTER]
Example:
AD-miner -cf My_Report -u neo4j -p mypassword
Cache files are generated at the completion of each Neo4j request. This feature allows you to pause or stop AD Miner at any point during its process without losing pre computed results. To le the cache, use the -c parameter. The cache files are stored in the cache_neo4j folder in your current repository. For the cache to be used, the report name must match the cache file's name prefix :
AD-miner -c -cf My_Report -u neo4j -p mypassword
To better handle large data sets, it is possible to enable multi-threading and also to use a cluster of neo4j databases, as shown in the following example (where server1 handles 32 threads and server2 handles 16) :
AD-miner -c -cf My_Report -b bolt://server1:7687 -u neo4j -p mypassword --cluster server1:7687:32,server2:7687:16
If password renewal policy is known, you can specify it using the -r parameter to ensure that password renewal controls align with your en's settings (default is 90 days). For example, if the password policy is set to 180 days, you can use the following:
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180
> [!TIP]
> The default password of the Bloodhound CE neo4j database is bloodhoundcommunityedition or neo5j if you use BloodHound Automation
Options:
-h, --help show this help message and exit
-b BOLT, --bolt BOLT Neo4j bolt connection (default: bolt://127.0.0.1:7687)
-u USERNAME, --username USERNAME
Neo4j username (default : neo4j)
-p PASSWORD, --password PASSWORD
Neo4j password (default : bloodhoundcommunityedition)
-e EXTRACT_DATE, --extract_date EXTRACT_DATE
Extract date (e.g., 20220131). Default: last logon date
-r RENEWAL_PASSWORD, --renewal_password RENEWAL_PASSWORD
Password renewal policy in days. Default: 90
-c, --cache Use local file for neo4j data
-l LEVEL, --le
Recursi for path queries
-cf CACHE_PREFIX, --cache_prefix CACHE_PREFIX
Cache file to use (in case of multiple company cache files)
--gpo_low Perform a faster but incomplete query for GPO (faster than the regular query)
-ch NB_CHUNKS, --nb_chunks NB_CHUNKS
Number of chunks for parallel neo4j requests. Default : 20 * number of CPU
-co NB_CORES, --nb_cores NB_CORES
Number of cores for parallel neo4j requests. Default : number of CPU
--rdp Include the CanRDP edge in graphs
--e E
E over time : location of json data files. ex : '../../tests/'
--cluster CLUSTER Nodes of the cluster to run parallel neo4j queries. ex : host1:port1:nCore1,host2:port2:nCore2,...
In the graph pages, you can right-click on the graph nodes to cluster them or to open the cluster.
<p align="center">
<img src="doc/img/cluster.png" style="height:150px">
</p>
If you ha AD-Miner reports over time, you can easily track the e with the --e argument: each AD-Miner report generates a JSON data file alongside the index.html file. You just need to gather these different JSON files into a single folder and specify the path to that folder after the --e argument.
AD-miner -c -cf My_Report -b bolt://server:7687 -u neo4j -p mypassword -r 180 --e e/
An 'E over time' tab appears on the main page, pro e graphs for each category (Permissions, Passwords, Kerberos, and Misc).
<p align="center">
<img src="doc/img/e.png" style="height:400px">
</p>
Detailed e for each control is also a and can be accessed via the “Show e” button for each category. A logarithmic scale is a to better highlight subtle over time.
<p align="center">
<img src="doc/img/evol.gif" style="height:200px">
</p>
AD Miner can compute paths based on their actual exploitability. Indeed, sometimes the shortest path is difficult to exploit (here because of the ExecuteDCOM before the HasSession).
<p align="center">
<img src="doc/img/smartest_path_1.png">
</p>
While a longer but simpler path exists (here with MemberOf and AdminTo instead of ExecuteDCOM).
<p align="center">
<img src="doc/img/smartest_path_2.png">
</p>
AD Miner automatically switches to smartest path mode when your neo4j database has the Graph Data Science plugin installed ().
The easiest way to install this plugin is to define an en in your neo4j docker: (it is by default installed with BloodHound Automation).
Currently, 10 controls utilize full graph co and optimize the smartest paths for analysis.
The following provides a list controls that ha been implemented in AD Miner :
| Category | Description | | Category | Description |
|-----------------|----------------------------------------------------|----------------|-----------------|----------------------------------------------------|
| Kerberos | AS-REP Roastable accounts | | Misc | Computers with obsolete OS |
| Kerberos | Kerberoastable accounts | | Misc | Dormant accounts |
| Kerberos | Kerberos constrained delegation | | Misc | Functional level of the domain |
| Kerberos | Kerberos RBCD against computers | | Misc | Ghost computers |
| Kerberos | Kerberos unconstrained delegations | | Misc | Groups without any member |
| Kerberos | Old KRBTGT password | | Misc | OUs without any member |
| Kerberos | Shadow Credentials on pri accounts | | Misc | Shadow credentials on domain controllers |
| Kerberos | Shadow Credentials on regular accounts | | Misc | Unexpected PrimaryGroupID |
| Passwords | Access to LAPS passwords | | Misc | Users FGPP |
| Passwords | Computers without LAPS | | Permissions | ACL anomalies |
| Passwords | Objects can read GMSA passwords of administrators | | Permissions | Attack paths choke points |
| Passwords | Password requirement bypass | | Permissions | Computers admin of other computers |
| Passwords | Users with cleartext passwords | | Permissions | Cross-domain paths to Domain Admin |
| Passwords | Users with old passwords | | Permissions | Guest accounts |
| Passwords | Users without password expiration | | Permissions | Inadequate access to DCSync pri |
| Permissions | Inadequate AdminCount settings | | Permissions | Inadequate GPO modifications pri |
| Permissions | Inadequate number of domain admins | | Permissions | Machine accounts with inadequate pri |
| Permissions | Machine accounts with inadequate pri | | Permissions | Non-tier 0 local admin privs on ADCS |
| Permissions | Objects with SID history | | Permissions | Paths to DNS Admins |
| Permissions | Paths to Domain Admins | | Permissions | Paths to Operators Groups |
| Permissions | Paths to Organizational Units (OU) | | Permissions | Paths to servers |
| Permissions | Paths to the AdminSDHolder container | | Permissions | "Pre-Windows 2000 Compatible Access" group |
| Permissions | Pri account outside the protected users group | | Permissions | RDP access (computers) |
| Permissions | RDP access (users) | | Permissions | Tier-0 (sessions) |
| Permissions | Users that ha cross-domain pri | | Permissions | Users with local admin pri |
| Category | Description | | Category | Description |
|-------------------|--------------------------------------------------------|----------------|-------------------|------------------------------------------------------|
| Entra ID Misc | Azure dormant accounts | | Entra ID MS Graph | Direct Controllers of MS Graph |
| Entra ID Passwords | Entra ID password reset pri | | Entra ID MS Graph | Entra ID accounts not synced on-prem |
| Entra ID Passwords | Incoherent last password change | | Entra ID MS Graph | Synced accounts with disabled twin account |
| Entra ID Permissions | Access to pri Entra ID roles | | Entra ID Permissions | Pri accounts on both on-prem and Azure |
| Entra ID Permissions | Cross on-prem/Entra ID path to tier-0 | | Entra ID Permissions | Users possibly related to AADConnect |
| Entra ID Permissions | Entra ID users with path high value targets | | | |
Check out how to contribute here.
开发语言:JavaScript
Star 数:1569
该项目属于安全软件方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕AD Miner is an Active Directory audit tool that leverages cypher queries to crunch data from the #Bloodhound graph database to uncover security weaknesses展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | AD_Miner - AD Miner is an Active Directory audit tool that le |
| 所属分类 | 安全软件 |
| 发布作者 | admin |
| 发布时间 | 2026-10-05 22:31:14 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 124 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |