
TraceTree Demo
TraceTree(cascade-analyzer)是一个专为智能体时代设计的自主安全有机体。它超越了简单的扫描,构建了一个健壮、加固且可扩展的检测生态系统。就像其吉祥物蜘蛛一样,TraceTree 使用其八个专门化的“腿”围绕您的开发工作流程编织一张全面的保护网。
TraceTree 可用作智能体或人类在信任包安装之前的审查关卡。请参阅行为凭证导出以获取一个简洁的 JSON/SARIF 友好格式的凭证,该凭证汇总目标哈希、沙箱策略、观察到的行为、工件哈希、裁决结果和隐私默认值,而不会暴露原始系统调用日志。
TraceTree/ ├── api/ # API stubs ├── codebase-analysis-docs/ # Architecture documents and knowledge guides ├── data/ # Behavioral signatures, rules, and training datasets ├── docs/ # Documentation assets ├── examples/ # Demo scripts and usage examples ├── frontend/ # Next.js/React web dashboard ├── graph/ # NetworkX directed graph builder ├── hooks/ # Git/Shell hooks for background monitoring ├── logs/ # Execution trace logs and strace outputs ├── macapp/ # Native macOS menu bar app ├── mascot/ # Console ASCII spider mascot ├── mcp/ # MCP server security testing module ├── ml/ # Machine learning classification and anomaly detection ├── monitor/ # Core syscall parser, YARA matching, and timelines ├── orchestrator/ # TypeScript multi-agent coordination server ├── repocheckai/ # Repository analysis engine (TypeScript/Node) ├── samples/ # Malware and benign files for sandbox tests ├── sandbox/ # Docker container manager and strace sandbox ├── test_targets/ # Mock packages/servers for detection testing ├── tests/ # Unit, integration, and system tests ├── watcher/ # File system change listener daemon └── worker/ # Background task execution worker
## TraceTree 蜘蛛的八条腿
1. **第1条腿:沙盒隔离(陷阱)** — 在隔离的 Docker 容器(或高性能的 `direct` 模式)中执行目标,威胁被物理限制在其中。
2. **第2条腿:系统调用解析(神经系统)** — 一个高精度引擎,监控进程对操作系统发出的每一次“振动”(系统调用)。
3. **第3条腿:行为图谱(网)** — 使用 NetworkX 有向图绘制进程、文件和网络节点交互的“级联”关系。
4. **第4条腿:机器学习异常检测(直觉)** — 一个自定义训练的随机森林模型(在一个小型、有代表性的干净/恶意包数据集上训练,加上可选的实时 MalwareBazaar 数据源),以高置信度预测恶意意图。
5. **第5条腿:YARA 签名匹配(记忆)** — 一个已知恶意软件 DNA 和利用模式(反向 Shell、加密货币矿工等)的集成库。
6. **第6条腿:MCP 安全协议(代理盾牌)** — 针对模型上下文协议服务器的专门保护,防御 AI 代理使用的工具。
7. **第7条腿:安全守护 AI(主动网)** — 一个提交前的“智能扫描器”,使用本地 LLM(Qwen-Coder)在泄露和注入进入你的历史之前捕获它们。
8. **第8条腿:时间与 N-gram 分析(DNA 扫描)** — 通过动作在时间上的*节奏*和*序列*来识别威胁。
## 工作原理```
target ──► Docker sandbox (network dropped) ──► strace -t -f
│
▼
strace log
│
┌────────────────┼────────────────┐
▼ ▼ ▼
strace parser signature temporal
(parser.py) matcher (sigs) analyzer
│ │ │
└───────┬────────┴────────────────┘
▼
NetworkX graph
(builder.py)
│
▼
ML anomaly detection
(RandomForest / IsolationForest)
│
▼
verdict
ip link set eth0 down),因此任何出站连接尝试都会被记录但被阻止。strace -t -f -e trace=all 进行跟踪。-t 标志为时间分析添加时间戳,-f 跟踪子进程。monitor/parser.py) — 基于正则表达式的解析器,处理多行 strace 输出以及 [pid] 和裸 pid 格式。提取进程创建、文件访问、网络连接和内存操作。每个系统调用根据其安全相关性被分配一个严重性权重 (0–9)。monitor/signatures.py) — 将解析的事件流与 data/signatures.json 中定义的 8 个行为签名模式进行匹配。每个匹配产生证据,列出触发它的特定事件。monitor/timeline.py) — 从带有时间戳的事件流中检测 5 种基于时间的行为模式(例如,在 5 秒内读取凭据后建立外部连接)。graph/builder.py) — 构建一个 NetworkX 有向图,包含进程、文件和网络节点。在 5 秒窗口内的连续相同 PID 事件之间添加时间边。ml/detector.py) — 从图和解析数据中提取一个 10 特征向量。如果有训练好的模型,则使用 RandomForestClassifier,否则回退到基于 10 个硬编码的干净包基线训练的 IsolationForest。严重性分数和时间模式计数提高最终置信度。定义在 data/signatures.json 中。每个都有一个严重性 (1–10)、必需的系统调用、文件模式、网络条件和要匹配的有序序列。
从带有时间戳的 strace 输出中检测。需要 strace -t 标志(默认启用)。
24 种系统调用类型中的每一个都有一个基础严重性权重。示例:
mprotect 使用 PROT_EXEC: 9.0connect 之后的 dup2: 9.0execve 执行意外二进制文件: 7.0connect 连接到云元数据 (169.254.x.x): 8.0connect 连接到 PyPI/npm CDN: 0.0(良性)openat 打开 /usr/lib/python/*: 0.0(良性)总严重性分数用于 ML 置信度计算。
每个 connect 系统调用被分为以下四个类别之一:
git clone --depth 1 https://github.com/tejasprasad2008-afk/TraceTree.git cd TraceTree pip install -e .
### 运行分析```bash
cascade-analyze --help
(由于输入内容为空,无需翻译,直接返回空结果。)``` ┌──────────────────────────────────────┐ │ TraceTree Security Analyzer │ │ Target: requests │ │ Analyzer Type: PIP │ └──────────────────────────────────────┘ ✔ Sandboxing requests (pip)... ✔ Parsing requests... ✔ Graphing requests... ✔ Detecting requests...
┌─ Cascade Graph: requests ────────────┐ │ pip install requests │ │ └─ pip (root) │ │ └─ net_151.101.1.69:443 (connect)│ │ └─ file_/usr/lib/python3.11/... │ └──────────────────────────────────────┘
┌─ Flagged Behaviors ──────────────────┐ │ No suspicious footprints flagged. │ └──────────────────────────────────────┘
┌──────────┐
│ CLEAN │
└──────────
Confidence Score: 72.3%
对于一个恶意软件包(例如,一个已知的拼写仿冒包):```
┌─ Behavioral Signatures Matched ──────┐
│ 🔴 credential_theft (severity 9/10) │
│ Step 1: openat /etc/shadow │
│ Step 2: connect 45.33.32.156:4444 │
└──────────────────────────────────────┘
┌─ Temporal Execution Patterns ────────┐
│ 🔴 connect_then_shell (severity 10/10)│
│ Window: 1500-4200 ms — External... │
└──────────────────────────────────────┘
┌───────────┐
│ MALICIOUS │
└───────────┘
Confidence Score: 99.9%
Signatures: credential_theft | Temporal: connect_then_shell
cascade-analyze <target>分析单个包、二进制文件或批量文件。```bash
cascade-analyze requests cascade-analyze urllib33 # known typosquat
cascade-analyze package.json
cascade-analyze suspicious_app.dmg cascade-analyze payload.exe
cascade-analyze requirements.txt cascade-analyze package.json
cascade-analyze ./some_file --type pip cascade-analyze ./some_file --type npm cascade-analyze ./some_file --type dmg cascade-analyze ./some_file --type exe
**子命令:`cascade-analyze mcp`** — MCP 服务器安全分析(参见下面的 MCP 部分)。
**子命令:`cascade-analyze watch <repo>`** — 会话守护(参见会话守护部分)。
**子命令:`cascade-analyze check <file>`** — 快速按需扫描。
### `cascade-watch <repo>`
独立会话守护。监控目录中的包清单文件,并在后台运行沙箱分析。```bash
cascade-watch ./my-project
cascade-watch ./my-project --check setup.py # on-demand scan
cascade-watch https://github.com/user/repo.git # URL accepted but not cloned
在终端显示一个蜘蛛吉祥物,并循环轮询状态。按 Ctrl+C 停止。每个目录只允许一个监视器(锁定文件位于 /tmp/tracetree_sessions/)。
cascade-check <file>对特定文件进行快速一次性分析。启动一个新的沙箱运行并返回判定结果。```bash cascade-check setup.py cascade-check ./payload.exe
### `cascade-install-hook`
安装一个 shell 钩子,使每次 `git clone` 后自动运行 `cascade-watch`。```bash
cascade-install-hook
这会将一个 source 行追加到 ~/.bashrc 或 ~/.zshrc 中。钩子脚本位于 ~/.local/share/tracetree/hooks/shell_hook.sh。安装后,每次 git clone 都会启动一个后台监视器,并记录日志到 /tmp/tracetree_<reponame>.log。
cascade-train交互式训练管道。提示输入 MalwareBazaar API 密钥(可选——可以跳过,仅使用本地数据集进行训练),然后:
ml/model.skops 并使缓存失效```bash
export MALWAREBAZAAR_AUTH_KEY="your-key"
cascade-train## MCP 服务器安全分析
`cascade-analyze mcp` 子命令用于分析模型上下文协议(Model Context Protocol)服务器的恶意行为。它在沙箱容器中运行服务器,扮演模拟的 MCP 客户端以发现并调用每个工具,然后对生成的系统调用轨迹进行分类。```bash
# Analyze an npm MCP server
cascade-analyze mcp --npm @modelcontextprotocol/server-github
# Analyze a local MCP server project
cascade-analyze mcp --path ./my-mcp-server
# Allow network (for servers that legitimately need internet)
cascade-analyze mcp --npm @modelcontextprotocol/server-github --allow-network
# Force transport
cascade-analyze mcp --npm some-package --transport stdio
cascade-analyze mcp --npm some-package --transport http --port 3000
# JSON output
cascade-analyze mcp --npm some-package --output json
strace -f 追踪。initialize 握手、tools/list 发现、使用合成参数安全调用每个工具。; ls /etc、../../../etc/passwd、<script>alert(1)</script>)。filesystem、github、postgres、fetch、shell。sandbox/ — Docker 容器生命周期管理。基于 python:3.11-slim 的 Dockerfile 构建 cascade-sandbox:latest,包含 strace、wine64、p7zip-full、cabextract、Node.js 和 npm。在目标执行前关闭网络接口(ip link set eth0 down)。支持 pip、npm、DMG 和 EXE 目标。返回 strace 日志路径,失败时返回空字符串。
monitor/parser.py — 基于正则表达式的 strace 日志解析器。处理多行系统调用条目,支持 [pid] 和无 pid 格式,以及带时间戳(-t)的输出。跟踪 5 个类别(进程、网络、文件、内存、IPC)中的 24 种系统调用类型。为每个事件分配严重性权重,分类网络目标,并标记敏感文件访问。返回包含时间戳和相对毫秒偏移量的结构化事件数据。
monitor/signatures.py — 行为签名匹配器。从 data/signatures.json 加载 8 个模式。支持无序匹配(必须存在所需的系统调用 + 文件/网络模式)和有序序列匹配(系统调用-条件对必须按顺序出现)。返回匹配的签名,并附带触发每个匹配的具体事件证据。
monitor/timeline.py — 时间模式分析器。从有序、带时间戳的事件流中检测 5 种基于时间的行为模式。每个模式指定了严重性、时间窗口和触发条件。按严重性降序返回匹配结果。仅当使用 -t 选项运行 strace 时(默认启用)才有效。
graph/builder.py — NetworkX 有向图构建。为进程、文件和网络目标创建节点。为 clone 关系、系统调用目标以及时间关系(同一 PID 的连续事件在 5 秒内)添加边。节点和边带有签名匹配和严重性权重标记。输出 Cytoscape 兼容的 JSON 和内部统计信息。
ml/detector.py — 异常检测。提取一个 10 维特征向量(节点数、边数、网络连接数、文件读取数、execve 计数、总严重性、可疑网络数、敏感文件数、最大严重性、时间模式计数)。如果本地存在训练好的模型或可从 GCS 下载,则使用 RandomForestClassifier;否则回退到基于 10 个硬编码干净包基线的 IsolationForest。严重性得分和时间模式计数独立于 ML 预测提升最终置信度。
mcp/ — MCP 服务器分析模块。六个文件:sandbox.py(MCP 服务器的 Docker 沙箱)、client.py(JSON-RPC 2.0 客户端,包含工具发现和对抗性探测)、features.py(MCP 专属特征提取,带服务器类型检测)、classifier.py(基于规则的威胁分类器)、report.py(Rich 控制台 + JSON 报告生成)。
watcher/session.py — 会话守护器。SessionWatcher 类在后台守护线程中运行。通过扫描 requirements.txt、package.json、setup.py 和 pyproject.toml 发现包。将每个包送入沙箱管道。通过 get_status() 暴露状态,通过 Queue 暴露结果。通过 /tmp/tracetree_sessions/ 下的锁文件进行会话锁定。
mascot/spider.py — SpiderMascot 类。ASCII 蜘蛛,有 5 种状态(idle、success、warning、scanning、confused)。在 CLI 中用于分析期间的视觉反馈。
hooks/ — Shell 钩子系统。shell_hook.sh 包装 git 命令以拦截 git clone 并在后台启动 cascade-watch。install_hook.py 是一个跨平台安装程序,检测 bash/zsh 并将 source 行追加到适当的 RC 文件。
cli.py — Typer CLI 入口点。注册所有子命令。使用 Rich 进度条和格式化输出面板编排分析管道。
cascade-train。IsolationForest 回退方案是基于启发式的基线,并非生产级模型。ip link set eth0 down),以防止扫描期间主动数据外泄。虽然安全,但这意味着需要在安装期间进行网络握手或 C2 连接的恶意软件可能不会执行其载荷,或者某些需要互联网连接的正规安装程序会失败。要绕过此限制,请传递 --controlled-network 选项以启用受控/接收池网络模式。strace/ptrace 监控(通过调用 ptrace(PTRACE_TRACEME, ...) 或检查 /proc/self/status 中的 TracerPid)。如果触发规避,恶意软件可能提前终止或仅执行良性操作,从而逃避检测。api/main.py 已连接到后台任务中运行实际的 TraceTree 分析管道。它使用内存数据库(mock_db)进行作业跟踪,并且需要设置 环境变量才能启动。欢迎提交 Pull Request。请确保新功能与现有模块解耦。
MIT
| 签名 | 严重性 | 捕获内容 |
|---|
reverse_shell | 10 | 外部连接 → dup2 → execve /bin/sh |
container_escape | 10 | openat /proc/1/、/sys/fs/cgroup、/var/run/docker.sock |
credential_theft | 9 | openat /etc/shadow、.ssh/、.aws/ → 外部连接 |
typosquat_exfil | 9 | 读取秘密文件 (.env, .npmrc) → 连接到 pastebin/file.io/transfer.sh |
process_injection | 9 | mprotect PROT_EXEC → 执行非标准二进制文件 |
crypto_miner | 8 | clone → clone → 连接到矿池端口 (3333, 4444, 14444, 45700) |
dns_tunneling | 7 | getaddrinfo + sendto + socket 在端口 53/5353 上 |
persistence_cron | 7 | openat crontab 路径 → 写入 |
| 模式 | 严重性 | 触发条件 |
|---|
connect_then_shell | 10 | 外部连接 → 在 3 秒内执行 execve /bin/sh |
credential_scan_then_exfil | 9 | 敏感文件读取 → 在 5 秒内建立外部连接 |
delayed_payload | 8 | >10 秒间隔后出现可疑活动爆发(投放器行为) |
rapid_file_enumeration | 7 | 在 1 秒内打开 10+ 文件(扫描行为) |
burst_process_spawn | 7 | 在 2 秒内创建 5+ clone/execve |
| 类别 | 标准 | 风险分数 |
|---|
safe_registry | IP 与已知的 PyPI/npm/GitHub CDN 范围匹配 | 0.0 |
known_benign | 到未分类主机的标准 Web 端口 (80/443) | 0.5 |
suspicious | 云元数据 (169.254.x.x)、来自容器的私有 IP 或可疑端口 (4444, 1337, 31337 等) | 8.0–9.0 |
unknown | 默认 | 3.0 |
| 目标类型 | 工作原理 | 备注 |
|---|
| PyPI 包 | pip download(带网络),然后 pip install --no-index(无网络)在 strace 下 | 最可靠。安装前网络被断开。 |
| npm 包 | npm install 在 strace 下运行,干运行后网络被断开 | 需要沙箱镜像中的 Node.js。 |
| DMG 文件 | 使用 7z 在容器内提取。找到的脚本 (.sh, .py, .command)、.pkg 安装程序、.app 包和裸 Mach-O 二进制文件每个都在 strace 下执行。 | 需要沙箱镜像中的 p7zip-full。加密或不常见格式的 DMG 提取可能失败。脚本在 Linux 容器中运行,因此不会执行 macOS 特有的行为。 |
| EXE 文件 | 在 wine64 下运行,带有 strace -t -f 和 30 秒超时。从 strace 日志中过滤掉 Wine 初始化噪音。 | 需要沙箱镜像中的 wine64。等待用户输入的图形界面程序会超时。Wine 的翻译层意味着系统调用是 Linux 系统调用,而非原生 Windows——某些 Windows 特定的行为可能不可见。 |
| 威胁 | 严重性 | 描述 |
|---|
COMMAND_INJECTION | 严重 | 根据工具参数生成了 Shell 进程 |
CREDENTIAL_EXFILTRATION | 严重 | 读取机密后发起网络连接 |
COVERT_NETWORK_CALL | 高 | 工具调用期间向意外目标发起出站连接 |
PATH_TRAVERSAL | 高 | 读取工作目录之外的文件 |
EXCESSIVE_PROCESS_SPAWNING | 中 | 子进程数量不成比例 |
PROMPT_INJECTION_VECTOR | 高 | 工具描述包含零宽字符或注入语言 |
TRACETREE_API_KEYScascade-watch 接受一个 URL 参数,但不会执行 git clone。它监视本地目录,或者回退到当前工作目录。