
نص برمجي من نوع Aggressor لـ Cobalt Strike لتوليد وتنسيق وتشفير شيل كود البيكن مع دعم لطرق خروج متعددة، واستدعاءات النظام، وتحويلات الترميز/الضغط
Ryan Stephenson (RCStep)
يُضيف عنصر "Shellcode - Shellcode Generator" إلى شريط القائمة العلوي لـ Cobalt Strike

CSSG هي مجموعة من نصوص aggressor و.NET وPython تُستخدم لتوليد وتنسيق شيلكود beacon بسهولة أكبر
يُولّد شيلكود beacon عديم المراحل (stageless) مع طريقة خروج مكشوفة، وتنسيق إضافي، وتشفير، وترميز، وضغط، وإخراج متعدد الأسطر، إلخ
يتم تنفيذ تحويلات الشيلكود بترتيب تنازلي حسب ما هو مدرج في القائمة
المتطلبات:
خيار تشفير RC4/AES يستخدم نص Python أو تجميع .NET في مجلد /assets
يعتمد تشفير Python على تثبيت حزمة pycryptodome لإجراء تشفير RC4/AES
قم بتثبيت pycryptodome باستخدام pip حسب بيئة Python الخاصة بك:
python -m pip install pycryptodome
python3 -m pip install pycryptodome
py -3 -m pip install pycryptodome
py -2 -m pip install pycryptodome
يمكنك التحقق من وجود pycryptodome بعد تثبيت pip بأمر مثل:
python -m pip list | grep crypto
سيستخدم المولد أمر "python" الافتراضي على مضيف العميل لديك لتشغيل برنامج تشفير RC4/AES
يجب أن يكون مضيف العميل لديك قادراً على تنفيذ تجميعات .NET الأصلية لخيار الخلفية .exe الخاص بـ RC4/AES
خيارات مولد الشيلكود هي:
Listener:
اختر listener صالح باستخدام زر "..." سيتم توليد الشيلكود من هذا الـ listener
Delivery:
عديم المراحل (Stageless) (المراحل غير مدعومة لمولد الشيلكود)
Exit Method:
process - ينهي العملية بأكملها التي يوجد فيها Beacon عند إغلاقه
thread - ينهي فقط السلسلة (thread) التي يعمل فيها Beacon عند إغلاقه
Beacon Syscalls Method:
none
direct
indirect
Beacon HTTP Library:
wininet
winhttp
Local Pointers Checkbox:
قد تستخدمه إذا كنت ستقوم بتنفيذ الشيلكود من Beacon موجود مسبقاً
يُولّد حمولة شيلكود Beacon ترث مؤشرات دالة رئيسية من Beacon أصلي له نفس البنية
Existing Session:
جلسة Beacon الأصلية التي سيسحب منها الشيلكود بيانات الجلسة
يجب تشغيل الشيلكود من داخل هذه الجلسة Beacon
x86 Checkbox:
حدد لتوليد شيلكود x86، يتم توليد x64 افتراضياً
Or Use Shellcode File:
استخدم ملف شيلكود خام مولد خارجياً بدلاً من توليد شيلكود Beacon
يتيح لك هذا استخدام ملفات Beacon المُصدَّرة الأخرى أو مخرجات من أدوات أخرى (Donut, msfvenom, إلخ)
Formatting:
raw - إخراج شيلكود ثنائي خام، بدون تنسيق
hex - إخراج شيلكود بتنسيق سداسي عشري
0x90,0x90,0x90 - شيلكود منسق إلى مصفوفة بايت بنمط C#
0x90uy;0x90uy;0x90uy - شيلكود منسق إلى مصفوفة بايت بنمط F#
\x90\x90\x90 - شيلكود منسق إلى مصفوفة بايت بنمط C\C++
UUID - تحويل الشيلكود إلى سلاسل UUID باستخدام نص Python (مبطّن بـ \x90 لتكوين قطع 16 بايت)
b64 - خيار ترميز الشيلكود بـ base64 في وقت مبكر من عملية التوليد (قبل أي تشفير)
XOR Encrypt Shellcode Checkbox:
حدد لتشفير الشيلكود بـ XOR (يمكن اختيار نوع تشفير واحد فقط في كل مرة)
XOR Key(s):
محرف(متحارف) مفتاح XOR تم توليده عشوائياً وقابل للتعديل لاستخدامه في التشفير
عدة محارف ستؤدي إلى جولات متعددة من تشفير XOR (مثل ABCDE)
RC4 Encrypt Shellcode Checkbox:
حدد لتشفير الشيلكود بـ RC4 (يمكن اختيار نوع تشفير واحد فقط في كل مرة)
يستخدم نص Python أو تجميع .NET Framework لإجراء تشفير RC4
AES Encrypt Shellcode Checkbox:
حدد لتشفير الشيلكود بـ AES (يمكن اختيار نوع تشفير واحد فقط في كل مرة)
يستخدم نص Python أو تجميع .NET Framework لإجراء تشفير كتلة AES بنمط AES-CBC
يتم تبطين الشيلكود بقيم \0 للوصول إلى متطلبات حجم الكتلة
يتم إرفاق IV تم توليده عشوائياً أمام بيانات الشيلكود المشفرة
RC4/AES Backend Checkbox:
حدد لاستخدام تجميع .NET exe لتشفير ملف الشيلكود الخاص بك
عند إلغاء التحديد، يستخدم نص Python لتشفير ملف الشيلكود
أطوال بايت المفتاح المقبولة لتشفير AES هي 16 و24 و32
أطوال بايت المفتاح لـ RC4 هي أي طول عند استخدام .NET، و5 بايتات كحد أدنى عند استخدام Python
RC4/AES Backend tools:
يوجد نص Python وتجميع .NET في مجلد assets
يوجد مجلد المصدر لتجميع Encryptor أيضاً للترجمة الذاتية إذا كنت لا تثق بي (وأنا لا أثق)
كلا الأداتين يمكنهما تشفير وفك تشفير شيلكود/ملفات RC4/AES
استخدام encrypt_file.py:
encrypt_file.py [aes/rc4] [encrypt/decrypt] [key] [input file] [output file]
استخدام Encryptor.exe:
Encryptor.exe [aes/rc4] [encrypt/decrypt] [key] [input file] [output file]
RC4 or AES Key
مفتاح RC4/AES تم توليده عشوائياً وقابل للتعديل لاستخدامه في التشفير
يتم توليد مفتاح AES بطول 32 بايت وهو المفضل لقوة تشفير AES-256
أطوال بايت المفتاح المقبولة لتشفير AES هي 16 و24 و32
أقل طول لمفتاح RC4 هو 1 بايت إذا استخدمت .NET و5 بايتات كحد أدنى إذا استخدمت Python
Encoding/Compression:
none - لا يتم إجراء ترميز أو ضغط إضافي للشيلكود
b64 - ترميز الشيلكود بـ base64
gzip then b64 - ضغط gzip ثم ترميز base64
gzip - ضغط gzip للشيلكود
b64 then gzip - ترميز base64 ثم ضغط gzip
b64 then 7xgzip - ترميز base64 ثم ضغط gzip 7 مرات
Multiline Output:
يمكن استخدامه لتنسيقات الإخراج غير الخام/الثنائي
none - لا تنسيق متعدد الأسطر، الشيلكود عبارة عن سلسلة واحدة طويلة
quoted - يتم تقسيم الشيلكود إلى أسطر محاطة بعلامات اقتباس
chunks.push_back - يتم تقسيم الشيلكود إلى أسطر محاطة بعبارات chunks.push_back(" و ");
Multiline Length:
عدد محارف الشيلكود في كل سطر إذا تم تحديد خيار إخراج متعدد الأسطر
Generate Button:
اختر دليلاً لإخراج الشيلكود
الاسم الافتراضي للملف سيكون beacon ولكن يمكن تغييره
سيتم عرض أي مفتاح تشفير مستخدم في نافذة منبثقة وأيضاً كتابته في وحدة تحكم البرنامج النصي لـ Cobalt Strike
سيتم عرض حجم البايت للشيلكود الخام للـ Beacon والشيلكود النهائي المنسق في نافذة منبثقة وأيضاً كتابته في وحدة تحكم البرنامج النصي
موقع الملفات المستخدمة لتوليد/بناء الشيلكود يتم تعيينه في ملف scripts/shellcode_generator.cna
مستوحى من عمل العديد من المساهمين في مجال أمن المعلومات