
RedPeanut एक छोटा RAT है जो .Net Core 2 में विकसित किया गया है और इसका एजेंट .Net 3.5 / 4.0 में है।
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
वर्तमान में परीक्षण किया जा रहा है।
ज्ञात मॉड्यूल समस्याएँ:
process -> spawnasagent
process -> spawnasshellcode
RedPeanut एक छोटा RAT है जो .Net Core 2 में विकसित किया गया है और इसका एजेंट .Net 3.5 / 4.0 में है। RedPeanut कोड निष्पादन DonutCS के साथ उत्पन्न शेलकोड पर आधारित है। इसलिए यह एक हाइब्रिड है, हालाँकि .Net में विकसित है, यह पूरी तरह से Assembly.Load पर निर्भर नहीं करता है। इससे डिटेक्शन सतह बढ़ जाती है, लेकिन यह हमें डॉटनेट वातावरण, प्रक्रिया प्रबंधन और इंजेक्शन से संबंधित विभिन्न चोरी तकनीकों का अभ्यास और प्रयोग करने की अनुमति देता है। इस व्यवहार को "managed" और "unmanaged" कमांड के साथ रनटाइम पर बदला जा सकता है। यदि आप एक सुसंगत .Net C2 फ्रेमवर्क में रुचि रखते हैं जिसका उपयोग अभियान में किया जा सकता है, तो मैं Covenant का सुझाव देता हूँ।
RedPeanut को निम्नलिखित के साथ हथियारबंद किया गया है:
RedPeanut एजेंट को .Net 3.5 और 4.0 में संकलित किया जा सकता है और NamedPipe के माध्यम से पिवोटिंग क्षमताएँ रखता है। एजेंट, जब अनमैनेज्ड मोड में निष्पादित होता है, तो अपने महत्वपूर्ण कार्यों को एक अलग प्रक्रिया में करता है ताकि AV प्रतिक्रिया या निष्पादन के दौरान त्रुटि के कारण पूरा एजेंट खोने से बचा जा सके।
निष्पादन प्रवाह इस प्रकार है:
एजेंट वर्तमान में केवल https चैनल का समर्थन करता है।
एजेंट चेक-इन प्रोटोकॉल बहुत सरल है:
वैकल्पिक रूप से, कवर चैनल सुविधा को सक्रिय किया जा सकता है (फिलहाल यह केवल एक PoC है)। विचार एक वास्तविक उपयोगकर्ता द्वारा किए गए वेब ट्रैफ़िक का अनुकरण करना है। आमतौर पर एक वेब पेज HTML पेज और उसके प्रदर्शन के लिए आवश्यक सभी ऑब्जेक्ट जैसे css, चित्र आदि से बना होता है। नए कार्य के अनुरोध पर सर्वर से प्रतिक्रिया सीधे एन्क्रिप्टेड कार्य नहीं होगी, बल्कि एक HTML पेज होगा जिसमें से उस इमेज के लिंक को निकाला जाएगा जिसमें एन्क्रिप्टेड कार्य एम्बेडेड होगा। इमेज के लिए HTTP अनुरोध में Referer हेडर होगा।
सामग्री वितरण 4 चैनलों में व्यवस्थित है:
RedPeanut सर्वर और क्लाइंट दोनों पक्षों पर नेटवर्क फुटप्रिंट को अनुकूलित करने की क्षमता रखता है। सेट किए जा सकने वाले गुण हैं:
डोमेन फ्रंटिंग
डोमेन फ्रंटिंग समर्थन सक्षम करने के लिए क्लाइंट अनुभाग में "Host" हेडर को मान देना आवश्यक है, दोनों पोस्ट और गेट के लिए (डिफ़ॉल्ट प्रोफ़ाइल 2 में उदाहरण दिया गया है)।
PowerShellExecuter मॉड्यूल आपको एक रनस्पेस में AMSI बायपास, लॉगिंग बायपास और PowerView पहले से लोड के साथ ऑनलाइनर कमांड या फ़ाइलों को निष्पादित करने की अनुमति देता है।
संस्करण 0.3.0 से शुरू, RedPeanutAgent blockdlls कमांड का समर्थन करता है। इस विकल्प के साथ, अनमैनेज्ड मोड में कार्य करने के लिए बनाई गई चाइल्ड प्रक्रियाएँ PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON विशेषता के साथ बनाई जाती हैं। यह विशेषता प्रक्रिया को उन dlls को लोड करने से रोकती है जो Microsoft द्वारा हस्ताक्षरित नहीं हैं, यह हमारे कार्यों को AV और EDR हुकिंग तकनीकों से बचा सकता है।
RedPeanutAgent संदिग्ध Dll Imports से बचने के लिए डायनेमिक Dll लोडिंग का उपयोग करता है। डायनेमिक Dll लोडिंग का श्रेय @TheRealWover, @cobbr_io और @FuzzySec को जाता है, जिन्होंने SharpSploit में काम किया।
कुछ AV और EDR विक्रेता गतिविधियों पर नज़र रखने के लिए हुकिंग तकनीक का उपयोग करते हैं। हुक किए गए syscall का उपयोग करने से बचने के लिए RedPeanutAgent डायरेक्ट syscall का उपयोग करता है, आवश्यक कोड को ऑटो-इंजेक्ट करता है। डायरेक्ट Syscall का श्रेय @Cneelis को जाता है।
RedPeanut को चलाने के लिए आपके पास dotnet स्थापित होना चाहिए। Kali पर dotnet स्थापित करने के लिए:
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget -q https://packages.microsoft.com/config/debian/9/prod.list
mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
chown root:root /etc/apt/sources.list.d/microsoft-prod.list
apt-get install apt-transport-https
apt-get update
apt-get install dotnet-sdk-2.1
git clone --recursive https://github.com/b4rtik/RedPeanut.git
कवर्ड चैनल कार्यक्षमता के लिए libgdiplus लाइब्रेरी स्थापित करना आवश्यक है, इसलिए:
Linux उपयोगकर्ताओं के लिए:
apt-get install -y libgdiplus
OSx के लिए
brew install mono-libgdiplus
असेंबली हस्ताक्षर कुंजी उत्पादन
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
फिर key.snk को Workspace/KeyFile में कॉपी करें
root@kali:~# cd RedPanut
root@kali:~/RedPeanut# dotnet run
Using launch settings from /root/Projects/RedPeanut/Properties/launchSettings.json...
Enter password to encrypt serverkey:
__________________________________________________________________________
ooooooo________________oo_ooooooo___________________________________oo____
oo____oo___ooooo___oooooo_oo____oo__ooooo___ooooo__oo_ooo__oo____o__oo____
oo____oo__oo____o_oo___oo_oo____oo_oo____o_oo___oo_ooo___o_oo____o_oooo___
ooooooo___ooooooo_oo___oo_oooooo___ooooooo_oo___oo_oo____o_oo____o__oo____
oo____oo__oo______oo___oo_oo_______oo______oo___oo_oo____o_ooo___o__oo__o_
oo_____oo__ooooo___oooooo_oo________ooooo___oooo_o_oo____o_oo_ooo____ooo__
__________________________________________________________________________
________________________________________________RedPeanut_v0.3.0___@b4rtik
__________________________________________________________________________
[*] No profile available, creating new one...
[RP] >
DonutCS एक शेलकोड निर्माण उपकरण है जो .NET असेंबली से पोजीशन-इंडिपेंडेंट शेलकोड पेलोड बनाता है। इस शेलकोड का उपयोग मनमानी Windows प्रक्रियाओं में असेंबली को इंजेक्ट करने के लिए किया जा सकता है। एक मनमानी .NET असेंबली, पैरामीटर और एक एंट्री पॉइंट (जैसे Program.Main) दिए जाने पर, यह पोजीशन-इंडिपेंडेंट शेलकोड उत्पन्न करता है जो इसे मेमोरी से लोड करता है। .NET असेंबली को या तो URL से स्टेज किया जा सकता है या शेलकोड में सीधे एम्बेडेड करके स्टेजलेस बनाया जा सकता है।
CLR स्थायित्व तकनीक को पहली बार इस पोस्ट में प्रस्तुत किया गया था @Am0nsec द्वारा। तकनीक में एप्लिकेशन डोमेन मैनेजर हुकिंग करना शामिल है। जैसा कि पोस्ट में वर्णित है, हुकिंग करने के लिए असेंबली आवश्यक है जो GAC में उपलब्ध है। GAC से उपयोग की जाने वाली असेंबली को स्ट्रॉन्ग-नेम्ड होना चाहिए और फिर एक कुंजी से हस्ताक्षरित किया जाना चाहिए। CLR स्थायित्व मॉड्यूल को असेंबली पर हस्ताक्षर करने के लिए एक कुंजी की आवश्यकता होती है, जिसे sn.exe टूल से निम्नानुसार उत्पन्न किया जा सकता है:
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>sn.exe -k 4096 key.snk
key.snk फ़ाइल को Workspace/KeyFile फ़ोल्डर में कॉपी करें। इस फ़ाइल का उपयोग स्थायित्व के लिए असेंबली पर हस्ताक्षर करने के लिए किया जाएगा।
RedPeanut में उपलब्ध कुछ प्रसिद्ध उपकरण, जैसे GhostPack उपकरण, पूरी तरह से लपेटे गए हैं और क्लाइंट साइड पर निष्पादित किए जाते हैं। पूरे रिपॉजिटरी को अपडेट किए बिना उपकरणों को अपडेट करने के लिए, उदाहरण के लिए SeatBelt, यह आवश्यक है: Seatbelt रिपॉजिटरी को क्लोन करें, "Main" मेथड का नाम बदलकर "Execute" करें, public मॉडिफायर डालें और dll के रूप में पुनः संकलित करें। dll को RastaMouse के ps स्क्रिप्ट Get-CompressedShellcode.ps1 के साथ संपीड़ित और Base64 में एन्कोड किया जाना चाहिए।