
कर्नेल मोड WinDbg एक्सटेंशन और टोकन विशेषाधिकार जांच के लिए PoCs
कर्नेल मोड WinDbg एक्सटेंशन और PoCs यह जांचने के लिए कि टोकन विशेषाधिकार कैसे काम करते हैं।
टोकन विशेषाधिकार दुरुपयोग के बारे में उल्लेखनीय रिपॉजिटरी और लेख हैं जैसे Grzegorz Tworek का Priv2Admin। इस रिपॉजिटरी के कोड यह जांचने में मदद करने के लिए हैं कि टोकन विशेषाधिकार कैसे काम करते हैं।
यह प्रोजेक्ट बताता है कि उच्च अखंडता स्तर शेल से सिस्टम विशेषाधिकार कैसे प्राप्त करें। विवरण के लिए README.md देखें।
इस प्रोजेक्ट का उद्देश्य यह जांचना है कि हमलावर मनमाने कर्नेल राइट भेद्यता का दुरुपयोग कैसे करते हैं। सभी PoCs HackSys Extreme Vulnerable Driver के लिए लिखे गए हैं। इनमें से अधिकांश PoCs मनमाने कर्नेल राइट भेद्यता और टोकन विशेषाधिकारों का दुरुपयोग करके SYSTEM अखंडता स्तर प्राप्त करने के लिए कार्य करते हैं। Windows 10 संस्करण 1809/1903 पर परीक्षण किया गया, लेकिन सैद्धांतिक रूप से वे अधिकांश Windows 10 पर काम करने चाहिए:
| PoC नाम | विवरण |
|---|---|
| CreateAssignTokenVariant | यह PoC SeCreateTokenPrivilege और SeAssignPrimaryTokenPrivilege के साथ EoP करता है। |
| CreateImpersonateTokenVariant | यह PoC SeCreateTokenPrivilege और SeImpersonatePrivilege के साथ EoP करता है। |
| CreateTokenVariant | यह PoC SeCreateTokenPrivilege के साथ EoP करता है। |
| DebugInjectionVariant | यह PoC SeDebugPrivilege के साथ EoP करता है। अंतिम चरण में winlogon.exe में कोड इंजेक्शन का उपयोग करता है। |
| DebugUpdateProcVariant | यह PoC SeDebugPrivilege के साथ EoP करता है। अंतिम चरण में UpdateProcThreadAttribute API के साथ winlogon.exe से SYSTEM प्रक्रिया बनाता है। |
| RestoreServiceModificationVariant | यह PoC SeRestorePrivilege के साथ EoP करता है। इस PoC के साथ HijackShellLib का उपयोग करें। |
| SecondaryLogonVariant | यह PoC SeCreateTokenPrivilege और SeImpersonatePrivilege के साथ EoP करता है। अंतिम चरण में सेकेंडरी लॉगऑन सेवा का उपयोग करता है। |
| TakeOwnershipServiceModificationVariant | यह PoC SeTakeOwnershipPrivilege के साथ EoP करता है। इस PoC के साथ HijackShellLib का उपयोग करें। |
| TcbS4uAssignTokenVariant | यह PoC SeTcbPrivilege के साथ EoP करता है। मीडियम अनिवार्य स्तर से सिस्टम अनिवार्य स्तर का शेल प्राप्त करें। |
| TcbS4uImpersonationVariant | यह PoC SeTcbPrivilege के साथ EoP करता है। S4U लॉगऑन के साथ थ्रेड प्रतिरूपण करता है। उच्च या सिस्टम अखंडता स्तर प्राप्त नहीं करता। |
चेतावनी
कुछ वातावरणों में, डीबग बिल्ड काम नहीं करता है। रिलीज़ बिल्ड को प्राथमिकता दी जाती है।
PrivEditor एक कर्नेल मोड WinDbg एक्सटेंशन है जो किसी विशिष्ट प्रक्रिया के टोकन विशेषाधिकार में हेरफेर करता है। यह एक्सटेंशन उस टोकन विशेषाधिकार को कॉन्फ़िगर करना आसान बनाता है जिसकी आप जांच करना चाहते हैं:``` 0: kd> .load C:\dev\PrivEditor\x64\Release\PrivEditor.dll
PrivEditor - Kernel Mode WinDbg extension for token privilege edit.
Commands : + !getps : List processes in target system. + !getpriv : List privileges of a process. + !addpriv : Add privilege(s) to a process. + !rmpriv : Remove privilege(s) from a process. + !enablepriv : Enable privilege(s) of a process. + !disablepriv : Disable privilege(s) of a process. + !enableall : Enable all privileges available to a process. + !disableall : Disable all privileges available to a process.
[*] To see command help, execute "! help" or "! /?".
### getps कमांड
यह कमांड आपके लक्ष्य सिस्टम में प्रक्रियाओं को सूचीबद्ध करने के लिए है:```
0: kd> !getps /?
!getps - List processes in target system.
Usage : !getps [Process Name]
Process Name : (OPTIONAL) Specifies filter string for process name.
यदि आप इस कमांड को बिना किसी तर्क के निष्पादित करते हैं, तो यह कमांड आपके लक्ष्य सिस्टम में सभी प्रक्रियाओं को इस प्रकार सूचीबद्ध करता है:``` 0: kd> !getps
PID nt!_EPROCESS nt!_SEP_TOKEN_PRIVILEGES Process Name
======== =================== ======================== ============
0 0xfffff80581233630 0x0000000000000000 Idle
4 0xffffd60fec068380 0xffffaf00cec07a40 System
68 0xffffd60ff1780480 0xffffaf00d3b290a0 svchost.exe
88 0xffffd60fec0db080 0xffffaf00cec0d080 Registry
324 0xffffd60fef342040 0xffffaf00d0416080 smss.exe
348 0xffffd60ff052f100 0xffffaf00d25d30a0 dwm.exe
408 0xffffd60feca8e140 0xffffaf00d21bd930 csrss.exe
480 0xffffd60ff05a8340 0xffffaf00d2568670 svchost.exe
484 0xffffd60fefcd60c0 0xffffaf00d06430e0 wininit.exe
500 0xffffd60fefd130c0 0xffffaf00d23100a0 csrss.exe
580 0xffffd60fefdc0080 0xffffaf00d2266630 winlogon.exe
--snip--
यदि आप विशिष्ट प्रक्रियाओं को जानना चाहते हैं, तो स्ट्रिंग फ़िल्टर निम्नानुसार सेट करें।
फ़िल्टर फॉरवर्ड मैचिंग और केस इनसेंसिटिव के साथ काम करता है:```
0: kd> !getps micro
PID nt!_EPROCESS nt!_SEP_TOKEN_PRIVILEGES Process Name
======== =================== ======================== ============
4568 0xffffd60f`f14ed080 0xffffaf00`d3db60a0 MicrosoftEdge.exe
4884 0xffffd60f`f1647080 0xffffaf00`d3fc17b0 MicrosoftEdgeCP.exe
4892 0xffffd60f`f1685080 0xffffaf00`d3fc07b0 MicrosoftEdgeSH.exe
यह कमांड किसी विशिष्ट प्रक्रिया के टोकन विशेषाधिकारों को सूचीबद्ध करने के लिए है:``` 0: kd> !getpriv /?
!getpriv - List privileges of a process.
Usage : !getpriv