
أداة اكتساب الذاكرة متعددة المنصات.

WinPmem كان مشغل الحصول على الذاكرة مفتوح المصدر الافتراضي لنظام Windows لفترة طويلة. كان موجودًا سابقًا في مشروع Rekall، ولكن تم فصله مؤخرًا إلى مستودع خاص به.
هذه هي نسخة Windows. إصدار Linux، Linpmem، موجود على: https://github.com/Velocidex/Linpmem
تم تطوير هذا الكود أصلاً داخل Google ولكن تم إصداره بموجب رخصة Apache.
WinPmem هي أداة للحصول على الذاكرة الفعلية مع الميزات التالية:
مفتوح المصدر
دعم لـ Win7 - Win10، x86 + x64. يمكن استخدام WDK7600 لتضمين دعم WinXP. بشكل افتراضي، سيتم تجميع ملفات WinPmem التنفيذية المقدمة باستخدام WDK10، مما يدعم Win7 - Win10، ويتميز بكود أكثر حداثة.
ثلاث طرق قراءة مستقلة، مع طريقتين لإنشاء تفريغ ذاكرة كامل. يجب أن تعمل إحدى الطرق دائمًا حتى عند مواجهة rootkits في وضع kernel.
دعم صورة تفريغ الذاكرة الخام.
يتم استخدام واجهة جهاز قراءة بدلاً من كتابة الصورة من kernel مثل بعض أدوات التصوير الأخرى. يتيح لنا ذلك الحصول على أداة تصوير معقدة في مساحة المستخدم (مثل النسخ عبر الشبكة، التجزئة، إلخ)، بالإضافة إلى تشغيل التحليل على النظام المباشر (على سبيل المثال يمكن تشغيلها مباشرة على الجهاز).
الملفات في هذا الدليل (بما في ذلك مصادر WinPmem والملفات الثنائية الموقعة)، متاحة بموجب الرخصة التالية: رخصة Apache، الإصدار 2.0
يوجد ملفان تنفيذيان لـ WinPmem: winpmem_mini_x86.exe و winpmem_mini_x64.exe. كلا الإصدارين يحتويان على كلا المشغلين (إصدار 32 بت و 64 بت).
يشير المصطلح mini في اسم الملف الثنائي إلى أن أداة التصوير هذه هي أداة بسيطة عادية - يمكنها فقط إنتاج صور بتنسيق RAW. في الماضي قمنا بإصدار أداة تصوير WinPmem تعتمد على AFF4 ولكن لم يتم تحديثها بعد إلى المشغل الجديد. يرجى إبلاغنا إذا كنت بحاجة إلى أداة التصوير القائمة على AFF4.
برنامج Python قيد الإنشاء حاليًا ولكنه يعمل كعرض توضيحي لكيفية استخدام أداة التصوير من Python.
هذا البرنامج هو الأسهل استخدامًا للاستجابة للحوادث لأنه لا يتطلب أي تبعيات أخرى غير الملف التنفيذي نفسه. سيقوم البرنامج بتحميل المشغل الصحيح (32 بت أو 64 بت) تلقائيًا وهو مكتفي ذاتيًا.
winpmem_mini_x64.exe physmem.raw
يكتب صورة خام إلى physmem.raw باستخدام طريقة الحصول الافتراضية.
winpmem_mini_x64.exe
يستدعي طباعة الاستخدام / الدليل المختصر.
للحصول على صورة خام باستخدام طريقة MmMapIoSpace تحديدًا:
winpmem.exe -1 myimage.raw
سيتم تفريغ المشغل تلقائيًا بعد الحصول على الصورة!
نظرًا لكيفية تصميم Microsoft لوظيفة MJ READ، ستفشل القراءة من الذاكرة الفعلية في Winpmem مع STATUS_INVALID_PARAMETER إذا تم تحديد عنوان فعلي أكبر من نصف القيمة القصوى لـ UINT64. على سبيل المثال، هذا صحيح إذا أراد شخص ما القراءة في الأجزاء الأعلى من الذاكرة الفعلية و لديه ذاكرة فعلية ضخمة (أكثر من 9,223,372,036,854,775,807). يبدو هذا غير محتمل جدًا، لكن أحجام ذاكرة الوصول العشوائي اليوم تستمر في الزيادة.
يدعم كود مصدر WinPmem الكتابة إلى الذاكرة بالإضافة إلى القراءة. هذه القدرة هي أداة تعليمية رائعة حيث يمكن محاكاة العديد من تقنيات إخفاء rootkit عن طريق الكتابة إلى الذاكرة مباشرة.
يجب استخدام هذه الوظيفة بحذر شديد!
ملاحظة: نظرًا لأن هذه قدرة خطيرة إلى حد ما، فإن مشغلات الملفات الثنائية الموقعة لديها دعم الكتابة معطل. يمكنك إعادة بناء المشغلات لإنتاج ملفات ثنائية موقعة للاختبار إذا كنت تريد استخدام هذه الميزة. لا يمكن تحميل الملفات الثنائية غير الموقعة (الموقعة ذاتيًا فعليًا بشهادة اختبار) على نظام عادي بسبب أنها موقعة ذاتيًا للاختبار، ولكن يمكنك السماح بتحميل المشغلات غير الموقعة على نظام اختبار عن طريق إصدار (انظر https://docs.microsoft.com/en-us/windows-hardware/drivers/install/the-testsigning-boot-configuration-option:
Bcdedit.exe -set TESTSIGNING ON
وأعد التشغيل. سترى نص "Test Mode" صغيرًا على سطح المكتب لتذكيرك بأن هذا الجهاز مهيأ للمشغلات الموقعة للاختبار.
بالإضافة إلى ذلك، يجب أيضًا تمكين دعم الكتابة في وقت التحميل:
winpmem.exe -w -l
سيؤدي هذا إلى تحميل المشغلات وتشغيل دعم الكتابة.
Winpmem، بالإضافة إلى Linpmem، لم يكونا ليوجدا بدون عمل أسلافنا في مشروع REKALL (المتقاعد الآن): https://github.com/google/rekall.
هذا المشروع أيضًا لم يكن ممكنًا بدون دعم مجتمع DFIR الأوسع:
مساهمونا في المصادر المفتوحة: