
PowerSploit - एक PowerShell पोस्ट-एक्सप्लॉयटेशन फ्रेमवर्क
लक्ष्य मशीन पर कोड निष्पादित करें।
Invoke-DllInjectionआपके चुने हुए प्रक्रिया आईडी में एक DLL इंजेक्ट करता है।
Invoke-ReflectivePEInjectionपावरशेल प्रक्रिया में एक विंडोज PE फ़ाइल (DLL/EXE) को परावर्तित रूप से लोड करता है, या एक दूरस्थ प्रक्रिया में DLL को परावर्तित रूप से इंजेक्ट करता है।
Invoke-Shellcodeआपके चुने हुए प्रक्रिया ID में या स्थानीय रूप से PowerShell के भीतर शेलकोड इंजेक्ट करता है।
Invoke-WmiCommandलक्ष्य कंप्यूटर पर एक PowerShell ScriptBlock निष्पादित करता है और WMI को C2 चैनल के रूप में उपयोग करके इसका स्वरूपित आउटपुट लौटाता है।
समझौता की गई मशीन पर निष्पादन के लिए स्क्रिप्ट को संशोधित और/या तैयार करें।
Out-EncodedCommandPowerShell पेलोड स्क्रिप्ट के लिए कमांड-लाइन आउटपुट को संपीड़ित, बेस-64 एन्कोड और उत्पन्न करता है।
Out-CompressedDllएक प्रबंधित dll को मेमोरी में लोड करने के लिए संपीड़ित, बेस-64 एन्कोड और आउटपुट कोड उत्पन्न करता है।
Out-EncryptedScriptटेक्स्ट फ़ाइलों/स्क्रिप्ट को एन्क्रिप्ट करता है।
Remove-Commentस्क्रिप्ट से टिप्पणियाँ और अतिरिक्त स्थान हटाता है।
PowerShell स्क्रिप्ट में स्थिरता क्षमताएँ जोड़ें
New-UserPersistenceOptionAdd-Persistence फ़ंक्शन के लिए उपयोगकर्ता-स्तरीय स्थिरता विकल्प कॉन्फ़िगर करें।
New-ElevatedPersistenceOptionAdd-Persistence फ़ंक्शन के लिए उन्नत स्थिरता विकल्प कॉन्फ़िगर करें।
Add-Persistenceस्क्रिप्ट में स्थिरता क्षमताएँ जोड़ें।
Install-SSPएक सुरक्षा समर्थन प्रदाता (SSP) dll स्थापित करता है।
Get-SecurityPackagesसभी लोडेड सुरक्षा पैकेजों (SSPs) की गणना करता है।
एंटीवायरस के पास PowerShell के खिलाफ कोई मौका नहीं है!
Find-AVSignature"class101" से DSplit के समान विधि का उपयोग करके एकल बाइट AV हस्ताक्षरों का पता लगाता है।
आपका सारा डेटा मेरा है!
Invoke-TokenManipulationउपलब्ध लॉगऑन टोकन की सूची बनाता है। अन्य उपयोगकर्ताओं के लॉगऑन टोकन के साथ प्रक्रियाएँ बनाता है, और वर्तमान थ्रेड में लॉगऑन टोकन को प्रतिरूपित करता है।
Invoke-CredentialInjectionस्पष्ट-पाठ क्रेडेंशियल्स के साथ लॉगऑन बनाएं बिना संदिग्ध ईवेंट ID 4648 (स्पष्ट क्रेडेंशियल लॉगऑन) को ट्रिगर किए।
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स्पष्ट-पाठ वेब क्रेडेंशियल्स सहित विंडोज वॉल्ट क्रेडेंशियल ऑब्जेक्ट प्रदर्शित करता है।
Out-Minidumpएक प्रक्रिया का पूर्ण-मेमोरी मिनीडंप उत्पन्न करता है।
Get-MicrophoneAudioसिस्टम माइक्रोफ़ोन से ऑडियो रिकॉर्ड करता है और डिस्क पर सहेजता है
PowerShell के साथ सामान्य तबाही मचाएं।
Set-MasterBootRecordप्रूफ ऑफ कॉन्सेप्ट कोड जो आपकी पसंद के संदेश के साथ मास्टर बूट रिकॉर्ड को अधिलेखित करता है।
Set-CriticalProcessPowerShell से बाहर निकलने पर आपकी मशीन को ब्लू स्क्रीन करने का कारण बनता है।
लक्ष्य पर विशेषाधिकार बढ़ाने में मदद करने के लिए उपकरण।
PowerUpसामान्य विशेषाधिकार वृद्धि जाँचों का समाशोधन गृह, कुछ शस्त्रीकरण वैक्टर के साथ।
प्रवेश परीक्षण के टोही चरण में सहायता के लिए उपकरण।
Invoke-Portscanनियमित सॉकेट का उपयोग करके एक सरल पोर्ट स्कैन करता है, (काफी) ढीले ढंग से nmap पर आधारित।
Get-HttpStatusएक शब्दकोश फ़ाइल प्रदान करने पर निर्दिष्ट पथों के लिए HTTP स्थिति कोड और पूर्ण URL लौटाता है।
Invoke-ReverseDnsLookupDNS PTR रिकॉर्ड के लिए एक IP पता श्रेणी स्कैन करता है।
PowerViewPowerView फ़ंक्शनों की एक श्रृंखला है जो नेटवर्क और विंडोज डोमेन गणना और शोषण करती है।
प्रवेश परीक्षण के टोही चरण में सहायता के लिए उपयोग किए जाने वाले शब्दकोशों का एक संग्रह। शब्दकोश निम्नलिखित स्रोतों से लिए गए थे।
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 फ़ंक्शन/cmdlets कमांड-लाइन उपयोगिताएँ नहीं हैं! 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)]कोई भी उपनाम (aliases) तब तक उपयोग न करें जब तक कि पाइपलाइन इनपुट प्राप्त करने के लिए यह समझ में न आता हो। वे कोड को उन लोगों के लिए पढ़ना अधिक कठिन बनाते हैं जो किसी विशेष उपनाम से परिचित नहीं हैं।
कमांड को बहुत लंबा न चलने देने का प्रयास करें। उदाहरण के लिए, एक पाइपलाइन लाइन ब्रेक के लिए एक प्राकृतिक स्थान है।
इनलाइन टिप्पणियों के साथ अति न करें। केवल उनका उपयोग करें जब कोड के कुछ पहलू पाठक के लिए भ्रमित करने वाले हो सकते हैं।
अवांछित/अप्रासंगिक आउटपुट को दबाने के लिए Out-Null का उपयोग करने के बजाय, अवांछित आउटपुट को $null में सहेजें। ऐसा करने से थोड़ा प्रदर्शन सुधार होता है।
अपने मापदंडों के लिए डिफ़ॉल्ट मानों का उपयोग करें जब यह समझ में आता है। आदर्श रूप से, आप एक स्क्रिप्ट चाहते हैं जो बिना किसी मापदंड की आवश्यकता के काम करेगी।
यदि कोई स्क्रिप्ट जटिल कस्टम ऑब्जेक्ट बनाती है, तो एक ps1xml फ़ाइल शामिल करें जो ऑब्जेक्ट के आउटपुट को उचित रूप से प्रारूपित करेगी।