
PowerSploit - एक PowerShell पोस्ट-एक्सप्लॉइटेशन फ्रेमवर्क
Forked to add a few features to PowerView.ps1 that I commonly perform manually
लक्ष्य मशीन पर कोड निष्पादित करें।
Invoke-DllInjectionआपकी पसंद के प्रोसेस ID में एक DLL इंजेक्ट करता है।
Invoke-ReflectivePEInjectionएक Windows PE फ़ाइल (DLL/EXE) को PowerShell प्रक्रिया में रिफ्लेक्टिव रूप से लोड करता है, या किसी दूरस्थ प्रक्रिया में DLL को रिफ्लेक्टिव रूप से इंजेक्ट करता है।
Invoke-Shellcodeआपकी पसंद के प्रोसेस ID में या स्थानीय रूप से PowerShell के भीतर शेलकोड इंजेक्ट करता है।
Invoke-WmiCommandलक्ष्य कंप्यूटर पर PowerShell ScriptBlock निष्पादित करता है और WMI को C2 चैनल के रूप में उपयोग करते हुए उसका स्वरूपित आउटपुट लौटाता है।
समझौता की गई मशीन पर निष्पादन के लिए स्क्रिप्ट को संशोधित और/या तैयार करें।
Out-EncodedCommandएक PowerShell पेलोड स्क्रिप्ट के लिए कम्प्रेस करता है, Base-64 एन्कोड करता है, और कमांड-लाइन आउटपुट उत्पन्न करता है।
Out-CompressedDllकम्प्रेस करता है, Base-64 एन्कोड करता है, और प्रबंधित DLL को मेमोरी में लोड करने के लिए उत्पन्न कोड आउटपुट करता है।
Out-EncryptedScriptटेक्स्ट फ़ाइलों/स्क्रिप्ट्स को एन्क्रिप्ट करता है।
Remove-Commentकिसी स्क्रिप्ट से टिप्पणियाँ और अतिरिक्त व्हॉट्सस्पेस हटाता है।
किसी PowerShell स्क्रिप्ट में पर्सिस्टेंस क्षमताएँ जोड़ें
New-UserPersistenceOptionAdd-Persistence फ़ंक्शन के लिए उपयोगकर्ता-स्तरीय पर्सिस्टेंस विकल्प कॉन्फ़िगर करें।
New-ElevatedPersistenceOptionAdd-Persistence फ़ंक्शन के लिए उन्नत (elevated) पर्सिस्टेंस विकल्प कॉन्फ़िगर करें।
Add-Persistenceकिसी स्क्रिप्ट में पर्सिस्टेंस क्षमताएँ जोड़ें।
Install-SSPएक सुरक्षा समर्थन प्रदाता (SSP) DLL स्थापित करता है।
Get-SecurityPackagesसभी लोडेड सुरक्षा पैकेजों (SSPs) की गणना करता है।
AV के पास PowerShell के सामने कोई मौका नहीं है!
Find-AVSignature"class101" से DSplit के समान विधि का उपयोग करके एकल बाइट AV हस्ताक्षरों का पता लगाता है।
आपका सारा डेटा मेरा है!
Invoke-TokenManipulationउपलब्ध लॉगऑन टोकन की सूची दिखाता है। अन्य उपयोगकर्ताओं के लॉगऑन टोकन के साथ प्रक्रियाएँ बनाता है, और वर्तमान थ्रेड में लॉगऑन टोकन का प्रतिरूपण करता है।
Invoke-CredentialInjectionसंदिग्ध इवेंट ID 4648 (Explicit Credential Logon) को ट्रिगर किए बिना क्लियरटेक्स्ट क्रेडेंशियल्स के साथ लॉगऑन बनाता है।
Invoke-NinjaCopyरॉ वॉल्यूम पढ़कर और NTFS संरचनाओं को पार्स करके NTFS विभाजित वॉल्यूम से एक फ़ाइल कॉपी करता है।
Invoke-MimikatzPowerShell का उपयोग करके Mimikatz 2.0 को मेमोरी में रिफ्लेक्टिव रूप से लोड करता है। डिस्क पर कुछ भी लिखे बिना क्रेडेंशियल्स डंप करने के लिए इस्तेमाल किया जा सकता है। Mimikatz द्वारा प्रदान की गई किसी भी कार्यक्षमता के लिए उपयोग किया जा सकता है।
Get-Keystrokesदबाए गए कुंजियों, समय और सक्रिय विंडो को लॉग करता है।
Get-GPPPasswordग्रुप पॉलिसी प्रेफरेंसेस के माध्यम से पुश किए गए खातों के लिए प्लेनटेक्स्ट पासवर्ड और अन्य जानकारी प्राप्त करता है।
Get-GPPAutologonयदि ग्रुप पॉलिसी प्रेफरेंसेस के माध्यम से पुश किया गया हो तो registry.xml से ऑटोलॉगन उपयोगकर्ता नाम और पासवर्ड प्राप्त करता है।
Get-TimedScreenshotएक फ़ंक्शन जो नियमित अंतराल पर स्क्रीनशॉट लेता है और उन्हें एक फ़ोल्डर में सहेजता है।
New-VolumeShadowCopyएक नई वॉल्यूम शैडो कॉपी बनाता है।
Get-VolumeShadowCopyसभी स्थानीय वॉल्यूम शैडो कॉपीज़ के डिवाइस पथ सूचीबद्ध करता है।
Mount-VolumeShadowCopyएक वॉल्यूम शैडो कॉपी माउंट करता है।
Remove-VolumeShadowCopyएक वॉल्यूम शैडो कॉपी हटाता है।
Get-VaultCredentialक्लियरटेक्स्ट वेब क्रेडेंशियल्स सहित Windows वॉल्ट क्रेडेंशियल ऑब्जेक्ट प्रदर्शित करता है।
Out-Minidumpकिसी प्रक्रिया का फुल-मेमोरी मिनीडंप उत्पन्न करता है।
Get-MicrophoneAudioसिस्टम माइक्रोफोन से ऑडियो रिकॉर्ड करता है और डिस्क पर सहेजता है
PowerShell के साथ सामान्य उत्पात मचाएँ।
Set-MasterBootRecordप्रूफ ऑफ कॉन्सेप्ट कोड जो मास्टर बूट रिकॉर्ड को आपकी पसंद के संदेश के साथ अधिलेखित करता है।
Set-CriticalProcessPowerShell से बाहर निकलने पर आपकी मशीन को ब्लू स्क्रीन दिखाने का कारण बनता है।
लक्ष्य पर विशेषाधिकार बढ़ाने में सहायता के लिए उपकरण।
PowerUpसामान्य विशेषाधिकार वृद्धि जाँचों का केंद्रीय संग्रह, साथ ही कुछ वेपोनाइज़ेशन वेक्टर।
पेनिट्रेशन परीक्षण के टोही चरण में सहायता के लिए उपकरण।
Invoke-Portscanनियमित सॉकेट का उपयोग करके एक सरल पोर्ट स्कैन करता है, जो nmap पर (काफी) मोटे तौर पर आधारित है।
Get-HttpStatusजब डिक्शनरी फ़ाइल दी जाती है तो निर्दिष्ट पथों के लिए HTTP स्टेटस कोड और पूर्ण URL लौटाता है।
Invoke-ReverseDnsLookupDNS PTR रिकॉर्ड के लिए एक IP पता श्रेणी स्कैन करता है।
PowerViewPowerView फ़ंक्शंस की एक श्रृंखला है जो नेटवर्क और Windows डोमेन एन्यूमरेशन एवं एक्सप्लॉइटेशन करती है।
पेनिट्रेशन परीक्षण के टोही चरण में सहायता के लिए उपयोग किए जाने वाले शब्दकोशों का एक संग्रह। शब्दकोश निम्नलिखित स्रोतों से लिए गए हैं।
PowerSploit प्रोजेक्ट और सभी व्यक्तिगत स्क्रिप्ट BSD 3-Clause लाइसेंस के अंतर्गत हैं, जब तक कि स्पष्ट रूप से अन्यथा नोट न किया गया हो।
विस्तृत उपयोग जानकारी के लिए प्रत्येक व्यक्तिगत स्क्रिप्ट में टिप्पणी-आधारित सहायता देखें।
इस मॉड्यूल को स्थापित करने के लिए, पूरे PowerSploit फ़ोल्डर को अपनी मॉड्यूल निर्देशिकाओं में से एक में रखें। डिफ़ॉल्ट PowerShell मॉड्यूल पथ $Env:PSModulePath पर्यावरण चर में सूचीबद्ध हैं।
डिफ़ॉल्ट प्रति-उपयोगकर्ता मॉड्यूल पथ है: "$Env:HomeDrive$Env:HOMEPATH\Documents\WindowsPowerShell\Modules" डिफ़ॉल्ट कंप्यूटर-स्तरीय मॉड्यूल पथ है: "$Env:windir\System32\WindowsPowerShell\v1.0\Modules"
मॉड्यूल का उपयोग करने के लिए, टाइप करें Import-Module PowerSploit
आयातित कमांड देखने के लिए, टाइप करें Get-Command -Module PowerSploit
यदि आप PowerShell v3 चला रहे हैं और उस कष्टप्रद 'क्या आप वास्तव में इंटरनेट से डाउनलोड की गई स्क्रिप्ट चलाना चाहते हैं' चेतावनी को हटाना चाहते हैं, तो एक बार PowerSploit को अपने मॉड्यूल पथ में रखने के बाद, निम्नलिखित वन-लाइनर चलाएँ:
$Env:PSModulePath.Split(';') | % { if ( Test-Path (Join-Path $_ PowerSploit) ) {Get-ChildItem $_ -Recurse | Unblock-File} }
प्रत्येक व्यक्तिगत कमांड के लिए सहायता पाने हेतु, Get-Help आपका मित्र है।
नोट: इस मॉड्यूल में शामिल सभी उपकरण इस प्रकार डिज़ाइन किए गए हैं कि उन्हें व्यक्तिगत रूप से चलाया जा सके। उन्हें एक मॉड्यूल में शामिल करना केवल बेहतर पोर्टेबिलिटी प्रदान करता है।
हमें योगदान चाहिए! यदि आपके पास PowerSploit के लिए कोई बढ़िया विचार है, तो हम उसे जोड़ना पसंद करेंगे। नए परिवर्धन के लिए निम्नलिखित आवश्यकताएँ होंगी:
PowerSploit के सभी योगदानकर्ताओं और भावी योगदानकर्ताओं से, मैं अनुरोध करता हूँ कि आप अपनी स्क्रिप्ट/मॉड्यूल लिखते समय इस स्टाइल गाइड का पालन करें।
Write-Host से हर हाल में बचें। PowerShell फ़ंक्शंस/कमांडलेट्स कमांड-लाइन उपयोगिताएँ नहीं हैं! Write-Host का उपयोग करने वाले कोड वाले पुल रिक्वेस्ट पर विचार नहीं किया जाएगा। आपको इसके बजाय कस्टम ऑब्जेक्ट आउटपुट करने चाहिए। कस्टम ऑब्जेक्ट बनाने की अधिक जानकारी के लिए, ये लेख पढ़ें:
यदि आप स्क्रीन पर प्रासंगिक डिबगिंग जानकारी प्रदर्शित करना चाहते हैं, तो Write-Verbose का उपयोग करें। उपयोगकर्ता हमेशा '-Verbose' जोड़ सकता है।
प्रत्येक स्क्रिप्ट के लिए हमेशा वर्णनात्मक, टिप्पणी-आधारित सहायता प्रदान करें। साथ ही, अपना नाम और BSD 3-Clause लाइसेंस शामिल करना सुनिश्चित करें (जब तक कि ऐसी असाधारण परिस्थितियाँ न हों जो BSD लाइसेंस के आवेदन को रोकती हों)।
सुनिश्चित करें कि सभी फ़ंक्शंस उचित PowerShell क्रिया-संज्ञा समझौते का पालन करते हैं। PowerShell द्वारा उपयोग किए जाने वाले डिफ़ॉल्ट क्रियाओं को सूचीबद्ध करने के लिए Get-Verb का उपयोग करें। समर्थित क्रियाओं के अपवादों पर केस-दर-केस आधार पर विचार किया जाएगा।
मैं पसंद करता हूँ कि वेरिएबल नाम कैपिटलाइज़्ड हों और यथासंभव वर्णनात्मक हों।
अपने कोड के बीच तार्किक स्पेसिंग प्रदान करें। अपने कोड को अधिक पठनीय बनाने के लिए इंडेंट करें।
यदि आप बार-बार कोड दोहरा रहे हैं, तो एक फ़ंक्शन लिखें।
सभी अनुमानित त्रुटियों को पकड़ें और सार्थक आउटपुट प्रदान करें। यदि आपके पास कोई त्रुटि है जो स्क्रिप्ट का निष्पादन रोक देनी चाहिए, तो 'Throw' का उपयोग करें। यदि आपके पास कोई त्रुटि है जिसे निष्पादन रोकने की आवश्यकता नहीं है, तो Write-Error का उपयोग करें।
यदि आप Win32 API के साथ इंटरफ़ेस करने वाली स्क्रिप्ट लिख रहे हैं, तो Add-Type के साथ C# को इनलाइन संकलित करने से बचने का प्रयास करें। यदि संभव हो तो PSReflect मॉड्यूल का उपयोग करने का प्रयास करें।
हार्डकोडेड पथ का उपयोग न करें। एक स्क्रिप्ट सीधे बॉक्स से निकालते ही उपयोग योग्य होनी चाहिए। जब तक वे चाहें, किसी को भी कोड संशोधित नहीं करना चाहिए।
PowerShell v2 संगतता अत्यधिक वांछनीय है।
पोजीशनल पैरामीटर का उपयोग करें और पैरामीटर को अनिवार्य बनाएं जब ऐसा करना उचित लगे। उदाहरण के लिए, मैं कुछ इस प्रकार की अपेक्षा करता हूँ:
[Parameter(Position = 0, Mandatory = $True)]किसी भी alias का उपयोग न करें जब तक कि पाइपलाइन इनपुट प्राप्त करने के लिए यह उचित न हो। वे कोड को उन लोगों के लिए पढ़ना कठिन बनाते हैं जो किसी विशेष alias से परिचित नहीं हैं।
कमांड्स को बहुत लंबा न चलने दें। उदाहरण के लिए, एक पाइपलाइन एक लाइन ब्रेक के लिए एक स्वाभाविक स्थान है।
इनलाइन टिप्पणियों के साथ अति न करें। उन्हें केवल तभी उपयोग करें जब कोड के कुछ पहलू पाठक को भ्रमित कर सकते हों।
अवांछित/अप्रासंगिक आउटपुट को दबाने के लिए Out-Null का उपयोग करने के बजाय, अवांछित आउटपुट को $null में सहेजें। ऐसा करने से थोड़ी प्रदर्शन वृद्धि मिलती है।
अपने पैरामीटर के लिए डिफ़ॉल्ट मानों का उपयोग करें जब यह उचित लगे। आदर्श रूप से, आप एक ऐसी स्क्रिप्ट चाहते हैं जो बिना किसी पैरामीटर की आवश्यकता के काम करे।
यदि कोई स्क्रिप्ट जटिल कस्टम ऑब्जेक्ट बनाती है, तो एक ps1xml फ़ाइल शामिल करें जो ऑब्जेक्ट के आउटपुट को उचित रूप से प्रारूपित करे।