
Rusty Hypervisor - Windows Kernel Blue Pill टाइप-2 हाइपरवाइज़र, Rust में (कोडनेम: Matrix)
ब्लॉग: https://memn0ps.github.io/hypervisors-for-memory-introspection-and-reverse-engineering/
Intel VT-x के लिए हुक्स वाला एक हल्का, मेमोरी-सुरक्षित और अत्यंत तेज़ Rust-आधारित टाइप-2 रिसर्च हाइपरवाइज़र, जो वर्चुअलाइज़ेशन के मूल अवधारणाओं का अध्ययन करने पर केंद्रित है।
नोट: Illusion हाइपरवाइज़र (Rust में Windows UEFI ब्लू पिल टाइप-1 हाइपरवाइज़र) अधिक स्थिर है, अधिक सुविधाओं का समर्थन करता है, और समग्र रूप से बेहतर डिज़ाइन किया गया है। Matrix हाइपरवाइज़र (Rust में Windows कर्नेल ब्लू पिल टाइप-2 हाइपरवाइज़र) एक पुराना, प्रयोगात्मक संस्करण है और उत्पादन उपयोग के लिए नहीं है। दोनों प्रोजेक्ट लोगों को 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 इंस्टॉलेशन पथ की ओर इंगित करने के लिए सेट करें:[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 पर जाएँ।DEFAULT DWORD = 8 के साथ Debug Print Filter बनाएँ।$serialPort = New-Object System.IO.Ports.SerialPort COM2,9600,None,8,One; $serialPort.Open()।हाइपरवाइज़र सेवा बनाने और प्रबंधित करने के लिए Service Controller (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 स्क्रिप्ट को निष्पादित करें।
हाइपरवाइज़र लोड करें
हाइपरवाइज़र सेवा बनाने और शुरू करने के लिए सेवा प्रबंधन अनुभाग में दिखाई गई load.ps1 PowerShell स्क्रिप्ट का उपयोग करें।
चित्र 3: हाइपरवाइज़र लोड करें
चित्र 4: लॉग्स और Windbg PoC सेटअप
चित्र 5: लॉग्स और Windbg PoC निष्पादन
इस प्रोजेक्ट को आकार देने वाले अद्भुत लोगों और संसाधनों का बहुत-बहुत धन्यवाद। नीचे सूचीबद्ध सभी लोगों को विशेष धन्यवाद। हालाँकि मैंने अपने काम में इन सभी संसाधनों का उपयोग नहीं किया, फिर भी वे जानकारी के खजाने रहे हैं, जो हाइपरवाइज़र विकास में रुचि रखने वाले किसी भी व्यक्ति के लिए, जिसमें मैं भी शामिल हूँ, अत्यंत सहायक हैं।
Daax (@daaximus): हाइपरवाइज़र विकास पर उनकी शानदार मुफ्त श्रृंखला के लिए, जो उपलब्ध सर्वोत्तम संसाधनों में से एक है और अपने गहन शोध और स्पष्ट स्पष्टीकरण के साथ मेरे काम को बहुत प्रभावित किया है। हाइपरवाइज़र विकास शुरू करने में उनका समर्थन और मेरे प्रश्नों के उत्तर अमूल्य थे:
Satoshi Tanda (@tandasat): Satoshi Tanda का मार्गदर्शन, प्रोजेक्ट और संरचित प्रशिक्षण कार्यक्रम अविश्वसनीय रूप से सहायक रहे हैं। GitHub पर उनके विस्तृत स्पष्टीकरण और योगदान ने मेरी समझ को काफी बढ़ाया है, जिससे वे मेरी यात्रा में एक महान गुरु बन गए हैं:
Jess (@jessiep_): इस प्रोजेक्ट के कई क्षेत्रों में उनके अमूल्य समर्थन और सहयोग के लिए, आवश्यक अंतर्दृष्टि और विशेषज्ञता प्रदान करने के साथ-साथ मेरे प्रश्नों के त्वरित उत्तर देने के लिए।
Drew (@drew): हाइपरवाइज़र विकास के विभिन्न पहलुओं में उनकी मदद, मार्गदर्शन और मेरे प्रश्नों के त्वरित उत्तर के लिए।
Sina Karvandi (@Intel80x86): उनकी विस्तृत मुफ्त Hypervisor From Scratch श्रृंखला के लिए:
Secret Club: एंटी-चीट सिस्टम और हाइपरवाइज़र डिटेक्शन में अंतर्दृष्टि, जिसने इस प्रोजेक्ट को भी प्रेरित किया:
अन्य आवश्यक संसाधन:
विशेष धन्यवाद:
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है। अधिक जानकारी के लिए, MIT लाइसेंस विवरण देखें।
EptViolationEptMisconfigurationInveptInvvpidXsetbvint3) हुक्स।Matthias (@not-matthias): amd_hypervisor प्रोजेक्ट पर उनके प्रभावशाली कार्य के लिए, जिसने इस शोध को बहुत प्रेरित और प्रभावित किया।
Nick Peterson (@everdox) और Aidan Khoury (@ajkhoury): हाइपरवाइज़र इंट्रोस्पेक्शन और syscall हुकिंग में उनकी गहन खोजों के लिए: