
Empire is a PowerShell and Python post-exploitation agent.

Invoke-Obfuscation एक PowerShell v2.0+ संगत PowerShell कमांड और स्क्रिप्ट अस्पष्टकर्ता है।
2015 की शरद ऋतु में मैंने PowerShell भाषा की लचीलापन पर शोध शुरू करने का निर्णय लिया और उन विभिन्न तरीकों को सूचीबद्ध करना शुरू किया जिनसे अधिकांश हमलावर नियमित रूप से कुछ सामान्य तकनीकों को अंजाम देते हैं।
प्रारंभ में एन्कोडेड कमांड और रिमोट डाउनलोड क्रैडल सिंटैक्स पर ध्यान केंद्रित करते हुए, मैंने पाया कि विभिन्न एस्केप कैरेक्टर जो कमांड के निष्पादन में बाधा नहीं डालते, वे कमांड लाइन आर्गुमेंट्स में बने रहते हैं, चल रही प्रक्रिया में और साथ ही Security EID 4688 और Sysmon EID 1 इवेंट लॉग में लॉग किए गए। इसने मुझे किसी भी PowerShell कमांड या स्क्रिप्ट में पाए जाने वाले प्रत्येक प्रकार के "टोकन" को अस्पष्ट करने के तरीकों को व्यवस्थित रूप से खोजने के लिए प्रेरित किया।
फिर मैंने स्ट्रिंग-स्तरीय अस्पष्टीकरण करने के अधिक अस्पष्ट तरीकों, विभिन्न एन्कोडिंग/एन्क्रिप्टिंग तकनीकों (जैसे ASCII/hex/octal/binary और SecureString) और अंत में PowerShell लॉन्च तकनीकों का पता लगाया ताकि कमांड लाइन आर्गुमेंट्स को powershell.exe से अलग किया जा सके और उन्हें पैरेंट और यहां तक कि ग्रैंडपैरेंट प्रक्रिया में वापस धकेला जा सके।
हमलावरों और कमोडिटी मैलवेयर ने powershell.exe के कमांड लाइन आर्गुमेंट्स से अधिकांश कमांड को छिपाने के लिए बहुत ही बुनियादी अस्पष्टीकरण तकनीकों का उपयोग करना शुरू कर दिया है। मैंने इस टूल को ब्लू टीम की सहायता के लिए विकसित किया है ताकि वे PowerShell 2.0-5.0 में सिंटैक्टिक रूप से संभव के रूप में मैं जो वर्तमान में जानता हूं उसके आधार पर अस्पष्ट कमांड का अनुकरण कर सकें ताकि वे इन तकनीकों का पता लगाने की अपनी क्षमताओं का परीक्षण कर सकें।
टूल का एकमात्र उद्देश्य कमांड लाइन पर PowerShell कमांड कैसे दिखाई दे सकते हैं, इसके बारे में हम रक्षकों के किसी भी अनुमान को तोड़ना है। मेरी आशा है कि यह ब्लू टीम को PowerShell लॉगिंग को Module, ScriptBlock और Transcription लॉगिंग शामिल करने के लिए अपडेट करने के अलावा कमांड लाइन पर अस्पष्टीकरण के संकेतकों (Indicators of Obfuscation) को देखने के लिए प्रोत्साहित करेगा क्योंकि ये स्रोत इस टूल द्वारा उत्पन्न अस्पष्टीकरण तकनीकों के अधिकांश पहलुओं को सरल बनाते हैं।
जबकि अस्पष्टीकरण की सभी परतों को अलग-अलग स्क्रिप्ट में बनाया गया है, अधिकांश उपयोगकर्ता 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 (Louisville, Kentucky USA): Invoke-Obfuscation का सार्वजनिक रिलीज़।
v1.1 - 2016-10-09 SANS DFIR Summit (Prague, Czech Republic): सभी लागू TOKEN अस्पष्टीकरण फ़ंक्शन में -f फ़ॉर्मेट ऑपरेटर री-ऑर्डरिंग कार्यक्षमता जोड़ी गई। वेरिएबल मान सेट करने के लिए अतिरिक्त सिंटैक्स विकल्प भी जोड़े गए।
v1.2 - 2016-10-20 CODE BLUE (Tokyo, Japan): Type TOKEN अस्पष्टीकरण जोड़ा गया (प्रकार नाम के लिए स्ट्रिंग अस्पष्टीकरण विकल्पों के साथ प्रत्यक्ष प्रकार कास्टिंग)।
v1.3 - 2016-10-22 Hacktivity (Budapest, Hungary): दो नए LAUNCHER जोड़े गए: CLIP+ और CLIP++। सभी ENCODING फ़ंक्शन के लिए अतिरिक्त (और सरल) ऐरे चार रूपांतरण सिंटैक्स भी जोड़ा गया जिसके लिए For-EachObject/% की आवश्यकता नहीं होती है।
v1.4 - 2016-10-28 BruCON (Ghent, Belgium): नया 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 (Redmond, Washington USA): WMIC LAUNCHER जोड़ा गया जिसमें WMIC कमांड लाइन आर्गुमेंट्स का कुछ रैंडमाइज़ेशन है।
v1.6 - 2017-01-24 Blue Hat IL (Tel Aviv, Israel):
Invoke-Obfuscation -ScriptBlock {Write-Host 'CLI FTW!'} -Command 'Token\All\1,Encoding\1,Launcher\Stdin++\234,Clip' -Quiet -NoExitToken\All\1,String\3,Encoding\5,Launcher\Ps\234,ClipToken\*\*,String\[13],Encoding\(1|6),Launcher\.*[+]{2}\234,Clip[String]::Join('',$string) JOIN सिंटैक्स जोड़ा गयाPtrToStringAnsi / SecureStringToGlobalAllocAnsiPtrToStringBSTR / SecureStringToBSTRPtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[3].Name).InvokePtrToStringAuto, ([Runtime.InteropServices.Marshal].GetMembers()[5].Name).InvokePtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[2].Name).InvokePtrToStringUni , ([Runtime.InteropServices.Marshal].GetMembers()[4].Name).InvokePtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[0].Name).InvokePtrToStringAnsi, ([Runtime.InteropServices.Marshal].GetMembers()[1].Name).Invokev1.7 - 2017-03-03 nullcon (Goa, India): 3 नए LAUNCHER जोड़े गए: RUNDLL, RUNDLL++ और MSHTA++ अतिरिक्त ExecutionContext वाइल्डकार्ड वेरिएबल स्ट्रिंग्स जोड़ी गईं।
v1.8 - 2017-07-27 Black Hat (Las Vegas, Nevada USA): 2 नए ENCODING विकल्प जोड़े गए: विशेष वर्ण और व्हाइटस्पेस