
مراقب عمليات .NET يقوم بربط CLR في الطبقة الأصلية، ويُفرغ التجميعات الانعكاسية من الذاكرة، ويتحقق من سلامة AMSI/ETW مقارنةً بالثنائيات على القرص.
أداة ويندوز صنعتها لأنني تعبت من التحديق في فروع jlaive داخل عينات البرمجيات الخبيثة دون وجود أي شيء عام يمكنه فعلياً تفكيكها أثناء التشغيل.
باختصار، هي مراقب عمليات .net يعترض clr على الطبقة الأصلية (native layer)، ويتتبع تحميلات التجميعات الانعكاسية (reflective assembly loads)، ويقوم تلقائياً باستخراج ملفات PE مباشرة من الذاكرة. كما يتحقق من سلامة amsi و etw مقابل الملفات الأصلية على القرص، مع كشف تقنيات التجاوز مثل تعديل سلاسل clr.dll والاستخدام المباشر لـ LoadFromBuffer.
أين تجد العينات؟ أنصح بالاطلاع على https://tria.ge (ليس إعلاناً) ويمكنك تنزيل أي عينة تريدها والتصفية حسب العائلة
قد تتساءل، لماذا اسم nemesis؟
لأنه يمثل الغرض الدقيق من الأداة. الـ nemesis هو شيء يقف كتحدٍّ دائم أو سبب سقوط للخصم، وهذه هي الفكرة وراء هذا المشروع.
في الأسطورة اليونانية كان nemesis روح الانتقام الإلهي، الذي يوزع العقاب على كل من تجاوز حدوده أو ظن أنه لا يُمس. ربما مبالغ فيه قليلاً بالنسبة لبرمجية خبيثة تتفاخر بأنها "fud" إن سألتني.
أنا محلل برمجيات خبيثة. إذا مارست هذه المهنة (هواية بالنسبة لي) لفترة كافية، ستبدأ برؤية نفس سلاسل التحميل مراراً وتكراراً، خاصة منذ أن انتشر jlaive (المعروف أيضاً بـ crybat) وقام كل مبتدئ بعمل fork له.
النمط بسيط بشكل غبي لكنه مزعج للغاية في التعامل معه:
something.bat → obfuscated powershell → csharp stub → your actual payload
تنقر مرتين على ملف .bat يبدو كخليط عشوائي. يشغّل cmd الـ powershell مع كومة من البيانات المهملة. يفك الـ powershell تشفير/ضغط stub بصيغة .net (aes، gzip، base64). يقوم ذلك الـ stub بتعديل amsi + etw، ويحمّل بشكل انعكاسي ملف exe/dll الحقيقي في الذاكرة، وانتهى الأمر — لا شيء مفيد يصل إلى القرص بشكل قابل للاستخدام.
هذا أزعجني. لا يوجد فعلاً أداة عامة جيدة تستهدف محاربة هذه السلسلة تحديداً — الاعتراض حيث تتحقق حمولة .net فعلياً، واستخراجها قبل أن تلتهم العملية نفسها، والتقاط تعديلات amsi/etw التي تقوم بها هذه الـ stubs دائماً. لذلك بنيت nemesis.
ليست حلاً سحرياً. لن تحل محل الـ sandbox الخاص بك. لكنها تمنحك شيئاً حقيقياً لتشغيله ضد ملف .bat مشبوه على جهاز اختبار واستخراج الآثار فعلياً.
المشغّل (Launcher.exe)
Nemesis.dll قبل تشغيل الخيط الرئيسيمكتبة nemesis (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (يُحدد النمط انطلاقاً من nLoadImage)%TEMP%\Nemesis_dumpsamsi.dll / ntdll.dll الحية مع نسخ القرص (يكشف تعديل ret الكلاسيكي على AmsiScanBuffer / EtwEventWrite).rdata الخاصة بـ clr عند تحميل clr (بعض تقنيات التجاوز تعدّل تلك بدلاً من ذلك، وهناك ورقة ممتازة من vxug حول هذا بعنوان؛ 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf )%TEMP%\Nemesis.log كما يمتلك ENABLE_VIRTUAL_TERMINAL_PROCESSING لتجنب مشاكل الطرفية التي لنقل إنها غريبة :Dباختصار: دع سلسلة الـ bat تعمل، والتقط الحمولة حيث يحمّلها الـ crypter فعلاً، وسجّل حيل التهرب على الطريق.
تحتاج visual studio 2022+ مع c++ desktop + masm (x64).
افتح Nemesis.slnx، اختر Release | x64، ابنِ الحل.
هذه هي حالة الاستخدام الفعلية — وجّهها نحو ملف bat مشبوه وانظر ما يخرج:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
الوسائط الإضافية بعد -- تُمرر إلى الهدف:
.\Launcher.exe myapp.exe -- --some-flag
مسار dll مخصص:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
الآثار:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsهي:
ليست:
LNK1104؟ لا يزال هناك شيء يحمّل nemesis.dll — اقتل الهدف وأعد البناءpwsh.exe من vcpkg أثناء البناء غير ضار، تجاهلهإذا أردت فهم ما تحاربه:
باستخدامك nemesis فإنك تقبل هذا. تُقدَّم كما هي مع عدم وجود أي ضمان — أنت تتحمل كل المخاطر.
أنت وحدك مسؤول عن الاستخدام القانوني والمصرح به (أجهزة افتراضية مخبرية، أنظمة مملوكة، إذن صريح). إلى أقصى حد يسمح به القانون، فإن المؤلفين و zypherion.tech يُخليان مسؤوليتهما عن أي أضرار أو خسائر أو مطالبات قانونية تنشأ عن الاستخدام أو سوء الاستخدام. راجع LICENSE للشروط الكاملة.
استخدام غير تجاري / شخصي / بحثي / هواية → PolyForm Noncommercial 1.0.0
استخدام تجاري (بيعه، منتج مدفوع، saas، عمل للعملاء، إلخ) → تحتاج ترخيصاً منفصلاً. polyform noncommercial لا يغطي ذلك.
تواصل معي إذا أردت ترخيصاً تجارياً:
[[email protected] / @wd6g(discord) / telegram: @ZypherionTechnologies]
ملاحظة سريعة — يجب أن أبحث في compilemethod وأصلحها، حالياً ليست ضرورية نوعاً ما لأن الـ crypters عادة لا تستخدمها إطلاقاً... لأنهم مضطرون لاستخدام
asm.load(...)كما يذكرني أنه يجب أن أفحص rdata str لأنني لم أختبر ذلك بشكل صحيح للأسف... لا تقدّم PR بكود أحمق رجاءً، لا يمكنك اعتراض الواجهات الخلفية n(Native) مثل nLoadImage بشكل عادي — يجب الحفاظ على السجلات وهذا مجرد عبث، لهذا نستخدم asm.