
Rogue Assembly Hunter هي أداة لاكتشاف وحدات .NET CLR 'المثيرة للاهتمام' في العمليات الجارية.
__________ _____ . .
_____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | ..
| // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | |
| | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ |
|| /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ |
/ // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________
/ ~ \ | / \ __/ __ _ __
\ Y / | / | \ | \ /| | /
_| /|/|| /| _ >|
/ / /
صائد التجمعات المارقة هو أداة لاكتشاف وحدات CLR .NET 'المثيرة للاهتمام' في العمليات الجارية.
.NET هي منصة تطوير وإطار عمل تشغيلي قوي وقادر على بناء وتشغيل تطبيقات .NET المُدارة. على مدى السنوات القليلة الماضية، تم اعتماد .NET من قبل الفرق الحمراء (وأمثالها) لتنفيذ أدوات دعم العمليات الهجومية. على وجه الخصوص، كان الانتقال من PowerShell الهجومي إلى .NET قفزة منطقية (للعديد) بسبب الرؤية المتزايدة والفرص الانتهازية الموجودة في PowerShell v5+. ونتيجة لذلك، تم استخدام الأدوات والتقنيات الهجومية الخاصة بـ .NET بنجاح للتهرب من قدرات الدفاع القائمة على المضيف، وتجاوز التحكم في التطبيقات، وبناء/تجميع/تسليم/تنفيذ التعليمات البرمجية الضارة (على غرار PowerShell).
من منظور الوقاية، تقوم Microsoft بالمزيد لمكافحة التهديدات الخاصة بـ .NET وتقليل سطح الهجوم الإجمالي لـ .NET. على سبيل المثال، أضافت Microsoft قدرات فحص AMSI في .NET Framework 4.8، وآليات WDAC/WLDP فعالة للغاية. من منظور الكشف/الاستجابة، فإن المزيد من الرؤية والتحليل المتعمق في نظام .NET البيئي مفيد دائمًا لاكتشاف طرق جديدة لمكافحة التهديدات التي تركز على .NET.
في عام 2017، كتب جو ديسيمون (@dez_) مقالة رائعة بعنوان Hunting For In-Memory .NET Attacks. لا تزال المقالة ذات صلة اليوم، حيث تحدد ناقلات الهجوم الحديثة لـ .NET بالإضافة إلى التقنيات القائمة على الطلب والحدث للكشف. ورافق المقالة إصدار أداة (Get-ClrReflection) للكشف الاستباقي (واسترجاع) وحدات CLR .NET في الذاكرة التي تفتقر إلى مرجع قرص مناسب. مستوحى من عمل جو والاستفادة من قدرات التحليل المتعمق لمكتبة تشخيص وقت التشغيل CLRMD (+ قدرات الوصول إلى البيانات اللاحقة لـ mscordacwks.dll)، تم إنشاء صائد التجمعات المارقة من أجل:
[*] المعلمات:
--mode=<.> : مطلوب | تحديد وضع التحليل. الخيارات تشمل sweep, process, watch.
--hunt=<.> : اختياري | تحديد نوع مسح الصيد للعثور على وحدات CLR مثيرة للاهتمام. حدد all (افتراضي)، memory-only، unusual-dir،
sig-status، imposter-file، أو list.
--export=<.> : اختياري، تجريبي | تحديد مسار ملف لتصدير وحدات CLR المحملة لمسوحات الصيد في الذاكرة ومسوحات صيد ملفات المنتحلين
(مثل --hunt=memory-only/imposter-file/all).
--pid=<.> : اختياري | تحديد عملية مستهدفة بواسطة PID. يجب استخدامه مع معلمة/قيمة --mode=process.
--checks=<.> : اختياري | تحديد قيمة لدورات المسح. قد يساعد ذلك في تقليل حالات فقدان ظروف السباق أثناء المسوحات ولكنه قد يكرر إخراج النتائج.
القيمة الافتراضية هي 1.
--sleep=<.> : اختياري | تحديد قيمة لثواني النوم. قد يساعد ذلك في تقليل حالات فقدان ظروف السباق أثناء المسوحات عن طريق تأخير دورة الفحص.
القيمة الافتراضية هي 0 ثانية.
--debug : اختياري | عرض معلومات الاستثناء (مثل أخطاء اتصال العملية).
--nobanner : اختياري | إخفاء لافتة العرض. مفيد للتنفيذ مع نص PowerShell أو لحالات الاستخدام التي تستخدم الأتمتة.
--suppress : اختياري | عدم مسح عملية RogueAssemblyHunter أثناء --mode=sweep أو --mode=watch.
--help : اختياري | عرض هذه المساعدة. هذا سيتجاوز أي معلمات سطر أوامر أخرى ويخرج من التطبيق. *هذا هو الوضع الافتراضي بدون معلمات.
[*] الأوضاع (--mode=)
- sweep : مسح/التكرار عبر جميع العمليات (ملاحظة: سيتم مسح العمليات من نفس الهندسة المعمارية/'البتات' فقط. قم بالتجميع للتشغيل لـ x86/x64/إلخ).
- process : مسح عملية واحدة. استخدم مع --pid=<PID>.
- watch : مسح العمليات الجديدة عند إنشائها. اضبط سمات المسح باستخدام --checks و --sleep. (ملاحظة: هذا تجريبي. ظروف السباق محتملة.)
[*] عمليات الصيد (--hunt=)
- all : القيمة الافتراضية. تحليل مع جميع خيارات الصيد (باستثناء 'list').
- memory-only : صيد الذاكرة. تحليل وحدات CLR التي لا يدعمها قرص.
- unusual-dir : صيد الدليل غير المعتاد. تحليل وحدات CLR المحملة خارج الأدلة 'العادية'.
قم بتعديل '_huntUnusualDirectoryFilter' للتخصيص.