Invoke-TheHash
Invoke-TheHash में पास द हैश WMI और SMB कार्यों को करने के लिए PowerShell फ़ंक्शन शामिल हैं। WMI और SMB कनेक्शन .NET TCPClient के माध्यम से एक्सेस किए जाते हैं। प्रमाणीकरण NTLM हैश को NTLMv2 प्रमाणीकरण प्रोटोकॉल में पास करके किया जाता है। क्लाइंट-साइड पर स्थानीय व्यवस्थापक विशेषाधिकार की आवश्यकता नहीं है।
आवश्यकताएँ
न्यूनतम PowerShell 2.0
आयात
Import-Module ./Invoke-TheHash.psd1
या
. ./Invoke-WMIExec.ps1
. ./Invoke-SMBExec.ps1
. ./Invoke-SMBEnum.ps1
. ./Invoke-SMBClient.ps1
. ./Invoke-TheHash.ps1
फ़ंक्शन
- Invoke-WMIExec
- Invoke-SMBExec
- Invoke-SMBEnum
- Invoke-SMBClient
- Invoke-TheHash
Invoke-WMIExec
- WMI कमांड निष्पादन फ़ंक्शन।
पैरामीटर:
- Target - लक्ष्य का होस्टनाम या IP पता।
- Username - प्रमाणीकरण के लिए उपयोगकर्ता नाम।
- Domain - प्रमाणीकरण के लिए डोमेन। स्थानीय खातों के साथ या उपयोगकर्ता नाम के बाद @domain का उपयोग करने पर इस पैरामीटर की आवश्यकता नहीं है।
- Hash - प्रमाणीकरण के लिए NTLM पासवर्ड हैश। यह फ़ंक्शन LM:NTLM या NTLM प्रारूप स्वीकार करेगा।
- Command - लक्ष्य पर निष्पादित करने के लिए कमांड। यदि कमांड निर्दिष्ट नहीं है, तो फ़ंक्शन केवल यह जाँच करेगा कि क्या उपयोगकर्ता नाम और हैश के पास लक्ष्य पर WMI तक पहुँच है।
- Sleep - डिफ़ॉल्ट = 10 मिलीसेकंड: फ़ंक्शन के Start-Sleep मानों को मिलीसेकंड में सेट करता है।
उदाहरण:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
स्क्रीनशॉट:

Invoke-SMBExec
- SMB (PsExec) कमांड निष्पादन फ़ंक्शन जो SMB1, SMB2.1, SMB साइनिंग के साथ और बिना समर्थन करता है।
पैरामीटर:
- Target - लक्ष्य का होस्टनाम या IP पता।
- Username - प्रमाणीकरण के लिए उपयोगकर्ता नाम।
- Domain - प्रमाणीकरण के लिए डोमेन। स्थानीय खातों के साथ या उपयोगकर्ता नाम के बाद @domain का उपयोग करने पर इस पैरामीटर की आवश्यकता नहीं है।
- Hash - प्रमाणीकरण के लिए NTLM पासवर्ड हैश। यह फ़ंक्शन LM:NTLM या NTLM प्रारूप स्वीकार करेगा।
- Command - लक्ष्य पर निष्पादित करने के लिए कमांड। यदि कमांड निर्दिष्ट नहीं है, तो फ़ंक्शन केवल यह जाँच करेगा कि क्या उपयोगकर्ता नाम और हैश के पास लक्ष्य पर SCM तक पहुँच है।
- CommandCOMSPEC - डिफ़ॉल्ट = सक्षम: %COMSPEC% /C को Command से पूर्व में जोड़ें।
- Service - डिफ़ॉल्ट = 20 वर्ण रैंडम: लक्ष्य पर बनाने और हटाने के लिए सेवा का नाम।
- Sleep - डिफ़ॉल्ट = 150 मिलीसेकंड: फ़ंक्शन के Start-Sleep मानों को मिलीसेकंड में सेट करता है।
- Version - डिफ़ॉल्ट = Auto: (Auto,1,2.1) SMB संस्करण बल करें। डिफ़ॉल्ट व्यवहार SMB संस्करण वार्ता करना है और यदि लक्ष्य द्वारा समर्थित है तो SMB2.1 का उपयोग करना है।
उदाहरण:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
उदाहरण:
लक्ष्य पर SMB साइनिंग आवश्यकताएँ जाँचें।
Invoke-SMBExec -Target 192.168.100.20
स्क्रीनशॉट:

Invoke-SMBEnum
- Invoke-SMBEnum SMB2.1 पर SMB साइनिंग के साथ और बिना उपयोगकर्ता, समूह, NetSession और Share गणना कार्य करता है।
पैरामीटर:
- Target - लक्ष्य का होस्टनाम या IP पता।
- Username - प्रमाणीकरण के लिए उपयोगकर्ता नाम।
- Domain - प्रमाणीकरण के लिए डोमेन। स्थानीय खातों के साथ या उपयोगकर्ता नाम के बाद @domain का उपयोग करने पर इस पैरामीटर की आवश्यकता नहीं है।
- Hash - प्रमाणीकरण के लिए NTLM पासवर्ड हैश। यह फ़ंक्शन LM:NTLM या NTLM प्रारूप स्वीकार करेगा।
- Action - (All,Group,NetSession,Share,User) डिफ़ॉल्ट = Share: करने के लिए गणना क्रिया।
- Group - डिफ़ॉल्ट = Administrators: गणना करने के लिए समूह।
- Sleep - डिफ़ॉल्ट = 150 मिलीसेकंड: फ़ंक्शन के Start-Sleep मानों को मिलीसेकंड में सेट करता है।
- Version - डिफ़ॉल्ट = Auto: (Auto,1,2.1) SMB संस्करण बल करें। डिफ़ॉल्ट व्यवहार SMB संस्करण वार्ता करना है और यदि लक्ष्य द्वारा समर्थित है तो SMB2.1 का उपयोग करना है। ध्यान दें, केवल साइनिंग जाँच SMB1 के साथ काम करती है।
उदाहरण:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
स्क्रीनशॉट:

Invoke-SMBClient
- SMB क्लाइंट फ़ंक्शन जो SMB2.1 और SMB साइनिंग का समर्थन करता है। यह फ़ंक्शन मुख्य रूप से उन हैश के साथ काम करने के लिए SMB फ़ाइल शेयर क्षमताएँ प्रदान करता है जिनके पास दूरस्थ कमांड निष्पादन विशेषाधिकार नहीं है। इस फ़ंक्शन का उपयोग Invoke-WMIExec और Invoke-SMBExec के साथ उपयोग के लिए पेलोड स्टेजिंग के लिए भी किया जा सकता है। ध्यान दें कि Invoke-SMBClient .NET TCPClient पर बना है और Windows SMB क्लाइंट का उपयोग नहीं करता है। Invoke-SMBClient Windows क्लाइंट की तुलना में बहुत धीमा है।
पैरामीटर:
- Username - प्रमाणीकरण के लिए उपयोगकर्ता नाम।
- Domain - प्रमाणीकरण के लिए डोमेन। स्थानीय खातों के साथ या उपयोगकर्ता नाम के बाद @domain का उपयोग करने पर इस पैरामीटर की आवश्यकता नहीं है।
- Hash - प्रमाणीकरण के लिए NTLM पासवर्ड हैश। यह फ़ंक्शन LM:NTLM या NTLM प्रारूप स्वीकार करेगा।
- Action - डिफ़ॉल्ट = List: (List/Recurse/Delete/Get/Put) करने के लिए क्रिया।
-
- List: एक निर्देशिका की सामग्री सूचीबद्ध करता है।
-
- Recurse: एक निर्देशिका और सभी उपनिर्देशिकाओं की सामग्री सूचीबद्ध करता है।
-
- Delete: एक फ़ाइल हटाता है।
-
- Get: एक फ़ाइल डाउनलोड करता है।
-
- Put: एक फ़ाइल अपलोड करता है और निर्माण, पहुँच, और अंतिम लेखन समय को स्रोत फ़ाइल से मेल खाने के लिए सेट करता है।
- Source
-
- List और Recurse: एक निर्देशिका का UNC पथ।
-
- Delete: एक फ़ाइल का UNC पथ।
-
-
- Put: अपलोड करने के लिए फ़ाइल। यदि पूर्ण पथ निर्दिष्ट नहीं है, तो फ़ाइल वर्तमान निर्देशिका में होनी चाहिए। 'Modify' स्विच का उपयोग करते समय, 'Source' एक बाइट सरणी होना चाहिए।
- Destination
-
- List और Recurse: उपयोग नहीं किया गया।
-
- Delete: उपयोग नहीं किया गया।
-
- Get: यदि उपयोग किया जाता है, तो मान डाउनलोड की गई फ़ाइल का नया फ़ाइल नाम होगा। यदि पूर्ण पथ निर्दिष्ट नहीं है, तो फ़ाइल वर्तमान निर्देशिका में बनाई जाएगी।
-
- Put: अपलोड की गई फ़ाइल के लिए UNC पथ। फ़ाइल नाम निर्दिष्ट होना चाहिए।
- Modify
-
- List और Recurse: फ़ंक्शन निर्देशिका सामग्री से युक्त एक ऑब्जेक्ट आउटपुट करेगा।
-
- Delete: उपयोग नहीं किया गया।
-
- Get: फ़ंक्शन फ़ाइल को डिस्क पर लिखने के बजाय डाउनलोड की गई फ़ाइल का एक बाइट सरणी आउटपुट करेगा। केवल छोटी फ़ाइलों के साथ इसका उपयोग करना और आउटपुट को एक चर में भेजना उचित है।
-
- Put: एक बाइट सरणी को एक नई गंतव्य फ़ाइल पर अपलोड करता है।
- NoProgress - एक अपलोड और डाउनलोड प्रगति पट्टी प्रदर्शित करने से रोकता है।
उदाहरण:
रूट शेयर निर्देशिका की सामग्री सूचीबद्ध करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose
उदाहरण:
रूट से शुरू करके एक शेयर की सामग्री को पुनरावर्ती रूप से सूचीबद्ध करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share
उदाहरण:
एक शेयर उपनिर्देशिका की सामग्री को पुनरावर्ती रूप से सूचीबद्ध करें और केवल सामग्री आउटपुट को एक चर में लौटाएँ।
$directory_contents = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share\subdirectory -Modify
उदाहरण:
एक शेयर पर एक फ़ाइल हटाएँ।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\file.txt
उदाहरण:
एक शेयर के भीतर उपनिर्देशिकाओं में एक फ़ाइल हटाएँ।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\subdirectory\subdirectory\file.txt
उदाहरण:
एक शेयर से एक फ़ाइल डाउनलोड करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt
उदाहरण:
एक शेयर उपनिर्देशिका के भीतर से एक फ़ाइल डाउनलोड करें और एक नया फ़ाइल नाम सेट करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\subdirectory\file.txt -Destination file.txt
उदाहरण:
एक शेयर से एक फ़ाइल को डिस्क के बजाय बाइट सरणी चर में डाउनलोड करें।
$password_file = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt -Modify
उदाहरण:
एक शेयर उपनिर्देशिका में एक फ़ाइल अपलोड करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source file.exe -Destination \\server\share\subdirectory\file.exe
उदाहरण:
एक बाइट सरणी चर से शेयर में एक फ़ाइल अपलोड करें।
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source $file_byte_array -Destination \\server\share\file.txt -Modify
स्क्रीनशॉट:

Invoke-TheHash
- एकाधिक लक्ष्यों के विरुद्ध Invoke-TheHash फ़ंक्शन चलाने के लिए फ़ंक्शन।
पैरामीटर:
- Type - वांछित Invoke-TheHash फ़ंक्शन सेट करता है। SMBClient, SMBEnum, SMBExec, या WMIExec में सेट करें।
- Target - लक्ष्यों के लिए होस्टनाम, IP पतों, CIDR अंकन, या IP श्रेणियों की सूची।
- TargetExclude - सूची या लक्ष्यों से बाहर करने के लिए होस्टनाम, IP पतों, CIDR अंकन, या IP श्रेणियों की सूची।
- PortCheckDisable - (स्विच) WMI या SMB पोर्ट जाँच अक्षम करें। चूँकि यह फ़ंक्शन अभी तक थ्रेडेड नहीं है, पोर्ट जाँच पूर्ण तुल्यकालिक TCPClient कनेक्शन का प्रयास करने से पहले एक खुले WMI या SMB पोर्ट की जाँच करके फ़ंक्शन को गति देने में कार्य करती है।
- PortCheckTimeout - डिफ़ॉल्ट = 100: WMI या SMB पोर्ट जाँच के लिए मिलीसेकंड में कोई प्रतिक्रिया टाइमआउट सेट करें।
- Username - प्रमाणीकरण के लिए उपयोगकर्ता नाम।
- Domain - प्रमाणीकरण के लिए डोमेन। स्थानीय खातों के साथ या उपयोगकर्ता नाम के बाद @domain का उपयोग करने पर इस पैरामीटर की आवश्यकता नहीं है।
- Hash - प्रमाणीकरण के लिए NTLM पासवर्ड हैश। यह मॉड्यूल LM:NTLM या NTLM प्रारूप स्वीकार करेगा।
- Command - लक्ष्य पर निष्पादित करने के लिए कमांड। यदि कमांड निर्दिष्ट नहीं है, तो फ़ंक्शन केवल यह जाँच करेगा कि क्या उपयोगकर्ता नाम और हैश के पास लक्ष्य पर WMI या SCM तक पहुँच है।
- CommandCOMSPEC - डिफ़ॉल्ट = सक्षम: केवल SMBExec प्रकार। %COMSPEC% /C को Command से पूर्व में जोड़ें।
- Service - डिफ़ॉल्ट = 20 वर्ण रैंडम: केवल SMBExec प्रकार। लक्ष्य पर बनाने और हटाने के लिए सेवा का नाम।
- SMB1 - (स्विच) SMB1 बल करें। केवल SMBExec प्रकार। डिफ़ॉल्ट व्यवहार SMB संस्करण वार्ता करना है और यदि लक्ष्य द्वारा समर्थित है तो SMB2 का उपयोग करना है।
- Sleep - डिफ़ॉल्ट = WMI 10 मिलीसेकंड, SMB 150 मिलीसेकंड: फ़ंक्शन के Start-Sleep मानों को मिलीसेकंड में सेट करता है।
उदाहरण:
Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administrator -Hash F6F38B793DB6A94BA04A52F1D3EE92F0
स्क्रीनशॉट:
