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