
सुरक्षा पेशेवरों के लिए एक PowerShell शस्त्रागार
[!IMPORTANT]
यह रिपॉजिटरी अब संग्रहीत हो गई है। हालाँकि यह एक मजेदार यात्रा थी, मुझे लगता है कि PSArmoury अपनी उपयोगिता खो चुका है।
पावरशेल आर्मरी पेंटेस्टर्स, "यहाँ रंग डालें"-टीमर्स और उन सभी के लिए है जो अपने अभियानों के दौरान विभिन्न पावरशेल टूल्स का उपयोग करते हैं। यह आपको अपनी सभी पसंदीदा पावरशेल स्क्रिप्ट्स को एक ही, अस्पष्टित फ़ाइल में डाउनलोड और स्टोर करने की अनुमति देता है।
आपको Rubeus, PowerView, ... को मैन्युअल रूप से अपडेट करने की चिंता करने की ज़रूरत नहीं है। बस एक बार कॉन्फ़िगरेशन फ़ाइल बनाएँ या टूल के साथ शामिल डिफ़ॉल्ट का उपयोग करें। अब से, आपको अगले अभियान पर जाने से पहले बस "New-PSArmoury" चलाना होगा। इसके अतिरिक्त, PSArmoury आपके कोड को अस्पष्ट करता है और एक शामिल AMSI बाईपास के साथ आता है। मॉड्यूलर डिज़ाइन से आपके लिए चोरी या अस्पष्टता कोड को बदलना आसान हो जाना चाहिए, यदि उस पर कोई डिटेक्शन हो।
PSArmoury का वर्तमान संस्करण मॉड्यूलर डिज़ाइन को पसंद करता है।
New-PSArmoury.ps1
PSArmoury.json
utilities
ConvertTo-Powershell.ps1
Invoke-Shuffle.ps1
modules
evasion.ps1
obfuscation.ps1
कोड को एक मुख्य जनरेटर स्क्रिप्ट में विभाजित किया गया है जिसे New-PSArmoury.ps1 कहा जाता है, जिसे आप निष्पादित करते हैं। चोरी, अस्पष्टता और अस्पष्टता हटाने का कोड modules निर्देशिका में अलग-अलग .ps1 फ़ाइलों में संग्रहीत किया जाता है। इन अलग-अलग फ़ाइलों को मुख्य स्क्रिप्ट द्वारा आमंत्रित किया जाता है और इससे आपके लिए विशिष्ट फ़ंक्शन (जैसे कि AMSI बाईपास) को बदलना आसान होना चाहिए। मॉड्यूल निर्देशिका के अतिरिक्त, utilities निर्देशिका भी है। यहाँ आपको स्टैंडअलोन स्क्रिप्ट मिलेंगी जो विशिष्ट परिदृश्यों में उपयोगी हो सकती हैं।
मॉड्यूल निर्देशिका का डिफ़ॉल्ट पथ .\modules है जहाँ डॉट आपके शेल के वर्तमान कार्यशील निर्देशिका को संदर्भित करता है। आप New-PSArmoury के -ModulesDirectory तर्क का उपयोग करके मॉड्यूल निर्देशिका का पथ बदल सकते हैं। हालाँकि स्क्रिप्ट फ़ाइलों के नाम मुख्य स्क्रिप्ट में हार्ड-कोडेड हैं और हमेशा इस प्रकार होने की उम्मीद की जाती है:
आइए इन दोनों पर करीब से नज़र डालते हैं।
इस स्क्रिप्ट में वह कोड होना चाहिए जो आप जिसे भी बायपास करना चाहते हैं, उसे बायपास करने के लिए है। डिफ़ॉल्ट रूप से, इसमें एक प्रसिद्ध AMSI बाईपास होता है (amsi.fail को धन्यवाद)। कृपया ध्यान दें कि:
इस स्क्रिप्ट में अस्पष्टता और अस्पष्टता हटाने के लिए उपयोग किया जाने वाला कोड होना चाहिए। डिफ़ॉल्ट obfuscation.ps1 RC2 एन्क्रिप्शन का उपयोग करता है। उपयोग के लिए तैयार उदाहरण:
ध्यान दें कि TEMPLATE_obfuscation_empty.ps1 वास्तव में कुछ नहीं करता है और आपके अपने फ़ंक्शन बनाने के लिए एक टेम्पलेट के रूप में कार्य करता है। यदि आप उनमें से किसी एक का उपयोग करना चाहते हैं, तो बस इसे "obfuscation.ps1" नाम दें और डिफ़ॉल्ट फ़ाइल को हटा दें।
यदि आप एक अनुकूलित संस्करण बनाना चाहते हैं, तो अस्पष्टता के संबंध में निम्नलिखित बातों का ध्यान रखें:
और अस्पष्टता हटाने के संदर्भ में इन बातों को याद रखना सुनिश्चित करें:
उपयोगिताएँ निर्देशिका में उपयोगी स्टैंडअलोन स्क्रिप्ट शामिल हैं।
कॉन्फ़िग फ़ाइल को एक मान्य json होना चाहिए जिसमें एक या अधिक ऑब्जेक्ट वाली एक एकल सरणी हो, जहाँ प्रत्येक ऑब्जेक्ट को एक स्क्रिप्ट स्रोत के रूप में व्याख्यायित किया जाता है। प्रत्येक ऑब्जेक्ट में निम्नलिखित गुण होते हैं:
नाम (अनिवार्य)
इस ऑब्जेक्ट में शामिल स्क्रिप्ट की पहचान करने के लिए आपकी पसंद का एक नाम। यह केवल आपके संदर्भ के लिए है।
URL (अनिवार्य)
स्क्रिप्ट सामग्री प्राप्त करने का स्थान। यह एक वेब संसाधन (https://) का URL, स्थानीय पथ (C:) या नेटवर्क संसाधन (\...) हो सकता है। URL को क्रमशः Net.Webclient या PowerShell के Get-Item में डाला जाता है। इसलिए मूल रूप से हर वह प्रारूप जो इन दोनों में से कोई एक डिफ़ॉल्ट रूप से संभाल सकता है, काम करना चाहिए।
प्रकार (अनिवार्य)
यह आर्मरी निर्माता को स्क्रिप्ट स्थान के बारे में संकेत देता है। तीन मान्य प्रकार हैं:
FileInclusionFilter (वैकल्पिक)
केवल "GitHub" प्रकार के ऑब्जेक्ट में व्याख्यायित किया जाएगा। पूर्ण फ़ाइल नाम के विरुद्ध PowerShell के "like" तुलना ऑपरेटर से मिलान किया जाएगा, इसलिए ध्यान रखें कि आपको वाइल्डकार्ड स्वयं शामिल करने होंगे। यदि आप फ़ाइल नाम के किसी भाग से मिलान करना चाहते हैं, तो एक तारा (*) शामिल करना न भूलें। "*.ps1" का अर्थ है वे सभी फ़ाइलें जो ".ps1" से समाप्त होती हैं, लेकिन ".ps1" का अर्थ केवल ".ps1" है।
आपको एक फ़िल्टर शामिल करने की आवश्यकता नहीं है, लेकिन यदि आप करते हैं, तो आपको इसका उपयोग करना होगा। एक खाली InclusionFilter का अर्थ है कोई फ़ाइल नहीं।
FileExclusionFilter (वैकल्पिक)
InclusionFilter की तरह लेकिन स्पष्ट रूप से दूसरी तरफ। बहिष्करण की प्राथमिकता अधिक है।
अधिक विवरण के लिए इनलाइन पावरशेल सहायता (man -full New-PSArmoury) देखें।
-Path
आपकी नई आर्मरी फ़ाइल का पथ। डिफ़ॉल्ट ".\MyArmoury.ps1" है।
-FromFile
अपनी पावरशेल स्क्रिप्ट को सीधे किसी स्थानीय फ़ोल्डर या फ़ाइल से लोड करें और आपको कॉन्फ़िग फ़ाइल प्रदान करने की आवश्यकता नहीं है।
-Config
आपकी JSON-कॉन्फ़िग फ़ाइल का पथ। विचारों के लिए इस स्क्रिप्ट के साथ आने वाले नमूने पर एक नज़र डालें।
-ModulesDirectory
मॉड्यूल निर्देशिका का पथ। डिफ़ॉल्ट ".\modules" है। यदि ModulesDirectory का उपयोग किया जाता है, तो EvasionPath और ObfuscationPath पैरामीटर का उपयोग नहीं किया जा सकता है।
-EvasionPath