|
| 1 | +> هذا المستند هو ترجمة عربية للنسخة [English](../ARCHITECTURE.md). |
| 2 | +
|
| 3 | +# البنية المعمارية |
| 4 | + |
| 5 | +PRX-SD منظم كمساحة عمل Cargo تتضمن وحدات (crates) مستقلة، كل منها مسؤولة عن مجال محدد. |
| 6 | + |
| 7 | +## تخطيط مساحة العمل |
| 8 | + |
| 9 | +``` |
| 10 | +prx-sd/ |
| 11 | +├── crates/ |
| 12 | +│ ├── cli/ # ملف "sd" التنفيذي — واجهة سطر الأوامر |
| 13 | +│ ├── core/ # تنسيق محرك الفحص |
| 14 | +│ ├── signatures/ # قاعدة بيانات الهاش (LMDB) + محرك قواعد YARA-X |
| 15 | +│ ├── parsers/ # محللات صيغ الملفات الثنائية |
| 16 | +│ ├── heuristic/ # التحليل الإرشادي + استدلال التعلم الآلي |
| 17 | +│ ├── realtime/ # مراقبة نظام الملفات + تصفية الشبكة |
| 18 | +│ ├── quarantine/ # خزنة الحجر الصحي المشفرة |
| 19 | +│ ├── remediation/ # إجراءات الاستجابة للتهديدات |
| 20 | +│ ├── sandbox/ # عزل العمليات + تحليل السلوك |
| 21 | +│ ├── plugins/ # بيئة تشغيل إضافات WebAssembly |
| 22 | +│ └── updater/ # عميل تحديث التوقيعات |
| 23 | +├── update-server/ # خادم توزيع التوقيعات (Axum) |
| 24 | +├── gui/ # واجهة المستخدم الرسومية (Tauri 2 + Vue 3) |
| 25 | +├── drivers/ # برامج تشغيل نواة نظام التشغيل |
| 26 | +│ └── windows-minifilter/ # مرشح نظام ملفات مصغر لـ Windows (C) |
| 27 | +├── signatures-db/ # توقيعات مدمجة بحد أدنى |
| 28 | +├── packaging/ # تعبئة التوزيع |
| 29 | +├── tests/ # اختبارات التكامل |
| 30 | +├── tools/ # سكريبتات البناء والأدوات المساعدة |
| 31 | +├── install.sh # سكريبت التثبيت |
| 32 | +└── uninstall.sh # سكريبت إلغاء التثبيت |
| 33 | +``` |
| 34 | + |
| 35 | +## رسم بياني لتبعيات الوحدات |
| 36 | + |
| 37 | +``` |
| 38 | +cli |
| 39 | + ├── core |
| 40 | + │ ├── signatures |
| 41 | + │ │ └── (heed, yara-x, sha2, md5) |
| 42 | + │ ├── parsers |
| 43 | + │ │ └── (goblin) |
| 44 | + │ └── heuristic |
| 45 | + │ └── (tract-onnx [optional]) |
| 46 | + ├── realtime |
| 47 | + │ ├── core |
| 48 | + │ └── (notify, nix [linux], adblock) |
| 49 | + ├── quarantine |
| 50 | + │ └── (aes-gcm, rand) |
| 51 | + ├── remediation |
| 52 | + │ ├── quarantine |
| 53 | + │ └── (nix [unix]) |
| 54 | + ├── sandbox |
| 55 | + │ └── (nix [unix]) |
| 56 | + ├── plugins |
| 57 | + │ └── (wasmtime, wasmtime-wasi) |
| 58 | + └── updater |
| 59 | + └── (ed25519-dalek, zstd, reqwest) |
| 60 | +``` |
| 61 | + |
| 62 | +## خط أنابيب الكشف |
| 63 | + |
| 64 | +ينسّق محرك الفحص (`core`) خط أنابيب كشف متعدد الطبقات: |
| 65 | + |
| 66 | +``` |
| 67 | + ┌──────────────┐ |
| 68 | + │ إدخال الملف │ |
| 69 | + └──────┬───────┘ |
| 70 | + │ |
| 71 | + ┌──────▼───────┐ |
| 72 | + │ الرقم السحري│ التعرف على: PE، ELF، MachO، |
| 73 | + │ للتعرف │ PDF، ZIP، Office، غير معروف |
| 74 | + └──────┬───────┘ |
| 75 | + │ |
| 76 | + ┌────────────┼────────────┐ |
| 77 | + │ │ │ |
| 78 | + ┌──────▼──────┐ │ ┌──────▼──────┐ |
| 79 | + │ مطابقة │ │ │ قواعد │ |
| 80 | + │ الهاش │ │ │ YARA-X │ |
| 81 | + │ (LMDB) │ │ │ (أكثر من │ |
| 82 | + └──────┬──────┘ │ │ 38 ألف) │ |
| 83 | + │ ┌─────▼─────┐└──────┬──────┘ |
| 84 | + │ │ التحليل │ │ |
| 85 | + │ │ الإرشادي │ │ |
| 86 | + │ └─────┬─────┘ │ |
| 87 | + │ │ │ |
| 88 | + │ ┌──────▼──────┐ │ |
| 89 | + │ │ استدلال │ │ |
| 90 | + │ │ التعلم الآلي│ │ |
| 91 | + │ │ (ONNX) │ │ |
| 92 | + │ └──────┬─────┘ │ |
| 93 | + │ │ │ |
| 94 | + │ ┌──────▼──────┐ │ |
| 95 | + │ │ استعلام │ │ |
| 96 | + │ │ VirusTotal │ │ |
| 97 | + │ │ السحابي │ │ |
| 98 | + │ └──────┬─────┘ │ |
| 99 | + │ │ │ |
| 100 | + └───────────┼────────────┘ |
| 101 | + │ |
| 102 | + ┌──────▼──────┐ |
| 103 | + │ تجميع │ |
| 104 | + │ الحكم │ |
| 105 | + └─────────────┘ |
| 106 | + نظيف / مشبوه / خبيث |
| 107 | +``` |
| 108 | + |
| 109 | +### تفاصيل الطبقات |
| 110 | + |
| 111 | +1. **مطابقة الهاش** — بحث بتعقيد O(1) في قاعدة بيانات LMDB التي تحتوي على هاشات SHA-256 وMD5 من ClamAV وabuse.ch وVirusShare وقوائم الحظر المخصصة. |
| 112 | + |
| 113 | +2. **قواعد YARA-X** — مطابقة الأنماط باستخدام محرك YARA-X (تطبيق YARA الأصلي بلغة Rust). يتم تحميل القواعد من الإعدادات الافتراضية المدمجة ومستودع التوقيعات الخارجي. |
| 114 | + |
| 115 | +3. **التحليل الإرشادي** — تحليل خاص بنوع الملف: |
| 116 | + - **PE:** إنتروبيا الأقسام، استدعاءات API المشبوهة (CreateRemoteThread، VirtualAllocEx)، كشف الحزم (UPX، Themida)، شذوذات الطوابع الزمنية |
| 117 | + - **ELF:** إنتروبيا الأقسام، مراجع LD_PRELOAD، استمرار عبر cron/systemd، أنماط أبواب SSH الخلفية |
| 118 | + - **MachO:** إنتروبيا الأقسام، حقن dylib، استمرار LaunchAgent، الوصول إلى Keychain |
| 119 | + |
| 120 | +4. **استدلال التعلم الآلي** (اختياري، علم الميزة `onnx`) — تقييم نموذج ONNX عبر tract: |
| 121 | + - PE: متجه ميزات بـ 64 بُعدًا (هاشات جدول الاستيراد، إنتروبيا الأقسام، توقيعات API) |
| 122 | + - ELF: متجه ميزات بـ 48 بُعدًا (إنتروبيا الأقسام، جدول الرموز، المكتبات الديناميكية) |
| 123 | + |
| 124 | +5. **VirusTotal السحابي** — بديل احتياطي للملفات غير المطابقة محليًا. يستعلم من واجهة برمجة تطبيقات VirusTotal (المستوى المجاني: 500 استعلام/يوم). يتم تخزين النتائج مؤقتًا في LMDB. |
| 125 | + |
| 126 | +### نظام التقييم |
| 127 | + |
| 128 | +- التقييم >= 60: **خبيث** |
| 129 | +- التقييم 30-59: **مشبوه** |
| 130 | +- التقييم < 30: **نظيف** |
| 131 | + |
| 132 | +الحكم النهائي هو أعلى مستوى تهديد من أي طبقة كشف. |
| 133 | + |
| 134 | +## الحماية في الوقت الفعلي |
| 135 | + |
| 136 | +توفر وحدة `realtime` حماية مستمرة من خلال أنظمة فرعية متعددة: |
| 137 | + |
| 138 | +| النظام الفرعي | Linux | macOS | Windows | |
| 139 | +|---------------|-------|-------|---------| |
| 140 | +| مراقبة الملفات | fanotify + epoll | FSEvents (notify) | ReadDirectoryChangesW (notify) | |
| 141 | +| اعتراض العمليات | FAN_OPEN_EXEC_PERM | - | Minifilter (مخطط) | |
| 142 | +| فحص الذاكرة | /proc/pid/mem | - | - | |
| 143 | +| كشف الفدية | مراقبة أنماط الكتابة+إعادة التسمية | مراقبة أنماط الكتابة+إعادة التسمية | مراقبة أنماط الكتابة+إعادة التسمية | |
| 144 | +| المجلدات المحمية | ~/.ssh، /etc/shadow، /etc/systemd | ~/Library، /etc | مفاتيح تشغيل السجل | |
| 145 | +| تصفية DNS | محرك Adblock + قوائم IOC | محرك Adblock + قوائم IOC | محرك Adblock + قوائم IOC | |
| 146 | +| مراقبة السلوك | /proc + audit (execve/connect/open) | - | - | |
| 147 | + |
| 148 | +## خزنة الحجر الصحي |
| 149 | + |
| 150 | +يتم حجر الملفات باستخدام تشفير AES-256-GCM المصادق عليه: |
| 151 | + |
| 152 | +1. توليد مفتاح عشوائي بطول 256 بت + رقم فريد (nonce) بطول 96 بت |
| 153 | +2. تشفير محتويات الملف باستخدام AES-256-GCM |
| 154 | +3. تخزين الملف المشفر باسم UUID |
| 155 | +4. حفظ بيانات وصفية بتنسيق JSON (المسار الأصلي، الهاش، اسم التهديد، الطابع الزمني) |
| 156 | +5. عند الاستعادة يتم فك التشفير والتحقق من السلامة قبل إعادة الكتابة |
| 157 | + |
| 158 | +## خط أنابيب المعالجة |
| 159 | + |
| 160 | +عند استخدام `--remediate`: |
| 161 | + |
| 162 | +``` |
| 163 | +كشف تهديد |
| 164 | + ├── 1. إيقاف العملية (SIGKILL على Linux/macOS، TerminateProcess على Windows) |
| 165 | + ├── 2. حجر الملف (خزنة مشفرة بـ AES-256-GCM) |
| 166 | + └── 3. تنظيف آليات الاستمرار |
| 167 | + ├── Linux: وظائف cron، خدمات systemd، LD_PRELOAD |
| 168 | + ├── macOS: LaunchAgents، إدخالات plist، Keychain |
| 169 | + └── Windows: سجل Run/RunOnce، المهام المجدولة، الخدمات |
| 170 | +``` |
| 171 | + |
| 172 | +الإجراءات قابلة للتهيئة عبر `sd policy set`. |
| 173 | + |
| 174 | +## قاعدة بيانات التوقيعات |
| 175 | + |
| 176 | +### التوقيعات المدمجة (`signatures-db/`) |
| 177 | + |
| 178 | +مجموعة توقيعات بحد أدنى مُجمّعة في الملف التنفيذي `sd` عبر `include_str!`: |
| 179 | +- توقيع اختبار EICAR |
| 180 | +- قواعد YARA أساسية (فدية، حصان طروادة، باب خلفي، إلخ.) |
| 181 | +- هاشات برمجيات خبيثة معروفة (WannaCry، Emotet، NotPetya) |
| 182 | + |
| 183 | +### التوقيعات الخارجية ([prx-sd-signatures](https://github.com/openprx/prx-sd-signatures)) |
| 184 | + |
| 185 | +معلومات تهديدات شاملة ومحدّثة باستمرار: |
| 186 | +- أكثر من 38,800 قاعدة YARA من 9 مصادر |
| 187 | +- قوائم حظر هاش من تغذيات abuse.ch |
| 188 | +- قوائم IOC: أكثر من 585 ألف عنوان IP ونطاق وعنوان URL خبيث |
| 189 | + |
| 190 | +### التخزين |
| 191 | + |
| 192 | +- **الهاشات:** LMDB (وحدة heed) لعمليات بحث بتعقيد O(1) بأسلوب مفتاح-قيمة |
| 193 | +- **قواعد YARA:** يتم تحميلها وتجميعها بواسطة YARA-X عند بدء التشغيل |
| 194 | +- **قوائم IOC:** HashSet في الذاكرة لمطابقة سريعة للعناوين IP/النطاقات/عناوين URL |
| 195 | + |
| 196 | +## نظام الإضافات |
| 197 | + |
| 198 | +يدعم PRX-SD إضافات WebAssembly عبر Wasmtime: |
| 199 | + |
| 200 | +- الإضافات هي ملفات `.wasm` مع ملف وصف (`plugin.json`) |
| 201 | +- دعم WASI للوصول إلى نظام الملفات والبيئة |
| 202 | +- سجل إضافات للاكتشاف والتحميل |
| 203 | +- دوال مضيف مكشوفة للإضافات للوصول إلى نتائج الفحص والإعدادات |
| 204 | + |
| 205 | +## نظام التحديث |
| 206 | + |
| 207 | +توفر وحدة `updater` وخادم `update-server` خط أنابيب تحديث آمن: |
| 208 | + |
| 209 | +1. يتحقق العميل من خادم التحديث لمعرفة إصدارات التوقيعات الجديدة |
| 210 | +2. يرد الخادم بمعلومات الإصدار وعنوان URL للتنزيل |
| 211 | +3. يقوم العميل بتنزيل حزمة التوقيعات المضغوطة بـ zstd |
| 212 | +4. يتم التحقق من توقيع الحزمة باستخدام Ed25519 (ed25519-dalek) |
| 213 | +5. يتم استخراج التوقيعات وتحميلها في LMDB |
| 214 | + |
| 215 | +## تطبيق الواجهة الرسومية |
| 216 | + |
| 217 | +مبني باستخدام Tauri 2 (واجهة خلفية بلغة Rust) + Vue 3 (واجهة أمامية بلغة TypeScript): |
| 218 | + |
| 219 | +- تكامل مع شريط النظام مع مؤشر الحالة |
| 220 | +- لوحة تحكم مع إحصائيات التهديدات |
| 221 | +- فحص الملفات بالسحب والإفلات |
| 222 | +- متصفح الحجر الصحي مع الاستعادة/الحذف |
| 223 | +- عناصر تحكم المراقبة في الوقت الفعلي |
| 224 | +- الإعدادات والتهيئة |
| 225 | +- دعم متعدد اللغات (10 لغات) |
| 226 | + |
| 227 | +## التبعيات الرئيسية |
| 228 | + |
| 229 | +| الفئة | الوحدة | الإصدار | الغرض | |
| 230 | +|-------|--------|---------|-------| |
| 231 | +| غير متزامن | tokio | 1.x | بيئة تشغيل غير متزامنة | |
| 232 | +| التوازي | rayon | - | مجمع خيوط للفحص | |
| 233 | +| YARA | yara-x | 1.14 | محرك مطابقة القواعد | |
| 234 | +| قاعدة بيانات | heed | - | ربط LMDB | |
| 235 | +| تحليل ثنائي | goblin | 0.9 | محلل PE/ELF/MachO | |
| 236 | +| تشفير | aes-gcm | - | تشفير الحجر الصحي | |
| 237 | +| تشفير | ed25519-dalek | - | التحقق من التحديثات | |
| 238 | +| تعلم آلي | tract-onnx | - | استدلال ONNX (اختياري) | |
| 239 | +| WASM | wasmtime | 29 | بيئة تشغيل الإضافات | |
| 240 | +| DNS | adblock | 0.12 | محرك Brave لحظر الإعلانات | |
| 241 | +| واجهة سطر الأوامر | clap | 4.x | تحليل المعاملات | |
| 242 | +| HTTP | axum | 0.8 | خادم التحديث | |
0 commit comments