
ماسح ضوئي قائم على IOC و YARA للكشف عن مؤشرات الاختراق عبر تعبير منتظم لاسم الملف، تواقيع YARA، مطابقة التجزئة، وفحوصات الاتصال الخلفي لـ C2 على نقاط النهاية.
لقد كتبت ماسح YARA مفتوح المصدر جديد يسمى LOKI RS (Rust). LOKI (Python) أصبح الآن مهملاً رسمياً.
هذا المشروع الآن في وضع الصيانة غير النشطة. هذا يعني أنه بينما أقوم بدمج طلبات السحب لإصلاح الأخطاء والمشكلات المباشرة، إلا أنني أفتقر حالياً إلى الوقت لإضافة ميزات جديدة أو توسيع الميزات الحالية. لسنوات، كان تركيزي على تطوير ماسح أكثر تقدماً، THOR، الذي يقدم مجموعة من التحسينات على هذا المشروع. هناك إصدار مجاني، THOR Lite، متاح؛ إنه أسرع وأكثر استقراراً وتم اختباره بدقة في بيئات CI الخاصة بنا - ببساطة حل أفضل. يمكنك العثور على مقارنة بين الماسحات مفتوحة المصدر والمجانية والتجارية هنا.
لقد بدأت أيضاً العمل على إصدار يعتمد على Rust من LOKI يسمى LOKI 2. لكنني لست متأكداً متى سيصل إلى التكافؤ في الميزات مع إصدار LOKI الحالي. بالإضافة إلى ذلك، أنشأت مخطط تدفق لمساعدتك في تحديد الماسح الذي يناسب احتياجاتك بشكل أفضل.

ماسح لمؤشرات الاختراق البسيطة
يعتمد الكشف على أربع طرق كشف:
1. اسم ملف IOC
تطابق Regex على مسار/اسم الملف الكامل
2. فحص قاعدة Yara
تطابق توقيع Yara على بيانات الملف وذاكرة العملية
3. فحص التجزئة
مقارنة التجزئات الضارة المعروفة (MD5, SHA1, SHA256) مع الملفات الممسوحة
4. فحص اتصال C2 الخلفي
مقارنة نقاط اتصال العملية مع مؤشرات C2 (جديد منذ الإصدار v.10)
فحوصات إضافية:
1. فحص نظام ملفات Regin (عبر --reginfs)
2. فحص شذوذ العملية (استناداً إلى [Sysforensics](http://goo.gl/P99QZQ)
3. فحص SWF مفكوك الضغط (جديد منذ الإصدار v0.8)
4. فحص تفريغ SAM
تم تجميع الثنائي Windows باستخدام PyInstaller ويجب أن يعمل كتطبيق x86 على كل من الأنظمة x86 و x64.
لا توجد متطلبات إذا كنت تستخدم ملف EXE المترجم.
إذا كنت تريد بنائه بنفسك:
usage: loki.py [-h] [-p path] [-s kilobyte] [-l log-file] [-r remote-loghost]
[-t remote-syslog-port] [-a alert-level] [-w warning-level]
[-n notice-level] [--allhds] [--alldrives] [--printall]
[--allreasons] [--noprocscan] [--nofilescan] [--vulnchecks]
[--nolevcheck] [--scriptanalysis] [--rootkit] [--noindicator]
[--dontwait] [--intense] [--csv] [--onlyrelevant] [--nolog]
[--update] [--debug] [--maxworkingset MAXWORKINGSET]
[--syslogtcp] [--logfolder log-folder] [--nopesieve]
[--pesieveshellc] [--nolisten]
[--excludeprocess EXCLUDEPROCESS] [--force]
Loki - ماسح IOC بسيط
optional arguments:
-h, --help عرض رسالة المساعدة هذه والخروج
-p path المسار المراد فحصه
-s kilobyte أقصى حجم ملف للفحص بالكيلوبايت (الافتراضي 5000 كيلوبايت)
-l log-file ملف السجل
-r remote-loghost نظام syslog عن بعد
-t remote-syslog-port
منفذ syslog عن بعد
-a alert-level درجة التنبيه
-w warning-level درجة التحذير
-n notice-level درجة الإشعار
--allhds فحص جميع الأقراص الصلبة المحلية (Windows فقط)
--alldrives فحص جميع الأقراص (بما في ذلك أقراص الشبكة والوسائط القابلة للإزالة)
--printall طباعة جميع الملفات التي تم فحصها
--allreasons طباعة جميع الأسباب التي أدت إلى الدرجة
--noprocscan تخطي فحص العملية
--nofilescan تخطي فحص الملفات
--vulnchecks تشغيل فحوصات الثغرات الأمنية
--nolevcheck تخطي فحص مسافة ليفنشتاين
--scriptanalysis تحليل إحصائي للنصوص البرمجية لاكتشاف الكود المشفر (beta)
--rootkit تخطي فحص الروتكيت
--noindicator لا تظهر مؤشر التقدم
--dontwait لا تنتظر عند الخروج
--intense وضع الفحص المكثف (فحص أنواع الملفات غير المعروفة وجميع الامتدادات)
--csv كتابة تنسيق سجل CSV إلى STDOUT (معالجة آلية)
--onlyrelevant طباعة التحذيرات أو التنبيهات فقط
--nolog لا تكتب ملف سجل محلي
--update تحديث التواقيع من المستودع الفرعي "signature-base"
--debug إخراج التصحيح
--maxworkingset MAXWORKINGSET
أقصى حجم لمجموعة العمل للعمليات المراد فحصها (بالميجابايت، الافتراضي 100 ميجابايت)
--syslogtcp استخدام TCP بدلاً من UDP لتسجيل syslog
--logfolder log-folder
المجلد المستخدم للتسجيل عندما لا يتم تحديد ملف سجل
--nopesieve لا تقم بإجراء فحوصات pe-sieve
--pesieveshellc إجراء فحص كود شيل لـ pe-sieve
--nolisten لا تظهر اتصالات الاستماع
--excludeprocess EXCLUDEPROCESS
حدد اسم ملف تنفيذي لاستبعاده من الفحوصات، يمكن استخدامه عدة مرات
--force فرض الفحص على مجلد معين (حتى لو تم استبعاده باستثناء صارم في كود LOKI)
منذ الإصدار 0.15 تم تخزين توقيعات Yara في المستودع الفرعي signature-base. لن تحصل على المستودع الفرعي بتنزيل LOKI كملف ZIP. سيتم تضمينه عند استنساخ المستودع.
يتم تخزين ملفات IOC للتجزئات وأسماء الملفات في مجلد './signature-base/iocs'. سيتم تهيئة جميع ملفات '.yar' الموضوعة في مجلد './signature-base/yara' مع مجموعة القواعد المضمنة بالفعل. استخدم قيمة 'score' لتحديد مستوى الرسالة عند تطابق التوقيع.
يمكنك إضافة مؤشرات الاختراق الخاصة بالتجزئة و C2 واسم الملف عن طريق إضافة ملفات إلى المجلد الفرعي './signature-base/iocs'. يجب أن تكون جميع ملفات IOC للتجزئة واسم الملف بالتنسيق المستخدم من قبل LOKI (انظر الملفات الافتراضية). يجب أن تحتوي الملفات على السلاسل "hash" أو "filename" أو "c2" في اسمها ليتم سحبها أثناء التهيئة.
بالنسبة لمؤشرات IOC للتجزئة (مقسمة بسطر جديد؛ يتم اكتشاف نوع التجزئة تلقائياً)
Hash;الوصف [المرجع]
بالنسبة لمؤشرات IOC لاسم الملف (مقسمة بسطر جديد)
# (اختياري) الوصف [المرجع]
اسم الملف كـ Regex[;الدرجة كعدد صحيح[;الإيجابية الخاطئة كـ Regex]]
منذ الإصدار v0.16.2 يدعم LOKI تعريف استثناءات معرفة من قبل المستخدم عبر "excludes.cfg" في مجلد "./config" الجديد. كل سطر يمثل تعبيراً منتظماً يتم تطبيقه على مسار الملف الكامل أثناء التجول في الدليل. بهذه الطريقة يمكنك استبعاد أدلة معينة بغض النظر عن اسم محرك الأقراص، وامتدادات الملفات في مجلدات معينة، وجميع الملفات والأدلة التي تنتمي إلى منتج حساس لفحص مكافحة الفيروسات.
'''exclude.cfg''' يبدو كالتالي:
# الدلائل المستبعدة
#
# - أضف الدلائل التي تريد استبعادها من الفحص
# - قم بهروب الشرطات المائلة للخلف بشكل مزدوج
# - القيم غير حساسة لحالة الأحرف
# - تذكر استخدام الشرطات المائلة للخلف على Windows والشرطات المائلة على Linux / Unix / OSX
# - كل سطر يحتوي على تعبير منتظم يتطابق في مكان ما في المسار الكامل (غير حساس لحالة الأحرف)
# مثال:
# Regex: \\System32\\
# يتطابق مع C:\Windows\System32\cmd.exe
#
# Regex: /var/log/[^/]+\.log
# يتطابق مع: /var/log/test.log
# لا يتطابق مع: /var/log/test.gz
#
# أمثلة مفيدة
\\Ntfrs\\
\\Ntds\\
\\EDB[^\.]+\.log
Sysvol\\Staging\\Nntfrs_cmp
\\System Volume Information\\DFSR
فحص Loki

تطابقات Regin

إيجابيات خاطئة لـ Regin

مؤشرات IOC قائمة على التجزئة

مؤشرات IOC قائمة على اسم الملف

ملف السجل المُنشأ

ماسح LOKI على صفحة شركتنا الرئيسية https://www.nextron-systems.com/loki/
تويتر @cyb3rOps @thor_scanner
إذا كنت مهتماً بحل مؤسسي لفحص APT، تحقق من الأخ الأكبر لـ LOKI THOR.
قم بتنزيل PyInstaller، وانتقل إلى دليل برنامج pyinstaller ونفذ:
python ./pyinstaller.py -F C:\path\to\loki.py
سيؤدي هذا إلى إنشاء loki.exe في المجلد الفرعي ./loki/dist.
لتضمين msvcr100.dll لتحسين توافق نظام التشغيل الهدف، قم بتغيير السطر في الملف ./loki/loki.spec الذي يحتوي على a.binaries, إلى ما يلي:
a.binaries + [('msvcr100.dll', 'C:\Windows\System32\msvcr100.dll', 'BINARY')],
venv ثم قم بتشغيل python -m venv path/to/venv حيث path/to/venv هو مسار البيئة الافتراضية الخاصة بك. اختبر البيئة الافتراضية عن طريق تشغيل path/to/venv/bin/python --version.
قم بترقية وحدات البيئة الافتراضية لـ pip و setuptools و wheel عن طريق تشغيل path/to/venv/bin/python -m pip install --upgrade pip setuptools wheel.path/to/venv/bin/python -m pip install colorama yara-python psutil rfc5424-logging-handler netaddrpath/to/venv/bin/python path/to/loki/loki-upgrader.py حيث path/to/loki هو مسار مستودع Loki.sudo path/to/venv/bin/python loki.pyقم بتنزيل مصادر Yara من هنا
قد يتم اكتشاف الماسح المُجمّع بواسطة محركات مكافحة الفيروسات. يحدث هذا بسبب حقيقة أن الماسح هو برنامج Python مُجمّع يقوم بتنفيذ بعض ميزات فحص نظام الملفات والعمليات التي تُستخدم أيضاً في كود البرامج الضارة المُجمّع.
إذا كنت لا تثق في الملف التنفيذي المُجمّع، يُرجى تجميعه بنفسك.
Loki - ماسح IOC بسيط حقوق النشر (c) 2015 Florian Roth
هذا البرنامج هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة GNU العمومية العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (وفقاً لاختيارك) أي إصدار لاحق.
يتم توزيع هذا البرنامج على أمل أن يكون مفيداً، ولكن دون أي ضمان؛ حتى بدون الضمان الضمني للتسويق أو الملاءمة لغرض معين. راجع رخصة GNU العمومية العامة لمزيد من التفاصيل.
يجب أن تكون قد تلقيت نسخة من رخصة GNU العمومية العامة جنباً إلى جنب مع هذا البرنامج. إذا لم يكن الأمر كذلك، راجع http://www.gnu.org/licenses/