
أداة تحليل سلوكي في وقت التشغيل تعزل الحزم المشبوهة في حاويات Docker، وتتتبع استدعاءات النظام باستخدام strace، وترسم خرائط تسلسلات العمليات إلى رسوم بيانية موجهة، وتكتشف هجمات سلسلة التوريد باستخدام تواقيع YARA، واكتشاف الشذوذ بالتعلم الآلي، وتحليل الأنماط الزمنية.

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: كشف الشذوذ بالتعلم الآلي (الحدس)** — نموذج غابة عشوائية (Random Forest) مُدرَّب خصيصًا (مُدرَّب على مجموعة بيانات صغيرة وممثلة من الحزم النظيفة/الخبيثة، بالإضافة إلى خلاصات MalwareBazaar الحية الاختيارية) يتنبأ بالنوايا الخبيثة بثقة عالية.
5. **الرجل 5: مطابقة توقيعات YARA (الذاكرة)** — مكتبة مدمجة من الحمض النووي للبرامج الضارة المعروفة وأنماط الاستغلال (الصدف العكسية، عمال تعدين العملات الرقمية، إلخ).
6. **الرجل 6: بروتوكول أمان MCP (درع الوكيل)** — حماية متخصصة لخوادم بروتوكول سياق النموذج (Model Context Protocol)، للدفاع عن الأدوات التي يستخدمها وكلاء الذكاء الاصطناعي.
7. **الرجل 7: الذكاء الاصطناعي الحارس الأمني (الشبكة الاستباقية)** — "ماسح ذكي" قبل الالتزام (pre-commit) يستخدم نماذج 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) — محلل يعتمد على التعبيرات النمطية (Regex) يتعامل مع مخرجات strace متعددة الأسطر وتنسيقات [pid] و bare-pid. يستخرج إنشاء العملية، الوصول إلى الملفات، اتصالات الشبكة، وعمليات الذاكرة. يُخصص لكل استدعاء نظام وزن خطورة (0–9) بناءً على صلته بالأمان.monitor/signatures.py) — يطابق تدفق الأحداث المحلل مقابل 8 أنماط توقيع سلوكي معرفة في data/signatures.json. كل مطابقة تنتج أدلة تسرد الأحداث المحددة التي أدت إلى ذلك.monitor/timeline.py) — يكتشف 5 أنماط سلوكية مبنية على الوقت من تدفق الأحداث المطعم بالطوابع الزمنية (مثل: قراءة بيانات الاعتماد متبوعة باتصال خارجي خلال 5 ثوانٍ).graph/builder.py) — يبني رسمًا بيانيًا موجهًا باستخدام NetworkX مع عُقد للعمليات والملفات والشبكة. يضيف حوافًا زمنية بين أحداث متتالية لنفس PID ضمن نافذة 5 ثوانٍ.معرفة في data/signatures.json. لكل منها خطورة (1–10)، استدعاءات النظام المطلوبة، أنماط الملفات، شروط الشبكة، وتسلسل مرتب للمطابقة.
تُكتشف من مخرجات strace المطعمة بالطوابع الزمنية. يتطلب علامة -t في strace (مفعلة افتراضيًا).
لكل نوع من أنواع استدعاءات النظام الـ24 وزن خطورة أساسي. أمثلة:
mprotect مع PROT_EXEC: 9.0dup2 بعد connect: 9.0execve لثنائي غير متوقع: 7.0connect إلى بيانات السحابة الوصفية (169.254.x.x): 8.0connect إلى CDN PyPI/npm: 0.0 (غير ضار)openat لـ /usr/lib/python/*: 0.0 (غير ضار)تغذي درجة الخطورة الإجمالية حساب الثقة في التعلم الآلي.
يُصنف كل استدعاء نظام 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%
للحزمة الضارة (على سبيل المثال، typosquat معروف):```
┌─ 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>`** — حارس الجلسة (انظر قسم Session Guardian).
**الأمر الفرعي: `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 hook) يقوم بتشغيل `cascade-watch` تلقائياً بعد كل `git clone`.```bash
cascade-install-hook
يقوم هذا بإضافة سطر source إلى ~/.bashrc أو ~/.zshrc. يوجد البرنامج النصي للخطاف في ~/.local/share/tracetree/hooks/shell_hook.sh. بعد التثبيت، سيقوم كل git clone بتشغيل مراقب في الخلفية وتسجيل الدخول إلى /tmp/tracetree_<reponame>.log.
cascade-trainخط أنابيب تدريب تفاعلي. يطلب مفتاح API لـ MalwareBazaar (اختياري — يمكن تخطيه للتدريب على مجموعات البيانات المحلية فقط)، ثم:
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، استدعاء آمن لكل أداة مع وسائط اصطناعية.
3 الاختبارات الخصومية — يتم إعادة استدعاء كل أداة بحمولات حقن (; ls /etc، ../../../etc/passwd، <script>alert(1)</script>).filesystem، github، postgres، fetch، shell.sandbox/ — إدارة دورة حياة حاوية Docker. يبني صورة cascade-sandbox:latest من Dockerfile استنادًا إلى python:3.11-slim مع 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). يتتبع 24 نوعًا من استدعاءات النظام عبر 5 فئات (عملية، شبكة، ملف، ذاكرة، IPC). يعين أوزان خطورة لكل حدث، ويصنف وجهات الشبكة، ويميز الوصول إلى الملفات الحساسة. يعيد بيانات حدث منظمة مع طوابع زمنية وإزاحات ميلي ثانية نسبية.
monitor/signatures.py — مطابق التوقيعات السلوكية. يحمل 8 أنماط من data/signatures.json. يدعم المطابقة غير المرتبة (يجب أن تكون استدعاءات النظام المطلوبة + أنماط الملف/الشبكة موجودة) والمطابقة المتسلسلة المرتبة (يجب أن تظهر أزواج شرط استدعاء النظام بالترتيب). يعيد التوقيعات المطابقة مع أدلة تسرد الأحداث المحددة التي أثارت كل تطابق.
monitor/timeline.py — محلل الأنماط الزمنية. يكتشف 5 أنماط سلوكية زمنية من تدفق الأحداث المرتبة ذات الطابع الزمني. يحدد كل نمط خطورة ونافذة زمنية وشروط الإثارة. يعيد المطابقات مرتبة حسب الخطورة تنازليًا. نشط فقط عندما تم تشغيل strace بـ -t (وهو الإعداد الافتراضي).
graph/builder.py — بناء رسم بياني موجه باستخدام NetworkX. ينشئ عقدًا للعمليات والملفات ووجهات الشبكة. يضيف حوافًا لعلاقات الاستنساخ وأهداف استدعاء النظام والعلاقات الزمنية (أحداث متتالية لنفس PID خلال 5 ثوانٍ). يتم وضع علامات على العقد والحواف بمطابقات التوقيعات وأوزان الخطورة. يخرج JSON متوافق مع Cytoscape وإحصائيات داخلية.
ml/detector.py — اكتشاف الشذوذ. يستخرج متجهًا من 10 ميزات (عدد العقد، عدد الحواف، اتصالات الشبكة، قراءات الملفات، عدد execve، إجمالي الخطورة، الشبكات المشبوهة، الملفات الحساسة، أقصى خطورة، عدد الأنماط الزمنية). يستخدم مصنف الغابة العشوائية (RandomForestClassifier) إذا كان نموذج مدرب متوفر محليًا أو قابل للتنزيل من GCS؛ يقع في IsolationForest مدرب على 10 خطوط أساس لحزم نظيفة ثابتة. تعزز درجات الخطورة وعدد الأنماط الزمنية الثقة النهائية بشكل مستقل عن تنبؤ ML.
mcp/ — وحدة تحليل خادم MCP. ستة ملفات: sandbox.py (صندوق رملي Docker لخوادم MCP)، 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). يُستخدم في واجهة سطر الأوامر للتغذية الراجعة البصرية أثناء التحليل.
hooks/ — نظام ربط الصدفة. shell_hook.sh يلف أمر git لاعتراض git clone وبدء cascade-watch في الخلفية. install_hook.py هو مثبت عبر المنصات يكتشف bash/zsh ويضيف سطر المصدر إلى ملف RC المناسب.
cli.py — نقطة دخول Typer CLI. يسجل جميع الأوامر الفرعية. ينظم خط أنابيب التحليل مع أشرطة تقدم Rich وألواح إخراج منسقة.
cascade-train مع مجموعة بيانات كبيرة وموسومة. إن انخفاض IsolationForest هو خط أساس استدلالي، وليس نموذجًا بجودة إنتاجية.ip link set eth0 down) قبل تشغيل/تثبيت الحزمة لمنع تسرب البيانات النشط أثناء الفحص. على الرغم من أنه آمن، إلا أن هذا يعني أن البرامج الضارة التي تتطلب مصافحات شبكة أو اتصالات C2 أثناء التثبيت قد لا تنفذ حمولتها، أو قد تفشل بعض المثبتات الشرعية التي تتطلب اتصالاً بالإنترنت. لتجاوز ذلك، مرر الخيار --controlled-network لتمكين وضع الشبكة المسيطر عليها/المغلق.strace/ptrace (عن طريق استدعاء ptrace(PTRACE_TRACEME, ...) أو التحقق من TracerPid في /proc/self/status). إذا تم تشغيل التهرب، فقد تنهي البرامج الضارة مبكرًا أو تنفذ إجراءات غير ضارة فقط، متجنبة الكشف.مرحب بطلبات السحب (Pull requests). يرجى الحفاظ على فصل الميزات الجديدة عن الوحدات الموجودة.
MIT
ml/detector.py) — يستخرج متجهًا من 10 ميزات من الرسم البياني والبيانات المحللة. يستخدم مصنف RandomForestClassifier إذا كان النموذج المدرب متاحًا، وإلا يتحول إلى IsolationForest مدرب على 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 → execve لثنائي غير قياسي |
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 | اتصال خارجي → execve /bin/sh خلال 3 ثوانٍ |
credential_scan_then_exfil | 9 | قراءة ملف حساس → اتصال خارجي خلال 5 ثوانٍ |
delayed_payload | 8 | فجوة >10 ثوانٍ تتبعها دفقة من الأنشطة المشبوهة (سلوك المُسقط) |
rapid_file_enumeration | 7 | 10+ فتح ملفات خلال ثانية واحدة (سلوك مسح) |
burst_process_spawn | 7 | 5+ clone/execve خلال ثانيتين |
| الفئة | المعايير | درجة المخاطرة |
|---|
safe_registry | تطابق IP مع نطاقات CDN المعروفة لـ PyPI/npm/GitHub | 0.0 |
known_benign | منفذ ويب قياسي (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 في صورة sandbox. |
| ملفات DMG | يُستخرج باستخدام 7z داخل الحاوية. البرامج النصية (.sh, .py, .command)، مثبتات .pkg، حزم .app، وثنائيات Mach-O المجردة يتم تنفيذها تحت strace. | يتطلب p7zip-full في صورة sandbox. قد يفشل استخراج DMG على التنسيقات المشفرة أو غير الشائعة. تُشغل البرامج النصية في حاوية Linux، لذا لن يتم تنفيذ السلوك الخاص بـ macOS. |
| ملفات EXE | تُشغل تحت wine64 مع strace -t -f ومهلة 30 ثانية. يتم تصفية ضوضاء تهيئة Wine من سجل strace. | يتطلب wine64 في صورة sandbox. التطبيقات ذات الواجهة الرسومية التي تنتظر إدخال المستخدم ستنتهي المهلة. طبقة ترجمة Wine تعني أن استدعاءات النظام هي استدعاءات Linux، وليست Windows أصلية — قد لا يظهر بعض السلوك الخاص بـ Windows. |
| التهديد | الخطورة | الوصف |
|---|
COMMAND_INJECTION | حرجة | تم إطلاق صدفة استجابةً لوسائط الأداة |
CREDENTIAL_EXFILTRATION | حرجة | قراءة سرية تليها اتصال شبكة |
COVERT_NETWORK_CALL | عالية | اتصال صادر أثناء استدعاء الأداة إلى وجهة غير متوقعة |
PATH_TRAVERSAL | عالية | قراءة ملفات خارج دليل العمل |
EXCESSIVE_PROCESS_SPAWNING | متوسطة | عدد مفرط من العمليات الفرعية |
PROMPT_INJECTION_VECTOR | عالية | تحتوي أوصاف الأداة على أحرف بعرض صفري أو لغة حقن |
api/main.py لتشغيل خط أنابيب تحليل TraceTree الفعلي داخل مهام الخلفية. يستخدم قاعدة بيانات في الذاكرة (mock_db) لتتبع المهام، ويتطلب تعيين متغير البيئة TRACETREE_API_KEYS لبدء التشغيل.cascade-watch وسيطة URL لكنه لا ينفذ git clone. يراقب الدليل المحلي أو يتراجع إلى دليل العمل الحالي.