
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
ريدبينت هي أداة تحكم عن بعد (RAT) صغيرة مطورة بلغة .Net Core 2، وعاملها (Agent) بلغة .Net 3.5 / 4.0. يعتمد تنفيذ الكود في ريدبينت على شيل كود (shellcode) تم إنشاؤه باستخدام DonutCS. لذلك فهو هجين، على الرغم من كونه مطورًا بلغة .Net إلا أنه لا يعتمد فقط على Assembly.Load. وهذا يزيد من سطح الكشف، ولكنه يتيح لنا التدرب والتجربة مع تقنيات مراوغة مختلفة تتعلق ببيئة دوت نت، وإدارة العمليات، والحقن. يمكن تغيير هذا السلوك في وقت التشغيل باستخدام الأوامر "managed" و "unmanaged". إذا كنت مهتمًا بإطار عمل .Net C2 يكون متسقًا ويمكن استخدامه في الاختراقات، فأنصحك باستخدام Covenant.
ريدبينت مزود بالأدوات التالية:
يمكن تجميع عامل ريدبينت في .Net 3.5 و 4.0 ولديه قدرات التحرك الجانبي (pivoting) عبر الأنابيب المسماة (NamedPipe). عند تنفيذ العامل في وضع غير مُدار (unmanaged mode)، يقوم بتنفيذ مهامه الهامة في عملية منفصلة لمنع استجابة برامج مكافحة الفيروسات للكشف أو الأخطاء أثناء التنفيذ من فقدان العامل بالكامل.
مسار التنفيذ كالتالي:
بروتوكول تسجيل العامل (checkin) بسيط جدًا:
بدلاً من ذلك، يمكن تفعيل ميزة القناة المخفية (covered channel) (في الوقت الحالي هي مجرد إثبات مفهوم – PoC). الفكرة هي محاكاة حركة المرور على الويب التي يقوم بها مستخدم حقيقي. عادةً ما تتكون صفحة الويب من صفحة html وجميع الكائنات اللازمة لعرضها مثل css والصور وما إلى ذلك. عند طلب مهمة جديدة، لن تكون الإجابة من الخادم مباشرة هي المهمة المشفرة بل صفحة html يتم استخراج رابط الصورة منها والتي تحوي المهمة المشفرة. ستحتوي طلب http للصورة على رأس Referer.
يتم تنظيم توصيل المحتوى في 4 قنوات:
قدرة ريدبينت على تخصيص بصمة الشبكة (network footprint) من جانب الخادم والعميل. الخصائص التي يمكن تعيينها:
التوجيه الأمامي للمجال (Domain Fronting)
لتفعيل دعم التوجيه الأمامي للمجال، من الضروري تعيين رأس "Host" في قسم العميل، لكل من post و get (كما هو موضح في الملف الشخصي الافتراضي 2)
تتيح وحدة PowerShellExecuter تنفيذ أوامر سطر واحد أو ملفات في مساحة تشغيل (runspace) مع تجاوز AMSI وتجاوز التسجيل (Logging bypass) وتحميل PowerView مسبقًا.
بدءًا من الإصدار 0.3.0، يدعم RedPeanutAgent أمر blockdlls. عند تفعيل هذا الخيار، يتم إنشاء العمليات الفرعية التي يتم إنشاؤها لتنفيذ المهام في الوضع غير المُدار مع السمة PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON. تمنع هذه السمة تحميل العملية لملفات dll غير الموقعة من مايكروسوفت، مما قد يحمي مهامنا من تقنيات التعليق (hooking) الخاصة ببرامج مكافحة الفيروسات و EDR.
يستخدم RedPeanutAgent تحميل dll الديناميكي لتجنب استخدام استيرادات dll المشبوهة. يعود الفضل في تحميل dll الديناميكي إلى @TheRealWover، @cobbr_io و @FuzzySec لعملهم في SharpSploit.
تستخدم بعض بائعي برامج مكافحة الفيروسات و EDR تقنية التعليق (hooking) لتتبع الأنشطة. لتجنب استخدام استدعاءات النظام المعلقة، يستخدم RedPeanutAgent الاستدعاءات المباشرة (direct syscall)، مع حقن الكود اللازم تلقائيًا. يعود الفضل في الاستدعاءات المباشرة إلى @Cneelis
لتشغيل ريدبينت، يجب أن يكون لديك دوت نت مثبتًا. لتثبيت دوت نت على Kali:
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
للوظيفة القناة المخفية (covered channel)، من الضروري تثبيت مكتبة libgdiplus، لذلك:
لمستخدمي لينكس:
apt-get install -y libgdiplus
لنظام OSx
brew install mono-libgdiplus
توليد مفتاح توقيع التجميع (Assembly signing key)
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 هي أداة لتوليد شيل كود تقوم بإنشاء حمولات شيل كود مستقلة عن الموضع (position-independent) من تجميعات .NET. يمكن استخدام هذا الشيل كود لحقن التجميع في عمليات ويندوز عشوائية. بالنظر إلى تجميع .NET معين، ومعاملات، ونقطة دخول (مثل Program.Main)، فإنها تنتج شيل كود مستقل عن الموضع يقوم بتحميله من الذاكرة. يمكن إما أن يكون تجميع .NET محملًا من URL أو بدون تحميل (stageless) عن طريق تضمينه مباشرة في الشيل كود.
تم تقديم تقنية ثبات CLR لأول مرة في هذا المنشور من قبل @Am0nsec. تتكون التقنية من تنفيذ ربط (hooking) لمدير مجال التطبيق (Application Domain Manager). كما هو موضح في المنشور، يلزم وجود التجميع (assembly) لتنفيذ الربط وهو متاح في GAC. يجب أن يكون التجميع المستخدم من GAC ذو اسم قوي (strong-named) وبالتالي يتم توقيعه بمفتاح. تحتاج وحدة ثبات 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. سيتم استخدام هذا الملف لتوقيع التجميع للثبات.
بعض الأدوات المعروفة الموجودة في ريدبينت مثل أدوات GhostPack مغلفة بالكامل ويتم تنفيذها على جانب العميل. لتحديث الأدوات، مثل SeatBelt، دون تحديث المستودع بأكمله، من الضروري: استنساخ مستودع Seatbelt، وإعادة تسمية طريقة "Main" إلى "Execute"، وإدراج المعدل العام (public modifier)، وإعادة التجميع كملف dll. يجب ضغط ملف dll وترميزه بصيغة Base64 باستخدام سكريبت RastaMouse's ps Get-CompressedShellcode.ps1