
سكريبت PowerShell يساعد المستجيبين للحوادث في اكتشاف آليات الثبات المحتملة للخصم.
Trawler هو سكريبت PowerShell مصمم لمساعدة المستجيبين للحوادث على اكتشاف المؤشرات المحتملة للاختراق على أنظمة ويندوز، مع التركيز بشكل أساسي على آليات الاستمرارية بما في ذلك المهام المجدولة، الخدمات، تعديلات التسجيل، عناصر بدء التشغيل، تعديلات الملفات الثنائية، وغيرها.
حاليًا، يمكن لـ Trawler اكتشاف معظم تقنيات الاستمرارية التي أشارت إليها MITRE وAtomic Red Team، مع إضافة المزيد من عمليات الكشف بشكل منتظم.
فقط قم بتنزيل وتشغيل trawler.ps1 من موجه أوامر PowerShell/CMD إداري - سيتم عرض أي اكتشافات في وحدة التحكم بالإضافة إلى كتابتها إلى CSV ('detections.csv') في مجلد العمل الحالي. سيحتوي ملف CSV المُنشأ على اسم الكشف، المصدر، المخاطر، البيانات الوصفية وتقنية MITRE ذات الصلة.
أو استخدم هذا السطر الواحد من محطة PowerShell إدارية:
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/joeavanzato/Trawler/main/trawler.ps1'))
تحتوي بعض عمليات الكشف على قوائم سماح مدمجة للمساعدة في إزالة الضوضاء من تكوينات ويندوز الافتراضية (10/2016/2019/2022) - المهام المجدولة المتوقعة، الخدمات، إلخ. بالطبع، من الممكن دائمًا للمهاجمين اختطاف هذه مباشرة والتمويه بتفاصيل دقيقة كعملية نظام افتراضية - توخ الحذر واستخدم أشكالًا متعددة من التحليل والكشف عند التعامل مع خصوم ماهرين.
إذا كانت لديك أمثلة أو أفكار لاكتشافات إضافية، فلا تتردد في تقديم Issue أو PR مع التفاصيل التقنية/المراجع ذات الصلة - قاعدة الكود فوضوية قليلاً الآن وسيتم تنظيفها بمرور الوقت.
بالإضافة إلى ذلك، إذا حددت نتائج إيجابية كاذبة واضحة، فيرجى إبلاغي بذلك عن طريق فتح Issue أو PR على GitHub! الجناة الواضحون في هذا سيكونون COMs أو خدمات أو مهام غير قياسية.
-scanoptions : تصفح للاكتشافات الممكنة واختر مجموعة فرعية باستخدام مصطلحات مفصولة بفواصل (مثل .\trawler.ps1 -scanoptions Services,Processes) أو تخطى لإجراء جميع الاكتشافات
-quiet : إخفاء مخرجات الكشف عن وحدة التحكم
-snapshot : مسار إلى مخرجات JSON سابقة من Trawler لاستخدامها كقائمة سماح.
-outpath : تحديد مسار مخصص لحفظ مخرجات الكشف (الافتراضي هو "$PSScriptRoot\detections.csv")
-drivetarget : تعريف متغير لمحرك أقراص مستهدف مُثبت (مثل .\trawler.ps1 -targetdrive "D:") - (الافتراضي هو النظام المحلي)
-daysago : تعريف عدد "الأيام الماضية" التي نريد أخذها في الاعتبار للاكتشافات المستندة إلى الوقت (الافتراضي 45)
-hashmode : تعريف خوارزمية التجزئة التي نريد استخدامها للاكتشافات المدعومة - يدعم sha1 أو md5 أو sha256 (الافتراضي sha1)
-evtx : تمكين إنشاء مصدر سجل الأحداث وكتابة الاكتشافات إلى سجل الأحداث للتطبيق تحت Source=trawler مع EID=9001 (معطل افتراضيًا)
PersistenceSniper أداة رائعة - استخدمتها بكثافة في الماضي - ولكن هناك بعض النقاط الرئيسية التي تميز هذه الأدوات:
بشكل عام، هذه الأدوات متشابهة جدًا ولكنها تقترب من المشكلة من زوايا مختلفة قليلاً - يوفر PersistenceSniper جميع المعلومات إلى المحلل للمراجعة بينما يحاول Trawler تقييد ما يتم إرجاعه إلى النتائج التي من المحتمل أن تكون آليات استمرارية خصم محتملة. ونتيجة لذلك، هناك احتمال لنتائج سلبية خاطئة مع trawler إذا قام الخصم بتقليد عنصر مسموح به بالكامل.
كمثال - سيعيد PersistenceSniper جميع خدمات ويندوز "غير الآمنة" بينما سيعيد trawler فقط تلك التي تطابق قاعدة كشف محددة، إلخ.
يدعم Trawler تحميل قائمة سماح من "لقطة" - للقيام بذلك يتطلب خطوتين.
هذا كل شيء - ستستمد جميع الاكتشافات ذات الصلة بعد ذلك من ملف اللقطة كقائمة سماح لتقليل الضوضاء وتحديد أي تغييرات محتملة قد حدثت للصورة الأساسية.
(يتم تطبيق قوائم السماح لمعظم الفحوصات ولكن ليس كلها - لا يزال قيد التنفيذ النشط)
غالبًا أثناء التحقيق، قد ينتهي الأمر بالمحللين بتثبيت محرك أقراص جديد يمثل جهاز ويندوز مصور - يدعم Trawler الآن جزئيًا فحص هذه الأقراص المثبتة من خلال استخدام المعامل '-drivetarget'.
في وقت التشغيل، سيعيد Trawler توجيه متغيرات مستوى السكريبت المؤقتة لاستخدامها في فحص العناصر المستندة إلى الملفات وسيحاول أيضًا تحميل خلايا التسجيل ذات الصلة (HKLM\SOFTWARE, HKLM\SYSTEM, NTUSER.DATs, USRCLASS.DATs) تحت HKLM/HKU مع بادئة 'ANALYSIS_'. سيحاول Trawler أيضًا تفريغ هذه الخلايا المحملة مؤقتًا عند اكتمال السكريبت.
كمثال، إذا كان لديك صورة مثبتة في موقع مثل 'F:\Test' والذي يحتوي على نظام الملفات NTFS ('F:\Test\Windows', 'F:\Test\User', إلخ) فيمكنك تشغيل trawler كالتالي؛
.\trawler.ps1 -drivetarget "F:\Test"
يرجى ملاحظة أنه نظرًا لأن trawler يحاول تحميل ملفات خلايا التسجيل من محرك الأقراص المعني، فإن تعيين مسار UNC إلى جهاز بعيد مباشر لن يعمل لأن تلك الملفات لن تكون قابلة للوصول بسبب أقفال النظام. أعمل على نهج سيتعامل مع الأجهزة البعيدة المباشرة، ترقبوا.
معظم الفحوصات الأخرى ستعمل بشكل جيد لأنها تستند بالكامل إلى قراءة خلايا التسجيل أو العناصر المستندة إلى الملفات (أو يمكن تحويلها للقيام بذلك، مثل قراءة XML للمهمة مباشرة بدلاً من استخدام cmdlets المدمجة).
سيتم مناقشة أي قيود في الفحوصات عند القيام بإعادة توجيه محرك الأقراص بشكل كامل في GitHub Wiki.
TODO
يرجى العلم أن بعض هذه التقنيات يتم اكتشافها أكثر من غيرها - على سبيل المثال، نحن لا نكتشف جميع التعديلات الممكنة للسجل بل نفحص مفاتيح معينة بحثًا عن تغييرات واضحة ونستخدم تقنية MITRE العامة "تعديل التسجيل" عندما لا تكون هناك تقنية أخرى قابلة للتطبيق. بالنسبة لعناصر أخرى مثل اختطاف COM، نقوم بفحص جميع الإدخالات في قسم التسجيل ذي الصلة، والتحقق من الأنماط "المعروفة-الجيدة" وإظهار القيم غير المعروفة أو غير المتطابقة، مما يؤدي إلى سطح كشف أكثر اكتمالاً لتلك التقنية المحددة.
لن توجد هذه الأداة لولا مجتمع InfoSec المذهل - أبرز المراجع التي استخدمتها مذكورة أدناه.