लिखने योग्य System Path +Dll Hijacking Privesc
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
परिचय
अगर आपने पाया कि आप System Path फ़ोल्डर में लिख सकते हैं (ध्यान दें कि यह तब काम नहीं करेगा अगर आप केवल User Path फ़ोल्डर में लिख सकते हैं) तो संभव है कि आप सिस्टम में अधिकार बढ़ा सकते हैं।
इसके लिए आप एक Dll Hijacking का दुरुपयोग कर सकते हैं जहाँ आप उस सर्विस या प्रोसेस द्वारा लोड हो रहे लाइब्रेरी को हाइजैक करने जा रहे हैं जो आपसे बेहतर privileges के साथ चल रहा है, और चूँकि वह सर्विस एक ऐसे Dll को लोड कर रही है जो पूरे सिस्टम में शायद मौजूद ही नहीं है, वह इसे उस System Path से लोड करने की कोशिश करेगा जहाँ आप लिख सकते हैं।
Dll Hijackig क्या है इसके बारे में अधिक जानकारी के लिए देखें:
Dll Hijacking के साथ Privesc
गायब Dll खोजना
सबसे पहले आपको एक ऐसा प्रोसेस पहचानना होगा जो आपके मुकाबले ज़्यादा privileges के साथ चल रहा हो और जो उस System Path से Dll लोड करने की कोशिश कर रहा हो जिसमें आप लिख सकते हैं।
इस मामलों की दिक्कत यह है कि संभवतः वे प्रोसेस पहले से ही चल रहे होंगे। यह पता लगाने के लिए कि किन Dlls की कमी है, आपको जितनी जल्दी हो सके procmon लॉन्च करना होगा (प्रोसेसेस लोड होने से पहले)। तो, कमी वाले .dlls खोजने के लिए करें:
- Create the folder
C:\privesc_hijackingand add the pathC:\privesc_hijackingto System Path env variable. You can do this manually or with PS:
# Set the folder path to create and check events for
$folderPath = "C:\privesc_hijacking"
# Create the folder if it does not exist
if (!(Test-Path $folderPath -PathType Container)) {
New-Item -ItemType Directory -Path $folderPath | Out-Null
}
# Set the folder path in the System environment variable PATH
$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine")
if ($envPath -notlike "*$folderPath*") {
$newPath = "$envPath;$folderPath"
[Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")
}
- Launch
procmonand go toOptions–>Enable boot loggingand pressOKin the prompt. - फिर, रीबूट करें। जब कंप्यूटर पुनः चालू होगा तो
procmonजितनी जल्दी हो सके इवेंट्स रिकॉर्ड करना शुरू कर देगा। - एक बार Windows शुरू हो जाने के बाद फिर से
procmonचलाएँ, यह आपको बताएगा कि यह चल रहा था और यह आपसे पूछेगा कि क्या आप इवेंट्स को किसी फाइल में संग्रहीत करना चाहते हैं। हाँ कहें और इवेंट्स को एक फाइल में स्टोर करें। - फाइल बन जाने के बाद, खुले हुए
procmonविंडो को बंद करें और इवेंट्स फाइल खोलें। - इन फिल्टरों को जोड़ें और आप उन सभी Dlls को पाएँगे जिन्हें कुछ processes ने writable System Path folder से लोड करने की कोशिश की:
.png)
Missed Dlls
इसे एक free virtual (vmware) Windows 11 मशीन पर चलाने पर मुझे ये परिणाम मिले:
.png)
इस मामले में .exe बेकार थे इसलिए उन्हें अनदेखा करें, छूटी हुई DLLs निम्न से थीं:
| Service | Dll | CMD line |
|---|---|---|
| Task Scheduler (Schedule) | WptsExtensions.dll | C:\Windows\system32\svchost.exe -k netsvcs -p -s Schedule |
| Diagnostic Policy Service (DPS) | Unknown.DLL | C:\Windows\System32\svchost.exe -k LocalServiceNoNetwork -p -s DPS |
| ??? | SharedRes.dll | C:\Windows\system32\svchost.exe -k UnistackSvcGroup |
After finding this, I found this interesting blog post that also explains how to abuse WptsExtensions.dll for privesc. Which is what we are going to do now.
Exploitation
तो, privileges escalate करने के लिए हम लाइब्रेरी WptsExtensions.dll को hijack करेंगे। Path और नाम मिल जाने पर हमें केवल malicious dll generate करना होगा।
आप try to use any of these examples को आज़मा सकते हैं। आप ऐसे payloads चला सकते हैं: get a rev shell, add a user, execute a beacon…
Warning
ध्यान दें कि not all the service are run with
NT AUTHORITY\SYSTEM—कुछ सेवाएँNT AUTHORITY\LOCAL SERVICEके साथ भी चलती हैं जिनके पास कम privileges होते हैं और आप उन पर निर्भर करते हुए नया user नहीं बना पाएँगे।
हालांकि, उस user के पासseImpersonateprivilege होता है, तो आप potato suite to escalate privileges का उपयोग करके privileges escalate कर सकते हैं। इसलिए, इस मामले में rev shell user बनवाने की कोशिश करने से बेहतर विकल्प है।
वर्तमान लेखन के समय Task Scheduler सेवा Nt AUTHORITY\SYSTEM के साथ चल रही है।
Having generated the malicious Dll (in my case I used x64 rev shell and I got a shell back but defender killed it because it was from msfvenom), उसको writable System Path में नाम WptsExtensions.dll के साथ सेव करें और कंप्यूटर को restart करें (या सेवा को restart करें या प्रभावित service/program को फिर से चलाने के लिए जो भी आवश्यक हो वह करें)।
जब सेवा पुनः चालू होगी, तो dll लोड और execute होना चाहिए (आप procmon trick को दोबारा उपयोग कर के चेक कर सकते हैं कि library उम्मीद के मुताबिक लोड हुई थी)।
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks

