
🐍 ماسح YARA و IOC عالي الأداء ومتعدد الخيوط

إعادة كتابة Loki بلغة Rust. ماسح عالي الأداء ومتعدد الخيوط لـ YARA و IOC في ملف ثنائي واحد.
الحالة: Beta. يعمل، لكنه لا يزال قيد التطوير النشط.
فحص ذاكرة العمليات في macOS هو جهد بأفضل ما يمكن ويتطلب عادةً صلاحيات تصحيح أو صلاحيات مرتفعة. بدونها، سيواصل Loki-RS فحص الملفات لكنه لن يتمكن من قراءة معظم ذاكرة العمليات. استخدم --no-procs لتخطي فحص العمليات إذا لزم الأمر.
في Linux، يتجاوز Loki-RS تعيينات العمليات المدعومة بالأجهزة والنواة الخاصة قبل قراءة /proc/<pid>/mem. هذا يتجنب عدم الاستقرار المعروف مع بعض VMAs المُدارة بواسطة برامج التشغيل مع الحفاظ على فحص الذاكرة العادي المجهول، الكومة/المكدس، والملفات المدعومة بشكل طبيعي. إذا واجهت مشكلات خاصة بالبيئة، استخدم --no-procs لتعطيل فحص العمليات.
قم بتنزيل الملف الثنائي المُجمَّع مسبقًا لمنصتك من صفحة الإصدارات.
# الاستخراج
tar -xzvf loki-linux-*.tar.gz
cd loki-linux-*
# تحديث التوقيعات (موصى به)
./loki-util update
# التشغيل
sudo ./loki --help
تُشحن التوقيعات مع الإصدار لكنها تصبح قديمة بسرعة. قم بتشغيل loki-util update للحصول على أحدث قواعد YARA-Forge Core.
يستخدم Loki-RS YARA Forge كمصدر توقيع افتراضي. يُشحن Loki-RS ويُحدَّث بمجموعة قواعد Core (دقة عالية، نتائج إيجابية كاذبة منخفضة، محسَّنة للأداء). إذا كنت بحاجة إلى تغطية أوسع، يمكنك استبدالها بمجموعات Extended أو Full من YARA Forge.
ملفات IOC في signatures/iocs/ تبقى مدعومة كمحتوى محلي/مخصص اختياري.
# الفحص الأساسي (TUI مفعلة افتراضيًا)
sudo ./loki
# فحص مجلد محدد
sudo ./loki --folder /tmp
# تعطيل TUI، استخدام الإخراج القياسي لسطر الأوامر
sudo ./loki --no-tui
# فحص صورة مثبتة (تخطي فحص العمليات، استخدام كل النوى)
sudo ./loki --no-procs --folder ~/image1 --threads 0
# فحص بطيء وحذر (حد أقل لوحدة المعالجة المركزية، خيط واحد)
sudo ./loki --cpu-limit 60 --threads 1
# الفحص وإرسال السجلات إلى syslog عن بُعد
sudo ./loki --remote syslog-host.internal:514 --remote-proto udp


| الخيار | الافتراضي | الوصف |
|---|---|---|
-f, --folder <PATH> | / | المجلد المراد فحصه. ضع المسافات بين علامات الاقتباس، مثلًا -f "J:\SteamLibrary\steamapps\common\SpaceCraft beta" |
| الخيار | الافتراضي | الوصف |
|---|---|---|
--no-procs | false | تخطي فحص ذاكرة العمليات |
--no-fs | false | تخطي فحص نظام الملفات |
--no-archive | false | تخطي الفحص داخل الأرشيفات (ZIP) |
--scan-all-drives | false | فحص كل محركات الأقراص بما في ذلك المثبتة/الشبكية/السحابية |
--scan-all-files | false | فحص كل الملفات بغض النظر عن الامتداد/النوع |
| الخيار | الافتراضي | الوصف |
|---|---|---|
-l, --log <FILE> | تلقائي | ملف سجل نص عادي |
--no-log | false | تعطيل إخراج السجل النصي |
-j, --jsonl <FILE> | تلقائي | ملف إخراج JSONL |
--no-jsonl | false | تعطيل إخراج JSONL |
--no-html | false | تعطيل إنشاء تقرير HTML |
--no-tui | false | تعطيل TUI، استخدام الإخراج القياسي لسطر الأوامر |
-r, --remote <HOST:PORT> | لا شيء | وجهة syslog عن بُعد |
-p, --remote-proto <PROTO> | udp | البروتوكول عن بُعد (udp/tcp) |
--remote-format <FMT> | syslog | التنسيق عن بُعد (syslog/json) |
| الخيار | الافتراضي | الوصف |
|---|---|---|
--alert-level <SCORE> | 80 | عتبة النتيجة للتنبيه |
--warning-level <SCORE> | 60 | عتبة النتيجة للتحذير |
--notice-level <SCORE> | 40 | عتبة النتيجة للإشعار |
--max-reasons <NUM> | 2 | الحد الأقصى لعدد أسباب المطابقة الظاهرة لكل نتيجة |
-m, --max-file-size <BYTES> | 64000000 | أقصى حجم ملف للفحص (64 ميجابايت) |
--yara-timeout <SECONDS> | 10 | أقصى وقت فحص YARA لكل ملف أو مخزن ذاكرة عملية (الحد الأدنى: 1 ثانية) |
-c, --cpu-limit <PERCENT> | 100 | حد استخدام وحدة المعالجة المركزية (1-100) |
--threads <NUM> | -2 | عدد الخيوط (0=كلها، -1=كلها ناقص واحد، -2=كلها ناقص اثنين) |
| الخيار | الافتراضي | الوصف |
|---|---|---|
--version | - | عرض الإصدار والخروج |
-d, --debug | false | عرض مخرجات التصحيح |
--trace | false | عرض مخرجات تتبع مفصلة |
--show-access-errors | false | عرض أخطاء الوصول للملف/العملية |
يوفر Loki-RS آليات متعددة لاستبعاد الملفات والمجلدات من الفحص.
بشكل افتراضي، يستبعد Loki-RS تلقائيًا:
أدلة النظام (Linux/macOS):
/proc, /dev, /sys/kernel/debug, /sys/kernel/slab, /sys/kernel/tracing, /sys/devices/run, /var/runأدلة التخزين السحابي (إلا إذا تم استخدام --scan-all-drives):
محركات الأقراص الشبكية والمثبتة (إلا إذا تم استخدام --scan-all-drives):
/media, /volumesدليل البرنامج:
| الخيار | الوصف |
|---|---|
--scan-all-drives | تضمين محركات الأقراص المثبتة والشبكية والتخزين السحابي |
--scan-all-files | فحص كل الملفات بغض النظر عن نوع/امتداد الملف (افتراضيًا، يتم فحص أنواع الملفات ذات الصلة فقط) |
-m, --max-file-size <BYTES> | تخطي الملفات الأكبر من هذا الحجم (الافتراضي: 64 ميجابايت) |
--no-procs | تخطي فحص ذاكرة العمليات بالكامل |
--no-fs | تخطي فحص نظام الملفات بالكامل |
--no-archive | تخطي الفحص داخل ملفات الأرشيف (ZIP) |
يمكنك استبعاد الملفات المعروفة بأنها جيدة باستخدام تجزئتها. هذا مفيد لإدراج الملفات الشرعية التي تسبب نتائج إيجابية كاذبة في القائمة البيضاء.
الإعداد:
أنشئ ملفًا في signatures/iocs/ يحتوي على كل من hash و falsepositive في اسم الملف
مثال: hash-falsepositive-custom.txt
أضف التجزئات (MD5, SHA1, أو SHA256) مع وصف اختياري:
# التنسيق: HASH;description
d41d8cd98f00b204e9800998ecf8427e;ملف فارغ - معروف بأنه جيد
a7f5f35426b927411fc9231b56382173;أداة نظام شرعية
الملفات المطابقة لهذه التجزئات سيتم تخطيها بصمت أثناء الفحص.
عند إضافة IOCs لأسماء الملفات إلى signatures/iocs/filename-iocs.txt، يمكنك تحديد تعبير regex للاستبعاد الإيجابي الكاذب في العمود الثالث:
# التنسيق: REGEX;SCORE;FALSE_POSITIVE_REGEX
#
# هذا يطابق كل ملفات .ps1، لكنه يستبعد تلك الموجودة في أدلة SysInternals
(?i)\\procdump(64)?\.(exe|zip);50;(?i)(SysInternals\\)
إذا طابق ملف كلاً من النمط الرئيسي و regex الإيجابي الكاذب، فلن يتم الإبلاغ عنه.
ملف config/excludes.cfg يدعم استبعادات المسار المستندة إلى regex:
# استبعاد أدلة النظام
^/proc/.*
^/dev/.*
^/sys/.*
# استبعاد الملفات المؤقتة
.*\.tmp$
.*\.temp$
.*\.swp$
# استبعاد أدلة محددة
.*node_modules.*
.*/\.git/.*