Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
RogueAssemblyHunter — Rogue Assembly Hunter هي أداة لاكتشاف وحدات .NET CLR 'المثيرة للاهتمام' في العمليات الجارية. | Kitploit
أدوات/GitHubGitHub/bohops/rogueassemblyhunter
أدوات دفاعيةتحليل الذاكرة الجنائيالتحقيق الجنائي الرقميتحليل البرمجيات الخبيثةالاستجابة للحوادث
GitHubbohops/rogueassemblyhunter

RogueAssemblyHunter

Rogue Assembly Hunter هي أداة لاكتشاف وحدات .NET CLR 'المثيرة للاهتمام' في العمليات الجارية.

عرض المستودع
12010منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

__________ _____ . .
_
____ \ ____ ____ __ __ ____ / _ \ ______ ______ ____ _ | | | .. | // _ \ / __| | _/ __ \ / /\ \ / // __// __ \ / | __ | |< | | | | ( <> ) // > | /\ / / | \ \ _ \ /| Y Y \ _\ \ |_ | || /_/_ /|/ _ > _| /____ >____ >___ >|| / /____/ | / // / / / / / / / /
___ ___ __
/ | \ __ __ / | ___________ / ~ \ | / \ __/ __ _ __
\ Y / | / | \ | \ /| | / _| /|
/|
| /
| _
>
|
/ / /

صائد التجمعات المارقة

صائد التجمعات المارقة هو أداة لاكتشاف وحدات CLR .NET 'المثيرة للاهتمام' في العمليات الجارية.

  • المؤلف: @bohops
  • الترخيص: MIT
  • المشروع: https://github.com/bohops/RogueAssemblyHunter

الخلفية

.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)، تم إنشاء صائد التجمعات المارقة من أجل:

  • فحص (جميع) عمليات .NET الجارية ('المدارة') بحثًا عن وحدات CLR مثيرة للاهتمام (مثل الوحدة (الوحدات) التي تشكل 'تجميعًا')
  • فحص عملية .NET واحدة ('مدارة') (بواسطة PID) بحثًا عن وحدات CLR مثيرة للاهتمام
  • مراقبة العمليات المنشأة حديثًا ومحاولة فحصها بحثًا عن وحدات CLR مثيرة للاهتمام
  • دعم عدة قدرات 'صيد' لاكتشاف الوحدات المحملة في الذاكرة، وحالة توقيع الوحدات (إذا تم تحميلها من القرص)، والوحدات المحملة من أدلة مثيرة للاهتمام، ووحدات المنتحلين (مثل مراجع الملفات المزيفة).
  • دعم وظيفة تصدير وحدات CLR (نقل سريع من Get-ClrReflection)
  • إلهام المزيد من الأدوات والتقنيات المثيرة للاهتمام

المتطلبات والتبعيات الرئيسية

  • التشغيل تحت سياق مستخدم/عملية متميزة
  • .NET Framework 4.6.1+
  • .NET CLRMD - مكتبة تحليل وقت تشغيل Microsoft.Diagnostics.Runtime (حزمة NuGet)
  • ILMerge - رابط ثابت (حزمة NuGet)
  • ... وحزم NuGet الداعمة في Visual Studio.

ملاحظات ونصائح وتحذيرات

  • التشغيل كمستخدم متميز مع سلامة عالية/النظام.
  • 'عمليات الصيد' تجريبية وليست مضمونة لتقديم نتائج كاملة/صحيحة. احذر من النتائج الإيجابية الخاطئة (مثل الوحدات الموقعة) وتحقق وفقًا لذلك.
  • يستخدم RogueAssemblyHunter CLRMD للاتصال بالعمليات الحية، مما قد يؤدي إلى نتائج مثيرة للاهتمام.
  • نظرًا لطبيعة المسح الضوئي لـ RogueAssemblyHunter، هناك احتمال لظروف السباق والنتائج المفقودة. فكر في ضبط الإعدادات باستخدام مفاتيح --checks و --sleep للمساعدة (خاصة في وضع 'المراقبة'). في بعض الحالات، قد يكون من الصعب 'التقاط' تحميل تجميع معين بسبب سرعة التنفيذ (مثل execute-assembly والعمليات المؤقتة).
  • الهندسة المعمارية ('البتات') وإصدارات .NET مهمة (مثل 4+) للتفاعل مع العمليات البعيدة باستخدام مكتبات .NET CLRMD.
    • لتحقيق أقصى قدر من الفحص/التغطية، قم ببناء وتشغيل هذا البرنامج لحالات استخدام x86 و x64.
    • سيحاول وضع مسح العمليات الاتصال بجميع العمليات الجارية بغض النظر عن 'البتات'. وبخلاف ذلك، سيفشل وفقًا لعدم تطابق الهندسة المعمارية.
  • تم اختباره على Windows 10 Pro 2H1H و Windows Server 2016 Standard 1607. قد يعمل على إصدارات أخرى مع .NET Framework المناسب.
  • تم تضمين مصدر مشروع Visual Studio مع حزم NuGet، ونص PowerShell، والثنائيات المصدرة مع هذا المشروع.
  • يتضمن Notice.md إخلاء مسؤولية المشروع ومعلومات الترخيص.
  • قم بالتشغيل على مسؤوليتك الخاصة (ولا تمانع كودي السيئ ;) )!

الاستخدام

root@kitploit:~
[*] المعلمات:
    
    --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' للتخصيص.

    - sig-status    : صيد توقيع الملف. تحليل وحدات CLR ذات حالة توقيع شاذة (مثل غير موقعة). ملاحظة: هذا تجريبي. النتائج الإيجابية الخاطئة ممكنة.
                      قم بتعديل '_huntSigExclusionsFilter' للتخصيص.
    
    - imposter-file : صيد وحدة CLR غير متوقعة. تحليل وحدة CLR مع دعم ملف قرص مشبوه. تجريبي.
    
    - list          : التكرار عبر جميع وحدات CLR وسردها وفقًا لذلك.


[*] أمثلة الاستخدام
    
    - مثال 1 : مسح العمليات وتشغيل جميع عمليات الصيد للعمليات 64 بت القابلة للوصول (باستثناء 'list') -
                  RogueAssemblyHunter_x64.exe --mode=sweep
    
    - مثال 2 : مسح العمليات، سرد جميع وحدات CLR في العمليات المُدارة 32 بت القابلة للوصول، وعرض معلومات الخطأ -
                  RogueAssemblyHunter_x86.exe --mode=sweep --hunt=list --debug

    - مثال 3 : مراقبة العمليات الجديدة، مسح جميع وحدات CLR (إذا كانت مُدارة و 64 بت)، عدم مسح عملية RogueAssemblyHunter، وإجراء فحصين مع تأخير 3 ثوانٍ بينهما -
                  RogueAssemblyHunter_x64.exe --mode=watch --suppress --checks=2 --sleep=3

    - مثال 4 : مسح عملية واحدة بواسطة PID، سرد نتائج وحدات CLR في الذاكرة فقط، وتصدير وحدات CLR إلى المسار المحدد -
                  RogueAssemblyHunter_x86.exe --mode=process --pid=4650 --hunt=memory-only --export=c:\evilassemblies\
    
    - مثال 5 : مسح العمليات، سرد نتائج وحدات CLR في الذاكرة فقط للعمليات 64 بت القابلة للوصول، عدم مسح عملية RogueAssemblyHunter، وعدم إظهار لافتة العنوان -
                  RogueAssemblyHunter_x64.exe --mode=sweep --hunt=memory-only --suppress --nobanner

ملفات الإصدار: Invoke-RogueAssemblyHunter والثنائيات المترجمة

للراحة، تم تضمين نص PowerShell مع ثنائيتين مترجمتين (RogueAssemblyHunter_x64.exe و RogueAssemblyHunter_x86.exe) في مجلد \Release. لا تتردد في التعديل لتناسب حالات الاستخدام الخاصة بك (مثل النشر والتضمين والفحوصات والنوم وما إلى ذلك).

مثال الاستخدام:

تشغيل Invoke-RogueAssemblyHunter في وضع المسح والتحقق من جميع خيارات الصيد

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter

تشغيل Invoke-RogueAssemblyHunter في وضع المراقبة والتحقق من جميع خيارات الصيد

root@kitploit:~
cd c:\path\to\RogueAssemblyHunter
import-module .\Invoke-RogueAssemblyHunter.ps1
Invoke-RogueAssemblyHunter -ScanMode watch

تجزئات SHA256:

root@kitploit:~
e804711a8b6469f1b13b388de47dfa6dde1c85279d365db7b6e19e1644990fa6  Invoke-RogueAssemblyHunter.ps1
cc985d918e566671aa209142abc55bd798ca6c1a18730b785ac8c18d489736c3  RogueAssemblyHunter_x64.exe
ae3aead43871e263cd8465d5356c4daaae0635714321f872c931ec825008287a  RogueAssemblyHunter_x86.exe

خريطة الطريق

  • تحليل ملف التفريغ المُدار (.dmp)
  • تحسين فحص (فحوصات) حالة التوقيع
  • تحسينات الإخراج (مثل json)
  • إصلاحات الاستقرار والأخطاء

الإشادات والإلهام والموارد

  • Hunting For In-Memory .NET Attacks | بقلم جو ديسيمون (@dez_)
  • Get-ClrReflection | بقلم جو ديسيمون (@dez_)
  • Get-InjectedThread | بقلم جاريد أتكينسون (@jaredcatkinson)
  • pe-sieve | بقلم hasherezade (@hasherezade)
  • CLR MD — Analyzing Live Process | بقلم هارشا
  • How to enumerate Modules in each App Domain using ClrMD | بقلم سوكيش أشوك كومار
  • WMIProcessWatcher | بقلم تيم مالكوم فيتر (@malcomvetter)
تنزيل الأداة