
Rusty Hypervisor - هايبرفايزر Blue Pill من النوع الثاني لنواة ويندوز مكتوب بلغة Rust (الاسم الرمزي: Matrix)
المدونة: https://memn0ps.github.io/hypervisors-for-memory-introspection-and-reverse-engineering/
هايبرفايزر بحثي خفيف الوزن، آمن على مستوى الذاكرة، وسريع للغاية، مكتوب بلغة Rust من النوع الثاني، مع خطافات لتقنية Intel VT-x، ويركّز على دراسة المفاهيم الأساسية للافتراضية.
ملاحظة: هايبرفايزر Illusion (هايبرفايزر ويندوز من النوع الأول Blue Pill عبر UEFI مكتوب بلغة Rust) أكثر استقرارًا، ويدعم ميزات أكثر، وهو مصمَّم بشكل أفضل بشكل عام. أما هايبرفايزر Matrix (هايبرفايزر ويندوز من النوع الثاني Blue Pill يعمل في النواة ومكتوب بلغة Rust) فهو إصدار أقدم وتجريبي، وغير مخصص للاستخدام في الإنتاج. كلا المشروعين يُعدّان قالبين لمساعدة الأشخاص على البدء في تطوير الهايبرفايزر بلغة Rust.
الشكل 0: خطافات جداول الصفحات الموسعة (EPT) (Matrix)
ExceptionOrNmi (#GP, #PF, #BP, #UD), Cpuid, Getsec, Vmcall, Vmclear, Vmlaunch, Vmptrld, Vmptrst, Vmresume, Vmxon, Vmxoff Rdmsr, Wrmsr, Invd, Rdtsc, , , , , .rustup toolchain install nightly و rustup default nightly.winget install LLVM.LLVM.cargo install cargo-make cargo-expand cargo-edit cargo-workspaces.WDKContentRoot ليشير إلى مسار تثبيت WDK لديك، إذا لم يتم تعيينه تلقائيًا أثناء تثبيت WDK:[System.Environment]::SetEnvironmentVariable("WDKContentRoot", "C:\Program Files (x86)\Windows Kits\10", [System.EnvironmentVariableTarget]::User)
cargo make --profile development.cargo make --profile release.bcdedit.exe /set testsigning on.bcdedit.exe /bootdebug {bootmgr} on
bcdedit.exe /bootdebug on
bcdedit.exe /debug on
الإعداد: bcdedit.exe /dbgsettings net hostip:w.x.y.z port:n.
regedit.exe.HKLM\SYSTEM\CurrentControlSet\Control\Session Manager.Debug Print Filter مع DEFAULT DWORD = 8.$serialPort = New-Object System.IO.Ports.SerialPort COM2,9600,None,8,One; $serialPort.Open().استخدم أداة التحكم بالخدمات (sc.exe) لإنشاء خدمة الهايبرفايزر وإدارتها:
sc.exe create matrix type= kernel binPath= C:\Windows\System32\drivers\matrix.sys
sc.exe query matrix
sc.exe start matrix
الإعداد لبرنامج VMware Workstation
قم ببناء المشروع: اتبع تعليمات البناء المقدمة في الأقسام السابقة لتجميع المشروع.
إعداد VMware Workstation
قم بتكوين المنفذ التسلسلي في VMware للتصحيح.
الشكل 1: إعدادات المنفذ التسلسلي في VMware
تأكد من تفعيل "Virtualize Intel VT-x/EPT or AMD-V/RVI" وتفعيل "Virtualize IOMMU (IO memory management unit)".
الشكل 2: إعدادات معالجات VMware
نسخ برنامج التشغيل
انسخ برنامج التشغيل matrix.sys إلى المجلد C:\Windows\System32\drivers.
التصحيح عبر المنفذ التسلسلي في VMware
نفّذ سكربت PowerShell في قسم التصحيح عبر المنفذ التسلسلي لفتح المنفذ التسلسلي.
تحميل الهايبرفايزر
استخدم سكربت PowerShell load.ps1 الموضح في قسم إدارة الخدمة لإنشاء خدمة الهايبرفايزر وتشغيلها.
الشكل 3: تحميل الهايبرفايزر
الشكل 4: السجلات وإعداد بيئة PoC مع Windbg
الشكل 5: السجلات وتنفيذ PoC مع Windbg
شكر كبير للأشخاص والموارد الرائعة التي ساهمت في تشكيل هذا المشروع. تحية خاصة لكل من ذُكر أدناه. على الرغم من أنني لم أستخدم كل هذه الموارد في عملي، إلا أنها كانت مناجم ذهب من المعلومات، ومفيدة جدًا لأي شخص يخوض في تطوير الهايبرفايزر، بما في ذلك أنا.
Daax (@daaximus): لسلسلته المجانية الرائعة حول تطوير الهايبرفايزر، التي تُعد من أفضل الموارد المتاحة وكان لها تأثير كبير على عملي بفضل بحثها المتعمق وشروحاتها الواضحة. كان دعمه وإجاباته على أسئلتي لا يقدر بثمن في مساعدتي على البدء في تطوير الهايبرفايزر:
Satoshi Tanda (@tandasat): كانت إرشادات Satoshi Tanda ومشاريعه وبرامجه التدريبية المنظمة مفيدة بشكل لا يصدق. لقد عززت شروحاته التفصيلية ومساهماته على GitHub فهمي بشكل كبير، مما جعله مرشدًا رائعًا طوال رحلتي:
Jess (@jessiep_): لدعمه الذي لا يقدر بثمن وتعاونه في عدة مجالات من هذا المشروع، حيث قدم رؤى وخبرات أساسية، ولردوده السريعة على أسئلتي.
Drew (@drew): لمساعدته وتوجيهاته وردوده السريعة على أسئلتي في مختلف جوانب تطوير الهايبرفايزر.
Sina Karvandi (@Intel80x86): لسلسلته المجانية المفصلة Hypervisor From Scratch:
Matthias (@not-matthias): لعمله المؤثر في مشروع ، الذي ألهم هذا البحث وأثر فيه بشكل كبير.
Secret Club: رؤى حول أنظمة مكافحة الغش وكشف الهايبرفايزر، والتي ألهمت هذا المشروع أيضًا:
موارد أساسية أخرى:
شكر خاص لكل من:
هذا المشروع مرخّص بموجب رخصة MIT. لمزيد من المعلومات، راجع تفاصيل رخصة MIT.
EptViolationEptMisconfigurationInveptInvvpidXsetbvint3) متوافقة مع PatchGuard.Nick Peterson (@everdox) و Aidan Khoury (@ajkhoury): لاستكشافاتهما الثاقبة في مجال فحص الهايبرفايزر الداخلي وخطافات استدعاءات النظام: