6.0 KiB
6.0 KiB
reverse-skill 包内安全审计(可执行面)
日期:2026-08-02 范围:
skills/**/scripts、skills/scripts、kali/scripts、burp-mcp-full可执行脚本与 bootstrap 清单
不含:src-hunter/ payloader 等教学型 payload 文档(其 DROP/注入样例属方法论,非自动执行)
结论(总评)
| 级别 | 判定 |
|---|---|
| 后门 / 主动删库 / 格式化磁盘 | 未发现 |
| 管道下载执行(curl|sh / IEX DownloadString) | 未发现 |
| 硬编码云密钥 / 私钥 | 未发现(文档中的 sk- / BEGIN RSA 为检测示例) |
| 供应链残余风险 | 已部分加固(中低→低):钉死 @latest;GitHub 下载支持 manifest SHA256 + API digest |
总评:可执行 skill 脚本面当前未发现植入式后门或「一键删库」逻辑;危险删除均限定在工具重装临时目录 / case 输出目录。
2026-07-18 加固(本提交)
| 项 | 动作 |
|---|---|
| jshookmcp | @latest → @0.3.4 |
| pentestswarm | @latest / docker :latest → @v0.1.0 / :v0.1.0 |
| jadx | pin v1.5.6 + assetSha256 |
| apktool | pin v3.0.2 + assetSha256 |
| bootstrap PS/sh | 下载后 Assert-DownloadedFileIntegrity / verify_sha256;优先 manifest 哈希,其次 GitHub digest;失败删文件并中止 |
| 未钉哈希的 release | 仍可安装,但 WARN 并打印实际 sha256 |
2026-08-02 安全修复
| 项 | 修复 |
|---|---|
| Kali quick setup | 使用 getent 解析 sudo 用户 home,移除 eval |
| Frida process listing | 使用 frida-ps 参数数组,移除内联 Python 代码拼接 |
| Burp MCP token | 使用受限临时文件原子替换,POSIX 文件权限固定为 0600 |
| Burp MCP bridge | 按 MCP 换行消息解析,并在 Burp 启动后按需重连 |
| Anything Analyzer MCP | bootstrap 默认启用 bearer auth,并通过可选宿主适配器注册凭据 |
| IDA MCP startup | 逐个结束旧进程,避免多 PID 参数展开错误 |
扫描方法
对可执行扩展(.ps1 / .sh / .py / .js / .java)检索:
Invoke-Expression/IEX/FromBase64String/DownloadStringcurl|bash/wget|sh管道执行DROP DATABASE|TABLE、rm -rf /、Remove-Item ... C:\Windows- 反弹 shell 形态(
/dev/tcp滥用、TcpClient回连) - 隐藏窗口启动(复核用途)
第二轮:人工阅读 bootstrap-reverse.ps1/.sh 下载与删除路径、mcp-bridge.js、图表/密码学 Python 脚本。
发现明细
1. 删除操作(均为预期清理,非删库)
| 位置 | 行为 | 风险 |
|---|---|---|
bootstrap-reverse.ps1 Expand-ArchiveIntoDirectory |
删除目标安装目录后重装;删除 %TEMP%\reverse-bootstrap-* |
仅工具安装路径,非用户业务库 |
bootstrap-reverse.ps1 anything-analyzer |
失败时 Remove-Item node_modules 后 pnpm install |
限定克隆的工具仓 |
apk-reverse/scripts/decode.* |
清理任务输出目录 jadx/apktool out | 限定 task 根 |
case-init.ps1 |
清理临时目录 | 临时 |
bootstrap-reverse.sh |
同类 temp / 安装目标清理 | 同左 |
未发现 针对 C:\、系统目录、任意数据库连接串上的 DROP/TRUNCATE 可执行逻辑。
2. 网络行为(工具自举,非 C2)
| 位置 | 行为 | 说明 |
|---|---|---|
bootstrap-reverse.ps1 |
api.github.com 拉 release;Invoke-WebRequest 下 zip/jar |
仓库名来自 manifest 白名单 |
bootstrap-reverse.sh |
curl / git clone / pipx / npm |
同上 |
mcp-bridge.js |
仅 127.0.0.1:9876 HTTP → Burp |
本地环回 |
ToolDiscovery.ps1 |
探测 http://host:port/mcp |
健康检查 |
kali/.../tool-discovery.sh |
(echo >/dev/tcp/$host/$port) |
端口探测,非反弹 shell |
3. 隐藏窗口
| 位置 | 用途 |
|---|---|
bootstrap-reverse.ps1 Start-Process ... -WindowStyle Hidden |
后台启动 pnpm dev(anything-analyzer) |
ida-reverse/scripts/start.ps1 |
启动 IDA 相关进程(需保持后台) |
属服务启动形态,未发现隐藏下载恶意载荷。
4. 文档 / payload 中的「危险字样」(非自动执行)
pentest-tools/src-hunter、attack-chain 等 Markdown/JSON 教学材料 含 SQL 注入、DROP 示例、日志清理 红队方法论。
这些 不会被 bootstrap 或 master-route 自动执行;执行依赖 AI/人工在已授权 scope 下选用。
相关约束见:ops/scope-contract.md、ops/skill-supply-chain.md、field-journal/precedent-*.md。
5. 供应链残余风险(建议后续加固,非已证实后门)
| 项 | 风险 | 建议 |
|---|---|---|
bootstrap-manifest.json 中 @jshookmcp/jshook@0.3.4、pentestswarm@v0.1.0 |
标签漂移 / 供应链投毒面 | 钉死版本号 + 校验和 |
| GitHub release zip 无 SHA256 校验 | 被替换 release 时难以及时发现 | manifest 增加 assetSha256 并在 bootstrap 校验 |
npm install -g / pip 默认源 |
依赖生态固有风险 | 仅装 manifest 能力;生产环境用私有源/锁定 |
可执行脚本清单(审计基线)
skills/scripts/*.ps1|*.sh + lib/ToolDiscovery.ps1
skills/apk-reverse/scripts/*
skills/radare2/scripts/*
skills/ida-reverse/scripts/*
skills/browser-automation/scripts/*
skills/diagram-generator/scripts/*.py
skills/case-review/scripts/*.py
kali/scripts/*
burp-mcp-full/mcp-bridge.js (+ Java 扩展源)
建议的持续检查
# 可执行面快速体检(示例)
rg -n "Invoke-Expression|FromBase64String|DownloadString|rm -rf /|DROP DATABASE" skills/scripts skills/*/scripts kali/scripts burp-mcp-full -g "*.ps1" -g "*.sh" -g "*.py" -g "*.js"
新增 skill 的 可执行脚本 合入前应再跑本清单;仅 Markdown 方法论变更不强制。
签署
- 审计执行:仓库本地静态扫描 + 关键路径人工复核
- 结果:无后门 / 无自动删库;供应链加固列为后续改进项
'@