
Excel 4.0 (XLM) मैक्रो जनरेटर DLL और EXE को मेमोरी में इंजेक्ट करने के लिए।
| \ / / | | | _ __ | || _ \ ___ _ __ _ | | | | \ / | | | | | | ' | | | | |/ _ | ' | | | | | | | / \ || || |__| | | | || || | () | | | | || | | |_____//__|||| ||_|____/ _/|| ||_,|__| @JoeLeonJr (@FortyNorthSec) द्वारा
EXCELntDonut एक XLM (Excel 4.0) मैक्रो जनरेटर है। C# स्रोत कोड (EXE) से शुरू करें और एक XLM (Excel 4.0) मैक्रो के साथ समाप्त करें जो आपके कोड को मेमोरी में निष्पादित करेगा। XLM (Excel 4.0) मैक्रोज़ को .XLS फ़ाइलों में सहेजा जा सकता है।
## स्थापना
```bash
chmod +x install.sh
./install.sh
क्या स्थापित होता है?
यदि आप EXCELntDonut को केवल एक Python स्क्रिप्ट के रूप में चलाना चाहते हैं, तो आपको "pandas" और "donut-shellcode" नामक दो पैकेजों के साथ एक वर्चुअल एनवायरनमेंट सेट अप करना होगा। इसके अतिरिक्त, आपको apt-get install mono-complete करना होगा और python3 का उपयोग करके drive.py स्क्रिप्ट को कॉल करना होगा। हम सिर्फ ./install.sh bash स्क्रिप्ट का उपयोग करने की सलाह देते हैं, लेकिन यह आप पर निर्भर है।
Usage:
$ EXCELntDonut -f exe_source.cs -r System.Windows.Forms.dll --sandbox --obfuscate
Flags:
(आवश्यक)
-f आपके C# स्रोत कोड वाली फ़ाइल का पथ (केवल exe)
-r आपके C# कोड को संकलित करने के लिए आवश्यक संदर्भ (Linux पर mcs का उपयोग करते समय वही)
(उदा: -r 'System.Management')
(वैकल्पिक)
-o आउटपुट फ़ाइल नाम
--sandbox
बुनियादी सैंडबॉक्स जाँचें करें। जैसे-जैसे नए दृष्टिकोण खोजे जाएंगे, इसे अपडेट किया जाएगा।
--obfuscate
बुनियादी मैक्रो अस्पष्टीकरण करें।
आप एक C# फ़ाइल प्रदान करते हैं जिसमें आपका पेलोड होता है (जैसे एक EXE जिसमें एक मुख्य विधि होती है जो कोबाल्ट स्ट्राइक बीकन पेलोड को निष्पादित करती है)। उस C# फ़ाइल को MCS का उपयोग करके दो .NET असेंबली में संकलित किया जाता है: x86 और x64। संकलन के बाद, शानदार उपकरण Donut (x86 के लिए) और CLRvoyance (x64 के लिए) प्रत्येक असेंबली को स्थिति-स्वतंत्र शेलकोड में परिवर्तित करते हैं। इसके बाद, सभी नलबाइट्स हटा दिए जाते हैं, क्योंकि XLM (Excel 4.0) मैक्रो नलबाइट्स के साथ अच्छी तरह से काम नहीं करते हैं, और पेलोड को 255 से अधिक वर्णों (x86 के लिए) या 10 वर्णों (x64 के लिए) वाली पंक्तियों में विभाजित किया जाता है।
एक बार जब शेलकोड तैयार हो जाता है, तो इसे बुनियादी प्रक्रिया इंजेक्शन फ़ंक्शन (VirtualAlloc, WriteProcessMemory और CreateThread) के साथ-साथ एक आर्किटेक्चर जाँच फ़ंक्शन के साथ जोड़ा जाता है ताकि यह निर्धारित किया जा सके कि लक्ष्य सिस्टम पर कौन सा पेलोड (x86 या x64) चलाना है। यदि आप सैंडबॉक्स जाँच या बुनियादी अस्पष्टीकरण चलाना चुनते हैं, तो वे फ़ंक्शन आपके मैक्रो को अपडेट करेंगे। अंत में, आउटपुट एक CSV फ़ाइल (.txt के रूप में सहेजी गई) में रखा जाता है।
एक बार जब आपके पास EXCELntDonut से आउटपुट फ़ाइल हो, तो आउटपुट फ़ाइल को एक टेक्स्ट एडिटर में खोलें और इसकी पूरी सामग्री को कॉपी करें (Ctrl-A, Ctrl-S)। Windows VM पर Excel खोलें, "Sheet 1" पर राइट-क्लिक करें और "Insert" चुनें। "MS Excel 4.0 Macro" चुनें। सेल A1 पर जाएं और EXCELntDonut आउटपुट पेस्ट करें। सभी डेटा संभवतः एक कॉलम में पेस्ट हो जाएगा। डेटा अर्धविराम ";" से अलग किया गया है। "Data" टैब पर जाएं और "Text-to-columns" पर क्लिक करें। "Delimited" चुनें और अगली स्क्रीन पर "Semicolon" चुनें और फिर "Finish" पर क्लिक करें। मैक्रो उपयुक्त कॉलम और पंक्तियों में फैल जाएगा।
(नोट - यदि आपने "--obfuscate" फ्लैग चुना है, तो आपको अपना वास्तविक कोड खोजने के लिए काफी क्षैतिज रूप से स्क्रॉल करना होगा, क्योंकि अस्पष्टीकरण तर्क का हिस्सा मैक्रो को वर्कशीट के यादृच्छिक भाग में ले जाता है)।
हम इस बिंदु पर दो चीजों की सलाह देते हैं:
फ़ाइल (.xls) को सहेजें और इसे खोलने का प्रयास करें। इसे स्वचालित रूप से आपका पेलोड निष्पादित करना चाहिए।
ये जाँचें वास्तविक खतरे वाले अभिनेताओं द्वारा अपने मैलवेयर में उपयोग किए जाने वाले तरीकों पर आधारित हैं।
=FORMULA(D3&D23&D54&D23&D44,E45)
FORMULA फ़ंक्शन हमें एक सूत्र रखने की अनुमति देता है, जिसे बाद में निष्पादित किया जा सकता है, दूसरे सेल में। इस मामले में, हम प्रक्रिया इंजेक्शन निर्देश डालते हैं और फिर वास्तविक फ़ंक्शन को निष्पादित करने के लिए FORMULA फ़ंक्शन का उपयोग करके उसे दूसरे सेल में रखते हैं। यह रक्षकों को "VirtualAlloc" जैसी चीजों को देखने से स्थैतिक विश्लेषण करने से बचाता है।
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
@JoeLeonJr (@FortyNorthSec) द्वारा
[i] आपकी x86 .NET असेंबली तैयार की जा रही है।
warning CS8001: SDK पथ हल नहीं किया जा सका
test.cs(2,14): error CS0234: प्रकार या नामस्थान का नाम `Management' नामस्थान `System' में मौजूद नहीं है। क्या आप एक असेंबली संदर्भ याद कर रहे हैं?
यह त्रुटि सबसे अधिक संभावना है कि mono का उपयोग करके संकलन के दौरान आप एक संदर्भ असेंबली याद कर रहे हैं। इसे ठीक करने के लिए, बस -r फ्लैग में उल्लिखित नामस्थान को पास करें। इस मामले में, हम कमांड लाइन में -r 'System.Management' जोड़ेंगे। नया कमांड होगा:
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r 'System.Management'
root@excelntdonut-test:/opt# EXCELntDonut -f test.cs -r System.Management
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
@JoeLeonJr (@FortyNorthSec) द्वारा
[i] आपकी x86 .NET असेंबली तैयार की जा रही है।
warning CS8001: SDK पथ हल नहीं किया जा सका
error CS0006: मेटाडेटा फ़ाइल `System.Management' नहीं मिल सकी
[x] MCS का उपयोग करके x86 .NET असेंबली तैयार करने में त्रुटि। ऊपर दिया गया त्रुटि संदेश देखें।
यह त्रुटि तब तक नहीं आनी चाहिए जब तक कि आप EXCELntDonut को install.sh bash स्क्रिप्ट का उपयोग किए बिना नहीं चलाते। उस स्थिति में, आपको मैन्युअल रूप से mono-complete स्थापित करना होगा। यह प्रासंगिक निर्भरताओं को डाउनलोड करेगा। आप इसे इस प्रकार apt का उपयोग करके स्थापित कर सकते हैं:
apt-get install mono-complete
root@kali:~/Desktop# EXCELntDonut -f test.cs
_______ ______ _____ _ _ ____ _
| ____\ \/ / ___| ____| | _ __ | |_| _ \ ___ _ __ _ _| |_
| _| \ / | | _| | | | '_ \| __| | | |/ _ \| '_ \| | | | __|
| |___ / \ |___| |___| |___| | | | |_| |_| | (_) | | | | |_| | |_
|_____/_/\_\____|_____|_____|_| |_|\__|____/ \___/|_| |_|\__,_|\__|
@JoeLeonJr (@FortyNorthSec) द्वारा
[i] आपकी x86 .NET असेंबली तैयार की जा रही है।
error CS5001: प्रोग्राम `_excelntdonut_GJAoNuVPMcX.exe' में एक प्रवेश बिंदु के लिए उपयुक्त स्थिर `Main' विधि नहीं है
[x] MCS का उपयोग करके x86 .NET असेंबली तैयार करने में त्रुटि। ऊपर दिया गया त्रुटि संदेश देखें।
फिलहाल, EXCELntDonut केवल Main फ़ंक्शन में पेलोड वाली C# फ़ाइलों की अनुमति देता है।
@InQuest द्वारा शुरुआत करने के लिए कुछ Yara नियम:
बहुत छिपी शीट खोजें
https://github.com/InQuest/yara-rules/blob/master/Excel_Hidden_Macro_Sheet.rule
Auto_Open स्ट्रिंग खोजें
https://github.com/Neo23x0/signature-base/blob/master/yara/general_officemacros.yar
XLM फ़ाइलों की समीक्षा करने के लिए OLEDUMP.py का उपयोग करने के बारे में बहुत सारे पोस्ट हैं। इस पर विचार करें:
https://clickallthethings.wordpress.com/2020/04/06/covid-19-excel-4-0-macros-and-sandbox-detection/
यह हमारे रडार पर भी नहीं होता अगर Outflank (@outflanknl) के लोगों द्वारा किए गए शानदार काम के लिए नहीं। @StanHacked को इस परियोजना के दौरान उनकी अंतर्दृष्टि के लिए विशेष धन्यवाद। साथ ही, यह परियोजना Donut (@TheWover और @odzhan द्वारा) और संबंधित Python लाइब्रेरी (@byt3bl33d3r द्वारा) के बिना संभव नहीं होती। संबंधित, Accenture की टीम ने CLRvoyance बनाया, जिसने कुछ x64 समस्याओं को हल किया जिन्हें हम Donut + XLM 4.0 मैक्रो के साथ हल नहीं कर पाए। अंत में, XLM मैक्रो को Excel के 64-बिट संस्करणों के साथ संगत बनाने पर शानदार शोध के लिए Cybereason के Philip Tsukerman को धन्यवाद।
हम इस उपकरण के दुरुपयोग के लिए जिम्मेदार नहीं हैं। यह उपकरण शैक्षिक और अधिकृत-परीक्षण उद्देश्यों के लिए तैयार किया गया था ताकि यह प्रदर्शित किया जा सके कि C# स्रोत कोड को XLM (Excel 4.0) मैक्रो का उपयोग करके मेमोरी में कैसे इंजेक्ट किया जा सकता है। इस परियोजना का अंतिम लक्ष्य है (1) रेड टीमर्स को एक और फ़िशिंग पेलोड विकल्प प्रदान करना ताकि वास्तविक विरोधी वर्तमान में जो उपयोग कर रहे हैं उसका अनुकरण किया जा सके, और (2) रक्षकों को विश्लेषण और शमन बनाने के लिए एक संदर्भ बिंदु प्रदान करना। इस प्रकार के पेलोड को तुरंत उत्पन्न करने के लिए एक उपकरण के बिना, हमारा मानना है कि रक्षक वास्तव में आने वाली चीज़ों के लिए पर्याप्त रूप से तैयार नहीं होंगे। कृपया जिम्मेदारी से कार्य करें।
कृपया इस फ़ोल्डर में लाइसेंस फ़ाइल देखें। कृपया ध्यान दें कि यह उपकरण Donut और CLRvoyance सहित दो अन्य ओपन सोर्स उपकरणों को शामिल करता है।