تخطَّ إلى المحتوى

BlacksmithAI

  • Linux أو macOS أو Windows مع WSL2
  • Docker 20.10+ و Docker Compose
  • Python 3.12+
  • Node.js 18+ (لواجهة الويب)
  • 4GB+ من الذاكرة العشوائية (8GB موصى به)
# macOS و Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# التحقق من التثبيت
uv --version
# Ubuntu/Debian
sudo apt update && sudo apt install -y docker.io docker-compose

# macOS
brew install --cask docker

# التحقق
docker --version && docker compose version

تثبيت Node.js و pnpm (واجهة الويب فقط)

Section titled “تثبيت Node.js و pnpm (واجهة الويب فقط)”
# Ubuntu/Debian - Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

# macOS - Node.js
brew install node@18

# تثبيت pnpm
npm install -g pnpm
# أو
corepack enable && corepack prepare pnpm@latest --activate
# استنساخ المستودع
git clone https://github.com/yohannesgk/blacksmith.git
cd blacksmith

# تثبيت مكتبات Python
cd blacksmithAI/blacksmithAI
uv sync

# بناء صورة Docker mini-kali
docker compose up -d

# اختياري: تثبيت مكتبات واجهة الويب الأمامية
cd ../frontend && pnpm install
# نسخ قالب البيئة
cp blacksmithAI/.env.example blacksmithAI/.env

# تحرير ملف .env
nano blacksmithAI/.env
# إضافة إلى .env
OPENROUTER_API_KEY=your-openrouter-api-key-here

تكوين VLLM (نموذج لغة محلي)

Section titled “تكوين VLLM (نموذج لغة محلي)”
# تثبيت VLLM
cd blacksmithAI/blacksmithAI
uv add vllm huggingface_hub

# بدء خادم VLLM
vllm serve mistralai/Devstral-2-123B-Instruct-2512 \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 8192 \
  --gpu-memory-utilization 0.75

تحرير blacksmithAI/config.json:

{
  "defaults": {
    "provider": "openrouter"
  },
  "providers": {
    "openrouter": {
      "base_url": "https://openrouter.ai/api/v1/chat/completions",
      "default_model": "mistralai/devstral-2512:free",
      "default_embedding_model": "openai/text-embedding-3-small",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3,
        "max_tokens": null
      }
    },
    "vllm": {
      "base_url": "http://localhost:8000/v1/chat/completions",
      "default_model": "mistralai/devstral-2512",
      "default_embedding_model": "text-embedding-3-small",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3
      }
    }
  }
}
# إضافة إلى قسم موفري config.json
"openai": {
  "base_url": "https://api.openai.com/v1/chat/completions",
  "default_model": "gpt-4-turbo",
  "default_embedding_model": "text-embedding-3-small"
}

# إضافة إلى .env
OPENAI_API_KEY=your-openai-key

# تحديث الافتراضيات
"defaults": { "provider": "openai" }

وضع سطر الأوامر (واجهة المحطة)

Section titled “وضع سطر الأوامر (واجهة المحطة)”
# المحطة 1: بدء حاوية mini-kali
cd blacksmithAI/blacksmithAI
docker compose up -d

# المحطة 2: تشغيل واجهة سطر أوامر BlacksmithAI
cd blacksmithAI/blacksmithAI
uv run main.py

# أو استخدم اختصار Makefile
make start-cli

وضع واجهة الويب (3 محطات مطلوبة)

Section titled “وضع واجهة الويب (3 محطات مطلوبة)”
# المحطة 1: بدء حاوية Docker mini-kali
cd blacksmithAI/blacksmithAI
docker compose up -d

# المحطة 2: بدء الواجهة الأمامية (من دليل blacksmithAI/frontend)
pnpm build && pnpm start

# المحطة 3: بدء خادم تطوير LangGraph (من blacksmithAI/blacksmithAI)
uv run langgraph dev

# الوصول على http://localhost:3000
# بدء الحاوية
docker compose up -d

# عرض السجلات
docker logs mini-kali-slim

# إيقاف الحاوية
docker compose down

# إعادة تشغيل الحاوية
docker compose restart

# إزالة جميع الحاويات
docker compose down -v
  • الدور: التحكم بالأوامر المركزية
  • الوظيفة: تخطيط المهمة، تفويض المهام، توليد التقارير
  • الأدوات المتاحة: أدوات التخطيط، أدوات نظام الملفات

وكيل الاستطلاع (رسم خريطة سطح الهجوم)

Section titled “وكيل الاستطلاع (رسم خريطة سطح الهجوم)”
  • الغرض: جمع المعلومات السلبي والإيجابي
  • الأدوات: assetfinder، subfinder، whois، dig، nslookup، hping3، dnsrecon
  • الناتج: سجلات DNS، النطاقات الفرعية، طوبولوجيا الشبكة

وكيل المسح/التعداد (الفحص العميق)

Section titled “وكيل المسح/التعداد (الفحص العميق)”
  • الغرض: تعداد المستخدمين، اختبار API، اكتشاف الإصدار
  • الأدوات: nmap، masscan، enum4linux-ng، nikto، whatweb، fingerprintx، gobuster، wpscan
  • الناتج: المنافذ المفتوحة، الخدمات، التقنيات، نقاط النهاية

وكيل تحليل الثغرات (تقييم المخاطر)

Section titled “وكيل تحليل الثغرات (تقييم المخاطر)”
  • الغرض: خدمات الخرائط ل CVEs، أولويات المخاطر
  • الأدوات: nuclei، sslscan
  • الناتج: قائمة الثغرات مع درجات الشدة والقابلية للاستغلال

وكيل الاستغلال (تنفيذ PoC)

Section titled “وكيل الاستغلال (تنفيذ PoC)”
  • الغرض: التحقق من الثغرات من خلال الاستغلال المسيطر عليه
  • الأدوات: sqlmap، hydra، medusa، ncrack، البرامج النصية المخصصة (Python/Go/Perl/Ruby)
  • الناتج: دليل الاختراق مع الأدلة

وكيل ما بعد الاستغلال (تقييم التأثير)

Section titled “وكيل ما بعد الاستغلال (تقييم التأثير)”
  • الغرض: تقييم نطاق التأثير وفرص التحول
  • الأدوات: netcat، socat، نفق SSH، impacket
  • الناتج: مسارات الحركة الجانبية، جرد بيانات الاعتماد، التأثير على الأعمال
# سلسلة أسلوب عمل نموذجية
1. مواصفات الهدف (المجال/IP)
2. المنسق يبدأ مرحلة الاستطلاع
3. وكيل Recon يكتشف: النطاقات الفرعية، سجلات DNS، خوادم البريد
4. النتائج المُغذاة بوكيل Scan/Enum
# سلسلة أسلوب العمل للتقييم الكامل
المنسق (التخطيط)

وكيل Recon (سطح الهجوم) → الإخراج: الخدمات والتقنيات

وكيل Scan/Enum (الفحص العميق) → الإخراج: المنافذ والإصدارات

وكيل تحليل Vuln (خريطة المخاطر) → الإخراج: قائمة CVE مع النقاط

وكيل Exploit (التحقق من PoC) → الإخراج: الاستغلالات العاملة

وكيل ما بعد الاستغلال (التأثير) → الإخراج: مسارات الحركة الجانبية

المنسق (التقرير النهائي مع المعالجة)
# خدمات الهدف المحددة مباشرة لتحليل vuln
1. توفير معلومات الخدمة (الإصدار، المنفذ)
2. وكيل تحليل Vuln يخطط ل CVEs
3. وكيل Exploit يختبر الثغرات ذات الأولوية العالية
أداةأمرالغرض
assetfinderassetfinder target.comاكتشاف النطاق الفرعي
subfindersubfinder -d target.comتعداد النطاق الفرعي
whoiswhois target.comالبحث عن معلومات المجال
digdig target.comاستفسارات سجل DNS
dnsrecondnsrecon -d target.comتعداد DNS
hping3hping3 -p 80 target.comمسح الشبكة
أداةأمرالغرض
nmapnmap -sV target.comمسح المنفذ واكتشاف الإصدار
masscanmasscan 0.0.0.0/0 -p80,443مسح المنفذ عالي السرعة
niktonikto -h target.comمسح ثغرات خادم الويب
gobustergobuster dir -u http://target.com -w wordlist.txtفرض الدليل/DNS
wpscanwpscan --url target.comمسح ثغرات WordPress
whatwebwhatweb target.comتحديد تقنية الويب
أداةأمرالغرض
nucleinuclei -target target.comمسح الثغرات السريع
sslscansslscan target.com:443تحليل تكوين SSL/TLS
أداةالغرض
sqlmapاختبار حقن SQL المؤتمتة
hydraفرض كلمة المرور
medusaتدقيق تسجيل الدخول بالشبكة المتوازي
ncrackكسر المصادقة بالشبكة
البرامج النصية المخصصةتطوير الاستغلال Python/Go/Perl/Ruby
أداةالغرض
netcatتصحيح الشبكة ونقل البيانات
socatممر متعدد الأغراض
ssh -Dنفق وسيط SOCKS للتحول
impacketأدوات بروتوكول Windows (psexec، secretsdump)
# المنسق ينشئ تقارير منظمة تحتوي على:
- ملخص تنفيذي
- النتائج مع تصنيفات الشدة
- تفاصيل الأدلة وإثبات المفهوم
- الأنظمة والخدمات المتأثرة
- إرشادات العلاج
- تقييم تأثير العمل
{
  "mission_name": "اختبار الاختراق - مثال Corp",
  "target": "example.com",
  "findings": [
    {
      "vulnerability": "حقن SQL في نموذج تسجيل الدخول",
      "severity": "CRITICAL",
      "affected_service": "تطبيق الويب v2.1",
      "evidence": "SELECT version() أرجع إصدار قاعدة البيانات",
      "remediation": "استخدام العبارات المُعدة، التحقق من الإدخال"
    }
  ],
  "timeline": "2025-03-10T14:30:00Z",
  "tested_systems": ["web-server", "api-gateway", "database"]
}

إضافة موفري نماذج لغة مخصصين

Section titled “إضافة موفري نماذج لغة مخصصين”
{
  "providers": {
    "custom-provider": {
      "base_url": "https://your-api-endpoint.com/v1/chat/completions",
      "default_model": "your-model-name",
      "default_embedding_model": "embedding-model",
      "default_model_config": {
        "context_size": 200000,
        "max_retries": 3,
        "max_tokens": null
      }
    }
  }
}
# نموذج صغير (7B) - أسرع، ذاكرة أقل
vllm serve mistralai/Mistral-7B-Instruct-v0.2 \
  --host 0.0.0.0 --port 8000 --gpu-memory-utilization 0.75

# نموذج كبير (123B) - أكثر قدرة
vllm serve mistralai/Devstral-2-123B-Instruct-2512 \
  --host 0.0.0.0 --port 8000 --max-model-len 8192

# نموذج مخصص من HuggingFace
uv run hf auth login  # تسجيل الدخول إلى HF أولاً
vllm serve meta-llama/Llama-2-7b-chat-hf \
  --host 0.0.0.0 --port 8000
# الإعداد والتثبيت
make help              # إظهار جميع الأوامر
make setup            # الإعداد الأولي الكامل
make install          # اعتماديات Python فقط
make frontend-install # اعتماديات واجهة الويب الأمامية

# إدارة Docker
make docker-build     # بناء صورة mini-kali
make docker-up        # بدء الحاوية
make docker-down      # إيقاف الحاوية
make docker-logs      # عرض السجلات

# VLLM نموذج لغة محلي
make vllm-install     # تثبيت VLLM
make vllm-serve       # بدء VLLM (123B)
make vllm-serve-small # بدء VLLM (7B)

# تشغيل BlacksmithAI
make start-cli        # وضع واجهة سطر الأوامر
make start-ui         # واجهة الويب (إظهار الإعداد)
make start-all        # بدء سريع واجهة سطر الأوامر

# الأدوات المساعدة
make status           # حالة حاوية Docker
make check-deps       # التحقق من الاعتماديات
make check-config     # التحقق من التكوين
make clean            # تنظيف الحاويات
make stop             # إيقاف جميع الخدمات

التكامل مع الأدوات الموجودة

Section titled “التكامل مع الأدوات الموجودة”

استخدام BlacksmithAI مع أدوات OSINT

Section titled “استخدام BlacksmithAI مع أدوات OSINT”
# جمع البيانات بأدوات خارجية
assetfinder -subs-only target.com > subdomains.txt

# التغذية في BlacksmithAI
# سيجري الوكلاء عمليات مسح موجهة على النطاقات الفرعية المكتشفة
  • إخراج Nmap → المُغذاة بـ Vuln Analysis لرسم خريطة الخدمة
  • قوائم النطاق الفرعي → المسح الموجه بواسطة وكيل Scan/Enum
  • نقاط نهاية API → اختبار الثغرات المباشر
  • أنظمة المصادقة → محاولات الفرض والاستغلال

تكامل البرامج النصية المخصصة

Section titled “تكامل البرامج النصية المخصصة”
# كتابة البرامج النصية للاستغلال المخصصة في دلائل الوكيل
# يمكن للوكلاء تنفيذ برامج Python/Go/Perl/Ruby نصية
# مثال: حمولة حقن SQL مخصصة
cat > custom_exploit.py << 'EOF'
import sys
target = sys.argv[1]
# منطق الاستغلال المخصص
EOF

# استدعاء الوكلاء: python custom_exploit.py target.com
# تحديد النطاق كتابياً
- قائمة الهدف (المجالات/IP)
- فترة الاختبار
- الأنظمة المصرح بها وناقلات الهجوم
- متطلبات التقرير
- معالجة البيانات الحساسة

# التحقق من الترخيص القانوني
- إذن مكتوب من العميل/المالك
- قواعد الاشتباك (RoE)
- اتفاقيات NDA والسرية
# التوصيات
1. استخدام بيئات اختبار معزولة إن أمكن
2. البدء بالاستطلاع فقط
3. اختبار الثغرات بالتسلسل، وليس بالتوازي
4. تجنب البيانات المفيدة المدمرة بدون موافقة صريحة
5. مراقبة سلوك النظام أثناء الاستغلال
6. الحفاظ على السجلات التفصيلية لجميع الأنشطة
# يجب أن تتضمن النتائج الشاملة:
- وصف الثغرة الواضح
- درجة CVSS/الشدة
- دليل إثبات المفهوم
- الخدمات والإصدارات المتأثرة
- تقييم التأثير على الأعمال
- خطوات العلاج ذات الأولوية
- الجدول الزمني للاستغلال
# يؤثر اختيار النموذج على النتائج:
- نماذج أسرع: استطلاع سريع، مسح أساسي
- نماذج أكبر: تحليل معقد، اتخاذ قرارات أفضل
- VLLM محلي: التركيز على الخصوصية، بدون اعتماديات API
- OpenRouter: فعال من حيث التكلفة، خيارات متعددة الطرز

# توصية: استخدم Sonnet/GPT-4 للتقييم المعقد

الاعتبارات القانونية والأخلاقية

Section titled “الاعتبارات القانونية والأخلاقية”
  • احصل دائماً على إذن مكتوب قبل الاختبار
  • حدد النطاق بوضوح في قواعد الاشتباك
  • اختبر فقط الأنظمة التي تمتلكها أو لديك تفويض مكتوب صريح للاختبار
  • قد تؤدي انتهاكات القانون (CFAA، GDPR، وما إلى ذلك) إلى المسؤولية المدنية/الجنائية
# بعد الاختبار:
1. توثيق جميع النتائج مع الشدة
2. إخطار مالك النظام بالثغرات
3. السماح بوقت معقول للإصلاح (عادةً 90 يوماً)
4. الحفاظ على سرية تفاصيل الثغرة
5. الإبلاغ إلى البائعين إذا تأثرت المنتجات الخارجية
  • تقليل استخراج البيانات أثناء الاختبار
  • تخزين آمن لجميع التقارير والأدلة
  • استخدام التشفير للنتائج الحساسة
  • الامتثال لأنظمة حماية البيانات (GDPR، HIPAA، إلخ)
  • حذف البيانات بعد إكمال العقد
# الحاوية لن تبدأ
docker ps  # التحقق إذا كانت قيد التشغيل
docker logs mini-kali-slim  # عرض الأخطاء

# تضارب المنفذ
lsof -i :9756  # التحقق من استخدام المنفذ
docker run -i --rm -p 9757:9756 mini-kali-slim -d  # استخدام منفذ مختلف
# مشاكل OpenRouter
# - تحقق من مفتاح API: echo $OPENROUTER_API_KEY
# - تحقق من الحالة: https://status.openrouter.ai/

# مشاكل VLLM
curl http://localhost:8000/v1/models  # تحقق مما إذا كان VLLM قيد التشغيل
# - التحقق من الذاكرة: free -h
# - تأكد من توفر GPU: nvidia-smi
# استجابات بطيئة
# - التبديل إلى نموذج أسرع في config.json
# - التحقق من موارد النظام (top، htop)

# الوكيل عالق في حلقة
# - تقليل التعقيد المهمة
# - التحقق من إخراج الأداة للأخطاء
# - مراجعة سجلات الوكيل للحلقات اللانهائية

# الاعتماديات المفقودة
cd blacksmithAI/blacksmithAI
uv sync  # إعادة التثبيت
  • مفتوح المصدر: GPL-3.0-only (الاستخدام المجتمعي والتعديل وإعادة التوزيع)
  • الترخيص التجاري: متاح للدمج المغلق المصدر
  • جهة الاتصال: yohannesgk@kahanlabs.com