
🐍 ماسح 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" |
يوفر 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دليل البرنامج:
يمكنك استبعاد الملفات المعروفة بأنها جيدة باستخدام تجزئتها. هذا مفيد لإدراج الملفات الشرعية التي تسبب نتائج إيجابية كاذبة في القائمة البيضاء.
الإعداد:
أنشئ ملفًا في 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/.*
ملاحظة: يتم مطابقة أنماط استبعاد المسار مقابل مسار الملف الكامل باستخدام التعبيرات العادية. الأسطر التي تبدأ بـ # هي تعليقات.
# الفحص مع تضمين كل محركات الأقراص (الشبكية والسحابية والمثبتة)
sudo ./loki --scan-all-drives
# فحص كل أنواع الملفات، وليس فقط الملفات التنفيذية والنصية
sudo ./loki --scan-all-files
# فحص الملفات الصغيرة فقط (أقل من 10 ميجابايت)
sudo ./loki --max-file-size 10000000
# تخطي فحص العمليات (مفيد للصور المثبتة)
sudo ./loki --no-procs --folder /mnt/image
الواجهة الطرفية مفعلة افتراضيًا وتوفر مراقبة في الوقت الفعلي أثناء الفحص.
sudo ./loki --folder /path/to/scan


يقوم Loki-RS تلقائيًا بإنشاء تقرير HTML منسق بعد كل فحص. يتم إنشاء التقرير بجانب ملف سجل JSONL ويوفر ملخصًا مرئيًا لجميع النتائج.
يتضمن التقرير:

يتشارك تقرير HTML نفس اسم الملف الأساسي مثل إخراج JSONL (مثلًا loki_hostname_2025-01-08.html). لتعطيل إنشاء التقرير، استخدم --no-html.
يمكنك إنشاء تقارير HTML من ملفات JSONL الموجودة باستخدام loki-util:
# إنشاء تقرير HTML من ملف JSONL واحد
./loki-util html --input scan_results.jsonl --output report.html
# إنشاء تقرير HTML مدمج من عدة ملفات JSONL
./loki-util html --input "*.jsonl" --combine --output combined_report.html
# استخدام أنماط glob لمطابقة عدة ملفات
./loki-util html --input "/path/to/scans/*.jsonl" --combine --output combined.html
الخيارات:
--input <file|glob> - ملف JSONL الإدخال أو نمط glob (إلزامي)--output <file.html> - ملف HTML الإخراج (اختياري، الافتراضي هو اسم ملف الإدخال مع امتداد .html)--combine - دمج عدة ملفات JSONL في تقرير واحد (تجميع النتائج حسب اسم المضيف)--title <str> - تجاوز عنوان التقرير--host <str> - تجاوز اسم المضيف في التقريروضع التقرير المدمج مفيد لتجميع نتائج الفحص من عدة مضيفين أو فترات زمنية في عرض واحد، مع تجميع النتائج حسب اسم المضيف المصدر.
git clone https://github.com/Neo23x0/Loki-RS.git
cd Loki-RS
cargo build --release
./target/release/loki-util update
sudo ./target/release/loki
يتطلب مجموعة أدوات Rust. راجع docs/BUILD.md للترجمة المشتركة.
Loki RS هو مشروع جانبي. إنه ماسح سريع بملف ثنائي واحد مبني للفرز العملي والتجريب، وقد يتغير بسرعة مع تجربة الأفكار وإزالتها.
الدعم قائم على المجتمع وبأفضل جهد - لا يوجد SLA، ولا أوقات استجابة مضمونة، ولا وعد بمعالجة كل حالة حافة بشكل مثالي. إذا قمت بتشغيله في الإنتاج، فافعل ذلك مع وضع ذلك في الاعتبار.
للبيئات المؤسسية وأعمال الاستجابة للحوادث مع دعم يمكن التنبؤ به ومجموعة ميزات أوسع ومختبرة جيدًا، تحافظ Nextron Systems على THOR (و THOR Lite). THOR هو الماسح المحترف مع تغطية واسعة للقطع الأثرية، والمزيد من الوحدات والتنسيقات، ودعم البائع. THOR Lite هو إصدار الدخول المجاني بنطاق مخفض.
رخصة GNU العامة العامة v3.0. انظر LICENSE.
حقوق النشر (c) 2025 Florian Roth
| الخيار | الافتراضي | الوصف |
|---|
--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 | عرض أخطاء الوصول للملف/العملية |
| الخيار | الوصف |
|---|
--scan-all-drives | تضمين محركات الأقراص المثبتة والشبكية والتخزين السحابي |
--scan-all-files | فحص كل الملفات بغض النظر عن نوع/امتداد الملف (افتراضيًا، يتم فحص أنواع الملفات ذات الصلة فقط) |
-m, --max-file-size <BYTES> | تخطي الملفات الأكبر من هذا الحجم (الافتراضي: 64 ميجابايت) |
--no-procs | تخطي فحص ذاكرة العمليات بالكامل |
--no-fs | تخطي فحص نظام الملفات بالكامل |
--no-archive | تخطي الفحص داخل ملفات الأرشيف (ZIP) |
| المفتاح | الإجراء |
|---|
q | خروج |
p | إيقاف مؤقت/استئناف |
s | تخطي العناصر الحالية |
t | تبديل تراكب الخيوط |
+ / - | ضبط حد وحدة المعالجة المركزية |
| مفاتيح الأسهم | التمرير في السجلات |