AI自动化渗透工具——STRIX部署指南

AI自动化渗透工具——STRIX部署指南

STRIX部署指南

项目概述

Strix是自主的AI代理,行为就像真正的黑客一样——它们动态运行你的代码,发现漏洞,并通过实际概念验证进行验证。专为开发者和安全团队打造,帮助他们快速、准确地进行安全测试,避免手动渗透测试的负担或静态分析工具的误报。

1.1核心特性

  • 开箱即用的完整黑客工具包
  • 协作与扩展的代理团队
  • 真正的验证是用PoC,而不是假阳性
  • 开发者为中心的CLI和可作的报告
  • 自动修复与报告以加速修复

1.2核心架构分析

Strix的架构设计可以概括为四层:

┌─────────────────────────────────────────┐ │ 用户层:CLI/TUI交互界面 │ ├─────────────────────────────────────────┤ │ 智能层:StrixAgent + Multi-Agent协作 │ ├─────────────────────────────────────────┤ │ 工具层:12类专业工具(Browser/Proxy等) │ ├─────────────────────────────────────────┤ │ 运行时层:Docker沙箱 + 隔离环境 │ └─────────────────────────────────────────┘ 

第一层:用户层

  • 交互式TUI:基于Textual框架的终端UI,实时显示Agent状态、漏洞发现、工具调用
  • 非交互式CLI:适合CI/CD集成,直接输出扫描结果
# 交互式模式:适合开发者手动测试 strix --target ./app-directory # 非交互式模式:适合CI/CD流水线 strix -n --target https://your-app.com 

开发阶段用交互模式调试,生产环境用非交互模式自动化。

第二层:智能层

这是Strix最核心的部分。它实现了一个多智能体协作系统,每个Agent都有明确的职责:

# 核心Agent基类的设计(简化版) class BaseAgent: def __init__(self, config): self.llm = LLM(config) # 大模型驱动 self.state = AgentState() # 状态管理 self.max_iterations = 300 # 最大迭代次数 async def agent_loop(self, task): while not self.state.should_stop(): # 1. LLM生成下一步行动 response = await self.llm.generate(conversation_history) # 2. 解析并执行工具调用 actions = parse_tool_invocations(response.content) result = await execute_tools(actions) # 3. 更新对话历史,继续推理 self.state.add_message("assistant", response.content) self.state.add_message("user", result) 

注意几个关键设计:

  • 最大300次迭代:避免Agent陷入死循环
  • 对话历史管理:通过Memory Compressor压缩上下文,避免超出Token限制
  • 工具调用解析:从LLM输出中提取XML格式的工具调用指令

第三层:工具层

Strix给Agent配备了12类专业工具,覆盖渗透测试的各个环节:

工具类别功能描述典型场景
Browser自动化浏览器操作测试XSS、CSRF、点击劫持
ProxyHTTP流量拦截与分析抓包分析、请求重放
TerminalShell命令执行运行扫描工具(nmap/sqlmap)
Python动态代码执行编写自定义漏洞利用脚本
FileEdit代码修改与审计白盒测试中的代码修复
WebSearch联网搜索查询最新漏洞利用方法
Reporting漏洞报告生成创建标准化漏洞报告
AgentsGraphAgent协调管理创建子Agent、消息传递

每个工具都是通过装饰器注册到系统中:

@register_tool(sandbox_execution=True) def send_request(method: str, url: str, headers: dict, body: str): """使用代理发送HTTP请求""" manager = get_proxy_manager() return manager.send_simple_request(method, url, headers, body) 

这种设计有两个好处:

  1. 插件化扩展:新增工具只需添加函数+注册装饰器
  2. 沙箱隔离:危险操作在Docker容器中执行,保证主机安全

第四层:运行时层

渗透测试工具本质上是"合法的黑客工具",如果不加控制,可能对主机造成威胁。Strix的解决方案是:所有危险操作都在Docker容器中执行

class DockerRuntime: def create_sandbox(self, agent_id, local_sources): # 1. 创建隔离容器 container = self.client.containers.run( STRIX_IMAGE, detach=True, cap_add=["NET_ADMIN", "NET_RAW"], # 网络权限 environment={ "TOOL_SERVER_PORT": tool_server_port, "TOOL_SERVER_TOKEN": token, # 认证Token } ) # 2. 启动工具服务器 container.exec_run( f"poetry run python strix/runtime/tool_server.py" ) return container.id 

关键设计点:

  • 每个扫描任务一个独立容器:避免相互干扰
  • Token认证:Agent与容器通信需要验证身份
  • 网络隔离:容器无法访问主机网络(除非显式映射)

1.3核心功能展示

首次运行STRIX的时候,项目需要先调用sandbox的镜像,所以需要等几分钟才能看到可交互式的页面。运行的过程中使用

dockerps
在这里插入图片描述

可以看到正在运行的sandbox的镜像,以及他们在strix_run目录下输出的渗透报告

运行结果在运行完成之后,他会把本次运行使用的模型,已经输出和输出展示给我们做一个总结,如果用的是api调用的话,还会告诉我们这次渗透使用的tokens

在这里插入图片描述

文档输出在他任务完成之后我们可以要求他写一份报告给我们,因为这里我们给他的文件是springboot的一款扫描工具,所以他反馈给我们的并不是一个漏洞报告,而是更偏向一个操作指南的一个形式

最后的内容他会存放在strix_runs文件目录下之后我又把pikachu的靶场给了他让他测试,他通过scan的工具也可以扫出来一些比较简单的漏洞

具体要求这个是基于我们上面的指令以及ai的调入,我们可以在运行strix附上我们的需求,这个需求可以是一个md文件,也可以是一句话

在这里插入图片描述

是否启用全自动扫描这个和上面的区别就是加个参数 -n,这里就不列完整的代码了。这个模式下使用的是非交互式的界面,他会把输出报告的路径告诉我们,等他扫完我们去看一下就好了

扫描网址

strix -t http://172.17.20.19/pikachu/ -m quick 

这个不知道是不是因为不在本地的原因,扫起来特别的慢

扫描本地文件

strix --target ./SpringBoot-Scan-2.7 -m quick 

ps:这里调用的是可交互式的agent页面,所以下面是由输入框的

部署环境

2.1 系统要求

#操作系统 - Ubuntu 20.04+ - CentOS 8+ #软件依赖 - Python 3.12+ - Docker 20.10+ (可选,用于容器化部署) - Git 2.20+ (用于代码获取)# 硬件要求 内存:至少8GB,推荐16GB以上 存储:50GB可用磁盘空间 网络:稳定的互联网连接 

2.2部署环境

python3 --version pip3 --version pipx 

项目部署

3.1 STRIX的部署

  1. 首先是将strix的源码从github上面拉下来
  2. 接下来是最头疼的一步,即docker沙箱的拉取。沙箱的名字叫ghcr.io/usestrix/strix-sandbox:0.1.10,这个镜像有非常多的层,而且每层都非常大,拉取都要拉半天,本来是初次运行的时候项目会自动拉取,可是拉的实在是太慢了(具体原因后面分析)最后只能手动拉取

最后就是接入ollama,然后进行本地测试根据官方的API调用规则,我们可以在终端临时设置变量

exportSTRIX_LLM="ollama/gpt-oss:20b"exportLLM_API_BASE="http://172.17.250.247:11434"# echo 可以检查自己的设置的路径是否成功echo"$STRIX_LLM"echo"$LLM_API_BASE"

接下来就可以配置大模型了,这里我们使用的是公司的ollama

模型名称:gpt-oss:20b API链接:http://172.17.250.247:11434/ 

具体使用的话是可以看Local Models - Strix项目的官方api调用文档的,其中有提到本地的ollama以及LM Studio / OpenAI Compatible的调用

#ollamaexportSTRIX_LLM="ollama/qwen3-vl"exportLLM_API_BASE="http://localhost:11434"#LM Studio / OpenAI CompatibleexportSTRIX_LLM="openai/local-model"exportLLM_API_BASE="http://localhost:1234/v1"# Adjust port as needed

这里的话我们先调用ollama的接口进行测试

接着进行安装

# Install Strixcurl -sSL https://strix.ai/install |bash# Or via pipx pipx install strix-agent 

3.2 STRIX的使用

详细指南

strix -h 

可以看到各个参数是如何设置的

到基本用途

# Scan a local codebase strix --target ./app-directory # Security review of a GitHub repository strix --target https://github.com/org/repo # Black-box web application assessment strix --target https://your-app.com 

扩展用途

# Grey-box authenticated testing strix --target https://your-app.com --instruction "Perform authenticated testing using credentials: user:pass"# Multi-target testing (source code + deployed app) strix -t https://github.com/org/app -t https://your-app.com # Focused testing with custom instructions strix --target api.your-app.com --instruction "Focus on business logic flaws and IDOR vulnerabilities"# Provide detailed instructions through file (e.g., rules of engagement, scope, exclusions) strix --target api.your-app.com --instruction-file ./instruction.md # 还可以设置扫描的速率 -m [quick,standard,deep]

部署难点

项目虽然运行起来简单,但是部署的过程中遇到了很多麻烦,且网上文献不算很多,大部分只能自己解决

4.1 本地模型部署

首先是本地大模型的部署,公司的ollama是在一台win下面跑的,ip段是172.17.250.247,但是公司一开始给的网段是在192.xxx.xxx.xxx下的,所以win可以ping通但是虚拟机下访问不了,且改为桥接模式下也不行。最后更改了主机的网络,用了另一台路由器,将ip放到了同一网段下172.17.xxx.xxx,在桥接模式下终于可以访问了。

4.2 docker中sandbox的拉取

这个是该项目的最大的难点,因为STRIX的工具非常齐全,所以他运行的沙箱也非常的大,由于该项目是国外的,如果按照他github上来的话根本拉不下来

在这里插入图片描述

查找了相关资料后,我听到有个说法是Linux 上通过临时命令 export HTTP_PROXY 设置的代理,对 curl 这些有用,但是对 docker pull 不起作用。所以就去学了一下在sys目录下设固定环境变量来走了代理,设完之后继续拉,一看速率,依旧龟速,所以这个方案也暴毙了。最后实在是拉不下来,我选择了用在win下面拉取之后再转到linux上,依旧是要开代理和换源,最后走的是南京大学的镜像拉的。但是也下了很久。

下完之后我们把镜像改成原来的名字,然后帮他压缩成一个压缩包发给kali

docker tag ghcr.nju.edu.cn/usestrix/strix-sandbox:0.1.10 ghcr.io/usestrix/strix-sandbox:0.1.10 
在这里插入图片描述
docker save -o strix-sandbox.tar ghcr.io/usestrix/strix-sandbox:0.1.10 

第二个问题就是我的kali其实不能直接往里面拖东西,装了vmtools也不行,所以这里我把docker的镜像压缩成一个tar文件,然后用wget下的,我在win本地把小皮开了,从而快速搭建了一个运行传输文件的网站

wget -c http:// 192.168.3.228/strix-sandbox.tar#这里一定要加上-c的指令,因为这个沙箱太大了,传输的时候非常容易中断,加上-c的指令之后可以接着上一次的继续传输sudodocker load -i strix-sandbox.tar 

然后解压,这样镜像就总算是搞完了

在这里插入图片描述

总结

从扫描目标URL的方式来说,发现Strix还是有一定的可取之处,在扫描日志中发现它会调用目录爆破、SQLMAP等工具进行扫描,也会根据参数特征进行相应的测试,结果报告内容结构完整,在服务器性能允许+忽略token成本的前提下,应该可以获得不错的扫描效果。而对于扫描代码包进行源代码审计来说,Strix与Trae、Cursor等原生AI IDE来说,可能就不太有竞争力了。而且它太烧tokens,本地的AI如果不是有超大显存的支持下,根本没有什么太大的效果,最影响体验的地方是它跑的实在是太慢了

参考资料

  1. STRIX GitHub仓库:usestrix/strix:用于渗透测试的开源AI代理
  2. STRIX 本地api调用:Local Models - Strix
  3. Strix安全测试平台:从零搭建企业级AI渗透测试环境-ZEEKLOG博客
  4. Strix自动渗透测试平台搭建与使用-
  5. 【AI自动渗透】strix 使用记录 | CN-SEC 中文网

Read more

【全网最详细!十万字解析】SpringAI+Deepseek大模型应用开发实战笔记-上半(进阶+详细+完整代码)

【全网最详细!十万字解析】SpringAI+Deepseek大模型应用开发实战笔记-上半(进阶+详细+完整代码)

前言         全网目前最完整的针对黑马程序员的SpringAI+Deepseek大模型应用课程的学习笔记         在课程的基础之上进行了许多的拓展和延伸         相信一定可以帮到你更好的学习和掌握大模型应用的开发和SpringAI的运用         希望觉得有用的小伙伴可以点赞收藏关注!!!         目前文章还剩一点没更新完,后续会把完整前后端开发好的代码传上去,现在因为还没有完全改好,怕涉及侵权文档,不敢直接发,后续我把前端也做一定修改之后,会打包一起分享出来        下半部分链接:【全网最详细!十万字解析】黑马SpringAI+Deepseek大模型应用开发实战笔记-下半(进阶+详细+完整代码)-ZEEKLOG博客        后端完整代码:GM828/HFUT-AIChat: SpringAI实战项目,实现了Prompt+FunctionCalling+RAG的功能,通过MySQL和Redis进行数据持久化操作 目录 前言 1.对话机器人 1.1对话机器人-初步实现 1.1.1引入依赖 1.1.2配置模型信息

By Ne0inhk
Hive与HBase深度对比:从架构原理到应用场景

Hive与HBase深度对比:从架构原理到应用场景

Hive与HBase深度对比:从架构原理到应用场景 * 引言 * 一、核心概念对比 * 1.1 一句话概括 * 1.2 架构对比图 * 二、详细区别对比 * 2.1 基础特性对比表 * 2.2 架构差异 * 三、数据存储方式 * 3.1 Hive的数据存储 * 3.2 HBase的数据存储 * 四、数据处理方式 * 4.1 Hive:批处理系统 * 4.2 HBase:实时查询系统 * 五、应用场景对比 * 5.1 场景选择决策树 * 5.2 典型应用场景 * 六、数据来源与ETL * 6.1 常见数据处理流程

By Ne0inhk
Flutter 组件 postgres_crdt 的适配 鸿蒙Harmony 实战 - 驾驭分布式无冲突复制数据类型、实现鸿蒙端高性能离线对等同步架构方案

Flutter 组件 postgres_crdt 的适配 鸿蒙Harmony 实战 - 驾驭分布式无冲突复制数据类型、实现鸿蒙端高性能离线对等同步架构方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 postgres_crdt 的适配 鸿蒙Harmony 实战 - 驾驭分布式无冲突复制数据类型、实现鸿蒙端高性能离线对等同步架构方案 前言 在鸿蒙(OpenHarmony)生态的分布式协作编辑器、多端同步的即时通讯资产库以及需要实现“本地优先(Local-first)”架构的各类大型数字化政务应用开发中,“数据一致性的最终收敛”是系统稳定性的灵魂。面对由 5 台鸿蒙设备在不同地点、不同弱网环境下同时对同一份 JSON 资产执行的交叉修改。如果依然采用基于“锁”或“版本号覆盖”的传统同步逻辑。不仅会导致频繁出现的由于并发冲突引发的“保存失败”报错,更会因为无法处理跨设备的时序漂移,引发严重的资产状态错乱。 我们需要一种“逻辑守恒、冲突自愈”的存储艺术。 postgres_crdt 是一套专注于将 PostgreSQL 生态的严谨性与无冲突复制数据类型(

By Ne0inhk
构建下一代 AIOps 监控系统:基于 Go 语言与 DeepSeek 大模型的深度实践

构建下一代 AIOps 监控系统:基于 Go 语言与 DeepSeek 大模型的深度实践

前言 在云计算与微服务架构日益复杂的当下,传统的基于静态阈值的服务器监控系统正面临严峻挑战。海量的告警噪音与滞后的故障定位能力,促使运维体系向 AIOps(人工智能运维)转型。本文将详细阐述如何利用高性能的 Go 语言结合 DeepSeek 大语言模型,从零构建一个具备智能分析能力的服务器监控探针。我们将深入探讨 Linux 内核信息采集机制、Go 语言并发编程模式以及大模型 API 的工程化集成。 第一章:基础设施环境构建与系统初始化 构建高效监控系统的基石在于一个稳定且配置得当的运行环境。本次实践基于 Ubuntu LTS(长期支持版)系列,涵盖 20.04 至 24.04 版本,这些版本提供了稳定的内核支持与广泛的软件包兼容性。 1.1 系统更新与依赖管理 在部署任何生产级软件之前,维持操作系统的最新状态是保障安全与稳定性的首要原则。通过包管理器 apt,系统能够从官方源获取最新的安全补丁与软件版本。 执行更新操作不仅仅是简单的软件升级,其背后涉及更新本地包索引数据库(apt update)以及根据依赖关系图谱进行二进制文件的替换(

By Ne0inhk