Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
bandjacks — نمذجة عالم الدفاع ضد التهديدات السيبرانية | Kitploit
أدوات/GitHubGitHub/blevene/bandjacks
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعموجزات ومجمعات التهديداتتحليل الثغرات الأمنيةجمع المعلوماتاستخبارات التهديداتتعلم الآلةالتعلم والتعليمموارد منسقةتحليل السجلات
GitHubblevene/bandjacks

bandjacks

254منذ 3 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

نمذجة عالم الدفاع ضد التهديدات السيبرانية

عرض المستودع

Bandjacks

نظام نمذجة دفاع عالمي للتهديدات الإلكترونية

نظرة عامة

Bandjacks هو نظام شامل لاستخبارات التهديدات الإلكترونية (CTI) يقوم بـ:

  • استخراج تقنيات MITRE ATT&CK من تقارير التهديدات في 12-40 ثانية
  • بناء رسم بياني معرفي للجهات الفاعلة للتهديدات والتقنيات والدفاعات
  • إنشاء حزم متوافقة مع STIX 2.1 مع تتبع كامل للمصدر
  • دمج أنطولوجيا D3FEND للحصول على توصيات دفاعية
  • توفير إمكانيات البحث المتجه وتحليلات الرسم البياني
  • حساب تحليلات التكرار المشترك لتحديد أنماط التقنيات
  • يتميز باستخراج أسرع بنسبة 94% مقارنة بالإصدارات السابقة مع تخزين مؤقت لاستجابات LLM
  • يتضمن واجهة أمامية Next.js لمراجعة التقارير وعرض التحليلات

📚 الوثائق

الدليلالوصف
البدء السريعالتشغيل في 5 دقائق
الإعداد الكاملإعداد البيئة بالكامل
استخدام CLIدليل واجهة سطر الأوامر
مرجع APIتوثيق REST API
تحليلات التكرار المشتركتوثيق التحليلات
توليد تدفق الهجومدليل توليد التدفقات
نظام المراجعةمراجعة بشرية في الحلقة

أبرز ميزات البنية

TechniqueCache

  • ذاكرة تخزين مؤقت في الذاكرة لجميع تقنيات MITRE ATT&CK المحملة عند بدء التشغيل
  • عمليات بحث O(1) بواسطة external_id (مثل T1557) لحل الأسماء الفوري
  • 1376 تقنية مخزنة مؤقتًا مع البيانات الوصفية الكاملة (الاسم، الوصف، التكتيكات، المنصات)
  • تسمية متسقة تضمن أن واجهة المراجعة تعرض دائمًا أسماء تقنيات قابلة للقراءة البشرية

ActorCache

  • ذاكرة تخزين مؤقت في الذاكرة لجميع مجموعات الاختراق والجهات الفاعلة للتهديدات
  • عمليات بحث سريعة لحل أسماء الجهات الفاعلة والبحث
  • يدعم مطابقة الأسماء المستعارة والبحث التقريبي

بدء سريع

المتطلبات الأساسية

  • Python 3.11+
  • Neo4j 5.x (قاعدة بيانات رسوم بيانية)
  • OpenSearch 2.x (مخزن متجهات)
  • Redis (اختياري، للتخزين المؤقت)
  • Node.js 18+ (لل واجهة الأمامية)
  • الوصول إلى LLM: مفاتيح API سحابية (Gemini أو OpenAI) أو خادم محلي متوافق مع OpenAI

التثبيت```bash

Clone the repository

git clone https://github.com/yourusername/bandjacks.git cd bandjacks

Install Python dependencies with uv (recommended)

uv sync

Or with pip

pip install -e .

Install frontend dependencies

cd ui && npm install && cd ..

root@kitploit:~
### إعداد البيئة

**هام:** يجب عليك تكوين متغيرات البيئة قبل بدء التطبيق. يتطلب التطبيق تعيين `NEO4J_PASSWORD`.

أنشئ ملف `.env` في جذر المشروع:```bash
# Copy the sample file
cp infra/env.sample .env

# Edit .env and set your actual passwords
nano .env

التكوين المطلوب في .env:```bash

Neo4j Configuration (REQUIRED)

NEO4J_URI=bolt://localhost:7687 NEO4J_USER=neo4j NEO4J_PASSWORD=your-actual-neo4j-password # MUST BE SET - no default provided

OpenSearch Configuration

OPENSEARCH_URL=http://localhost:9200 OPENSEARCH_USER=admin OPENSEARCH_PASSWORD=your-opensearch-password # Optional if security is disabled

LLM Configuration — pick ONE of the options below:

Option A: Local OpenAI-compatible API (vLLM, llama.cpp, Ollama, LocalAI, LM Studio, etc.)

LOCAL_LLM_API_BASE=http://192.168.1.100:8080/v1 # Base URL of your local server LOCAL_LLM_MODEL=mistral-nemo # Model name as the server reports it LOCAL_LLM_API_KEY=no-key # Most local servers accept any value

Option B: Cloud LLM providers

PRIMARY_LLM=gemini GOOGLE_API_KEY=your-gemini-api-key

Optional: OpenAI as fallback (or primary if PRIMARY_LLM=openai)

OPENAI_API_KEY=your-openai-api-key

ATT&CK Configuration

ATTACK_INDEX_URL=https://raw.githubusercontent.com/mitre-attack/attack-stix-data/master/index.json ATTACK_COLLECTION=enterprise-attack ATTACK_VERSION=latest

Redis (optional, for caching)

REDIS_URL=redis://localhost:6379

root@kitploit:~
**ملاحظة:** سيفشل تشغيل التطبيق إذا لم يتم تعيين `NEO4J_PASSWORD`. راجع [إصلاح متغيرات البيئة](https://github.com/blevene/bandjacks/blob/HEAD/ENV_VARIABLES_FIX.md) لمزيد من التفاصيل.

### بدء الخدمات```bash
# Start the FastAPI backend server
uv run uvicorn bandjacks.services.api.main:app --reload --port 8000

# In another terminal, start the Next.js frontend
cd ui && npm run dev

# Access the applications
open http://localhost:8000/docs    # API documentation
open http://localhost:3000         # Frontend UI

واجهة سطر الأوامر (CLI)

تتضمن Bandjacks واجهة سطر أوامر شاملة لعمليات استخبارات التهديدات:```bash

Show all available commands

uv run python -m bandjacks.cli.main --help

root@kitploit:~
> **ملاحظة:** تتطلب واجهة سطر الأوامر (CLI) تعيين متغيرات البيئة (NEO4J_PASSWORD، الخ). قم بتشغيلها من جذر المشروع حيث يوجد ملف `.env`.

### أوامر الاستعلام```bash
# Search for threat intelligence
uv run python -m bandjacks.cli.main query search "ransomware encryption techniques" --top-k 10

# Explore graph relationships
uv run python -m bandjacks.cli.main query graph "attack-pattern--abc123" --depth 2

إدارة قائمة المراجعة```bash

Show review queue

uv run python -m bandjacks.cli.main review queue --status pending --limit 20

Approve a candidate

uv run python -m bandjacks.cli.main review approve "candidate-123" --reviewer analyst-1

Reject with reason

uv run python -m bandjacks.cli.main review reject "candidate-456" --reviewer analyst-1 --reason "False positive"

root@kitploit:~
### استخراج المستندات```bash
# Extract CTI from a document
uv run python -m bandjacks.cli.main extract document ./report.pdf --confidence-threshold 80 --show-evidence

أوامر التحليلات

ملاحظة: تتطلب أوامر التحليلات بيانات AttackEpisode في Neo4j لإرجاع النتائج.```bash

Show top co-occurring technique pairs

uv run python -m bandjacks.cli.main analytics top-cooccurrence --limit 25 --min-episode-size 2

Compute conditional co-occurrence P(B|A) for a technique

uv run python -m bandjacks.cli.main analytics conditional "attack-pattern--abc123" --limit 25

Analyze a specific threat actor

uv run python -m bandjacks.cli.main analytics actor "intrusion-set--xyz789" --metric npmi

Extract technique bundles

uv run python -m bandjacks.cli.main analytics bundles --min-support 3 --min-size 3 --max-size 5 --format json --output bundles.json

Global co-occurrence metrics

uv run python -m bandjacks.cli.main analytics global --min-support 2 --limit 50 --format csv --output pairs.csv

root@kitploit:~
### أوامر سير العمل```bash
# Process a directory of reports with analytics
uv run python -m bandjacks.cli.main workflow process-reports ./reports/ --workers 3 --analyze --export-dir ./results/

# Bulk export all analytics data
uv run python -m bandjacks.cli.main workflow bulk-export --export-dir ./analytics_export/

أوامر المشرف```bash

Check system health

uv run python -m bandjacks.cli.main admin health

View cache statistics

uv run python -m bandjacks.cli.main admin cache-stats

Clear cache

uv run python -m bandjacks.cli.main admin cache-clear --pattern "search:*"

Optimize database

uv run python -m bandjacks.cli.main admin optimize

root@kitploit:~
## واجهة المستخدم الأمامية

توفر واجهة Next.js الأمامية واجهة حديثة للعمل مع النظام.

### إدارة التقارير (`/reports`)
- **قائمة التقارير**: عرض جميع التقارير المستوردة مع الحالة وأعداد التقنيات
- **تقرير جديد** (`/reports/new`): رفع ملفات PDF/TXT أو لصق محتوى التقرير
- **تفاصيل التقرير** (`/reports/[id]`): عرض التقنيات المستخلصة والكيانات والأدلة
- **واجهة المراجعة** (`/reports/[id]/review`): سير عمل مراجعة مع إشراف بشري

### تحليلات التزامن (`/analytics/cooccurrence`)

> **ملاحظة:** تتطلب هذه الصفحات بيانات `AttackEpisode` في Neo4j. قم بمعالجة التقارير عبر خط أنابيب الاستخلاص أولاً، أو استخدم `POST /v1/flows/build` لتوليد الحلقات من بيانات مجموعة الاختراق.

- **الصفحة الرئيسية**: نظرة عامة مع عدد الحلقات/التقنيات/الفاعلين
- **أفضل الأزواج** (`/pairs`): أزواج التقنيات المتزامنة مع مقاييس NPMI/Lift
- **الاحتمال الشرطي** (`/conditional`): الاحتمالات الشرطية P(B|A)
- **الحزم** (`/bundles`): حزم التقنيات المتزامنة بشكل متكرر
- **الفاعلون** (`/actors`): أنماط تقنيات خاصة بفاعل معين
- **الجسر** (`/bridging`): التقنيات المستخدمة عبر عدة فاعلين

### صحة النظام (`/health`)
- حالة صحة جميع المكونات في الوقت الفعلي (Neo4j، OpenSearch، Redis)
- إحصائيات التخزين المؤقت واستخدام الذاكرة
- نقاط نهاية صحية متوافقة مع Kubernetes

### بدء تشغيل الواجهة الأمامية```bash
cd ui
npm run dev     # Development mode with hot reload
npm run build   # Production build
npm run start   # Start production server

# Ensure backend is running
# API_URL defaults to http://localhost:8000/v1

دليل الاستخدام

1. تحميل بيانات MITRE ATT&CK

أولاً، قم بتحميل إطار عمل MITRE ATT&CK في الرسم البياني المعرفي الخاص بك:```bash

Load the latest enterprise ATT&CK release

curl -X POST "http://localhost:8000/v1/stix/load/attack"
-H "Content-Type: application/json"
-d '{ "collection": "enterprise-attack", "version": "latest", "adm_strict": false }'

root@kitploit:~
### 2. استخراج التقنيات من التقارير

استخرج تقنيات MITRE ATT&CK من تقارير استخبارات التهديدات:```python
import httpx
import time

# For small reports (<5KB) - synchronous processing
response = httpx.post(
    "http://localhost:8000/v1/reports/ingest",
    json={
        "content": "APT29 used spearphishing emails with malicious attachments...",
        "title": "APT29 Campaign Analysis",
        "config": {
            "use_optimized_extractor": True,
            "span_score_threshold": 0.7,
            "top_k": 5
        }
    }
)

result = response.json()
print(f"Extracted {len(result['extraction']['techniques'])} techniques")

# For large reports (>5KB) - asynchronous processing
response = httpx.post(
    "http://localhost:8000/v1/reports/ingest_async",
    json={
        "content": large_report_text,
        "title": "Large Report Analysis"
    }
)

job_id = response.json()["job_id"]

# Check job status
status = httpx.get(f"http://localhost:8000/v1/reports/jobs/{job_id}/status")
while status.json()["status"] == "processing":
    time.sleep(2)
    status = httpx.get(f"http://localhost:8000/v1/reports/jobs/{job_id}/status")

# Get results from completed job
result = status.json()["result"]
print(f"Extracted {result['techniques_count']} techniques in {result['elapsed_time']} seconds")

3. استخدام بايثون مباشر

للوصول البرمجي بدون واجهة API:```python from bandjacks.llm.extraction_pipeline import run_extraction_pipeline

Configure extraction

config = { "use_optimized_extractor": True, # Use optimized pipeline "span_score_threshold": 0.7, # Minimum span confidence "max_spans": 20, "top_k": 5, "chunk_size": 2000, # For large documents "max_chunks": 100 }

Run extraction pipeline

result = run_extraction_pipeline( report_text, config, source_id="report_123", neo4j_config=neo4j_config )

Access results

techniques = result["techniques"] # Dict of technique_id -> details bundle = result.get("bundle") # STIX 2.1 bundle if configured entities = result.get("entities") # Extracted entities

Example: Print extracted techniques

for tech_id, info in techniques.items(): print(f"{tech_id}: {info['name']}") print(f" Confidence: {info['confidence']}%") print(f" Evidence: {info['evidence']}")

root@kitploit:~
## معمارية خط أنابيب الاستخراج

يستخدم خط أنابيب استخراج Bandjacks معمارية متعددة الوكلاء لاستخراج الاستخبارات التهديدية المنظمة.

### مكونات خط الأنابيب

يستخدم خط أنابيب الاستخراج 9 وكلاء متخصصين بالتسلسل:

#### 1. **EntityExtractionAgent** - التعرف على الكيانات
- يستخرج ممثلي التهديدات والبرامج الضارة والأدوات والحملات
- يعمل أولاً لتوفير سياق لاستخراج التقنيات
- يستخدم التوجيه بقليل من الأمثلة مع التحقق من مخطط JSON
- يعالج المستندات المجزأة باستخراج نافذة تدريجي

#### 2. **SpanFinderAgent** - اكتشاف النص السلوكي
- يكتشف أجزاء النص التي تحتوي على سلوكيات تهديد باستخدام 14 نمط regex خاص بالتكتيكات
- يحدد معرفات التقنيات الصريحة (T1566.001) والأنماط السلوكية
- يُسجل الأجزاء حسب الثقة مع تعزيز فهرس الكلمات المفتاحية
- لا استدعاءات لـ LLM — مطابقة أنماط خالصة للسرعة

#### 3. **BatchRetrieverAgent** - استرداد المرشحين
- يستخدم البحث المتجهي KNN في OpenSearch للعثور على تقنيات مرشحة لكل جزء
- يزيل ازدواجية نصوص الأجزاء المتطابقة قبل الترميز لتجنب التضمينات الزائدة
- يعيد أفضل k مرشحًا مع درجات التشابه لكل جزء

#### 4. **Pre-filter** - تقليل الأجزاء
- يحدد الأجزاء إلى `max_spans_per_technique` (الافتراضي 2) لكل تقنية مرشحة
- يحتفظ بالأجزاء ذات الدرجات الأعلى لكل مرشح للحفاظ على جودة الأدلة
- يقلل استدعاءات LLM للمخطط بنحو ~46% مع خسارة تقنية ضئيلة

#### 5. **DiscoveryAgent** - اكتشاف LLM (شَرطي)
- يتم تشغيله عندما تكون ثقة المسترد منخفضة (متوسط <0.7)
- يستخدم LLM لاكتشاف التقنيات التي فاتها البحث المتجهي
- استدعاء دُفعي واحد لجميع الأجزاء منخفضة الثقة

#### 6. **BatchMapperAgent** - تعيين التقنيات (LLM)
- يعالج الأجزاء دُفعيًا في مجموعات تصل إلى 10 (`MAX_MAPPER_BATCH_SIZE`، تم خفض الافتراضي من 25 في 2026-05 للحد من اقتطاع LLM السحابي)
- يستخرج جميع التقنيات ذات الصلة لكل جزء مع درجات الثقة
- يستخدم التحقق من مخطط JSON للمخرجات المنظمة

#### 7. **EvidenceVerifierAgent** - التحقق من الأدلة
- التحقق القائم على الأنماط من الاقتباسات ومراجع الأسطر
- يُسجل جودة الأدلة على مقياس 40-100 نقطة
- لا استدعاءات لـ LLM — مطابقة regex والنص

#### 8. **ConsolidatorAgent** - دمج الأدلة
- يدمج التقنيات المكررة الموجودة عبر أجزاء متعددة
- يجمع الأدلة باستخدام تشابه جاكارد (عتبة >85%)
- ينتج قائمة التقنيات النهائية مع درجات الثقة المُجمعة

#### 9. **AttackFlowSynthesizer** - توليد التسلسل (LLM)
- يحلل العلامات الزمنية ("أولاً"، "ثم"، "بعد")
- يستنتج العلاقات السببية من السرد
- ينشئ كائنات STIX Attack Flow بحواف احتمالية
- يتراجع إلى نمذجة التزامن عندما يكون التسلسل غير واضح

### تحسينات الأداء

- **التجزئة الذكية**: المستندات مقسمة إلى أجزاء حجمها 2KB مع تداخل
- **المعالجة الدفعية**: يعالج المخطط ما يصل إلى 25 جزءًا لكل استدعاء LLM
- **المعالجة المتوازية**: تتم معالجة الأجزاء بشكل متزامن عبر خيوط العمال
- **تخزين الاستجابات مؤقتًا**: يتم تخزين استجابات LLM مؤقتًا لتجنب الاستدعاءات المكررة
- **الإنهاء المبكر**: عمليات الاستخراج عالية الثقة تتجاوز التحقق
- **TechniqueCache**: يتم تحميل جميع تقنيات ATT&CK عند بدء التشغيل لعملية بحث O(1)
- **المرشح المسبق**: يحدد الأجزاء لكل تقنية مرشحة قبل مخطط LLM (46% استدعاءات أقل)
- **التضمين الدفعي**: يتم إنشاء تضمينات التقنيات دفعة واحدة (أسرع بـ 2-5 مرات)
- **تجميع الاتصالات**: اتصالات Neo4j/OpenSearch مشتركة عبر الطلبات
- **دفعات UNWIND**: كتابات Neo4j مجمعة عبر UNWIND (30-40 استعلامًا → 6-7)
- **التهيئة المسبقة للنموذج**: يتم تحميل نموذج التضمين عند بدء التشغيل لتجنب زمن الوصول للبداية الباردة

### أوقات المعالجة

| حجم المستند | وقت المعالجة | التقنيات المستخرجة |
|--------------|-----------------|---------------------|
| صغير (<5 كيلوبايت) | 10-20 ثانية | 5-10 تقنيات |
| متوسط (5-15 كيلوبايت) | 20-40 ثانية | 10-15 تقنية |
| كبير (>15 كيلوبايت) | 30-60 ثانية | 15-25 تقنية |

## تحليلات التزامن

توفر Bandjacks تحليلات لفهم علاقات التقنيات. 

> **ملاحظة:** تتطلب التحليلات بيانات `AttackEpisode` و`AttackAction` في Neo4j. يتم إنشاء هذه عندما:
> - تتم معالجة التقارير عبر خط أنابيب الاستخراج
> - يتم بناء تدفقات الهجوم عبر `/v1/flows/build`
> - يتم استيعاب حزم STIX التي تحتوي على حلقات هجوم
>
> إذا لم توجد حلقات، فستعيد التحليلات نتائج فارغة.

### التزامن العالمي

احسب التقنيات التي تظهر معًا بشكل متكرر عبر جميع حلقات الهجوم:```python
# Via API
response = httpx.post(
    "http://localhost:8000/v1/analytics/cooccurrence/global",
    json={"min_support": 2, "min_episodes_per_pair": 2, "limit": 50}
)

for pair in response.json()["pairs"]:
    print(f"{pair['name_a']} + {pair['name_b']}: NPMI={pair['npmi']:.3f}")

الاحتمال الشرطي

احسب P(B|A) - بافتراض أن التقنية A استُخدمت، ما هو احتمال التقنية B:```python response = httpx.get( "http://localhost:8000/v1/analytics/cooccurrence/conditional", params={"technique_id": "attack-pattern--abc123", "limit": 25} )

root@kitploit:~
### حزم التقنيات

تحديد حزم التقنيات المتكررة الحدوث معًا (3-5 تقنيات):```python
response = httpx.post(
    "http://localhost:8000/v1/analytics/cooccurrence/bundles",
    json={"min_support": 3, "min_size": 3, "max_size": 5}
)

تحليل خاص بالجهات الفاعلة

تحليل أنماط التقنيات لجهات فاعلة تهديدية محددة:```python response = httpx.post( "http://localhost:8000/v1/analytics/cooccurrence/actor", json={"intrusion_set_id": "intrusion-set--xyz789", "min_support": 1} )

root@kitploit:~
## نظام المراجعة البشرية في الحلقة

يتضمن Bandjacks نظام مراجعة شامل للتحقق من المعلومات الاستخباراتية المستخرجة:

### واجهة مراجعة موحدة

يقدم نظام المراجعة جميع العناصر المستخرجة في واجهة واحدة:```typescript
// Review workflow
1. Upload/ingest report → Extraction pipeline runs
2. Navigate to /reports/{id}/review
3. Review extracted items across three tabs:
   - Entities (threat actors, malware, tools)
   - Techniques (ATT&CK mappings with evidence)
   - Attack Flow (sequenced steps)
4. Take actions on each item:
   - Approve: Accept as correct
   - Reject: Mark as incorrect
   - Edit: Modify details (name, confidence, etc.)
5. Submit all decisions atomically

ميزات المراجعة

  • روابط الأدلة: روابط مباشرة للنص المصدر مع أرقام الأسطر
  • تعديل مستوى الثقة: تعديل درجات الثقة بناءً على معرفة المحلل
  • العمليات الجماعية: تحديد عناصر متعددة للموافقة/الرفض الجماعي
  • اختصارات لوحة المفاتيح: A (موافقة)، R (رفض)، E (تحرير)، Space (التالي)
  • تتبع التقدم: مؤشرات بصرية لاكتمال المراجعة
  • التصفية: تصفية حسب النوع أو مستوى الثقة أو الحالة

تكامل واجهة برمجة التطبيقات```python

Submit review decisions

response = httpx.post( f"http://localhost:8000/v1/reports/{report_id}/unified-review", json={ "decisions": [ { "item_id": "technique-0", "action": "approve", "confidence_adjustment": 5, "notes": "Confirmed via external CTI" }, { "item_id": "entity-malware-1", "action": "edit", "edited_value": { "name": "Corrected Malware Name", "confidence": 95 } } ], "global_notes": "Review completed by analyst-1" } )

Review creates:

- Approved entities as Neo4j nodes

- Technique-to-report relationships

- Audit trail of decisions

root@kitploit:~
### 4. البحث عن التقنيات

ابحث عن تقنيات ATT&CK باستخدام اللغة الطبيعية:```python
# Vector search for similar techniques
response = httpx.post(
    "http://localhost:8000/v1/search/ttx",
    json={
        "query": "ransomware that encrypts files and demands payment",
        "top_k": 5
    }
)

techniques = response.json()["results"]
for tech in techniques:
    print(f"{tech['external_id']}: {tech['name']} (score: {tech['score']:.2f})")

5. استعلامات الرسم البياني

استعلام الرسم البياني المعرفي عن العلاقات:```python

Get all techniques used by a specific group

response = httpx.get( "http://localhost:8000/v1/graph/group/G0016/techniques" )

Get defensive techniques for an attack

response = httpx.get( "http://localhost:8000/v1/defense/technique/T1566.001" )

root@kitploit:~
### ٦. إنشاء نماذج AttackFlow

إنشاء نماذج التواجد المشترك التي تظهر كيفية استخدام الجهات المهاجمة للتقنيات معًا:```python
# Generate flow for a specific intrusion set (e.g., APT29)
response = httpx.post(
    "http://localhost:8000/v1/flows/build",
    json={
        "intrusion_set_id": "intrusion-set--899ce53f-13a0-479b-a0e4-67d46e241542"
    }
)

flow = response.json()
print(f"Generated flow '{flow['name']}' with {len(flow['steps'])} techniques")
print(f"Co-occurrence edges: {len(flow['edges'])}")

توليد الدفعات: توليد التدفقات لجميع الجهات الفاعلة في التهديدات باستخدام التقنيات:```bash

Run the bulk generation script

uv run python scripts/build_intrusion_flows_simple.py

Monitor progress - creates flows for 165+ intrusion sets

Handles rate limiting automatically

Skips existing flows to avoid duplicates

root@kitploit:~
نماذج AttackFlow تستخدم **الترافق (co-occurrence)** بدلاً من الترتيب التسلسلي لأن مجموعات التطفل لا تحتوي على معلومات تسلسلية متأصلة. يتم ربط التقنيات عن طريق:
- **حواف داخل التكتيك (Intra-tactic edges)**: بين التقنيات في نفس تكتيك قتل السلسلة (kill chain tactic)
- **حواف عبر التكتيكات (Cross-tactic edges)**: بين التقنيات عبر التكتيكات المتجاورة
- **أنماط مركز-فرع (Hub-spoke patterns)**: لمجموعات التقنيات الكبيرة لتجنب انفجار الحواف

راجع [دليل توليد AttackFlow](https://github.com/blevene/bandjacks/blob/HEAD/docs/ATTACKFLOW_GENERATION.md) للاستخدام المفصل.

## صيغ الإدخال المدعومة

تدعم سلسلة الاستخراج صيغ إدخال متعددة:

- **نص عادي (Plain Text)** - محتوى نصي مباشر
- **ماركداون (Markdown)** - مستندات ماركداون منسقة
- **PDF** - عبر استخراج pdfplumber
- **HTML** - عبر تحليل BeautifulSoup
- **JSON** - استخراج بيانات منظم

### الاستخراج من نص عادي```python
# Direct text extraction
plaintext_report = """
The threat actors used spearphishing emails with malicious attachments.
After gaining access, they deployed Mimikatz to harvest credentials and
used RDP for lateral movement across the network.
"""

result = asyncio.run(run_agentic_v2_async(plaintext_report, {
    "cache_llm_responses": True,
    "single_pass_threshold": 500
}))

مقتطف من ماركداون```python

Markdown document extraction

markdown_report = """

APT Campaign Analysis

Attack Methods

  • Initial Access: Spearphishing with malicious Office documents
  • Execution: PowerShell scripts and scheduled tasks
  • Persistence: Registry modifications and service installation

Tools Used

ToolPurpose
MimikatzCredential dumping
PsExecRemote execution
Cobalt StrikeC2 communications
"""

result = run_extraction_pipeline(markdown_report, { "use_optimized_extractor": True, "span_score_threshold": 0.7 }, source_id="markdown_report")

root@kitploit:~
### استخراج من PDF```python
import pdfplumber
from bandjacks.llm.extraction_pipeline import run_extraction_pipeline

# Read PDF with pdfplumber (recommended)
with pdfplumber.open("threat_report.pdf") as pdf:
    text = ""
    for page in pdf.pages:
        page_text = page.extract_text()
        if page_text:
            text += page_text + "\n"

# Extract techniques using extraction pipeline
result = run_extraction_pipeline(text, {
    "use_optimized_extractor": True,
    "span_score_threshold": 0.7,
    "chunk_size": 2000
}, source_id="threat_report")

print(f"Found {len(result['techniques'])} techniques")

تقارير المعالجة الدفعية```python

from pathlib import Path import json

reports_dir = Path("./reports") results = []

for pdf_file in reports_dir.glob("*.pdf"): # Extract text and techniques # ... (see above)

root@kitploit:~
results.append({
    "file": pdf_file.name,
    "techniques": list(result["techniques"].keys()),
    "count": len(result["techniques"])
})

Save summary

with open("extraction_summary.json", "w") as f: json.dump(results, f, indent=2)

root@kitploit:~
### بناء تدفقات الهجوم```python
# Generate attack flow from extracted techniques
response = httpx.post(
    "http://localhost:8000/v1/flows/build",
    json={
        "source_id": "report-123",
        "technique_ids": ["T1566.001", "T1059.001", "T1003.001"]
    }
)

flow = response.json()
print(f"Generated flow with {len(flow['steps'])} steps")

الاختبار

قم بتشغيل مجموعة الاختبارات للتحقق من تثبيتك:```bash

Run all tests

uv run pytest

Test extraction pipeline

python tests/test_optimized_extraction.py

Test graph integration

python tests/test_graph_upsert.py

Test STIX validation

python tests/test_bundle_validation.py

Run frontend tests

cd ui && npm test

root@kitploit:~
## نقاط النهاية API

### نقاط النهاية الأساسية

- `POST /v1/stix/load/attack` - تحميل بيانات MITRE ATT&CK
- `POST /v1/reports/ingest` - إدخال تقارير متزامن (<5KB)
- `POST /v1/reports/ingest_async` - إدخال تقارير غير متزامن (>5KB)
- `POST /v1/reports/ingest/upload` - تحميل ملفات PDF/TXT
- `GET /v1/reports/jobs/{id}/status` - التحقق من حالة المهمة
- `POST /v1/reports/{id}/unified-review` - تقديم قرارات المراجعة
- `POST /v1/search/ttx` - البحث عن التقنيات
- `GET /v1/graph/technique/{id}` - الحصول على تفاصيل التقنية

### تدفقات الهجوم

- `POST /v1/flows/build` - إنشاء نماذج التواجد المشترك لتدفقات الهجوم
- `GET /v1/flows/{flow_id}` - استرجاع تفاصيل تدفق هجوم معين
- `POST /v1/flows/search` - البحث عن تدفقات هجوم مماثلة
- `GET /v1/flows/dump` - تصدير التدفقات بشكل مجمع مع التقسيم والتصفية

### التحليلات

- `GET /v1/analytics/cooccurrence/global` - مقاييس التواجد المشترك العالمية
- `GET /v1/analytics/cooccurrence/conditional` - الاحتمالات الشرطية
- `GET /v1/analytics/cooccurrence/bundles` - حزم التقنيات
- `GET /v1/analytics/cooccurrence/actor` - أنماط خاصة بالجهات الفاعلة
- `GET /v1/coverage/gaps` - فجوات تغطية التقنيات

### الدفاع والكشف

- `GET /v1/defense/technique/{id}` - الحصول على توصيات دفاعية
- `GET /v1/detections/technique/{id}` - استراتيجيات الكشف
- `POST /v1/sigma/validate` - التحقق من صحة قواعد Sigma

### المراقبة

- `GET /health` - فحص صحي أساسي
- `GET /health/live` - مسبار البقاء على قيد الحياة في Kubernetes
- `GET /health/ready` - مسبار الجاهزية في Kubernetes
- `GET /health/components/{component}` - صحة المكون الفردي
- `GET /v1/costs/stats` - تتبع تكلفة LLM (إجمالي يومي حسب النموذج)
- `GET /v1/cache/stats` - الحصول على إحصائيات ذاكرة التخزين المؤقت لـ LLM
- `POST /v1/cache/clear` - مسح ذاكرة التخزين المؤقت لـ LLM
- `GET /v1/compliance/report` - مقاييس الامتثال
- `GET /v1/drift/status` - حالة كشف الانجراف
- `GET /v1/ml-metrics/performance` - مقاييس نموذج التعلم الآلي

### الجهات الفاعلة والأصل

- `GET /v1/actors` - قائمة الجهات الفاعلة في التهديد
- `GET /v1/actors/{id}` - الحصول على تفاصيل الجهة الفاعلة
- `GET /v1/provenance/{object_id}` - أصل الكائن
- `GET /v1/provenance/{object_id}/lineage` - سلسلة النسب الكاملة
- `GET /v1/provenance/{object_id}/evidence` - مقتطفات الأدلة

### ميزات API فقط (بدون واجهة مستخدم أو سطر أوامر)

هذه النقاط النهائية تعمل بكامل وظائفها ولكن يتم الوصول إليها عبر REST API فقط (بدون صفحات أمامية أو أوامر CLI):

#### محاكاة مسار الهجوم
- `POST /v1/simulation/paths` - محاكاة مسارات الهجوم من تقنية/مجموعة بداية
- `POST /v1/simulation/predict` - التنبؤ بالتقنيات المحتملة التالية بالنظر إلى الحالة الحالية
- `POST /v1/simulation/whatif` - تحليل "ماذا لو" للسيناريوهات الدفاعية
- `POST /v1/simulation/scenario` - المحاكاة من مجموعات من المجموعات/البرامج/التقنيات
- `GET /v1/simulation/statistics/{technique_id}` - إحصائيات استخدام التقنية
- `GET /v1/simulation/groups/{group_id}/patterns` - أنماط هجوم المجموعة
- `POST /v1/simulation/compare` - مقارنة مسارات هجوم متعددة

#### سياسة MDP والتوزيع
- `POST /v1/simulate/rollout` - محاكاة توزيع PTG
- `POST /v1/simulate/mdp` - حساب سياسة الدفاع المثلى باستخدام MDP
- `GET /v1/simulate/models` - قائمة نماذج PTG المتاحة

#### كشف الانجراف والمراقبة
- `GET /v1/drift/status` - حالة الانجراف الحالية عبر جميع المقاييس
- `POST /v1/drift/analyze` - تشغيل تحليل الانجراف بعتبات مخصصة
- `GET /v1/drift/alerts` - الحصول على تنبيهات الانجراف النشطة
- `POST /v1/drift/alerts/{alert_id}/acknowledge` - تأكيد التنبيه
- `GET /v1/drift/metrics/{metric_name}` - الحصول على مقياس انجراف معين

#### تتبع مقاييس التعلم الآلي
- `POST /v1/ml-metrics/prediction` - تسجيل تنبؤ النموذج للتتبع
- `POST /v1/ml-metrics/review` - تسجيل مقاييس قرار المراجعة
- `POST /v1/ml-metrics/coverage-gap` - تسجيل فجوة التغطية
- `GET /v1/ml-metrics/performance` - الحصول على مقاييس أداء النموذج
- `GET /v1/ml-metrics/dashboard` - تصدير مقاييس لوحة المعلومات

#### الإشعارات
- `GET /v1/notifications/history` - الحصول على سجل الإشعارات
- `POST /v1/notifications/clear-history` - مسح سجل الإشعارات
- `GET /v1/notifications/config` - الحصول على تكوين الإشعارات
- `POST /v1/notifications/test` - إرسال إشعار اختبار

#### إدارة تحديث المتجهات
- `GET /v1/vectors/status` - حالة نظام تحديث المتجهات
- `GET /v1/vectors/metrics` - مقاييس تحديث المتجهات التفصيلية
- `POST /v1/vectors/update` - تشغيل تحديث المتجهات يدويًا
- `POST /v1/vectors/process-batch` - فرض معالجة الدفعة
- `DELETE /v1/vectors/queue` - مسح قائمة انتظار التحديثات المعلقة
- `GET /v1/vectors/health` - فحص صحة نظام المتجهات

#### قائمة التجاهل للكيانات
- `GET /v1/ignorelist` - الحصول على حالة قائمة التجاهل الحالية
- `POST /v1/ignorelist/add` - إضافة كيان إلى قائمة التجاهل
- `DELETE /v1/ignorelist/remove` - إزالة كيان من قائمة التجاهل
- `POST /v1/ignorelist/reload` - إعادة تحميل قائمة التجاهل من القرص

#### مراجعة الأنماط المرشحة
- `GET /v1/review/candidates` - قائمة أنماط الهجوم المرشحة
- `POST /v1/review/candidates` - إنشاء نمط مرشح
- `GET /v1/review/candidates/{id}` - الحصول على تفاصيل المرشح
- `POST /v1/review/candidates/{id}/approve` - الموافقة على المرشح
- `POST /v1/review/candidates/{id}/reject` - رفض المرشح
- `GET /v1/review/candidates/{id}/similar` - العثور على أنماط مماثلة
- `GET /v1/review/candidates/stats/summary` - إحصائيات المرشح

### توثيق API الكامل

الوصول إلى توثيق API الكامل على:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- OpenAPI JSON: http://localhost:8000/openapi.json

## الهندسة المعمارية

### هيكل المشروع```
bandjacks/
├── bandjacks/
│   ├── analysis/         # Graph analysis & interdiction
│   │   ├── graph_analyzer.py
│   │   └── interdiction.py
│   ├── analytics/        # Co-occurrence & clustering
│   │   ├── clustering.py
│   │   ├── cooccurrence.py
│   │   └── detection_bundles.py
│   ├── cli/              # Command-line interface
│   │   ├── main.py       # CLI entry point
│   │   ├── batch_extract.py
│   │   ├── formatters.py
│   │   └── workflows.py
│   ├── config/           # Configuration files
│   │   └── entity_ignorelist.yaml
│   ├── core/             # Core utilities
│   │   ├── cache.py      # Redis caching
│   │   ├── connection_pool.py
│   │   └── query_optimizer.py
│   ├── llm/              # Extraction pipeline
│   │   ├── extraction_pipeline.py
│   │   ├── agents_v2.py  # Core extraction agents
│   │   ├── chunked_extractor.py
│   │   ├── optimized_chunked_extractor.py
│   │   ├── entity_extractor.py
│   │   ├── flow_builder.py
│   │   ├── cache.py      # LLM response caching
│   │   └── experimental/ # Experimental features
│   ├── loaders/          # Data loading & indexing
│   │   ├── attack_catalog.py
│   │   ├── attack_upsert.py
│   │   ├── opensearch_index.py
│   │   ├── hybrid_search.py
│   │   └── sigma_loader.py
│   ├── monitoring/       # Metrics & monitoring
│   │   ├── compliance_metrics.py
│   │   ├── defense_metrics.py
│   │   ├── drift_detector.py
│   │   └── ml_metrics.py
│   ├── services/         # API & services
│   │   ├── api/          # FastAPI application
│   │   │   ├── main.py
│   │   │   ├── routes/   # API route handlers
│   │   │   └── middleware/
│   │   ├── technique_cache.py
│   │   └── actor_cache.py
│   ├── simulation/       # Attack simulation
│   │   ├── attack_simulator.py
│   │   ├── mdp_solver.py
│   │   └── ptg_rollout.py
│   └── store/            # Data stores
│       ├── report_store.py
│       ├── candidate_store.py
│       └── review_store.py
├── ui/                   # Next.js frontend
│   ├── app/              # App Router pages
│   │   ├── reports/      # Report management
│   │   ├── analytics/    # Analytics dashboards
│   │   └── health/       # Health monitoring
│   ├── components/       # React components
│   └── hooks/            # Custom React hooks
├── tests/                # Test suite
├── samples/              # Sample reports
├── scripts/              # Utility scripts
└── docs/                 # Documentation

المكونات

  1. خط أنابيب الاستخراج (bandjacks/llm/)

    • extraction_pipeline.py - منسق الاستخراج الرئيسي
    • chunked_extractor.py - معالجة مجزأة قياسية
    • optimized_chunked_extractor.py - معالجة محسنة متقدمة
    • agents_v2.py - وكلاء الاستخراج الأساسيون (SpanFinder, Mapper, Consolidator)
    • entity_extractor.py - وكيل التعرف على الكيانات
    • flow_builder.py - توليد تدفق الهجوم
    • memory.py - ذاكرة عمل مشتركة
    • cache.py - تخزين استجابات LLM مؤقتًا
  2. طبقة البيانات (bandjacks/loaders/)

    • رسم بياني للخصائص Neo4j للعلاقات
    • OpenSearch للتضمينات المتجهة
    • نموذج بيانات STIX 2.1
  3. طبقة API (bandjacks/services/api/)

الأداء

  • سرعة الاستخراج: 12-40 ثانية لكل تقرير (أسرع بنسبة 94% من الإصدار v1)
  • المستندات الصغيرة: 4-8 ثوانٍ مع استخراج أحادي المسار
  • معدل الوصول إلى ذاكرة التخزين المؤقت: تسريع بنسبة 87.5% في عمليات الاستخراج المتكررة
  • البحث: <300 مللي ثانية للبحث عن التشابه المتجه
  • استعلامات الرسم البياني: <100 مللي ثانية لمعظم التنقلات

التكوين

اختيار النموذج

يدعم النظام نماذج اللغة السحابية وأي واجهة برمجة تطبيقات محلية متوافقة مع OpenAI:```bash

In your .env file

--- Option A: Local inference (highest priority when set) ---

Works with vLLM, llama.cpp (server), Ollama, LocalAI, LM Studio,

text-generation-webui, or any server that exposes an /v1/chat/completions endpoint.

LOCAL_LLM_API_BASE=http://192.168.1.100:8080/v1 LOCAL_LLM_MODEL=mistral-nemo LOCAL_LLM_API_KEY=no-key # optional — most local servers don't require a key

--- Option B: Cloud providers ---

PRIMARY_LLM=gemini # "gemini" (default) or "openai" GOOGLE_API_KEY=your-key # Gemini OPENAI_API_KEY=your-key # OpenAI (used as fallback when Gemini is primary)

root@kitploit:~
**أولوية المزود:** واجهة API المحلية > Gemini > OpenAI > وكيل LiteLLM.
عند تكوين خادم محلي، تتم إضافة مزودي السحابة تلقائيًا كخيارات احتياطية.

#### أمثلة شائعة للخوادم المحلية

| الخادم | `LOCAL_LLM_API_BASE` | `LOCAL_LLM_MODEL` |
|--------|---------------------|-------------------|
| vLLM | `http://host:8000/v1` | `mistralai/Mistral-Nemo-Instruct-2407` |
| llama.cpp | `http://host:8080/v1` | `mistral-nemo` |
| Ollama | `http://host:11434/v1` | `mistral-nemo` |
| LM Studio | `http://host:1234/v1` | `mistral-nemo` |
| LocalAI | `http://host:8080/v1` | `mistral-nemo` |

### تكوين الاستخراج

يستخدم النظام خط أنابيب غير متزامن واحد عالي الأداء مع خيارات قابلة للتكوين:```python
{
    "cache_llm_responses": True,         # Enable LLM caching (default: True)
    "single_pass_threshold": 500,        # Max words for single-pass (default: 500)
    "early_termination_confidence": 90,  # Skip verification above this (default: 90)
    "disable_discovery": False,          # Disable LLM discovery agent
    "max_spans": 20,                     # Maximum spans to process
    "span_score_threshold": 0.7,         # Minimum span quality
    "top_k": 5,                          # Candidates per span

    # Cost optimization options
    "max_spans_per_technique": 2,        # Pre-filter: max spans per candidate technique (0=disable, default=2)
    "enable_span_dedup": False,          # Text-based span dedup before mapping (default=False)
}

تحسين التكلفة

يتتبع خط أنابيب الاستخراج تكاليف LLM عبر litellm.completion_cost() مع مقاييس لكل تقرير ونقطة نهاية إجمالية يومية.

ضوابط التكلفة:

المراقبة:```bash

Daily cost aggregate by model

curl http://localhost:8000/v1/costs/stats

Per-report cost in extraction metrics

curl http://localhost:8000/v1/reports/{id} # -> extraction.metrics.cost_usd

root@kitploit:~
### عتبات الثقة

التحكم في جودة الاستخراج:```python
{
    "confidence_threshold": 50.0,  # Minimum confidence (0-100)
    "auto_ingest": True            # Auto-add high-confidence results
}

مراقبة الصحة

توفر API نقاط نهاية شاملة لمراقبة الصحة للإشراف التشغيلي ونشر Kubernetes:

نقاط نهاية الصحة```bash

Basic health check (always returns 200 if API is running)

curl http://localhost:8000/health

Kubernetes liveness probe (process alive check)

curl http://localhost:8000/health/live

Kubernetes readiness probe (full dependency checks)

curl http://localhost:8000/health/ready

Individual component health

curl http://localhost:8000/health/components/neo4j curl http://localhost:8000/health/components/opensearch curl http://localhost:8000/health/components/redis curl http://localhost:8000/health/components/caches curl http://localhost:8000/health/components/system

root@kitploit:~
### مثال استجابة الصحة```json
{
  "status": "healthy",
  "timestamp": "2025-01-28T17:43:30.184036Z",
  "version": "1.0.0",
  "components": {
    "neo4j": {
      "status": "healthy",
      "latency_ms": 5
    },
    "opensearch": {
      "status": "degraded",
      "cluster_status": "yellow",
      "indices": {
        "attack_nodes": false,
        "bandjacks_reports": true
      }
    },
    "redis": {
      "status": "healthy",
      "latency_ms": 2,
      "memory_mb": 1.69
    },
    "caches": {
      "status": "healthy",
      "technique_cache": {
        "count": 993,
        "loaded": true
      },
      "actor_cache": {
        "count": 145,
        "loaded": true
      }
    },
    "system": {
      "status": "healthy",
      "memory": {
        "available_gb": 8.84,
        "percent_used": 72.4
      },
      "disk": {
        "available_gb": 353.11,
        "percent_used": 2.9
      },
      "cpu": {
        "percent_used": 7.7
      }
    }
  }
}

مستويات الحالة

  • healthy: المكون يعمل بكامل طاقته
  • degraded: وظيفي جزئيًا (على سبيل المثال، فقدان بعض المؤشرات لكنه يعمل)
  • unhealthy: فشل المكون أو لا يمكن الوصول إليه

التكامل مع Kubernetes

لنشر Kubernetes، قم بتكوين probes على النحو التالي:```yaml livenessProbe: httpGet: path: /health/live port: 8000 initialDelaySeconds: 30 periodSeconds: 10

readinessProbe: httpGet: path: /health/ready port: 8000 initialDelaySeconds: 45 periodSeconds: 5

root@kitploit:~
## تحسين الأداء

### التخزين المؤقت

يتضمن النظام تخزينًا مؤقتًا تلقائيًا لاستجابات LLM لتحسين الأداء:```python
# Check cache statistics
response = httpx.get("http://localhost:8000/v1/cache/stats")
stats = response.json()
print(f"Cache hit rate: {stats['hit_rate']}")

# Clear cache if needed
httpx.post("http://localhost:8000/v1/cache/clear")

ملفات تعريف الأداء

اختر ملف تعريف بناءً على احتياجاتك:```python

Fast extraction (4-15 seconds)

fast_config = { "single_pass_threshold": 1000, "max_spans": 5, "skip_verification": True, "top_k": 3 }

Balanced (default, 12-40 seconds)

balanced_config = { "single_pass_threshold": 500, "max_spans": 10, "early_termination_confidence": 90, "top_k": 5 }

High quality (40-120 seconds)

quality_config = { "single_pass_threshold": 200, "max_spans": 20, "disable_discovery": False, "min_quotes": 3, "top_k": 10 }

root@kitploit:~
## الأمان

### التحقق من الإدخال

- **منع حقن Cypher**: جميع نقاط نهاية استعلام الرسم البياني تتحقق من معاملات `relationship_types` المقدمة من المستخدم مقابل قائمة مسموح بها من أنواع العلاقات المعروفة (USES, MITIGATES, HAS_TACTIC, إلخ) بالإضافة إلى نمط regex صارم (`^[A-Z][A-Z0-9_]*$`). يؤدي الإدخال غير الصالح إلى إرجاع 400 قبل بناء الاستعلام.
- **التحقق من مخطط JSON**: يتم التحقق من استجابات LLM مقابل مخططات JSON لمنع دخول البيانات المشوهة إلى خط الأنابيب.
- **التحقق من ADM**: يجب أن يمر جميع محتوى STIX بالتحقق من نموذج بيانات ATT&CK قبل الإدخال.

### المصادقة والتفويض

- **مصادقة JWT**: وسيط اختياري لمصادقة API (`JWTAuthMiddleware`)
- **تحديد المعدل**: تحديد المعدل لكل نقطة نهاية مع حدود قابلة للتكوين
- **CORS**: مشاركة الموارد عبر الأصول القابلة للتكوين

## الميزات المتقدمة

### تتبع المصدر

يتضمن كل كيان مستخرج مصدرًا كاملاً:```python
# Get provenance for an object
response = httpx.get(
    "http://localhost:8000/v1/provenance/attack-pattern--abc123"
)

التعلم النشط

يتضمن النظام قائمة انتظار للمراجعة لتحسين الاستخراج:```python

Get next item for review

response = httpx.get("http://localhost:8000/v1/review_queue/next")

Submit feedback

response = httpx.post( "http://localhost:8000/v1/feedback/extraction", json={ "extraction_id": "ext-123", "correct": True, "corrections": [] } )

root@kitploit:~
### تحليلات التغطية

تحليل تغطية استخبارات التهديدات الخاصة بك:```python
# Get coverage analysis
response = httpx.get("http://localhost:8000/v1/analytics/coverage")
coverage = response.json()

print(f"Summary: {coverage['summary']}")
for tactic in coverage['tactics']:
    print(f"  {tactic['tactic']}: {tactic['coverage_percentage']}%")

ملاحظة: تغطية المنصة (_analyze_platforms_coverage) تُرجع حاليًا بيانات مؤقتة. تستخدم تغطية التكتيك والمجموعة استعلامات Neo4j حقيقية.

محاكاة الهجوم (تجريبي)

توفر وحدة المحاكاة توقع مسار الهجوم القائم على MDP:```python

Note: This feature is experimental and may require additional setup

from bandjacks.simulation.attack_simulator import AttackSimulator from bandjacks.simulation.mdp_solver import MDPSolver

See bandjacks/simulation/ for implementation details

root@kitploit:~
## حالة الميزات

يوفر هذا القسم الشفافية حول حالة تنفيذ الميزات المختلفة:

### تعمل بكامل طاقتها ✅
- **خط أنابيب استخراج التقارير** - يعمل استخراج التقنيات القائم على LLM من البداية إلى النهاية
- **تحميل MITRE ATT&CK** - تحميل بيانات ATT&CK للمؤسسات/الأجهزة المحمولة/ICS إلى Neo4j
- **البحث المتجهي** - بحث دلالي قائم على OpenSearch للتقنيات
- **نظام المراجعة** - سير عمل مراجعة بوجود الإنسان في الحلقة عبر API وواجهة المستخدم
- **مراقبة الصحة** - فحوصات صحة المكونات ومقاييس Kubernetes
- **أوامر CLI للاستعلام/الإدارة** - البحث، التنقل في الرسم البياني، إدارة ذاكرة التخزين المؤقت
- **توليد تدفقات الهجوم** - بناء التدفق القائم على التزامن لمجموعات الاختراق
- **محاكاة الهجوم** - محاكاة المسار القائمة على MDP عبر `/simulation/*` و `/simulate/*`
- **تقارير التغطية** - تقارير JSON للرؤية التنفيذية والفنية والتكتيكية والتشغيلية

### تعمل مع تبعيات البيانات ⚠️
- **تحليلات التزامن** - يتطلب عقد `AttackEpisode` من معالجة التقارير
- **تحليلات الجهات الفاعلة** - يتطلب حلقات منسوبة إلى مجموعات الاختراق
- **حزم التقنيات** - يتطلب بيانات حلقات كافية لاستخراج الأنماط
- **أوامر CLI للتحليلات** - تعمل ولكنها ترجع فارغة إذا لم توجد حلقات

### عبر API فقط (بدون واجهة مستخدم أو CLI) 🔌
هذه ميزات منفذة بالكامل يمكن الوصول إليها فقط عبر REST API:
- **محاكاة مسار الهجوم** - مسارات `/simulation/*` للتنبؤ بالمسار وتحليل "ماذا لو"
- **حلال سياسة MDP** - `/simulate/mdp` لحساب سياسة الدفاع المثلى
- **كشف الانحراف** - مسارات `/drift/*` لمراقبة انحراف جودة البيانات
- **مقاييس التعلم الآلي** - مسارات `/ml-metrics/*` لتتبع أداء النموذج بمرور الوقت
- **إدارة المتجهات** - مسارات `/vectors/*` لإدارة تضمينات المتجهات
- **قائمة التجاهل للكيانات** - مسارات `/ignorelist/*` لتصفية الكيانات الإيجابية الخاطئة
- **الأنماط المرشحة** - مسارات `/review/candidates/*` لمرشحي التقنيات الجديدة
- **الإشعارات** - مسارات `/notifications/*` لتكوين التنبيهات وسجلها
- **السلالة** - مسارات `/provenance/*` لتتبع سلالة الاستخراج
- **الامتثال** - مسارات `/compliance/*` لتقارير مقاييس الامتثال

### تجريبية (في `llm/experimental/`) 🧪
- **PTG (الرسم البياني للتهديد الاحتمالي)** - المنطق الأساسي منفذ، اختبار محدود
- **تكامل Judge** - التحقق من التسلسل القائم على LLM
- **محاكي تدفق الهجوم** - محرك محاكاة قائم على التدفق
- **مستخرج التسلسل** - استخراج التسلسلات من التدفقات

### تمت إزالتها/تنظيفها 🗑️
تمت إزالة الميزات النمطية التالية من API:
- ~~تحليل تغطية المنصة~~ - كان يعيد بيانات نمطية ثابتة
- ~~تحليل الاتجاهات~~ - كان يعيد بيانات اصطناعية عشوائية
- ~~تصدير تقارير CSV/PDF~~ - كان يعيد 501؛ الآن JSON فقط
- ~~استدلال تسلسل Gemini~~ - كان نمط 501؛ استخدم `/sequence/propose` بدلاً من ذلك

### مصفوفة الاتصال

| منطقة الميزة | واجهة المستخدم الأمامية | CLI | REST API |
|--------------|-------------|-----|----------|
| إدارة التقارير | ✅ | ✅ | ✅ |
| سير عمل المراجعة | ✅ | ✅ | ✅ |
| البحث (TTX) | ✅ | ✅ | ✅ |
| تحليلات التزامن | ✅ | ✅ | ✅ |
| تحليلات التغطية | ✅ | - | ✅ |
| مراقبة الصحة | ✅ | - | ✅ |
| الكشف/Sigma | ✅ | - | ✅ |
| تدفقات الهجوم | ✅ | - | ✅ |
| تراكب الدفاع | ✅ | - | ✅ |
| التسلسلات/PTG | ✅ | - | ✅ |
| الجهات الفاعلة | ✅ | - | ✅ |
| محاكاة الهجوم | - | - | ✅ |
| كشف الانحراف | - | - | ✅ |
| مقاييس التعلم الآلي | - | - | ✅ |
| إدارة المتجهات | - | - | ✅ |
| قائمة التجاهل للكيانات | - | - | ✅ |
| الأنماط المرشحة | - | - | ✅ |
| الإشعارات | - | - | ✅ |
| السلالة | - | - | ✅ |
| الامتثال | - | - | ✅ |

### صفحات الواجهة الأمامية
| الصفحة | الحالة | ملاحظات |
|------|--------|-------|
| `/reports` | ✅ تعمل | قائمة، إنشاء، عرض التقارير |
| `/reports/[id]/review` | ✅ تعمل | سير عمل المراجعة بالكامل |
| `/analytics/cooccurrence` | ⚠️ تعتمد على البيانات | يعرض مؤشرات الأداء الرئيسية إذا وجدت حلقات |
| `/analytics/cooccurrence/pairs` | ⚠️ تعتمد على البيانات | يستدعي API حقيقي |
| `/analytics/cooccurrence/bundles` | ⚠️ تعتمد على البيانات | يستدعي API حقيقي |
| `/analytics/cooccurrence/actors` | ⚠️ تعتمد على البيانات | يستدعي API حقيقي |
| `/health` | ✅ تعمل | حالة الصحة في الوقت الفعلي |

## استكشاف الأخطاء وإصلاحها

### المشكلات الشائعة

1. **فشل اتصال OpenSearch**
   - تأكد من تشغيل OpenSearch: `curl http://localhost:9200`
   - تحقق من وجود الفهرس: `curl http://localhost:9200/bandjacks_attack_nodes-v1`

2. **فشل اتصال Neo4j**
   - تحقق من تشغيل Neo4j: `neo4j status`
   - تأكد من تعيين `NEO4J_PASSWORD` في ملف `.env`
   - تأكد من تطابق كلمة المرور مع مثيل Neo4j الخاص بك
   - إذا رأيت "NEO4J_PASSWORD environment variable is required"، فأنت بحاجة إلى تعيينه في ملف `.env`

3. **استدعاء استخراج منخفض**
   - تأكد من استخدام طريقة `agentic_v2`
   - تحقق من صحة مفتاح LLM API
   - تحقق من اسم النموذج (gemini-flash-latest)

4. **أخطاء المهلة**
   - زيادة إعدادات المهلة للمستندات الكبيرة
   - فكر في تقسيم التقارير الكبيرة جدًا

5. **عدم اتصال الواجهة الأمامية بـ API**
   - تأكد من تشغيل API على المنفذ 8000
   - تحقق من إعدادات CORS في تكوين API

### وضع التصحيح

تفعيل التسجيل المفصل:```python
import logging
logging.basicConfig(level=logging.DEBUG)

# Run extraction with debug output
result = run_agentic_v2(text, config)

التطوير

تشغيل الاختبارات```bash

Unit tests

uv run pytest tests/unit

Integration tests

uv run pytest tests/integration

Specific test

uv run pytest tests/test_agentic_v2.py::test_extraction

With coverage

uv run pytest --cov=bandjacks

Frontend tests

cd ui && npm test cd ui && npm run test:coverage

root@kitploit:~
### المساهمة

1. قم بعمل fork للمستودع
2. أنشئ فرع ميزة
3. قم بإجراء تغييراتك
4. قم بتشغيل الاختبارات: `uv run pytest`
5. قم بتشغيل التحليل النحوي: `uv run ruff check`
6. قدم طلب سحب

### جودة الكود```bash
# Format code
uv run ruff format

# Check linting
uv run ruff check

# Type checking
uv run mypy bandjacks

الترخيص

[Your License Here]

الدعم

  • بداية سريعة: docs/QUICKSTART.md
  • الإعداد الكامل: docs/SETUP.md
  • وثائق API: http://localhost:8000/docs (عند التشغيل)
  • مشكلات GitHub: [الإبلاغ عن الأخطاء أو طلب الميزات]

شكر وتقدير

  • إطار عمل MITRE ATT&CK®
  • أنطولوجيا D3FEND
  • مواصفات STIX 2.1
تنزيل الأداة
  • نقاط نهاية FastAPI REST
  • دعم WebSocket للتحديثات الفورية
  • توثيق OpenAPI شامل
  • الواجهة الأمامية (ui/)

    • Next.js 15 مع App Router
    • React Query لجلب البيانات
    • Radix UI + Tailwind للمكونات
    • ReactFlow لتصور الرسم البياني
  • الخيارالافتراضيالتأثيرتأثير الجودة
    MAX_MAPPER_BATCH_SIZE (env var)10عدد الامتدادات لكل استدعاء ماب LLM (تم تخفيضه من 25 في 2026-05؛ استجابات السحابة تصل إلى ~800 رمز، ~12% من الدُفعات الأكبر كانت تُرجع JSON مبتورًا)لا شيء
    max_spans_per_technique (config)2مرشح مسبق: أفضل N امتداد لكل تقنية مرشحة~19% تقنيات أقل، ثقة أعلى
    enable_span_dedup (config)falseإزالة نص الامتداد المكرر قبل التعيين~15% تقنيات أقل