cumakurt/Atilkurt
GitHub: cumakurt/Atilkurt
一款基于只读 LDAP 查询的 Active Directory 安全评估工具,能够全面检测域内配置缺陷与攻击路径,并生成含合规视角的离线 HTML 报告。
Stars: 12 | Forks: 1
# AtilKurt
[](https://www.gnu.org/licenses/gpl-3.0)
[](https://www.python.org/downloads/)
AtilKurt 是一个只读的 Active Directory 安全评估工具。它通过 LDAP 收集目录数据,运行广泛的安全分析器,对发现的问题进行评分,并生成一个独立的 HTML 报告供离线审查。
## 概述
该工具专为安全评估、内部红队风格审查和目录卫生分析而设计。它不会修改 Active Directory,且完全基于 LDAP 搜索操作构建。
核心目标:
- 从 Active Directory 收集身份、组、计算机、GPO 和 ACL 数据
- 检测配置错误、薄弱控制点和已知攻击路径
- 将发现的问题整合到基于严重性的风险模型中
- 生成支持离线查看的 HTML、JSON 以及可选的检查点导出文件
- 通过分页、缓存、并行收集和增量执行支持大型环境
## 关键功能
### 目录清单
- 用户、计算机、组和 GPO 收集
- 收集对象 SID 用于身份和 ACL 关联
- 适用于大型域的分页和查询缓存
### 安全分析
- 用户、计算机和组的风险分析
- Kerberos、委派、权限提升和 ACL 审查
- Kerberoasting、AS-REP Roasting、DCSync、GPP、LAPS、信任和密码策略检查
- AD CS 分析,包括扩展的证书滥用路径
- 针对常见特权对象和配置缺陷的扩展 LDAP 检查
- 域安全、审计策略、过期对象、gMSA、KRBTGT、机器配额和复制元数据分析
### 评分与优先级排序
- 基于严重性的域评分
- 可利用性评分
- 风险优先级排序和补救成本估算
- 业务影响和 ROI 风格的补救视图
### 报告
- 包含嵌入资源的单文件 HTML 报告
- 用于下游处理的 JSON 导出
- 针对 CIS、NIST CSF、ISO 27001 和 GDPR 的合规性报告
- 执行摘要和分析摘要表
- 无需单独的 `vendor/` 目录即可离线使用
## 环境要求
- Python 3.9 或更高版本
- 对目标域的 LDAP 读取权限
- 目标 Active Directory 环境的有效凭据
建议环境:
- 专用的评估工作站
- 与域控制器的网络连通性
- 具有运行所需检查最低权限的只读凭据
## 安装
克隆代码库:
```
git clone https://github.com/cumakurt/AtilKurt.git
cd AtilKurt
```
安装依赖项:
```
pip install -r requirements.txt
```
用于本地开发:
```
pip install -e .
```
## 配置
### 环境变量
您可以通过 `ATILKURT_PASS` 提供密码,而无需在命令行中输入。
支持的环境变量:
- `ATILKURT_DOMAIN`
- `ATILKURT_USER`
- `ATILKURT_PASS`
- `ATILKURT_DC_IP`
### 证书验证
使用 SSL/TLS 时,默认启用 TLS 证书验证。请仅在受控的实验环境中禁用它。
### 输出文件
默认情况下,该工具会写入:
- HTML 报告
- 可选的 JSON 导出
- 可选的 Kerberoasting 导出
- 可选的检查点文件
## 使用方法
### 基础扫描
```
python3 AtilKurt.py \
--domain example.com \
--username username \
--password your_password \
--dc-ip 192.168.1.10 \
--output report.html
```
简写形式:
```
python3 AtilKurt.py \
-d example.com \
-u username \
-p your_password \
--dc-ip 192.168.1.10 \
--output report.html
```
### 大型环境扫描
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--page-size 1000 \
--timeout 60 \
--max-retries 3 \
--parallel \
--max-workers 4 \
--analysis-profile fast
```
### 隐匿导向扫描
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--stealth \
--rate-limit 3.0 \
--random-delay 1 5
```
### 跳过特定分析
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--skip-analysis acl_security
```
### 恢复或增量扫描
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--checkpoint scan_001
```
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--resume scan_001
```
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--incremental
```
### JSON 导出
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--json-export data.json
```
### 风险管理调优
```
python3 AtilKurt.py \
-d corp.local \
-u admin \
-p SecurePass123 \
--dc-ip 10.0.0.1 \
--hourly-rate 150.0
```
## CLI 参考
### 身份与连接
- `-d, --domain`:Active Directory 域
- `-u, --username`:LDAP 用户名
- `-p, --password`:LDAP 密码,已弃用,建议使用 `ATILKURT_PASS`
- `--dc-ip`:域控制器 IP 地址
- `--ssl`:使用 SSL/TLS
- `--validate-cert`:向后兼容的证书验证标志
- `--no-validate-cert`:禁用证书验证
### 收集与性能
- `--page-size`:LDAP 页面大小
- `--timeout`:基础 LDAP 超时时间
- `--max-retries`:LDAP 操作的重试次数
- `--parallel`:启用并行顶层收集
- `--max-workers`:最大并行工作线程数
- `--no-progress`:禁用进度输出
### 隐匿与时间控制
- `--stealth`:启用隐匿模式
- `--rate-limit`:LDAP 网络查询之间的最短间隔秒数
- `--random-delay MIN MAX`:查询之间的随机延迟范围
### 分析控制
- `--analysis-profile {full,fast}`:选择扫描配置文件
- `--skip-analysis KEY`:跳过特定的分析步骤
- `--check-user USERNAME`:评估用户是否可以到达 Domain Admin 路径
- `--incremental`:启用增量扫描
### 导出与报告
- `--output`:HTML 报告输出路径
- `--single-file-report`:生成支持离线查看的独立 HTML 报告
- `--json-export`:JSON 导出输出路径
- `--kerberoasting-export`:Kerberoasting 目标导出路径
- `--checkpoint`:保存检查点
- `--resume`:从检查点恢复
### 风险管理
- `--hourly-rate`:用于 ROI 计算的每小时补救成本
### 日志
- `--verbose`:信息日志
- `--debug`:调试日志
- `--log-file`:将日志写入文件
## 报告输出
HTML 报告包含:
- 执行摘要和域评分
- 按严重性和类别划分的风险细分
- 带有缓解指导的单项发现详情
- 攻击路径和可利用性评分
- 支持框架的合规性部分
- 包含补救优先级排序的风险管理摘要
- 直接嵌入在报告中的离线资源
默认情况下,该报告是自包含的,因此可以将其复制到其他机器上并在没有单独资源目录或网络访问的情况下打开。
## 性能与可扩展性
AtilKurt 包含多种针对大型域的控制措施:
- 针对大型结果集的 LDAP 分页
- 减少重复查找的查询缓存
- 针对顶层对象集的并行收集
- 增量检查点支持
- 基于配置文件的可选分析选择
- 可选跳过开销昂贵的模块
实用指南:
- 在大型域上使用 `--parallel`
- 当您需要较短的扫描窗口时,请使用 `--analysis-profile fast`
- 使用 `--skip-analysis` 排除单个开销昂贵的模块
- 仅在出于操作原因需要控制步调时才使用 `--stealth`
## 安全说明
- 该工具仅执行只读的 LDAP 搜索操作
- 它不会修改 Active Directory 对象
- 密码应通过 `ATILKURT_PASS` 或交互式输入提供
- 请仅在实验室环境中使用 `--no-validate-cert`
- 在使用前,请确保您已获得扫描目标域的授权
## 测试
使用以下命令运行完整的测试套件:
```
PYTHONDONTWRITEBYTECODE=1 python -m pytest -q -p no:cacheprovider
```
代码库中包含针对以下内容的测试:
- 核心分析器
- LDAP 转义和缓存
- 进度持久化
- 报告生成
- 新的分析模块
- 性能控制
## 项目结构
```
AtilKurt/
├── AtilKurt.py
├── analysis/
├── core/
├── reporting/
├── risk/
├── scoring/
├── tests/
├── requirements.txt
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
└── README.md
```
主要区域:
- `core/`:LDAP 连接、配置、缓存、验证、收集器、持久化
- `analysis/`:风险检测器、合规性逻辑、攻击路径分析和专项检查
- `reporting/`:HTML、合规性、仪表板和导出生成
- `scoring/`:风险评分与整合
- `risk/`:业务影响和补救优先级排序
- `tests/`:单元测试和回归覆盖
## 许可证
本项目基于 GNU General Public License v3.0 授权。详情请参见 [LICENSE](LICENSE) 文件。
## 作者
**Cuma KURT**
GitHub: https://github.com/cumakurt/AtilKurt
*** End Patch
标签:ACL审查, Active Directory, AD CS, AD域安全, AS-REP Roasting, Checkov, DCSync, GPP漏洞, HTML报告, Kerberoasting, Kerberos安全, LAPS检查, LDAP查询, log2timeline, Plaso, Python, 关系图谱, 内部安全审查, 协议分析, 反取证, 域渗透, 基线检查, 多模态安全, 安全分析工具, 安全评估, 密码策略, 无后门, 权限提升, 模拟器, 电子数据取证, 离线报告, 请求拦截, 身份安全, 逆向工具