https://github.com/ShaneK2/inVtero.net/blob/master/quickdumps/publish.zip
يستخدم Linux خوادم الرموز لتحليل الكتابة، وهو يعمل فقط ;)
تحقق من إصدار inVteroCore لتوفير التكامل لـ XEN وVMWare على Linux (أو في أي مكان يتم تشغيل CORECLR فيه، OSX وFBSD)
##$ هام (مستخدمو Windows على .NET) => أنت بحاجة إلى تسجيل msdia140.dll "cmd /c regsvr32 msdia140.dll" (انظر الرمز البريدي)
لا حاجة للتكوين، كتابة ديناميكية/بطية بالكامل
واجهة مستخدم جديدة لتحرير التنسيقات المدعومة للذاكرة (ديس/تجميع وتصحيح). استخدم "Loader()" على مثيل vtero مثل؛
Loader(test(MemList))
قم بتغيير سلسلة MemoryDump للإشارة إلى تفريغ الذاكرة. مثال على المشي على تفريغ الذاكرة واكتب شرح النظام في Analysis.py، راجع WalkProcListExample()
quickdumps
>>> MemList = [ "c:\temp\win10.64.xendump" ]
>>> test(MemList)
++++++++++++++++++++++++++++++ ANALYZING INPUT [c:tempwin10.64.xendump] ++++++++++++++++++++++++++++++
PART RUNTIME: 00:00:08.5211677 (seconds), INPUT DUMP SIZE: 4,303,692,448.00 bytes.
SPEED: 466,980 KB / second (all phases aggregate time)
++++++++++++++++++++++++++++++ DONE WITH INPUT [c:tempwin10.64.xendump] ++++++++++++++++++++++++++++++
>>> Loader(vtero)
عمليات البحث/الاستخراج وبرامج Hypervisor (بما في ذلك المتداخلة) في عمليات تفريغ الذاكرة باستخدام تقنيات استبطان الآلة الافتراضية المستقلة ذات البنية الدقيقة. أدوات تحليل الذاكرة الفعلية عالية الأداء ومتعددة المنصات.
إصدار x64 |
---|
يعد Quickdumps مثالاً على استخدام واجهة برمجة التطبيقات inVtero.net لاستخراج الذاكرة الفعلية والتحقق من صحتها.
الطريقة التي نقوم بها بتهيئة ترجمة العناوين الافتراضية إلى المادية، لا توجد تبعيات على تنسيق ملف الإدخال. أي .DMP، .RAW، .DD يجب أن يكون جيدًا. هناك مشكلة كبيرة، لسوء الحظ، إذا كان تنسيق الالتقاط الأساسي يستخدم أحد أشكال تخزين النطاقات (أي لا يستهلك مساحة تخزين فعلية للصفحات الفارغة أو غير الحالية) فقد يختلف عدد الأميال المقطوعة. هناك الكثير من الأدوات لتحويل مخلفات الذاكرة والتقلبات - تعتبر rekal من الأماكن الجيدة للبدء. الصورة النقطية. توجد ملفات DMP في ما يجب عمله لتسهيل تحليل Liveump (تعمل الأشياء حاليًا بشكل أفضل إذا قمت بإجراء شاشة زرقاء تم تشغيلها يدويًا مع تكوين تفريغ كامل أو استخدام أداة نوع dd خام لجهة خارجية).
يتم استخدام العديد من المفاهيم لضمان تفاعلنا مع المستخدم فقط عند الحاجة. وبالمثل، بالنسبة لمشروع Actaeon github @eurecom-s3/actaeon، الهدف الأساسي هو تحديد موقع صفحة VMCS والاستفادة منها من أجل تحديد موقع EPTP (مؤشر جدول الصفحة الممتد) الذي تم تكوينه والمطلوب لتحديد موقع الصفحات الفعلية التي تنتمي إلى مثيل نظام التشغيل الضيف. قام Google @google/rekall rekal بعد ذلك بتنفيذ تطبيق أكثر اتساعًا يتطلب من المستخدم تشغيل وحدة Linux kernel على النظام الذي ينشأ منه تفريغ ذاكرة معين والذي يهدف إلى إنشاء ملف تعريف متخصص يمكن استخدامه ثم استيراده إلى rekal محلي الملف الشخصي الذي سيمكنك من عزل/استخراج ذاكرة الضيف من تفريغ مضيف فعلي.
خلال CanSecWest/DC22، قدمت تقنية عالية الجودة (تعتمد على تفاعل الطبقة الأدنى بين طبقات وحدة المعالجة المركزية ونظام التشغيل مم) لتحديد أي عملية يتم تشغيلها على النظام من خلال فحص لقطات الذاكرة الفعلية. تعتمد هذه الآلية على ما يسمى بالمؤشر الذاتي (Windows) أو مؤشر دليل الصفحة العودية (*BSD) الذي من المتوقع دائمًا العثور عليه (ما لم يكن نظام Windows الخاص بك يحتوي على مم معدل/مصحح بشكل كبير، أو ببساطة نواة مخصصة لـ * بي إس دي). والنتيجة النهائية لذلك هي أننا نعرف جميع قيم تسجيل CR3 المعطاة. نظرًا لأن VMCS يحتوي على قيمة CR3 واحدة معروفة على الأقل (قد تتم محاكاة القيمة الثانية أو إعادة تعيينها ديناميكيًا)، فنحن على ثقة من أنه يمكن إجراء تفريغ ذاكرة شامل دون معرفة أي شيء عن إصدار نظام التشغيل الأساسي (على سبيل المثال XP(64bit)->Win2016 متسقة) أو البنية الدقيقة.
القوة الغاشمة تفوز دائمًا في نهاية اليوم! أو هكذا سمعت... على أي حال، إذا تم العثور على تعيين VMCS غير معروف (مؤشر EPTP)، فسوف ينبعث Quickdumps مجموعة من القيم/الفهارس المحتملة. القائمة عادة ما تكون صغيرة، 10-20 على الأكثر. الميزة القادمة هي أتمتة المحاولات لكل قيمة محتملة حتى يتم العثور على القيمة "الصالحة". يجب أن يضمن هذا أننا نعمل من أجل البنى الدقيقة القادمة لوحدة المعالجة المركزية دون أي تغييرات في التعليمات البرمجية (أو سأقوم على الأرجح بإعداد بعض الفئات التي تحدد هذه التغييرات لتسهيل الحياة). في كلتا الحالتين، يجب أن يكون التأثير الغاشم سريعًا إلى حد ما. أحاول تحقيق أقصى استفادة من وحدات المعالجة المركزية متعددة النواة، لذلك إذا كان لديك مراكز إضافية، فمن المحتمل أن يحصلوا على تمرين إذا كنت تقوم بتحليل ملف تفريغ ضخم باستخدام العديد من الأجهزة الافتراضية.
مثال للتشغيل من جهاز كمبيوتر محمول:
Process CR3 [00000002DD41F000] File Offset [0000000293A12000] Diff [FFFFFFFFB65F3000] Type [Windows]
159 candiate process page tables. Time so far: 00:01:01.4826693, second pass starting. rate: 32588.149 MB/s
Hypervisor: VMCS revision field: 16384 [00004000] abort indicator: NO_ABORT [00000000]▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Hypervisor: Windows CR3 found [00000000016A0000)] byte-swapped: [00006A0100000000] @ PAGE/File Offset = [00000001262DA000]
[435][00000000006F0054]
Hypervisor: VMCS revision field: VMWARE_NESTED [00000001] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000001AB000)] byte-swapped: [00B01A0000000000] @ PAGE/File Offset = [00000001308D3000]
[14][000000007433301E]
Hypervisor: VMCS revision field: VMWARE_NESTED [00000001] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000001AB000)] byte-swapped: [00B01A0000000000] @ PAGE/File Offset = [0000000130AD1000]
[14][000000007433301E]
Hypervisor: VMCS revision field: VMWARE_NESTED [00000001] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000001AB000)] byte-swapped: [00B01A0000000000] @ PAGE/File Offset = [00000001314CF000]
[14][000000007433301E]
Hypervisor: VMCS revision field: 0 [00000000] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000016A0000)] byte-swapped: [00006A0100000000] @ PAGE/File Offset = [0000000160643000]
[106][00000000001E001C]
Hypervisor: VMCS revision field: VMWARE_NESTED [00000001] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000001AB000)] byte-swapped: [00B01A0000000000] @ PAGE/File Offset = [0000000195922000]
[14][000000007433301E]
Hypervisor: VMCS revision field: VMWARE_NESTED [00000001] abort indicator: NO_ABORT [00000000]
Hypervisor: Windows CR3 found [00000000001AB000)] byte-swapped: [00B01A0000000000] @ PAGE/File Offset = [00000001959A3000]
[14][000000007433301E]
159 candiate VMCS pages. Time to process: 00:02:51.8973861
Data scanned: 34,171,150,654.00Second pass done. rate: 1277.967 MB/s▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
grouping and joinging all memory
Scanning for group correlations
MemberProces: Groupt 1 Type [Windows] Group Correlation [100.000 %] PID [1AB000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [16A0000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [1FCA000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [62AB000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [34CE8000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [37300000]
MemberProces: Groupt 1 Type [Windows] Group Correlation [90.909 %] PID [7DCC6000]
Finished Group 1 collected size 48 next group
Scanning for group correlations
MemberProces: Groupt 2 Type [FreeBSD] Group Correlation [100.000 %] PID [65C8000]
MemberProces: Groupt 2 Type [FreeBSD] Group Correlation [100.000 %] PID [6B51000]
MemberProces: Groupt 2 Type [FreeBSD] Group Correlation [100.000 %] PID [6CC9000]
في المثال أعلاه، يوجد EPTP الخاص ببرنامج VMWARE عند الفهرس 14 في VMCS الخاص به.
* سنرى ما إذا كنت سأقوم بإلغاء هذا البرنامج ولكن في الوقت الحالي يتم فقط تفريغ ذاكرة النواة من كل طبقة. العمل على مساحة المستخدم من أجهزة VM لنظام التشغيل الضيف.
هناك الكثير من المهام ولكنني سأضيفها في أقرب وقت ممكن. المشكلة الرئيسية الآن هي أنني متردد حقًا في إضافة أي شيء يوفره نظام التشغيل حتى لو كان ذلك بمثابة مساعدة كبيرة. أعتقد أن السياق الكافي متاح لتجنب إضافة أي تبعيات منطقية لنظام التشغيل. تعجبني الطريقة التي يتعهد بها Rekal بهذا، لكن يبدو أن أرشيف ملفاتهم الشخصية كبير جدًا أيضًا، لذلك هناك القليل من الاثنين معًا.
لا يزال هناك القليل من التنظيف للقيام به. هذا لا يزال ألفا، ولكن سيتم تطويره بنشاط.
قم بالتوسيع إلى أنواع EPTP الأكثر شهرة حتى لا تتطلب القوة الغاشمة
سنقوم بإنشاء فهرس صورة نقطية PFN لتحديد عمليات التشغيل بطريقة سحرية تلقائيًا (في الوقت الحالي، إذا كنت تحاول تفريغ/الاستعلام عن أي شيء بعد التشغيل، فسيتسبب ذلك في حدوث مشكلات أو سيتم تفويته وما إلى ذلك. سيتم إضافة هذا بعد ذلك لضمان حصولنا على عمليات تفريغ شاملة بنسبة 100٪ .
الامتناع عن استخدام الهياكل المنطقية لنظام التشغيل لدعم تحليل الذاكرة. من المحتمل أن يتم التلاعب بمعظم هياكل طبقة نظام التشغيل والبيانات والتعليمات البرمجية والكائنات بواسطة مهاجم لتضليل جهود المحلل.
الوظائف القادمة لتقديم خريطة تكامل لصفحات التعليمات البرمجية التي يمكن تعيينها مرة أخرى إلى قيم تجزئة الكتلة/الصفحة الآمنة تشفيرًا (على سبيل المثال SHA256 أو TIGER192). تشير نتائجنا إلى أن معدلات التحقق قبل Win10 تزيد عن 99%، وأن الذاكرة المتطايرة بعد Win10 قابلة للتصديق بنسبة 100% تقريبًا. يؤدي هذا إلى التخلص من أعمال التخمين الكبيرة وغير المعروفة بسبب المعالجة اليدوية التقليدية/المراجعة/تفكيك الذاكرة عند محاولة اكتشاف/تحليل مدخلات متعددة الجيجابايت.
التوثيق
تنفيذ واجهة المستخدم الرسومية