
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)、必需的系统调用、文件模式、网络条件和要匹配的有序序列。
| 签名 | 严重性 | 捕获内容 |
|---|---|---|
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 路径 → 写入 |
从带有时间戳的 strace 输出中检测。需要 strace -t 标志(默认启用)。
| 模式 | 严重性 | 触发条件 |
|---|---|---|
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 |
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 系统调用被分为以下四个类别之一:
| 类别 | 标准 | 风险分数 |
|---|---|---|
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 特定的行为可能不可见。 |
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...