
PowerShell Obfuscator

Invoke-Obfuscation एक PowerShell v2.0+ संगत PowerShell कमांड और स्क्रिप्ट ऑब्सफसीटर है।
2015 की शरद ऋतु में मैंने PowerShell की भाषा की लचीलापन पर शोध शुरू करने का निर्णय लिया और उन विभिन्न तरीकों को सूचीबद्ध करना शुरू किया जिनसे अधिकांश हमलावर नियमित आधार पर काम करते हैं।
शुरू में एनकोडेड कमांड और रिमोट डाउनलोड क्रैडल सिंटैक्स पर ध्यान केंद्रित करते हुए, मैंने पाया कि विभिन्न एस्केप वर्ण जो कमांड के निष्पादन में बाधा नहीं डालते थे, कमांड लाइन आर्गुमेंट्स में बने रहते थे, चाहे वह चल रही प्रक्रिया में हो या सुरक्षा EID 4688 और सिस्मॉन EID 1 इवेंट लॉग में लॉग किया गया हो। इसने मुझे किसी भी PowerShell कमांड या स्क्रिप्ट में पाए जाने वाले प्रत्येक प्रकार के "टोकन" को छिपाने के तरीकों की व्यवस्थित रूप से खोज करने के लिए प्रेरित किया।
फिर मैंने स्ट्रिंग-स्तरीय अस्पष्टीकरण, विभिन्न एन्कोडिंग/एनक्रिप्टिंग तकनीकों (जैसे ASCII/हेक्स/ऑक्टल/बाइनरी और यहाँ तक कि SecureString) के अधिक अस्पष्ट तरीकों की खोज की, और अंत में PowerShell लॉन्च तकनीकों की खोज की ताकि कमांड लाइन आर्गुमेंट्स को powershell.exe से अमूर्त किया जा सके और इसे पैरेंट और यहाँ तक कि ग्रैंडपैरेंट प्रक्रिया में वापस धकेला जा सके।
हमलावरों और कमोडिटी मैलवेयर ने powershell.exe के कमांड लाइन आर्गुमेंट्स से अधिकांश कमांड को छिपाने के लिए अत्यंत बुनियादी अस्पष्टीकरण तकनीकों का उपयोग करना शुरू कर दिया है। मैंने यह उपकरण ब्लू टीम की सहायता के लिए विकसित किया है, ताकि वे उन तकनीकों का पता लगाने की अपनी क्षमताओं का परीक्षण कर सकें, जो मैं वर्तमान में PowerShell 2.0-5.0 में सिंटैक्सिक रूप से संभव मानता हूँ।
उपकरण का एकमात्र उद्देश्य उन सभी धारणाओं को तोड़ना है जो हम रक्षकों के रूप में कर सकते हैं कि PowerShell कमांड कमांड लाइन पर कैसे प्रकट हो सकते हैं। मेरी आशा है कि यह ब्लू टीम को PowerShell लॉगिंग को अपडेट करने के अलावा कमांड लाइन पर अस्पष्टीकरण के संकेतकों की तलाश करने के लिए प्रोत्साहित करेगा, जिसमें मॉड्यूल, स्क्रिप्टब्लॉक और ट्रांसक्रिप्शन लॉगिंग शामिल है, क्योंकि ये स्रोत इस उपकरण द्वारा उत्पन्न अधिकांश अस्पष्टीकरण तकनीकों के पहलुओं को सरल बनाते हैं।
जबकि अस्पष्टीकरण की सभी परतों को अलग-अलग स्क्रिप्ट में बनाया गया है, अधिकांश उपयोगकर्ता Invoke-Obfuscation फ़ंक्शन को अस्पष्टीकरण तकनीकों का पता लगाने और देखने का सबसे आसान तरीका पाएंगे जो यह फ्रेमवर्क वर्तमान में समर्थन करता है।
Invoke-Obfuscation का स्रोत कोड Github पर होस्ट किया गया है, और आप इसे इस रिपॉजिटरी (https://github.com/danielbohannon/Invoke-Obfuscation) से डाउनलोड, फोर्क और समीक्षा कर सकते हैं। कृपया इस प्रोजेक्ट से जुड़े Github के बग ट्रैकर के माध्यम से मुद्दों या सुविधा अनुरोधों की रिपोर्ट करें।
स्थापित करने के लिए:
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
Invoke-Obfuscation Apache 2.0 लाइसेंस के तहत जारी किया गया है।
v1.0 - 2016-09-25 DerbyCon 6.0 (लुइसविले, केंटकी, यूएसए): Invoke-Obfuscation का सार्वजनिक रिलीज़।
v1.1 - 2016-10-09 SANS DFIR Summit (प्राग, चेक गणराज्य): सभी लागू TOKEN अस्पष्टीकरण फ़ंक्शन में -f फॉर्मेट ऑपरेटर पुनर्क्रमण कार्यक्षमता जोड़ी गई। साथ ही वेरिएबल मान सेट करने के लिए अतिरिक्त सिंटैक्स विकल्प जोड़े गए।
v1.2 - 2016-10-20 CODE BLUE (टोक्यो, जापान): Type TOKEN अस्पष्टीकरण जोड़ा गया (प्रकार नाम के लिए स्ट्रिंग अस्पष्टीकरण विकल्पों के साथ प्रत्यक्ष प्रकार कास्टिंग)।
v1.3 - 2016-10-22 Hacktivity (बुडापेस्ट, हंगरी): दो नए LAUNCHER जोड़े गए: CLIP+ और CLIP++। साथ ही सभी ENCODING फ़ंक्शन के लिए अतिरिक्त (और सरल) ऐरे चार रूपांतरण सिंटैक्स जोड़ा गया जिसमें For-EachObject/% की आवश्यकता नहीं है।
v1.4 - 2016-10-28 BruCON (गेन्ट, बेल्जियम): नया BXOR ENCODING फ़ंक्शन जोड़ा गया। साथ ही सभी ENCODING फ़ंक्शनों के सभी घटकों के लिए यादृच्छिक केस और सभी LAUNCHER के लिए PowerShell निष्पादन फ़्लैग्स को बढ़ाया गया। अंत में, सभी LAUNCHER में -ExecutionPolicy के लिए -EP शॉर्टहैंड विकल्प और -WindowStyle PowerShell निष्पादन फ़्लैग का वैकल्पिक पूर्णांक प्रतिनिधित्व जोड़ा गया: Normal (0), Hidden (1), Minimized (2), Maximized (3)।
v1.5 - 2016-11-04 Blue Hat (रेडमंड, वाशिंगटन, यूएसए): WMIC LAUNCHER जोड़ा गया जिसमें WMIC कमांड लाइन आर्गुमेंट्स का कुछ यादृच्छिकीकरण है।
v1.6 - 2017-01-24 Blue Hat IL (तेल अवीव, इज़राइल):
v1.7 - 2017-03-03 nullcon (गोवा, भारत):
v1.8 - 2017-07-27 Black Hat (लास वेगास, नेवादा, यूएसए):
v1.8.1 - 2017-12-19:
v1.8.2 - 2018-01-04: