鸾鸟Agent:认知驱动的 AI 黑客
鸾鸟 (LuaN1ao) 是新一代基于大模型的自主渗透测试智能体。
传统自动化扫描工具依赖预定义规则,难以应对复杂多变的实战场景。鸾鸟突破这一局限,创新性地融合了 P-E-R (Planner-Executor-Reflector) 智能体协同框架与因果图谱推理 (Causal Graph Reasoning) 技术。
鸾鸟模拟人类安全专家的思维方式:
从信息收集到漏洞利用,鸾鸟将渗透测试从"自动化工具"提升为"自主智能体"。
鸾鸟将渗透测试思维解耦为三个独立且协作的认知角色,形成完整的决策闭环:
🧠 Planner (规划器)
⚙️ Executor (执行器)
⚖️ Reflector (反思器)
关键优势:角色分离避免了单一 Agent 的"精神分裂"问题,每个组件专注于其核心职责,通过事件总线协作。
鸾鸟拒绝盲目猜测和大模型幻觉,构建显式的因果图谱来驱动测试决策:
核心原则:
示例场景:
Evidence: 端口扫描发现 3306/tcp 开放
↓ (置信度 0.8)
Hypothesis: 目标运行 MySQL 服务
↓ (验证成功)
Vulnerability: MySQL 弱口令/未授权访问
↓ (尝试利用)
Exploit: mysql -h target -u root -p [爆破/空密码]
告别静态任务清单,鸾鸟将渗透测试计划建模为动态演进的有向无环图 (DAG):
核心特性:
ADD_NODE, UPDATE_NODE, DEPRECATE_NODE)pending, in_progress, completed, failed, deprecated)与传统规划的对比:
| 特性 | 传统 Task List | Plan-on-Graph |
|---|---|---|
| 结构 | 线性列表 | 有向图谱 |
| 依赖管理 | 手动排序 | 拓扑自动排序 |
| 并行能力 | 无 | 自动识别并行路径 |
| 动态调整 | 重新生成 | 局部图编辑 |
| 可视化 | 困难 | 原生支持 (Web UI) |
可视化示例:启动 --web 模式后,可在浏览器实时查看任务图的演化过程。
鸾鸟通过 Model Context Protocol (MCP) 实现工具的统一集成和调度:
think(深度思考)、hypothesize(假设生成)、reflect(经验总结)halt_task(提前终止任务)💡 扩展性:可通过
mcp.json轻松集成新工具(如 Metasploit、Nuclei、Burp Suite API)
Web UI 现在是一个独立的数据库驱动的服务,支持持久化的任务监控和管理。
luan1ao.db) 中,重启后历史记录不丢失。鸾鸟智能体支持人机协同(Human-in-the-Loop, HITL)模式,允许人类专家监督和干预智能体的决策过程。这增强了控制力、安全性,并能在复杂场景中提供专家指导。
.env 中设置 HUMAN_IN_THE_LOOP=true。交互方式:
HITL >。输入 y 批准,n 拒绝,m 修改(会打开系统编辑器)。[ ] 经验自进化 (Experience Self-Evolution)
[x] 人机协同模式 (Human-in-the-Loop)
[ ] 工具生态扩容
[ ] 多模态能力
| 组件 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Linux (推荐) / macOS / Windows (WSL2) | 建议在隔离环境中运行 |
| Python | 3.10+ | 需要支持 asyncio 和类型提示 |
| LLM API | OpenAI 兼容格式 | 支持 GPT-4o, DeepSeek, Claude-3.5 等 |
| 内存 | 最小 4GB,推荐 8GB+ | RAG 服务和 LLM 推理需要内存 |
| 网络 | 互联网连接 | 访问 LLM API 和更新知识库 |
⚠️ 安全提示:鸾鸟包含
shell_exec和python_exec等高权限工具,强烈建议在 Docker 容器或虚拟机中运行,避免对宿主机造成潜在风险。
# 克隆仓库
git clone https://github.com/SanMuzZzZz/LuaN1aoAgent.git
cd LuaN1aoAgent
# 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 复制配置模板
cp .env.example .env
# 编辑 .env 文件
nano .env # 或使用你喜欢的编辑器
核心配置项:
# LLM API 配置(必填)
LLM_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
LLM_API_BASE_URL=https://api.openai.com/v1
# 推荐使用强大模型以获得更好效果
LLM_DEFAULT_MODEL=gpt-4o
LLM_PLANNER_MODEL=gpt-4o # 规划器需要强推理能力
LLM_EXECUTOR_MODEL=gpt-4o
LLM_REFLECTOR_MODEL=gpt-4o
OUTPUT_MODE=default # simple/default/debug
鸾鸟依赖 RAG (检索增强生成) 系统获取最新安全知识。首次运行前需初始化知识库:
# 1. 克隆 PayloadsAllTheThings 知识库
mkdir -p knowledge_base
git clone https://github.com/swisskyrepo/PayloadsAllTheThings \
knowledge_base/PayloadsAllTheThings
# 2. 构建向量索引(需要几分钟)
cd rag
python -m rag_kdprepare
知识库说明:PayloadsAllTheThings 包含丰富的攻击载荷、绕过技巧和漏洞利用方法,是渗透测试的宝贵资源。
系统现在分为两个独立进程运行:Web 服务(监控台)和 Agent(工作进程)。它们通过本地 SQLite 数据库 (luan1ao.db) 通信。
首先启动持久化的 Web 界面。该进程应保持运行。
python -m web.server
打开浏览器访问:<http://localhost:8088>
打开一个新的终端窗口运行 Agent。Agent 将执行任务,将日志写入数据库,并在完成后退出。Web UI 会实时更新。
# 基础用法
python agent.py \
--goal "对 http://testphp.vulnweb.com 进行全面的 Web 安全测试" \
--task-name "demo_test"
# 启用 --web 标志以打印任务 URL
python agent.py \
--goal "扫描 localhost" \
--task-name "local_scan" \
--web
logs/TASK-NAME/TIMESTAMP/ 目录:logs/demo_test/20250204_120000/
├── run_log.json # 完整执行日志(包含所有 P-E-R 交互)
├── metrics.json # 性能指标和统计数据
└── console_output.log # 格式化的控制台输出
┌─────────────────────────────────────────────────────────┐
│ 用户目标 (User Goal) │
│ "对目标系统进行全面的渗透测试" │
└────────────────────────┬────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────┐
│ P-E-R 认知层 (Cognitive Layer) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Planner │ ───> │ Executor │ ───> │Reflector │ │
│ │ 规划器 │ │ 执行器 │ │ 反思器 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │ │ │ │
│ └──────────────────┴──────────────────┘ │
│ ▲ │
│ │ LLM API 调用 │
└─────────────────────────┼────────────────────────────────┘
│
┌─────────────────────────┴────────────────────────────────┐
│ 核心引擎 (Core Engine) │
│ ┌────────────────────────────────────────────────┐ │
│ │ GraphManager │ │
│ │ • 任务图谱管理 (DAG) │ │
│ │ • 状态追踪与更新 │ │
│ │ • 拓扑排序与依赖解析 │ │
│ │ • 并行任务调度 │ │
│ └────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────┐ │
│ │ 数据库层 (SQLite) │ │
│ │ • 任务、图谱、日志的持久化存储 │ │
│ │ • 状态管理解耦 │ │
│ └────────────────────────────────────────────────┘ │
│ ┌────────────────────────────────────────────────┐ │
│ │ EventBroker (全局) │ │
│ │ • 组件间通信 │ │
│ │ • 事件发布/订阅 │ │
│ └────────────────────────────────────────────────┘ │
└─────────────────────────┬────────────────────────────────┘
│
┌─────────────────────────┴────────────────────────────────┐
│ 能力支撑层 (Capability Layer) │
│ ┌────────────────────┐ ┌──────────────────────────┐ │
│ │ RAG Knowledge │ │ MCP Tool Server │ │
│ │ Service │ │ │ │
│ │ • FAISS 向量检索 │ │ • http_request │ │
│ │ • 知识文档解析 │ │ • shell_exec │ │
│ │ • 相似度搜索 │ │ • python_exec │ │
│ │ │ │ • think/hypothesize │ │
│ └────────────────────┘ │ • halt_task │ │
│ └──────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
sequenceDiagram
participant U as User
participant P as Planner
participant G as GraphManager
participant E as Executor
participant R as Reflector
participant DB as SQLite DB
participant W as Web UI
U->>P: 输入目标
P->>G: 初始化任务图谱
G->>DB: 持久化初始状态
W->>DB: 轮询更新 (SSE)
loop P-E-R 循环
P->>G: 分析图谱,生成图编辑操作
G->>G: 更新图谱结构
G->>DB: 同步更新
G->>E: 分配待执行子任务
E->>E: 调用工具执行
E->>DB: 记录日志事件
E->>R: 请求反思
R->>R: 分析成功/失败原因
R->>G: 更新节点状态
G->>DB: 同步更新
end
LuaN1aoAgent/
├── agent.py # 主入口,P-E-R 循环控制
├── requirements.txt # 项目依赖
├── pyproject.toml # 项目配置和代码质量工具设置
├── mcp.json # MCP 工具服务配置
├── .env # 环境变量配置(需手动创建)
│
├── conf/ # 配置模块
│ ├── config.py # 核心配置项(LLM、场景、参数)
│ └── __init__.py
│
├── core/ # 核心引擎
│ ├── planner.py # 规划器实现
│ ├── executor.py # 执行器实现
│ ├── reflector.py # 反思器实现
│ ├── graph_manager.py # 图谱管理器
│ ├── events.py # 事件总线
│ ├── console.py # 控制台输出管理
│ ├── data_contracts.py # 数据契约定义
│ ├── tool_manager.py # 工具管理器
│ ├── intervention.py # 人机协同管理器
│ ├── database/ # 数据库持久化层
│ │ ├── models.py # SQLAlchemy 模型
│ │ └── utils.py # 数据库工具函数
│ └── prompts/ # 提示词模板系统
│
├── llm/ # LLM 抽象层
│ ├── llm_client.py # LLM 客户端(统一接口)
│ └── __init__.py
│
├── rag/ # RAG 知识增强
│ ├── knowledge_service.py # FastAPI 知识服务
│ ├── rag_client.py # RAG 客户端
│ ├── rag_kdprepare.py # 知识库索引构建
│ ├── markdown_chunker.py # 文档分块
│ └── model_manager.py # 嵌入模型管理
│
├── tools/ # 工具集成层
│ ├── mcp_service.py # MCP 服务实现
│ ├── mcp_client.py # MCP 客户端
│ └── __init__.py
│
├── web/ # Web UI
│ ├── server.py # Web 监控台服务
│ ├── static/ # 前端静态资源
│ └── templates/ # HTML 模板
│
├── knowledge_base/ # 知识库目录(需手动创建)
│ └── PayloadsAllTheThings/ # 安全知识库(需克隆)
│
└── logs/ # 运行日志和指标
└── TASK-NAME/
└── TIMESTAMP/
├── run_log.json
├── metrics.json
└── console_output.log