- 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
# 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
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" }
# المحطة 1: بدء حاوية mini-kali
cd blacksmithAI/blacksmithAI
docker compose up -d
# المحطة 2: تشغيل واجهة سطر أوامر BlacksmithAI
cd blacksmithAI/blacksmithAI
uv run main.py
# أو استخدم اختصار Makefile
make start-cli
# المحطة 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
- الدور: التحكم بالأوامر المركزية
- الوظيفة: تخطيط المهمة، تفويض المهام، توليد التقارير
- الأدوات المتاحة: أدوات التخطيط، أدوات نظام الملفات
- الغرض: جمع المعلومات السلبي والإيجابي
- الأدوات: assetfinder، subfinder، whois، dig، nslookup، hping3، dnsrecon
- الناتج: سجلات DNS، النطاقات الفرعية، طوبولوجيا الشبكة
- الغرض: تعداد المستخدمين، اختبار API، اكتشاف الإصدار
- الأدوات: nmap، masscan، enum4linux-ng، nikto، whatweb، fingerprintx، gobuster، wpscan
- الناتج: المنافذ المفتوحة، الخدمات، التقنيات، نقاط النهاية
- الغرض: خدمات الخرائط ل CVEs، أولويات المخاطر
- الأدوات: nuclei، sslscan
- الناتج: قائمة الثغرات مع درجات الشدة والقابلية للاستغلال
- الغرض: التحقق من الثغرات من خلال الاستغلال المسيطر عليه
- الأدوات: sqlmap، hydra، medusa، ncrack، البرامج النصية المخصصة (Python/Go/Perl/Ruby)
- الناتج: دليل الاختراق مع الأدلة
- الغرض: تقييم نطاق التأثير وفرص التحول
- الأدوات: 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 يختبر الثغرات ذات الأولوية العالية
| أداة | أمر | الغرض |
|---|
| assetfinder | assetfinder target.com | اكتشاف النطاق الفرعي |
| subfinder | subfinder -d target.com | تعداد النطاق الفرعي |
| whois | whois target.com | البحث عن معلومات المجال |
| dig | dig target.com | استفسارات سجل DNS |
| dnsrecon | dnsrecon -d target.com | تعداد DNS |
| hping3 | hping3 -p 80 target.com | مسح الشبكة |
| أداة | أمر | الغرض |
|---|
| nmap | nmap -sV target.com | مسح المنفذ واكتشاف الإصدار |
| masscan | masscan 0.0.0.0/0 -p80,443 | مسح المنفذ عالي السرعة |
| nikto | nikto -h target.com | مسح ثغرات خادم الويب |
| gobuster | gobuster dir -u http://target.com -w wordlist.txt | فرض الدليل/DNS |
| wpscan | wpscan --url target.com | مسح ثغرات WordPress |
| whatweb | whatweb target.com | تحديد تقنية الويب |
| أداة | أمر | الغرض |
|---|
| nuclei | nuclei -target target.com | مسح الثغرات السريع |
| sslscan | sslscan 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"]
}
{
"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 # إيقاف جميع الخدمات
# جمع البيانات بأدوات خارجية
assetfinder -subs-only target.com > subdomains.txt
# التغذية في BlacksmithAI
# سيجري الوكلاء عمليات مسح موجهة على النطاقات الفرعية المكتشفة
- إخراج Nmap → المُغذاة بـ Vuln Analysis لرسم خريطة الخدمة
- قوائم النطاق الفرعي → المسح الموجه بواسطة وكيل Scan/Enum
- نقاط نهاية API → اختبار الثغرات المباشر
- أنظمة المصادقة → محاولات الفرض والاستغلال
# كتابة البرامج النصية للاستغلال المخصصة في دلائل الوكيل
# يمكن للوكلاء تنفيذ برامج 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 للتقييم المعقد
- احصل دائماً على إذن مكتوب قبل الاختبار
- حدد النطاق بوضوح في قواعد الاشتباك
- اختبر فقط الأنظمة التي تمتلكها أو لديك تفويض مكتوب صريح للاختبار
- قد تؤدي انتهاكات القانون (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