目录
一、概述
什么是 Strix
Strix 是一款基于 AI 驱动的智能安全测试工具,通过自主研发的 AI 代理模拟真实黑客的攻击思维与行为模式,对应用程序开展全方位安全检测,精准发现潜在漏洞。
· Strix官方地址: https://usestrix.com/
主要特点
**· 全自主 AI 黑客代理:**具备类真实黑客的思考逻辑与行动能力,无需人工过多干预
**· 内置完整黑客工具箱:**适配多种安全测试场景,满足多样化检测需求
**· 智能报告生成:**自动输出包含漏洞详情与修复建议的结构化报告
应用场景
**· 应用程序安全测试:**覆盖开发全流程的安全检测
**· 专业渗透测试:**为安全人员提供自动化辅助支持
二、渗透测试传统方式与Strix对比
传统方式
· 开发周期短,安全测试耗时久
· 误报率高,排查成本高
· 测试覆盖不全,易遗漏深层漏洞
· 找专业团队价格昂贵
Strix解决方案
· AI 驱动自动化,几小时完成全流程测试
· 开源免费 + CLI简洁界面,开发者无需专业安全知识即可使用
三、架构设计

架构概述
Strix 作为基于 LLM 的智能代理系统,采用分层架构设计,涵盖用户接口层、代理系统层、LLM 服务层、运行时层及工具系统层五大核心模块。系统以单向调用链为设计核心,实现从用户输入到工具执行的闭环流程,各层级职责清晰、耦合度低,具备极强的扩展性。
分层架构解释
1.用户接口层
用户接口层是系统与用户交互的入口,包含三个核心组件:
**· CLI(命令行界面) :**通过 cli.py 提供命令行交互能力
**· TUI(文本用户界面) :**通过 tui.py 提供更友好的交互式文本界面
**· main.py入口 :**作为系统的主入口点,协调各组件的初始化和运行
用户接口层接收用户输入传递给代理系统层处理,并将执行结果反馈给用户。
2.代理系统层
代理系统层是整个系统的核心控制器,主要包含:
**· BaseAgent 基类 :**通过 base_agent.py 定义代理的基础行为和生命周期管理
**· AgentState 状态管理 :**通过 state.py 管理代理的状态信息,包括任务上下文、历史记录等
该层负责协调LLM服务、运行时环境和工具系统,根据用户指令和当前状态做出决策,控制整个系统的运行流程。
3.LLM服务层
LLM服务层提供与大语言模型的交互能力,主要组件是 LiteLLM/OpenAI接口 ,封装了对各种LLM模型的调用逻辑,处理模型请求和响应,支持多种模型后端,提供统一的接口给代理系统层使用。
4.运行时层
运行时层负责提供安全的执行环境,核心组件是 DockerRuntime沙箱环境 ,通过Docker容器技术隔离执行环境,确保工具执行的安全性和稳定性,防止恶意代码对主机系统造成损害。
5.工具系统层
工具系统层提供各种功能工具的注册和管理,核心组件是 工具注册表(registry.py) ,管理系统中所有可用的工具,包括终端操作、Python代码执行、文件编辑等,为代理提供丰富的操作能力。
数据流与交互
系统采用自上而下的单向调用链设计:
· 用户通过CLI/TUI接口输入指令
· main.py将指令传递给BaseAgent进行处理
· BaseAgent调用LLM服务获取智能决策
· Agent根据LLM的决策,通过DockerRuntime在安全环境中执行相应操作
· 执行结果沿调用链反向将结果返回给用户
四、核心功能模块
代理执行
Strix 代理的核心执行流程由 BaseAgent 类的 agent_loop 方法控制,主要步骤:
**· 初始化沙盒和状态 :**创建隔离的测试环境,初始化代理状态
**· 消息处理循环 :**不断检查和处理新消息
**· 迭代控制 :**跟踪迭代次数,防止无限循环
**· LLM 交互 :**调用 LLM 生成下一步行动
**· 工具调用处理 :**执行代理选择的工具调用
**· 状态更新 :**根据执行结果更新代理状态
def agent_loop(self, task: str) -> dict[str, Any]:
# 初始化沙盒和状态
# 主循环处理消息和执行任务
# 根据执行结果更新状态或等待输入
# 处理错误和异常情况
沙盒环境管理
沙盒环境是 Strix 安全测试的基础,能确保测试活动不会影响测试环境或生产环境:
def create_sandbox(self, agent_id: str, existing_token: str | None = None, local_sources: list[dict[str, str]] | None = None) -> SandboxInfo:
# 获取或创建扫描容器
# 同步本地源代码到容器
# 注册代理到工具服务器
# 返回沙盒信息
工具系统
工具系统是 Strix 代理执行安全测试操作的核心支撑,为agent提供工具,具备以下特性:
**· 支持动态工具注册 :**通过装饰器自动注册工具
**· 工具支持分类管理 :**按功能模块组织和管理工具
**·使用XML 描述工具 :**使用 XML 格式定义工具的参数和说明
**· 由沙盒执行控制 :**由沙盒决定工具是否在沙盒中执行
任务分配
Strix 支持多代理协作,通过任务分解提高测试效率,包含三个子模块:
**· 代理图管理 :**维护代理之间的层次关系和通信
**· 任务委派 :**主代理创建子代理并分配特定任务
**· 结果汇总 :**子代理完成任务后,将结果返回给父代理
结果收集与报告
Strix 提供完善的结果收集和报告功能,包含以下三个子模块:
**· 漏洞检测 :**识别并验证各种类型的安全漏洞
**· 证据收集 :**为每个发现的漏洞收集证据
**· 报告生成 :**生成结构化的安全测试报告
五、技术栈和依赖
**· Python 3.12:**利用最新的 Python 特性
· Docker:提供隔离的测试环境
· LiteLLM:支持多种大语言模型提供商
· FastAPI/UVicorn:用于工具服务器实现
· Textual:提供交互式文本用户界面
· Rich:提供富文本输出和进度显示
六、使用方法
1.基本安装
# windows系统安装WSL
wsl --install
# 安装linux系统
wsl -d Ubuntu
# 安装docker desktop
https://www.docker.com/products/docker-desktop
# 使用 pipx 安装 Strix
pipx install strix-agent
# 配置 LLM
export STRIX_LLM="openai/gpt-5"
export LLM_API_KEY="your-api-key"
2.用法
# 扫描本地代码库
strix --target ./app-directory
# 扫描 GitHub 仓库
strix --target https://github.com/org/repo
# 对网站进行黑盒测试
strix --target https://your-app.com
3.CI/CD 集成
可以将安全扫描工具(Strix)整合到代码的拉取请求触发的工作流中。
# GitHub Actions 配置文件示例
name: strix-penetration-test # 工作流名称
on:
pull_request: # 指定触发条件
# 作业定义
jobs:
security-scan:
runs-on: ubuntu-latest # 运行环境
steps:
- uses: actions/checkout@v4 # 检出代码动作
# 安装 Strix 工具
- name: Install Strix
run: pipx install strix-agent
# 运行 Strix 扫描
- name: Run Strix
env:
STRIX_LLM: ${{ secrets.STRIX_LLM }}
LLM_API_KEY: ${{ secrets.LLM_API_KEY }}
run: strix -n -t ./
七、核心技术亮点
1. AI 驱动的安全测试
Strix 的核心创新在于将 AI 能力应用于安全测试领域,通过 LLM 驱动代理进行智能决策和行动规划,模拟真实黑客的思维和行为模式。
2. 多代理协作系统
采用多代理架构,实现任务分解和专业化分工,提高测试效率和覆盖率。每个代理都有特定的专业领域,可以协同工作完成复杂的安全测试任务。
3. 容器化隔离环境
基于 Docker 的沙盒环境确保测试活动的安全性和隔离性,防止测试对生产环境或测试环境造成影响。
4. 灵活的工具系统
模块化的工具系统支持扩展和定制,开发者可以轻松添加新的安全测试工具,增强系统的功能和能力。
八、总结
Strix 代表了安全测试领域的创新方向,通过 AI 驱动和自动化技术,大幅提高安全测试的效率和准确性。它不仅可以为开发团队提供快速的安全反馈,还能作为专业安全测试人员的辅助工具,提高整体安全测试的质量和覆盖面。
展望
未来发展方向:
· 增强对更多编程语言和框架的支持
· 开发更多专用的安全测试工具
· 提供更详细的漏洞修复建议