
البحث السريع والتقصي عبر الأدلة الجنائية لنظام ويندوز
توفر Chainsaw قدرة قوية على "الاستجابة الأولى" لتحديد التهديدات بسرعة داخل الأدلة الجنائية لنظام ويندوز مثل سجلات الأحداث وملف MFT. تقدم Chainsaw طريقة عامة وسريعة للبحث في سجلات الأحداث عن الكلمات المفتاحية، ومن خلال تحديد التهديدات باستخدام الدعم المدمج لقواعد كشف Sigma، وعبر قواعد كشف Chainsaw المخصصة.
يمكن العثور على معلومات موسعة في Wiki الخاص بهذه الأداة: https://github.com/WithSecureLabs/chainsaw/wiki
في WithSecure Countercept، نستوعب مجموعة واسعة من مصادر القياس عن بُعد من نقاط النهاية عبر وكيل EDR الخاص بنا لتقديم خدمة الكشف والاستجابة المُدارة. ومع ذلك، هناك ظروف نحتاج فيها إلى تحليل الأدلة الجنائية بسرعة والتي لم يلتقطها EDR الخاص بنا، ومن الأمثلة الشائعة التحقيقات في الاستجابة للحوادث على نظام لم يكن فيه EDR الخاص بنا مثبتًا وقت الاختراق. تم إنشاء Chainsaw لتزويد صائدي التهديدات ومستشاري الاستجابة للحوادث لدينا بأداة لإجراء فرز سريع للأدلة الجنائية في هذه الظروف.
توفر سجلات أحداث ويندوز مصدرًا غنيًا بالمعلومات الجنائية للتنقيب عن التهديدات وتحقيقات الاستجابة للحوادث. لسوء الحظ، يمكن أن تكون معالجة سجلات الأحداث والبحث فيها عملية بطيئة ومستهلكة للوقت، وفي معظم الحالات تتطلب عبء البنية التحتية المحيطة – مثل حزمة ELK أو نسخة Splunk – للتنقيب بكفاءة في بيانات السجل وتطبيق منطق الكشف. غالبًا ما يعني هذا العبء أن الفرق الزرقاء غير قادرة على الفرز السريع لسجلات أحداث ويندوز لتوفير التوجيه والاستنتاجات المطلوبة لدفع تحقيقاتهم قدمًا. تحل Chainsaw هذه المشكلة لأنها تتيح البحث والتنقيب السريع في سجلات أحداث ويندوز.
في وقت كتابة هذا النص، هناك عدد قليل جدًا من الأدوات مفتوحة المصدر والمستقلة التي توفر طريقة بسيطة وسريعة لفرز سجلات أحداث ويندوز، وتحديد العناصر المثيرة للاهتمام داخل السجلات، وتطبيق صيغة قاعدة منطق الكشف (مثل Sigma) لكشف علامات النشاط الخبيث. في اختباراتنا، واجهت الأدوات الموجودة صعوبة في تطبيق منطق الكشف بكفاءة على كميات كبيرة من سجلات الأحداث مما يجعلها غير مناسبة للسيناريوهات التي تتطلب فرزًا سريعًا.
باستخدام المعاملين --sigma و--mapping يمكنك تحديد دليل يحتوي على مجموعة فرعية من قواعد كشف SIGMA (أو مستودع SIGMA git بالكامل فقط) وستقوم chainsaw تلقائيًا بتحميل هذه القواعد وتحويلها وتشغيلها مقابل سجلات الأحداث المقدمة. يخبر ملف التعيين chainsaw بالحقول التي يجب استخدامها في سجلات الأحداث لمطابقة القواعد. بشكل افتراضي، تدعم Chainsaw مجموعة واسعة من أنواع سجلات الأحداث، بما في ذلك على سبيل المثال لا الحصر:
| نوع الحدث | معرف الحدث |
|---|---|
| إنشاء عملية (Sysmon) | 1 |
| اتصالات الشبكة (Sysmon) | 3 |
| تحميل الصور (Sysmon) | 7 |
| إنشاء ملف (Sysmon) | 11 |
| أحداث التسجيل (Sysmon) | 13 |
| كتل نصوص Powershell | 4104 |
| إنشاء عملية | 4688 |
| إنشاء مهمة مجدولة | 4698 |
| إنشاء خدمة | 7045 |
راجع ملف التعيين للحصول على القائمة الكاملة للحقول المستخدمة لكشف القواعد، ولا تتردد في توسيعها حسب احتياجاتك.
بالإضافة إلى دعم قواعد sigma، تدعم Chainsaw أيضًا صيغة قواعد مخصصة. في المستودع ستجد دليل rules الذي يحتوي على قواعد Chainsaw متنوعة تتيح للمستخدمين:
مع إصدار Chainsaw v2، قررنا عدم تضمين مستودعي Sigma Rules وEVTX-Attack-Samples كوحدات فرعية لـ Chainsaw. نوصي باستنساخ هذه المستودعات بشكل منفصل لضمان حصولك على أحدث الإصدارات.
إذا كنت لا تزال بحاجة إلى حزمة شاملة تحتوي على ملف Chainsaw التنفيذي وقواعد Sigma وسجلات الأحداث النموذجية، يمكنك تنزيلها من قسم الإصدارات في مستودع GitHub هذا. في قسم الإصدارات هذا ستجد أيضًا إصدارات ثنائية مُجمّعة مسبقًا لـ Chainsaw فقط لمنصات ومعماريات متنوعة.
إذا كنت تريد تجميع Chainsaw بنفسك، يمكنك استنساخ مستودع Chainsaw:
git clone https://github.com/WithSecureLabs/chainsaw.git
وتجميع الكود بنفسك عن طريق تشغيل: cargo build --release. بمجرد انتهاء البناء، ستجد نسخة من الملف التنفيذي المُجمّع في مجلد target/release.
تأكد من البناء باستخدام علامة --release لأن هذا سيضمن وقت تنفيذ أسرع بكثير.
إذا كنت تريد رؤية شكل Chainsaw عند تشغيله بسرعة، يمكنك استنساخ مستودعي Sigma Rules وEVTX-Attack-Samples:``` git clone https://github.com/SigmaHQ/sigma git clone https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES.git
ثم شغّل Chainsaw باستخدام المعاملات أدناه:```
./chainsaw hunt EVTX-ATTACK-SAMPLES/ -s sigma/ --mapping mappings/sigma-event-logs-all.yml
├───devShells │ └───x86_64-linux │ └───default: development environment 'nix-shell' ├───formatter │ └───x86_64-linux: package 'alejandra-3.1.0' └───packages └───x86_64-linux ├───chainsaw: package 'chainsaw-2.10.1' └───default: package 'chainsaw-2.10.1'
Chainsaw، كحزمة، متاح عبر [nixpkgs](https://search.nixos.org/packages?query=chainsaw).
إذا كنت تستخدم NixOS، فقط أضف `chainsaw` إلى ملف تكوين النظام الخاص بك.
ومع ذلك، إذا كنت لا تستخدم NixOS، لا يزال بإمكانك تثبيت Chainsaw عبر Nix. الطريقة الموصى بها هي عبر `nix-shell`، والتي ستعدل مؤقتًا متغير البيئة $PATH الخاص بك.
للقيام بذلك، يرجى تشغيل ما يلي:```
nix-shell -p chainsaw
يمكنك أيضًا الاستفادة من كون هذا المستودع flake، ويمكنك تشغيل ما يلي:``` nix profile install github:WithSecureLabs/chainsaw
ومع ذلك، إذا كنت ترغب في بناء chainsaw بنفسك، باستخدام Nix، يمكنك مرة أخرى الاستفادة من `flake.nix`، الذي يتم توفيره مع هذا المستودع.
لبناء الملف التنفيذي، يرجى تشغيل الأمر التالي، في الدليل الجذر للمستودع المستنسخ```
nix build .#
سيؤدي هذا إلى إنشاء دليل ./result، مع وجود ثنائي chainsaw تحت ./result/bin/chainsaw.