Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
MemFiles — مجموعة أدوات CobaltStrike لكتابة الملفات التي يُنتجها Beacon إلى الذاكرة بدلاً من القرص | Kitploit
أدوات/GitHubGitHub/octoberfest7/memfiles
تسريب البياناتما بعد الاستغلالالقيادة والسيطرةالفريق الأحمر
GitHuboctoberfest7/memfiles

MemFiles

مجموعة أدوات CobaltStrike لكتابة الملفات التي يُنتجها Beacon إلى الذاكرة بدلاً من القرص

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

الأكثر شعبية

عرض الكل →

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

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

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

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

MemFiles

إخلاء مسؤولية:

هذا المشروع معقد، وقد يؤدي عدم فهم كيفية عمله واختباره بشكل كافٍ إلى تعطّل Beacons وفقدان الوصول!

أنا أشجعك بشدة على قراءة جميع الوثائق حتى قسم "التفاصيل الفنية، واعتبارات التصميم، والتعليقات"!

مقدمة

MemFiles عبارة عن مجموعة أدوات (toolkit) لـ CobaltStrike تُمكّن المشغلين (Operators) من كتابة الملفات التي تُنتجها عملية Beacon في الذاكرة، بدلاً من كتابتها على قرص النظام المستهدف. تم اختباره بنجاح على Windows 7 و10 و11؛ ويجب أن تعمل إصدارات الخوادم المقابلة دون أي مشاكل. يقتصر MemFiles على Beacons ذات بنية x64.

يحقق ذلك عن طريق ربط (Hooking) عدة NtAPI مختلفة داخل NTDLL.dll وإعادة توجيه الاستدعاءات إلى تلك الواجهات البرمجية إلى دوال تم حقنها في مساحة ذاكرة عملية Beacon.

يفترض MemFiles وجود نسخة نظيفة/غير مربوطة (unhooked) من NTDLL في عملية Beacon. لا توجد أي ضمانات بشأن جدوى MemFiles في عملية Beacon حيث لا تزال خطافات (hooks) EDR موجودة. قم بإصلاح/تحديث NTDLL قبل استخدام MemFiles!

يتم تعريف دليل "خاص" غير موجود ضمن مجموعة أدوات MemFiles؛ أي ملفات تُكتب إلى هذا الدليل الخاص سيتم التقاطها بواسطة MemFiles وكتابتها في الذاكرة حيث يمكن تنزيلها لاحقاً إلى Teamserver.

MemFiles متوافق مع معظم (وليس كل) الأدوات التي تعمل داخل عملية Beacon ويمكن توجيهها لكتابة مخرجاتها إلى دليل محدد. لا يتطلب صلاحيات مرتفعة للعمل.

يتضمن ذلك:
-BOF's
-تجميعات .NET التي تُشغَّل سطرياً (inline) باستخدام شيء مثل inline-executeAssembly
-ملفات PE التي تُشغَّل سطرياً باستخدام شيء مثل Inline-Execute-PE

كل هذه متوافقة لأنها تعمل داخل عملية Beacon، حيث تم ربط NtAPI ذات الصلة.

لا يعمل MemFiles مع أشياء مثل:
-execute-assembly
-shell
-run

لا شيء من هذه متوافق لأنها جميعاً تُنشئ عمليات أخرى لم يتم ربط NtAPI الخاصة بها.

تم اختبار MemFiles بنجاح مع أدوات مثل Rubeus و SharpHound و Procdump و Powershell عندما يتم تشغيلها داخل عملية Beacon.

الإعداد

استنسخ المستودع وعدّل اختيارياً متغير hookdir المعرّف في السطر 56 في كل من /PIC/Source/NtCreateFile.c و /PIC/Source/NtOpenFile.c. هذا المتغير هو الدليل "الخاص" الذي يشير إلى MemFiles بأنه يجب أن يعترض الملف الذي يتم إنشاؤه. يتم تعيين متغير hookdir على "redteam" افتراضياً. تأكد من أن هذا المتغير ليس دليلاً حقيقياً على النظام المستهدف، وأنه نفسه في كلا الملفين!

image

شغّل الأمر 'make all' لتجميع كل من BOF's اللازمة ودوال PIC.

قم بتحميل MemFiles.cna في عميل CobaltStrike. تأكد من أن الدليل الذي يعمل منه CobaltStrike قابل للكتابة من قبل المستخدم الخاص بك؛ يقوم MemFiles بإنشاء ملف نصي هناك (memfiles.txt) لضمان توفر البيانات المطلوبة لعمل MemFiles.

يمكن تكوين MemFiles ليتم تثبيته في كل Beacon جديد يتصل بـ Teamserver؛ ويتم ذلك باستخدام عنصر القائمة MemFiles->Config. افتراضياً، لا يقوم MemFiles بالتثبيت التلقائي في Beacons الجديدة. لاحظ أن هذا إعداد عام؛ إذا كان هناك عميلان متصلان بـ Teamserver وكلاهما يحمّل MemFiles.cna، وإذا قام العميل A بتبديل إعداد "Install on beacon initial"، فسيتم تطبيق التغيير أيضاً على العميل B!

image

الأوامر

يتكون MemFiles من 4 أوامر موجهة للهدف تقوم بتشغيل BOF's وأمر داخلي واحد يتلاعب بهيكل بيانات المشروع.

موجهة للهدف:

  1. meminit
  2. memlist
  3. memfetch
  4. memclean

هيكل البيانات الداخلي:

  1. memtable

meminit

meminit مسؤول عن تثبيت MemFiles في عملية Beacon.

قائمة NtAPI التي يربطها MemFiles هي كما يلي:

  1. NtCreateFile
  2. NtWriteFile
  3. NtClose
  4. NtQueryVolumeInformationFile
  5. NtQueryInformationFile
  6. NtSetInformationFile
  7. NtOpenFile
  8. NtReadFile
  9. NtFlushBuffersFile

ينفذ meminit الإجراءات الرئيسية التالية:

  1. يرسل دالة استبدال مستقلة عن الموقع (position independent) لكل NtAPI مربوط إلى Beacon
  2. ينشئ هيكلاً في ذاكرة Beacon لاحتواء قيم مختلفة مطلوبة بواسطة MemFiles طوال دورة حياته
  3. يثبت عنوان هذا الهيكل في كل واحدة من دوال الاستبدال PIC
  4. يخصص ذاكرة ويحقن كل دالة استبدال PIC في ذاكرة عملية Beacon
  5. ينشئ ترامبولين (trampoline) لكل NtAPI مربوط
  6. يربط كل NtAPI مدرج عن طريق استبدال بعض/كل البايتات، معيداً توجيه التنفيذ إلى دالة الاستبدال PIC.

memlist

يُستخدم memlist لعرض جميع الملفات المخزنة حالياً في الذاكرة بواسطة MemFiles لـ Beacon معين.
image
يتم عرض عدة حقول، وأكثرها صلة وأهمية للمستخدم هي اسم الملف وطول البيانات المخزنة.

memfetch

يُستخدم memfetch لاسترجاع الملفات المخزنة في الذاكرة بواسطة MemFiles لـ Beacon معين.

افتراضياً، سيقوم memfetch باسترجاع أي وجميع الملفات المخزنة بواسطة MemFiles والتي تم إغلاق "مقبضها" (handle). تم اتخاذ هذا القرار التصميمي لتجنب أي مشكلات تتعلق بمحاولة تنزيل ملف لم ينتهِ برنامج/تطبيق من الكتابة إليه بعد.

هذا يعني أنه إذا فشل برنامج/تطبيق في إغلاق المقبض الذي فتحه على الملف، فلن يتم تنزيل الملف بواسطة memfetch.
يمكن التخفيف من ذلك باستخدام وسيط "force" مع memfetch، أي 'memfetch force' لاسترجاع جميع الملفات من الذاكرة بغض النظر عن حالة مقبضها.

الملفات التي يسترجعها memfetch من الذاكرة تُرسل مرة أخرى إلى Teamserver كتنزيل ويمكن مزامنتها من Teamserver إلى العميل عبر تبويب Downloads في CobaltStrike.

بمجرد تنزيل ملف بواسطة Teamserver، يتم مسحه من الذاكرة في عملية Beacon وتتم إزالة إدخاله كما يظهر عبر memlist.

memclean

memclean مسؤول عن التنظيف وإزالة MemFiles من عملية Beacon.

حالة الاستخدام القياسية لـ MemFiles تتضمن تثبيته وتركه مثبتاً طوال عمر Beacon؛ ومع ذلك، إذا أراد المرء استخدام MemFiles بالتزامن مع أداة لالتقاط واسترجاع مخرجات الملفات، ثم إلغاء تثبيت MemFiles بحيث لا تبقى آثاره في الذاكرة، يمكن استخدام memclean لإعادة عملية Beacon إلى حالتها الأصلية قبل تشغيل meminit.

يتضمن ذلك:

  1. إلغاء ربط كل NtAPI مربوط
  2. تصفير وتحرير كل ترامبولين تم إنشاؤه
  3. تصفير وتحرير كل دالة استبدال PIC محقونة
  4. تصفير وتحرير هيكل MemFiles

لاحظ أنه قبل أن ينفذ memclean هذه الإجراءات، سيقوم بتنزيل أي ملفات مخزنة في الذاكرة بواسطة MemFiles قسراً. إذا كان المرء يعتزم استخدام MemFiles مع أداة واحدة ثم إزالته، يمكنه تخطي استخدام memfetch واستخدام memclean فقط لاسترجاع الملفات وإزالة MemFiles من عملية Beacon دفعة واحدة.

memtable

يُستخدم memtable لعرض وتتبع المعلومات المتعلقة بـ Beacons التي تم تثبيت MemFiles فيها حالياً. كما يعرض معلومات التكوين العامة.

كل عميل CobaltStrike لديه memtable الخاص به؛ يبذل MemFiles جهوداً كبيرة لضمان تزامن بياناته بين جميع عملاء CobaltStrike المتصلين بحيث يمكن استخدام MemFiles من قبل جميع المشغلين في جميع Beacons. لمزيد من المعلومات حول هذا، راجع "اعتبارات التصميم والتعليقات".

image

الاستخدام

قم بتهيئة MemFiles في Beacon باستخدام أمر meminit. يمكن تكوين ذلك ليحدث تلقائياً عن طريق تبديل الخيار في قائمة MemFiles->Config.

image

مع تهيئة MemFiles، يمكنك الآن استخدام أدواتك المفضلة لكتابة الملفات في الذاكرة! الطريقة التي تفعل بها ذلك ستعتمد على الأداة المحددة؛ بعضها يسمح لك بتحديد دليل لإخراج ملفات متعددة إليه، بينما يسمح البعض الآخر بتحديد مسار مطلق لملف واحد يتم إنشاؤه بواسطة الأداة. يمكن رؤية بعض الأمثلة أدناه:

SharpHound:

هنا نحدد أن SharpHound يجب أن يخرج جميع الملفات المنتجة إلى دليل c:\redteam\ (دليل MemFiles الخاص بنا) وأنه لا يجب ضغط الملفات؛ لا يدعم MemFiles قراءة البرامج للملفات من الذاكرة، بل كتابتها فقط، لذا فإن وظيفة الضغط في SharpHound لا تعمل.

image

Rubeus:

يتم استخدام أمر "dump" مع Rubeus ونوجهه لإرسال جميع مخرجات وحدة التحكم إلى ملف (يقع في دليلنا الخاص)

تنزيل الأداة