Hackerbone/serpenter
GitHub: Hackerbone/serpenter
一款基于大语言模型 Agent 的 Active Directory 渗透测试助手,通过自然语言驱动自动编排多种安全工具完成内网侦察与漏洞评估。
Stars: 2 | Forks: 0
# 🐍 SERPENTER
**S**emi-Autonomous **E**numeration and **R**econnaissance **P**entesting **E**ngine with **N**atural **T**ask **E**xecution via **R**easoning
一款专门针对 Active Directory 环境的 AI 驱动渗透测试 Agent。SERPENTER 能够使用自然语言命令智能地执行侦察和枚举任务。
## ✨ 功能
- 🤖 **自然语言接口** - 使用通俗易懂的英语描述您的渗透测试目标
- 🔧 **多 LLM 提供商支持** - 可选择 Anthropic Claude、OpenAI GPT、Groq 或本地 Ollama 模型
- 🛠️ **智能工具编排** - 自动串联工具 (nmap、netexec 等) 以完成任务
- 📺 **实时进度监控** - 通过流式输出实时查看工具执行情况
- 🎛️ **交互式可见性控制** - 随时切换 debug/verbose/quiet 模式
- 🎯 **AD 渗透测试专注** - 专门针对 Active Directory 枚举和侦察
- ⚙️ **灵活配置** - 基于 YAML 的配置文件,易于自定义
- 📊 **丰富终端输出** - 美观且信息丰富的命令行界面
## 🚀 快速开始
### 安装
```
# Clone 仓库
git clone
cd serpenter
# 使用 uv Install dependencies
uv sync
# Set up 配置
cp config.yaml my-config.yaml
# 使用你的设置 Edit my-config.yaml
```
### 配置您的 LLM 提供商
SERPENTER 支持多种 LLM 提供商。请选择其中一种:
**选项 1: Groq (推荐 - 快速且有免费额度)**
```
export GROQ_API_KEY='your-groq-api-key'
```
在此获取您的密钥:https://console.groq.com/keys
**选项 2: Anthropic Claude**
```
export ANTHROPIC_API_KEY='your-anthropic-key'
```
**选项 3: OpenAI**
```
export OPENAI_API_KEY='your-openai-key'
```
**选项 4: Ollama (本地,无需 API Key)**
```
ollama pull llama3:70b
# 无需 API key!
```
编辑 `config.yaml` 以选择您的提供商:
```
llm:
provider: "groq" # or "anthropic", "openai", "ollama"
model: "llama-3.3-70b-versatile"
temperature: 0.1
max_tokens: 4096
```
### 运行 SERPENTER
```
# One-shot command
uv run serpenter_cli.py run "list all SMB services in 192.168.1.0/24"
# Interactive mode(推荐)
uv run serpenter_cli.py interactive
# 使用自定义 config
uv run serpenter_cli.py --config my-config.yaml run "enumerate domain controllers"
# Debug mode(显示详细的 tool 执行情况)
uv run serpenter_cli.py --debug run "find accessible shares on 10.0.0.5"
```
### 完整内部评估
Serpenter 还具有全面的内部评估模式,可生成
Bugbase 风格的报告,包含实体、发现、攻击路径、证据以及
AI 分析师摘要,同时保持 Serpenter 的 AI 原生工具执行模型。
```
# 带有 AI 证据分析的 Unauthenticated/anonymous-safe 内部评估
uv run serpenter_cli.py internal-assessment 192.168.1.0/24 -o results/internal.json
# 带有 LDAP、Kerberos、SMB 和 AD CS 覆盖的 Authenticated AD 评估
uv run serpenter_cli.py internal-assessment 10.0.0.0/24 \
--domain corp.local \
--dc-ip 10.0.0.10 \
-u auditor \
-p 'Password123!' \
-o results/corp-internal.json
# 明确 Enable active exploit validation 步骤
uv run serpenter_cli.py internal-assessment 10.0.0.0/24 \
--domain corp.local --dc-ip 10.0.0.10 -u auditor -p 'Password123!' \
--allow-exploits
# 仅 Subnet 评估。RCE validation 仅在提供 credentials 时运行,
# 或通过未来的 credential-acquisition 阶段从收集到的证据中发现。
uv run serpenter_cli.py internal-assessment 192.168.56.0/24 \
--allow-exploits \
--rce-command whoami \
-o results/goad-internal.json
```
默认输出反映了内部评估心智模型:
- `entities`: 主机、服务以及发现的 AD/服务对象
- `findings`: 包含严重程度、目标、证据和修复建议的漏洞记录
- `attack_paths`: 从源到证据再到漏洞的链条
- `evidence`: 每个阶段/工具的运行记录,包含可重现的命令参数和原始输出
- `ai_summary`: 启用时的 LLM 综合分析,否则为确定性回退
默认情况下,内部评估模式需要使用 AI。仅在离线冒烟测试或确定性 CI 运行时才使用 `--no-ai`。
Serpenter 不附带特定于实验室的机密或默认凭据。任何
凭据验证都必须来自显式的运行输入或在评估期间收集的证据。
### 交互模式命令
```
serpenter> /help # Show all commands
serpenter> /verbose # Toggle real-time progress (default: ON)
serpenter> /debug # Toggle detailed debug output
serpenter> /quiet # Minimal output, fastest execution
serpenter> /status # Show current settings
serpenter> exit # Exit SERPENTER
```
详细用法请参阅 [INTERACTIVE_GUIDE.md](INTERACTIVE_GUIDE.md)。
## 📖 使用示例
### 网络发现
```
serpenter run "discover live hosts in 192.168.1.0/24"
serpenter run "find all domain controllers in the subnet"
serpenter run "scan for open SMB ports on 10.0.0.0/24"
```
### SMB 枚举
```
serpenter run "list all SMB shares in 192.168.1.0/24"
serpenter run "enumerate users on 10.0.0.5 via SMB"
serpenter run "find accessible shares with guest access"
```
### 多协议枚举
```
serpenter run "test WinRM access on 192.168.1.100"
serpenter run "enumerate LDAP users on domain controller 10.0.0.10"
serpenter run "check RDP access across 192.168.1.0/24"
```
### 复杂任务
```
serpenter run "map the AD environment in 10.0.0.0/24"
serpenter run "find potential privilege escalation paths"
serpenter run "identify misconfigured shares containing credentials"
```
### 证书攻击 (AD CS)
```
serpenter run "enumerate vulnerable certificate templates on 10.0.0.10"
serpenter run "perform ESC1 attack using vulnerable template"
serpenter run "add shadow credentials to target account"
serpenter run "find all AD CS misconfigurations in the domain"
```
## 🔧 配置
SERPENTER 使用 YAML 配置文件以提供灵活性。有关详细示例,请参阅 [config.examples.md](config.examples.md)。
### 配置结构
```
# LLM Provider
llm:
provider: "groq"
model: "llama-3.3-70b-versatile"
temperature: 0.1
max_tokens: 4096
# Agent 行为
agent:
debug: false
max_iterations: 10
auto_mode: false
verbose: true
# 工具
tools:
enabled:
- nmap
- netexec
- bash
nmap:
default_timeout: 300
netexec:
default_timeout: 180
# 输出
output:
log_file: null
save_results: false
results_dir: "./results"
```
### 可用的 LLM 提供商
| 提供商 | 模型 | 速度 | 成本 | 最适用途 |
|----------|--------|-------|------|----------|
| **Groq** | llama-3.3-70b, mixtral-8x7b | ⚡⚡⚡ | 💰 免费额度 | 通用 |
| **Anthropic** | claude-sonnet-4 | ⚡⚡ | 💰💰 | 复杂推理 |
| **OpenAI** | gpt-4, gpt-3.5 | ⚡⚡ | 💰💰💰 | 稳定性能 |
| **Ollama** | llama3:70b, mixtral | ⚡ | 💰 免费 | 隐私,离线 |
## 🛠️ 工具
SERPENTER 包含以下渗透测试工具:
### nmap_scan
网络发现和端口扫描
- 快速主机发现
- 服务版本检测
- 漏洞扫描
### netexec (通用)
支持多协议枚举:
- **SMB**: 共享、用户、组、会话
- **WinRM**: 用户枚举、命令执行
- **LDAP**: 用户、组、计算机
- **RDP**: 访问测试
- **SSH**: 身份验证测试
- 以及更多...
### impacket
基于 Python 的 AD 渗透利用工具包:
- **secretsdump**: 从 SAM/NTDS 中提取凭据
- **GetUserSPNs**: Kerberoasting 攻击
- **GetNPUsers**: AS-REP roasting 攻击
- **psexec/wmiexec**: 远程代码执行
- 以及更多 Impacket 脚本
### ldapsearch
针对 Active Directory 的 LDAP 枚举:
- 枚举用户、计算机、组
- 查找特权账户
- 发现可 Kerberoast 的账户
- 识别可 AS-REP roast 的用户
- 查询 GPO 和域信任
### hashcat
密码破解:
- NTLM 哈希
- NetNTLMv2
- Kerberoast 票据
- AS-REP 哈希
### certipy
Active Directory 证书服务 (AD CS) 攻击:
- **find**: 枚举证书模板并识别漏洞 (ESC1-8)
- **req**: 从模板请求证书
- **auth**: 使用证书进行身份验证以获取 NTLM 哈希/TGT
- **shadow**: Shadow credentials 攻击
- **ca**: 导出 CA 证书和密钥
- **forge**: 创建黄金证书
- 支持所有主要的 AD CS 攻击场景
### bash_execute
执行自定义 bash 命令 (带有安全检查)
## 🏗️ 架构
```
User Input (Natural Language)
↓
SERPENTER CLI
↓
Config (YAML) → Agent (LangGraph)
↓
LLM Provider (Groq/Claude/GPT/Ollama)
↓
Tool Selection & Execution
↓
├→ nmap_scan
├→ netexec (smb/winrm/ldap/rdp/ssh)
└→ bash_execute
↓
Results & Analysis
↓
User Output (Rich Terminal)
```
## 🔐 安全注意事项
- **危险命令默认被阻止** (在 bash_execute 中)
- **切勿将 API 密钥提交**到版本控制中
- **请负责任地使用** - 仅扫描您有权限测试的网络
- **Debug 模式可能会暴露敏感数据** - 在生产环境中谨慎使用
## 📚 文档
- [交互模式指南](INTERACTIVE_GUIDE.md) - 实时监控和可见性控制
- [配置指南](CONFIGURATION_GUIDE.md) - 完整的配置参考
- [配置示例](config.examples.md) - 特定于提供商的示例
- [工具文档](tools.py) - 工具实现细节
## 🧪 开发
```
# Install development dependencies
uv sync
# Run 测试
uv run pytest
# Format 代码
uv run black .
# Lint
uv run ruff check .
```
## 🤝 贡献
欢迎贡献!请:
1. Fork 该仓库
2. 创建一个功能分支
3. 为新功能添加测试
4. 提交 pull request
## 📝 许可证
MIT License - 详情请参阅 LICENSE 文件
## ⚠️ 免责声明
此工具仅用于授权的安全测试。用户有责任遵守所有适用的法律和法规。未经授权访问计算机系统是违法行为。
## 🙏 致谢
构建工具:
- [LangChain](https://github.com/langchain-ai/langchain) & [LangGraph](https://github.com/langchain-ai/langgraph)
- [Anthropic Claude](https://www.anthropic.com/) / [Groq](https://groq.com/) / [OpenAI](https://openai.com/)
- [Rich](https://github.com/Textualize/rich) 用于优美的终端输出
- [Click](https://click.palletsprojects.com/) 用于构建 CLI
- 安全工具: nmap, netexec, impacket, certipy, hashcat, ldapsearch
**用 🐍 为渗透测试社区而制**
标签:Active Directory, AD域安全, AI安全工具, AI风险缓解, DLL 劫持, LLM代理, Mr. Robot, NetExec, Nmap, Plaso, Python, Recon, SNMP, YAML配置, 企业安全, 后渗透, 域渗透, 大语言模型, 工具编排, 开源安全工具, 数据展示, 无后门, 无线安全, 枚举, 电子数据取证, 红队, 网络安全, 网络资产管理, 自动化渗透测试, 虚拟驱动器, 逆向工具, 逆向工程平台, 隐私保护