
منصة VAPT مستضافة محليًا ومعزولة عن الشبكة (air-gapped) تشغّل 8 وحدات مسح ضوئي متوازية، وتقيّم النتائج بشكل حتمي باستخدام معيار CVSS v3.1، وتنشئ تقارير PDF مع خيار توليد توصيات الإصلاح بالذكاء الاصطناعي عبر LLM محلي.
تم بناؤه بواسطة maverickaayush.
أداة VAPT مستضافة محليًا ومعزولة عن الشبكة: وجّهها إلى نطاق هدف مصرح به وستقوم بتشغيل 8 وحدات فحص بالتوازي، وتُقيّم كل نتيجة بشكل حتمي (CVSS v3.1)، وتضيف اختياريًا أوصافًا واضحة باللغة الإنجليزية مولّدة بالذكاء الاصطناعي عبر LLM محلي، وتنتج تقرير PDF بالإضافة إلى لوحة تحكم ويب مباشرة. لا استدعاءات خارجية لواجهات برمجية - كل شيء يعمل على شبكتك الخاصة.
طريقتان لتشغيل ONUS:
- الاستضافة الذاتية (هذا المستودع):
docker compose up← أدخل نطاقًا ← علّم على مربع التفويض ← افحص. لا حساب، لا تسجيل دخول، لا تحقق بريد إلكتروني - مصمم لمشغّل واحد بحكم التصميم، وكل ما يلي يغطي هذا المسار.- الاستضافة المدارة: نسخة مدارة متاحة على tryonus.tech. تضيف ميزات خاصة بالإنتاج فقط (حسابات / تسجيل دخول OAuth، طابور فحص، سجل لكل مستخدم) تكون مغلقة افتراضيًا في هذا المستودع، لتبقى الاستضافة الذاتية بسيطة. راجع الاستضافة الذاتية مقابل المدارة.
| الاستضافة الذاتية (هذا المستودع) | المدارة (tryonus.tech) | |
|---|---|---|
| الإعداد | docker compose up | لا شيء - فقط افتح الموقع |
| تسجيل الدخول | لا شيء - مشغّل واحد | حساب / Google / GitHub OAuth |
| مسار الفحص | نطاق ← مربع التفويض ← فحص | نفسه، بعد تسجيل الدخول |
| إضافات | - | طابور فحص، سجل لكل مستخدم، بريد مستضاف |
| التشغيل | شبكتك الخاصة، معزولة عن الشبكة | سحابة مدارة |
مسار الاستضافة الذاتية الافتراضي بسيط عن قصد: لا تسجيل، لا تحقق بريد
إلكتروني، لا OAuth. الميزات المقتصرة على الاستضافة المدارة (المصادقة، طابور
الفحص) تعيش خلف أعلام إعدادات مغلقة افتراضيًا (REQUIRE_AUTH=false,
HOSTED_QUEUE_ENABLED=false؛ راجع الإعدادات) وليست مضبوطة
في docker-compose.yml - لذا فإن تشغيل ONUS محليًا لا يضعك خلف شاشة تسجيل
دخول أبدًا. تفضل عدم الإعداد؟ استخدم الموقع المدار على
tryonus.tech.
| فحص جديد | حالة الفحص المباشرة |
|---|---|
![]() | ![]() |
| لوحة التقرير | اكتشاف الفحوصات |
|---|---|
![]() | ![]() |
domain → [recon | webscan | ssl_tls | headers | owasp | tech_fingerprint | nuclei | enumeration] (parallel, Celery)
→ any module failed/timed out? → pause for operator retry/continue/cancel
→ aggregator (dedup + OWASP-map + sort)
→ confidence verification (passive re-observation)
→ deterministic CVSS scoring
→ Ollama (Qwen 2.5 7B) AI analysis
→ WeasyPrint PDF + PostgreSQL
→ dashboard / PDF download
ست طبقات: واجهة أمامية Next.js ← FastAPI ← Celery/Redis ← 8 وحدات فحص
متوازية ← Ollama (Qwen 2.5 7B) ← WeasyPrint PDF + لوحة التحكم. التفاصيل الكاملة في
ARCHITECTURE.md (المخططات، التعاقدات، الحواجز الوقائية)
وdocs/QUICK_REF.md (مرجع سريع للتغييرات الشائعة).
mem_limit: 4g)،
وتعمل Postgres وRedis وAPI والعامل والواجهة الأمامية بجانبها.راجع المتطلبات الأساسية أعلاه:
8GB مساحة قرص و6GB ذاكرة RAM، وتوقع بناءً أوليًا يستغرق 10-15 دقيقة.
cp .env.example .env
cp backend/subfinder-config/provider-config.yaml.example backend/subfinder-config/provider-config.yaml
docker compose up -d
docker compose ps # wait for zap to report healthy (~2 min)
افتح **http://localhost:3000**، وأدخل نطاقًا، وعلّم على مربع التفويض، ثم ابدأ الفحص.
لا تسجيل دخول، ولا اشتراك، ولا تحقق بريد إلكتروني. ONUS المستضاف ذاتيًا مخصص لمشغّل واحد افتراضيًا - لا توجد خطوة حساب بين فتح لوحة التحكم والفحص.
يعمل هذا دون تثبيت Ollama. تقييم CVSS/الخطورة/الأولوية
حتمي دائمًا (analysis/cvss_scorer.py) - بدون تشغيل Ollama،
تحصل النتائج على قالب وصف قائم على القواعد بدلًا من نثر مولّد بالذكاء الاصطناعي.
راجع "اختياري: تفعيل الأوصاف المولّدة بالذكاء الاصطناعي" أدناه لتفعيل ذلك.
لا يتطلب تشغيل هذه الأداة أي مفاتيح API. كل أداة فحص تغلّفها
(nmap, ZAP, Nikto, testssl.sh, Nuclei, Amass, Naabu, httpx, WhatWeb,
WAFW00F, FFUF) وكذلك Ollama نفسه تعمل دون أي مفتاح إطلاقًا. خطوة نسخ
إعداد subfinder أعلاه هي الاستثناء الاختياري الوحيد - ترك القالب
فارغًا لا بأس به، إذ سيعمل subfinder بالمصادر المجانية/العامة فقط.
لتعميق تعداد النطاقات الفرعية، يمكنك إضافة ما يصل إلى مفتاحين من الطبقة المجانية إلى
ذلك الملف قبل البدء: رمز وصول شخصي من GitHub ومفتاح
API من ProjectDiscovery Chaos - راجع
التعليقات داخل provider-config.yaml.example.
يعمل Ollama أصليًا على المضيف (وليس داخل Docker) ليتمكن من استخدام
GPU الخاص بالمضيف مباشرة؛ تصل إليه الحاويات عبر host.docker.internal.