OmniScan الماسح الشامل للثغرات
OmniScan هو ماسح ثغرات خفيف الوزن ومتعدد المحركات مبني على بايثون، مصمم لعمليات الفرق الحمراء والبحث الأمني. لا يدمج فقط محرك Nuclei الخفيف (Lite) ومحرك Afrog، بل يوفر أيضًا قدرات قوية لجمع الأصول وإدارة النتائج.
الميزات الأساسية
1. دعم متعدد المحركات
- محرك Nuclei Lite (مدمج):
- منطق Nuclei الأساسي المنفذ بلغة بايثون الأصلية، دون الحاجة إلى بيئة Go.
- تعزيز الأمان: استخدام
simpleeval بدلاً من eval، وتنفيذ تعبيرات DSL في بيئة معزولة لمنع تنفيذ القوالب الخبيثة.
- توليد متغيرات ذكي: التعرف التلقائي على متغيرات القالب غير المعرفة وملؤها (مثل
{{lang-file}} -> etc/passwd)، مع دعم Fuzzing ذكي.
- توافق عميق:
- دعم الغالبية العظمى من دوال Nuclei المساعدة (مثل
hmac, gzip, reverse, rand_base إلخ).
- دعم التحكم المنطقي
flow و req-condition.
- دعم الحفاظ على الجلسة
cookie-reuse والتحكم في إعادة التوجيه redirects.
- تصفية ذكية للإيجابيات الكاذبة:
- تقليل FP الذكي: لصفحات 200 OK، التعرف الذكي وتصفية الإيجابيات الكاذبة التي تطابق رمز الحالة فقط ولكنها لا تطابق الكلمات المفتاحية (Strict Mode Heuristic).
- التعرف على WAF: التعرف التلقائي على صفحات حجب WAF مثل 403/429 لتجنب الإيجابيات الكاذبة.
- كشف التفاعل خارج النطاق (OOB) (معزز):
- مزود بعميل
Interactsh مدمج، يعالج تلقائيًا الثغرات بدون استجابة (مثل Blind RCE, SSRF).
- معرف الارتباط (Correlation ID): إنشاء معرف ارتباط فريد لكل طلب، لمطابقة تفاعلات OOB بدقة، مما يلغي تمامًا الإيجابيات الكاذبة.
- انتظار تكيفي: ضبط وقت انتظار كشف OOB بذكاء، لموازنة السرعة والدقة.
- محرك Afrog: يدمج ماسح Afrog لتوفير قدرات إضافية لكشف الثغرات.
- محرك Nuclei الرسمي: دعم استدعاء ثنائي Nuclei المثبت على النظام للمسح.
- محرك XRay: دعم استدعاء XRay لمسح الويب.
2. نظام الإضافات (جديد)
- إضافات بايثون: يسمح للمستخدمين بكتابة نصوص بايثون كإضافات مسح لمعالجة المنطق المعقد.
- تقدم مرئي: مزود بشريط تقدم
tqdm يعرض تقدم المسح لكل إضافة على كل هدف في الوقت الفعلي.
- سهل الاستخدام:只需继承
BasePlugin 类并实现 check(url) 方法即可。
- تكامل سلس: تندمج نتائج مسح الإضافات تلقائيًا في التقرير العام، لتُدار مع نتائج Nuclei بشكل موحد.
- مسح موجه: دعم تحديد ملف إضافة واحد أو أكثر للكشف المتخصص.
- إضافات نموذجية:
git_config.py: كشف تسريب .git/config
spring_boot.py: كشف Spring Boot Actuator
ds_store.py: كشف تسريب .DS_Store
phpinfo.py: كشف صفحة phpinfo()
backup_files.py: كشف ملفات النسخ الاحتياطي الشائعة (.bak, .zip إلخ)
swagger_ui.py: كشف وثائق Swagger UI
3. جمع الأصول
- بحث FOFA: دمج API FOFA، ودعم البحث الجماعي عن الأصول حسب القواعد (مثل
country="CN").
- بحث Shodan: دمج API Shodan، ودعم البحث عن الأصول حسب الكلمات المفتاحية.
- هدف واحد: دعم تحديد URL واحد مباشر للمسح السريع.
- تحميل أهداف محلية: دعم تحميل قائمة URLs من ملف نصي بشكل جماعي.
- كشف البقاء ذكي: إجراء كشف بقاء HTTP تلقائيًا قبل المسح لتصفية الأهداف غير الصالحة.
- توحيد URLs: إكمال بروتوكول URL تلقائيًا (http/https) وإزالة التكرار.
4. بنية غير متزامنة عالية الأداء ودعم القوالب الضخمة
- يستخدم إطار
asyncio و aiohttp بلغة بايثون.
- تحسين الذاكرة (جديد):
- التحميل البطيء (Lazy Loading): تحميل ملفات القوالب حسب الحاجة، دون الحاجة لتحميل جميع الملفات مرة واحدة.
- المعالجة المجمعة (Batch Processing): دعم المسح الجماعي لقالب POC بعشرات الملايين (افتراضيًا 5000 لكل دفعة)، لحل مشكلة تجاوز الذاكرة (OOM) تمامًا أثناء المسح الواسع النطاق.
- إعادة تدوير الذاكرة التلقائية: تحرير الذاكرة تلقائيًا بعد الانتهاء من كل دفعة.
- مراقبة التقدم في الوقت الفعلي: عرض تقدم الدفعة المفصل والنسبة المئوية.
- نظام LogFilter: حظر تلقائي للأخطاء غير الحرجة مثل "Illegal cookie name" للحفاظ على إخراج نظيف.
5. إدارة النتائج
- حفظ النتائج في الوقت الفعلي:
- كلما تم اكتشاف ثغرة، يتم كتابتها فورًا في قاعدة بيانات SQLite وملف CSV، لمنع فقدان البيانات بسبب انقطاع البرنامج.
- بعد اكتمال مسح كل هدف، يتم تحديث ملخص الإحصائيات تلقائيًا.
- تقارير متعددة التنسيقات: إنشاء تقارير مسح بتنسيقات JSON و CSV و HTML في الوقت الفعلي.
- قاعدة بيانات SQLite: قاعدة بيانات SQLite مدمجة، تقوم بإزالة التكرار تلقائيًا لنتائج المسح (بناءً على معرف القالب + الهدف + URL).
- ملخص مفصل:
- أثناء المسح، إخراج ملخص الثغرات لكل هدف في الوقت الفعلي (يشمل عدد الثغرات المكتشفة في الدفعة الحالية والعدد التراكمي الكلي).
- شريط التقدم يعرض العدد الإجمالي التراكمي للثغرات المكتشفة عالميًا.
- بعد انتهاء المسح، توفير إحصائيات عامة للثغرات.
6. كشف التفاعل خارج النطاق (OOB)
- كشف حلقة مغلقة تلقائي بالكامل: معالجة تلقائية للثغرات بدون استجابة مثل Blind RCE و SSRF و Blind SQLi.
- عميل Interactsh مدمج:
- تنزيل وإدارة ملف
interactsh-client الثنائي تلقائيًا. (لقد قمت بتحميل interactsh-client.zip، يمكنك فك ضغطه مباشرة في هذا الدليل.)
- الحصول تلقائيًا على رابط Payload OOB (مثل
xxx.oast.pro).
- مراقبة سجلات تفاعل DNS/HTTP/SMTP في الوقت الفعلي.
- بدون إعدادات: يقوم الماسح تلقائيًا باستبدال
{{interactsh-url}} في القالب برابط Payload الذي تم الحصول عليه في الوقت الفعلي.
البدء السريع
المتطلبات البيئية
- بايثون 3.8+
- لينكس / ماك / ويندوز
التثبيت
-
استنساخ المستودع:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
تثبيت التبعيات:
pip3 install -r requirements.txt
-
تكوين الأدوات (اختياري):
- إذا كنت تستخدم
Afrog أو XRay، تأكد من وجود الملفات التنفيذية المقابلة في جذر المشروع أو في مسار النظام.
- قم بتكوين
config.yml (اختياري) لتعيين API Keys ومعاملات المسح.
أمثلة الاستخدام
1. مسح هدف واحد
مسح URL واحد:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. جمع الأصول والمسح (FOFA)
البحث عن الأصول من FOFA واستخدام محرك Nuclei Lite للمسح:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/
3. مسح جماعي محلي
قراءة الأهداف من urls.txt ومسحها:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/cve/
4. تحديد أداة المسح
- Nuclei Lite:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/
- Afrog:
python3 omniscan.py -l urls.txt --tool afrog
- XRay:
python3 omniscan.py -l urls.txt --tool xray
5. الوضع التفاعلي
تشغيل بدون معامل --tool، سيدخل إلى قائمة تفاعلية لاختيار الأداة:
python3 omniscan.py -l urls.txt
6. كشف ثغرات OOB
مسح ثغرات Blind RCE (سيتم تمكين Interactsh تلقائيًا):
python3 omniscan.py -l urls.txt --tool lite -T ./templates/blind-rce.yaml
إذا تم اكتشاف تفاعل OOB، ستظهر وحدة التحكم [OOB DETECTED] ويسجل الثغرة.
8. تمكين مسح إضافات بايثون
استخدام محرك Nuclei Lite مع تفعيل جميع الإضافات:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/ --plugins
9. تشغيل إضافات محددة (مسح متخصص)
تشغيل إضافات Git Config و PHPInfo فقط:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/ --plugin-file plugins/git_config.py,plugins/phpinfo.py
10. فقط تصنيف/التحقق من القوالب
بدون مسح فعلي، فقط التحقق من توافق القوالب:
python3 omniscan.py --classify-only --tool lite -T ./templates/
شرح المعاملات