أنواع الملفات المدعومة
يحدد PRX-SD أنواع الملفات باستخدام كشف الرقم السحري (فحص البايتات الأولى من الملف) بدلاً من الاعتماد على امتدادات الملفات. هذا يضمن التعرف الدقيق حتى عند إعادة تسمية الملفات أو غياب الامتدادات.
مصفوفة نوع الملفات
يعرض الجدول التالي جميع أنواع الملفات المدعومة وطبقات الكشف التي تنطبق على كل منها:
| نوع الملف | الامتدادات | البايتات السحرية | الهاش | YARA | الاستدلاليات | التكرار في الأرشيف |
|---|---|---|---|---|---|---|
| PE (ويندوز) | .exe، .dll، .sys، .scr، .ocx | 4D 5A (MZ) | نعم | نعم | نعم | -- |
| ELF (لينكس) | .so، .o، (بدون امتداد) | 7F 45 4C 46 | نعم | نعم | نعم | -- |
| Mach-O (ماك أو إس) | .dylib، .bundle، (بدون امتداد) | FE ED FA CE/CF أو CE FA ED FE/CF | نعم | نعم | نعم | -- |
| Universal Binary | (بدون امتداد) | CA FE BA BE | نعم | نعم | نعم | -- |
25 50 44 46 (%PDF) | نعم | نعم | نعم | -- | ||
| Office (OLE) | .doc، .xls، .ppt | D0 CF 11 E0 | نعم | نعم | نعم | -- |
| Office (OOXML) | .docx، .xlsx، .pptx | 50 4B 03 04 (ZIP) + [Content_Types].xml | نعم | نعم | نعم | مُستخرَج |
| ZIP | .zip | 50 4B 03 04 | نعم | نعم | محدود | متكرر |
| 7-Zip | .7z | 37 7A BC AF 27 1C | نعم | نعم | محدود | متكرر |
| tar | .tar | 75 73 74 61 72 في الإزاحة 257 | نعم | نعم | محدود | متكرر |
| gzip | .gz، .tgz | 1F 8B | نعم | نعم | محدود | متكرر |
| bzip2 | .bz2 | 42 5A 68 (BZh) | نعم | نعم | محدود | متكرر |
| xz | .xz | FD 37 7A 58 5A 00 | نعم | نعم | محدود | متكرر |
| RAR | .rar | 52 61 72 21 (Rar!) | نعم | نعم | محدود | متكرر |
| CAB | .cab | 4D 53 43 46 (MSCF) | نعم | نعم | محدود | متكرر |
| ISO | .iso | 43 44 30 30 31 في الإزاحة 32769 | نعم | نعم | محدود | متكرر |
| سكريبت Shell | .sh، .bash | 23 21 (#!) | نعم | نعم | نمط | -- |
| Python | .py، .pyc | نص / 42 0D 0D 0A | نعم | نعم | نمط | -- |
| JavaScript | .js، .mjs | كشف نصي | نعم | نعم | نمط | -- |
| PowerShell | .ps1، .psm1 | كشف نصي | نعم | نعم | نمط | -- |
| VBScript | .vbs، .vbe | كشف نصي | نعم | نعم | نمط | -- |
| Batch | .bat، .cmd | كشف نصي | نعم | نعم | نمط | -- |
| Java | .class، .jar | CA FE BA BE / ZIP | نعم | نعم | محدود | .jar متكرر |
| WebAssembly | .wasm | 00 61 73 6D | نعم | نعم | محدود | -- |
| DEX (أندرويد) | .dex | 64 65 78 0A (dex\n) | نعم | نعم | محدود | -- |
| APK (أندرويد) | .apk | ZIP + AndroidManifest.xml | نعم | نعم | محدود | متكرر |
وسيلة إيضاح طبقة الكشف
| الطبقة | المعنى |
|---|---|
| الهاش | هاش SHA-256/MD5 يُفحص مقابل قاعدة بيانات التوقيعات |
| YARA | مجموعة قواعد YARA الكاملة مُطبَّقة على محتويات الملف |
| الاستدلاليات: نعم | تحليل استدلالي كامل خاص بنوع الملف (انظر الاستدلاليات) |
| الاستدلاليات: محدود | فحوصات إنتروبيا وهيكل أساسية فقط |
| الاستدلاليات: نمط | مطابقة أنماط نصية للأوامر المشبوهة والتشويش |
| التكرار في الأرشيف | تُستخرج المحتويات ويُفحص كل ملف بشكل فردي |
كشف الرقم السحري
يقرأ PRX-SD أول 8192 بايت من كل ملف لتحديد نوعه. هذا النهج أكثر موثوقية من الكشف المستند إلى الامتداد:
الملف: invoice.pdf.exe
الامتداد يقترح: PDF
البايتات السحرية: 4D 5A → ملف PE قابل للتنفيذ
PRX-SD يحدد: PE (صحيح)عدم تطابق الامتداد
عندما لا يتطابق امتداد الملف مع الرقم السحري المكتشف، يضيف PRX-SD ملاحظة إلى تقرير الفحص. عدم تطابق الامتداد أسلوب شائع للهندسة الاجتماعية (مثل photo.jpg.exe).
أولوية كشف الرقم السحري
عندما يمكن لتوقيعات متعددة أن تتطابق (مثل رقم سحري ZIP لكل من .zip و.docx)، يستخدم PRX-SD فحصاً أعمق:
- قراءة البايتات السحرية في الإزاحة 0
- إذا كانت غامضة (مثل ZIP)، فحص الهيكل الداخلي
- لتنسيقات مستندة إلى ZIP، تحقق من
[Content_Types].xml(OOXML) وMETA-INF/MANIFEST.MF(JAR) وAndroidManifest.xml(APK) - الرجوع إلى النوع العام للحاوية
الفحص المتكرر للأرشيف
عندما يواجه PRX-SD أرشيفاً (ZIP أو 7z أو tar أو gzip أو RAR أو غيره)، يستخرج المحتويات إلى دليل مؤقت ويفحص كل ملف بشكل فردي من خلال خط أنابيب الكشف الكامل.
عمق التكرار
| الإعداد | الافتراضي | الوصف |
|---|---|---|
max_archive_depth | 5 | الحد الأقصى لمستويات التداخل للأرشيفات داخل الأرشيفات |
max_archive_files | 10,000 | الحد الأقصى للملفات المستخرجة من أرشيف واحد |
max_archive_size_mb | 500 | الحد الأقصى للحجم الإجمالي المستخرج قبل التوقف |
هذه الحدود تمنع استنزاف الموارد من قنابل zip والأرشيفات المتداخلة بعمق.
# ~/.config/prx-sd/config.toml
[scanning]
max_archive_depth = 5
max_archive_files = 10000
max_archive_size_mb = 500قنابل Zip
يكشف PRX-SD قنابل zip (الأرشيفات ذات نسب الضغط المتطرفة) ويوقف الاستخراج قبل استهلاك مساحة قرص أو ذاكرة مفرطة. يُبلَّغ عن كشف قنبلة zip بـ SUSPICIOUS في نتائج الفحص.
الأرشيفات المحمية بكلمة مرور
لا يمكن لـ PRX-SD استخراج الأرشيفات المحمية بكلمة مرور. يُبلَّغ عنها بـ skipped في نتائج الفحص مع ملاحظة عن التشفير. لا يزال ملف الأرشيف نفسه يُفحص مقابل قواعد بيانات الهاش وYARA.
كشف النصوص البرمجية
لملفات النصوص البرمجية النصية (Shell وPython وJavaScript وPowerShell وVBScript وBatch)، يطبق PRX-SD استدلاليات مستندة إلى الأنماط:
| النمط | النقاط | الوصف |
|---|---|---|
| سلاسل مُشوَّشة | 10-20 | أوامر مُرمَّزة بـ base64، تسلسل سلاسل مفرط |
| تنزيل + تنفيذ | 15-25 | curl/wget مُمرَّر إلى bash/sh، Invoke-WebRequest + Invoke-Expression |
| reverse shell | 20-30 | أنماط reverse shell معروفة (/dev/tcp، nc -e، bash -i) |
| الوصول إلى بيانات الاعتماد | 10-15 | قراءة /etc/shadow، مخازن بيانات اعتماد المتصفح، keychain |
| آليات الاستمرارية | 10-15 | إضافة مهام cron وخدمات systemd ومفاتيح التسجيل |
الملفات غير المدعومة
الملفات التي لا تتطابق مع أي رقم سحري معروف لا تزال تُفحص مقابل قواعد بيانات الهاش وYARA. لا يُطبَّق التحليل الاكتشافي على أنواع الملفات غير المعروفة. أمثلة شائعة:
- بيانات ثنائية خام
- تنسيقات خاصة بدون أرقام سحرية عامة
- الملفات المشفرة (ما لم يُتعرَّف على تنسيق الحاوية)
تظهر هذه الملفات بـ type: unknown في تقارير الفحص وتحصل على فحص الهاش + YARA فقط.
الخطوات التالية
- التحليل الاكتشافي -- فحوصات استدلالية تفصيلية لكل نوع ملف
- قواعد YARA -- القواعد التي تستهدف هياكل تنسيق ملف محددة
- فحص الملفات والأدلة -- فحص الملفات عملياً
- نظرة عامة على محرك الكشف -- كيف تعمل جميع الطبقات معاً