
टोकन प्रतिरूपण के लिए नामित पाइप को हैश पास करें
यह प्रोजेक्ट एक PoC कोड है जो स्थानीय Named Pipe उपयोगकर्ता प्रतिरूपण पर प्रमाणीकरण के लिए Pass-the-Hash का उपयोग करता है। स्पष्टीकरण के लिए एक ब्लॉग पोस्ट भी है:
https://s3cur3th1ssh1t.github.io/Named-Pipe-PTH/
यह मुख्य रूप से Invoke-SMBExec.ps1 और RoguePotato प्रोजेक्ट्स के कोड पर आधारित है।
अतीत में मैंने कुछ Offensive Security प्रोजेक्ट स्थितियों का सामना किया, जहाँ मेरे पास पहले से low privileged उपयोगकर्ता खाते का NTLM-Hash था और मुझे वर्तमान समझौता किए गए सिस्टम पर उस उपयोगकर्ता के लिए एक शेल की आवश्यकता थी - लेकिन यह मौजूदा सार्वजनिक उपकरणों से संभव नहीं था। ऐसी स्थिति के लिए दो और तथ्यों की कल्पना करें - NTLM हैश को क्रैक नहीं किया जा सकता और पीड़ित उपयोगकर्ता की कोई प्रक्रिया नहीं है जिसमें शेलकोड निष्पादित किया जाए या उस प्रक्रिया में माइग्रेट किया जाए। यह आप में से कुछ के लिए एक बेतुका एज-केस जैसा लग सकता है। मैंने फिर भी इसे कई बार अनुभव किया है। एक ही एंगेजमेंट में नहीं, बल्कि मैंने उस विशिष्ट स्थिति में सही टूल/तकनीक की खोज में बहुत समय बिताया।
एक टूल/तकनीक के लिए मेरे व्यक्तिगत लक्ष्य थे:
low privileged खातों का भी प्रतिरूपण करने में सक्षम होना चाहिए - एंगेजमेंट लक्ष्यों के आधार पर, किसी विशिष्ट उपयोगकर्ता जैसे CEO, HR-खाते, SAP-प्रशासक या अन्य के साथ सिस्टम तक पहुँचने की आवश्यकता हो सकती हैदुर्भाग्य से, प्रतिरूपित उपयोगकर्ता को कोई नेटवर्क प्रमाणीकरण की अनुमति नहीं है, क्योंकि नई प्रक्रिया एक प्रतिबंधित प्रतिरूपण टोकन का उपयोग कर रही है। इसलिए आप इस तकनीक का उपयोग केवल किसी अन्य उपयोगकर्ता के साथ स्थानीय कार्यों के लिए कर सकते हैं।
इस तकनीक का उपयोग करने के दो तरीके हैं। या तो आप \Resources\PipeServerImpersonate.sln को संकलित कर सकते हैं और रिमोट होस्ट पर निष्पादन योग्य फ़ाइल ड्रॉप कर सकते हैं और \Resources\Invoke-NamedPipePTH.ps1 के माध्यम से Named Pipe से कनेक्ट कर सकते हैं:
या आप मेमोरी में बने रहने के लिए स्वतंत्र स्क्रिप्ट का उपयोग कर सकते हैं:
यदि आप निष्पादन के लिए बाइनरी ड्रॉप नहीं करना चाहते हैं, तो बस Powershell जैसे मूल विंडोज बाइनरी के लिए तर्क पास करें:
Invoke-ImpersonateUser-PTH -Username USERNAME -Hash NTLMHASH -Domain DOMAIN -PipeName mypipe -binary "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -argument "-nop -w 1 -sta -enc BASEBLOB"