
dsh-purge演练台资产库深度解析SQLite如何存储靶标资产、POC与攻击链【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purgedsh-purge 是装在 DeepSeek Harness 上的红队评测插件其内置演练台用一份零依赖的 SQLite 事实库把靶标资产、POC 知识库与攻击链完整落盘。本文带你读懂它的存储设计一个assets.db存一个靶标一个knowledge.db跨靶标共享用 WAL、全文索引与增量迁移保证稳定可靠。为什么用 SQLite 做资产库红队评测要长期沉淀数据哪些资产、开了哪些端口、指纹是什么、哪个 POC 有效、攻击链走到哪一步。dsh-purge 的选择是 Node 内置的node:sqliteDatabaseSync零外部依赖——不装任何 npm 包避免插件目录解析不到node_modules的问题。这套数据层的核心类是 RedteamStore由插件壳 lib/redteam/store.js 发布为进程级服务ctx.redteam。界面、各角色智能体、命令行三者共用同一份实现保证界面看到的 智能体查到的 命令行验的。数据目录布局一个靶标一个工作区演练台的数据根目录默认在$DSH_HOME/redteam可被REDTEAM_HOME或配置项root覆盖解析逻辑见 resolveRoot。整体布局如下engagements/靶标/—— 每个靶标engagement一个独立目录assets.db—— 该靶标的 SQLite 事实库engagement.yaml—— 元数据目标名、授权范围 CIDR、状态agents/—— 各角色提示词runs/—— 证据文件gogo/fscan 输出等reports/—— 报告knowledge.db—— 全局 POC 知识库跨靶标共享pocs/—— POC 正文落盘目录current—— 指向当前靶标的指针文件关键方法见 dbPathOf 与 knowledgePath。注意一个易踩的坑智能体工具打开靶标时默认不改写全局current指针bindCurrent: false否则多会话并行会互相写串报告见 openEngagement 的注释。assets.db靶标事实库的表结构每个靶标的assets.db由 lib/redteam/schema.js 里的DDL常量定义。建库时统一打开三条 PRAGMA兼顾并发与完整性PRAGMA journal_mode WAL; PRAGMA foreign_keys ON; PRAGMA busy_timeout 5000;WALWrite-Ahead Logging让读不阻塞写busy_timeout给并发写入留了 5 秒缓冲。表可分成四组理解资产与测绘asset—— 核心资产表唯一键UNIQUE(segment_cidr, ip)含内/外网scope、优先级、测评状态等segment—— C 段/网段归属ASN、国家城市port/service/fingerprint—— 端口、服务、指纹asset_name/observation/edge/tag—— 名称、观测信号、关联边、标签漏洞与成果vuln—— 漏洞严重级、状态、gained记录了通过它拿到了什么credential—— 凭据secret_value存明文口令便于复用webshell/access_session/tunnel—— 上线入口、可控访问、内网隧道http_evidence—— 原始请求/响应可直接粘进 Burp / Yakit 复现attack_file—— 针对某目标实际生效的脚本/POC计分与攻击链score_point—— 得分点来自《突破入侵类得分规则》的 25 条规则score_hit—— 某得分点在某目标上的命中记录stage—— 攻击链五阶段信息收集→互联网侧→打穿边界→内网→靶标attack_step—— 攻击链步骤tool/agent/result三列记录这一步怎么做的全文检索FTS5 与优雅降级资产库还建了两张 FTS5 虚拟表——asset_fts与poc_fts支持按 IP、名称、Banner、CVE、组件等做全文检索定义见 ASSET_FTS_DDL / POC_FTS_DDL。但有个细节值得新手注意FTS5 是编译期选项不同 Node 构建并不一致Node 22.14 没有、22.23 有。所以 HAS_FTS5 会先用一个内存库探测探测失败时整份 DDL 去掉 FTS 建表语句、检索降级成LIKE而不是让整个库建不出来。降级分支还能用环境变量REDTEAM_NO_FTS51主动触发专门留给 CI 测试。knowledge.db跨靶标共享的 POC 知识库POC/EXP 是通用知识不该被锁在单个靶标里。knowledge.db的poc表见 KNOWLEDGE_DDL把每条 POC 抽象成身份code稳定 slug智能体可直接引用、title、kindpoc/exp/script/template/payload定位category14 类RCE、反序列化、SQL 注入、未授权、SSRF……、cve、component、versions价值verified是否实测、hit_count被复用次数、path落盘位置溯源engagement_id、asset_target、found_by_agent——这条知识是在哪个靶标、哪台资产上验证出来的正文脚本存放在pocs/code/目录见 pocsDirOf读文件时用assertPathWithin把路径限定在pocs/内防止面板变成任意文件读取器。归类逻辑集中在 guessPocCategory按关键词把老条目自动归到 14 类之一。增量迁移老库不用重建表结构会随版本演进dsh-purge 用一套很克制的迁移纪律先查PRAGMA table_info再ADD COLUMN可重复执行、老库无需重建。核心是 migrate 里的ensure(table, column, ddl)。这里藏着一个真实的 bug 教训写在注释里早先has()在读不到表结构时误返回true等于出错就当列已存在导致迁移被静默跳过用户拿到的是莫名其妙的no such column而非明确的迁移失败。现在统一按读不到就当作没有这一列处理让ensure去尝试ALTER。知识库的 migrateKnowledge 遵循同样模式。小结这份 SQLite 设计好在哪儿零依赖——只用node:sqlite装完即用不怕 profile 下找不到包职责分离——数据形状schema/迁移与怎么用RedteamStore 方法分文件改表结构不会误碰业务优雅降级——FTS5 缺席时自动退回 LIKE库照样能建可溯源——漏洞、凭据、攻击步骤都带found_by_agent/tool报告能写清谁、用什么、怎么做的可封顶计分——得分点的rule/cap/dedup_scope/tier字段把同规则封顶、权限取高写进数据本身而非硬编码理解这套存储你就掌握了 dsh-purge 演练台数据从哪来、存到哪、怎么查的完整脉络。想动手验证可在本机打开一个已授权的靶标用 SQLite 工具查看assets.db的asset、vuln、attack_step表即可看到一次演练如何被结构化地沉淀下来。【免费下载链接】dsh-purgeDeepSeek Harness 破甲让所有模型都能破甲不同模型可换不同提示词默认提示词面向国模「小码酱」。Jailbreak for every model — swap prompts per model. 求 Star 收藏 ⭐项目地址: https://gitcode.com/gh_mirrors/ds/dsh-purge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考