
إطار عمل بحثي للتحكم والأوامر المشفرة (C2) لتعليم الأمن السيبراني، ومختبرات الفريق الأحمر، وتجارب الاتصال الآمن بين العميل والخادم.
BlackBerryC2 هو إطار عمل للوصول عن بعد المُشفر وC2 مصمم حصريًا للاستخدام التعليمي، والبحث الأمني، وبيئات المختبرات الخاضعة للتحكم.

يوضح المشروع كيفية بناء خادم التحكم بالأوامر المخصص مع تشفير طبقة التطبيقات، وإدارة الجلسات، واتصال العميل الآمن بدون الاعتماد على حزم TLS الخارجية.
هذا المشروع ليس برنامجًا ضارًا وليس مخصصًا للوصول غير المصرح به.
BlackBerryC2:
استخدمه فقط على الأنظمة والشبكات التي تملكها أو لديك إذن صريح لاختبارها.
تبعيات Python:
pip install cryptography prompt_toolkit zstandard
zstandardاختياري لكن موصى به لنقل الملفات الأكبر من 1 جيجابايت.
get -r, put -r)-b) — غير محظور، قابل للإلغاء.partial + .resume)generate-payload)BlackBerryHTTPs_TLSProxyGUI)log)logs/last_start.jsonيقوم BlackBerryC2 v2.0 بتأسيس الاتصال الآمن كما يلي:
REQUEST_PUBKEY.secp256r1).HMAC_PRE_SHARED_SECRET).تحتفظ كل جلسة بما يلي:
يتم إنشاء جميع المفاتيح التشفيرية في وقت التشغيل ولا يتم إعادة استخدامها عبر عمليات إعادة التشغيل (إلا إذا تم ضبط --persistente).
python3 BlackBerryC2_server.py
التكوين الافتراضي:
0.0.0.09949| العلامة | الوصف |
|---|---|
-p / --persistente | استخدام مفاتيح ECDHE دائمة من ecdhe-cert/ (يطلب عبارة المرور) |
-v | تسجيل التصحيح (debug) |
-vv | تسجيل مفصّل (مريح) |
-H <host> | مضيف الاستماع (الافتراضي: 0.0.0.0) |
-P <port> | منفذ الاستماع (الافتراضي: 9949) |
--no-secure | قبول أي عميل ECDHE بدون التحقق من HMAC |
--hmac <secret> | سر مشترك مسبق مخصص لـ HMAC (سداسي عشري أو نص) |
--log-passphrase <pass> | تشفير سجل الخادم باستخدام AES-256-GCM (PBKDF2 600 ألف تكرار) |
--logs | عارض سجل تفاعلي — بدون بدء الخادم |
--spa | تفعيل المصادقة المسبقة عبر SPA/بورت نوكينج |
--spa-mode <spa|knock> | spa = رمز UDP واحد، knock = تسلسل منافذ |
--spa-port <port> | منفذ UDP لمستمع SPA (الافتراضي: 7331) |
--knock-seq <ports> | تسلسل المنافذ لوضع الطرق (الافتراضي: 7001,7002,7003) |
--knock-timeout <sec> | الثواني المسموحة لإنهاء تسلسل الطرق (الافتراضي: 10) |
--spa-ttl <sec> | الثواني التي يظل فيها IP المصرح به صالحًا (الافتراضي: 60) |
--berrytransfer | وضع BerryTransfer: نقل ملفات فقط، بدون شل |
--transfer-root <dir> | الدليل الجذري لـ BerryTransfer (الافتراضي: ./berry_transfers) |
--auto-confirm | الموافقة التلقائية على جميع طلبات GET في BerryTransfer (بدون طلب من المشغل) |
أمثلة:
# بدء أساسي (يطلب عبارة مرور للسجل)
python3 BlackBerryC2_server.py
# مفاتيح ECDHE دائمة + تسجيل مفصّل
python3 BlackBerryC2_server.py -p -vv
# منفذ مخصص، بدون فحص HMAC
python3 BlackBerryC2_server.py -P 8080 --no-secure
# بورت نوكينج على منافذ مخصصة
python3 BlackBerryC2_server.py --spa --spa-mode knock --knock-seq 9001,9002,9003
# وضع BerryTransfer مع موافقة تلقائية
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm
# عرض/فك تشفير السجلات دون بدء الخادم
python3 BlackBerryC2_server.py --logs
| الأمر | الوصف |
|---|---|
list | عرض الجلسات النشطة مع الإحصائيات واسم المضيف |
select <ID> | التفاعل مع جلسة عميل |
all <cmd> | إرسال أمر إلى جميع العملاء المتصلين |
report | تقرير حالة الخادم الكامل (مدة التشغيل، الجلسات، النقل) |
set host <HOST> | تغيير مضيف الاستماع (يعيد ربط الخادم) |
set port <PORT> | تغيير منفذ الاستماع (يعيد ربط الخادم) |
sVbanner "<text>" | تغيير لافتة الخدمة |
generate-payload | إنشاء حمولة عميل |
fingerprint | عرض بصمة مفتاح خادم ECDHE (SHA-256) |
ecdhe-keys | طباعة زوج مفاتيح ECDHE الحالي (PEM) |
kill <id|ip> | إنهاء جلسة بواسطة المعرف أو IP |
block <IP> | حظر IP بشكل دائم |
unblock <IP> | إلغاء حظر IP (دائم + مؤقت) |
blocklist | عرض عناوين IP المحظورة (دائمة ومؤقتة) |
log | عارض سجل تفاعلي (يدعم السجلات المشفرة) |
report | ملخص الحالة: مدة التشغيل، الجلسات، النقل |
banner | إعادة عرض لافتة بدء التشغيل |
clean | حذف ملفات سجل الخادم |
v | تبديل تسجيل DEBUG |
vv | تبديل تسجيل VERBOSE |
cd <dir> | تغيير دليل العمل المحلي للخادم |
E <cmd> | تنفيذ أمر عبر os.system محليًا |
<any command> | تنفيذ أمر محليًا على الخادم |
exit | إيقاف الخادم والخروج |
| الأمر | الوصف |
|---|---|
proxy | بدء خفي الوكيل TLS/HTTP (الوضع التلقائي) |
proxy --mode <mode> | الأوضاع: auto، tls، http، https، both، all |
proxy --stats | عرض إحصائيات الوكيل |
proxy gui | تشغيل واجهة الوكيل الرسومية (عملية منفصلة) |
stop-proxy | إيقاف خفي الوكيل |
stop-proxy-gui | إيقاف واجهة الوكيل الرسومية |
proxy-help | مساعدة كاملة للوكيل |
select <ID>)| الأمر | الوصف |
|---|---|
help | عرض مساعدة الجلسة |
exit | العودة إلى الشل الرئيسي |
!<cmd> | تنفيذ الأمر محليًا على الخادم |
<cmd> | تنفيذ الأمر على العميل البعيد |
cmd1 && cmd2 | تسلسل: تشغيل cmd2 فقط إذا نجح cmd1 |
cmd1 || cmd2 | تسلسل: تشغيل cmd2 فقط إذا فشل cmd1 |
cmd1 ; cmd2 | تسلسل: تشغيل cmd2 دائمًا |
| الأمر | الوصف |
|---|---|
get <file> | تنزيل ملف من العميل |
get <dir> -r | تنزيل دليل تكراري |
get <file> -b | تنزيل في الخلفية (غير محظور) |
get <dir> -r -b | تنزيل تكراري في الخلفية |
put <file> | رفع ملف إلى العميل |
put <file> -exc | رفع وتنفيذ في الذاكرة (نصوص برمجية) |
put <dir> -r | رفع دليل تكراري |
put <file> -b | رفع في الخلفية |
transfers | عرض جميع عمليات النقل النشطة والمكتملة |
stop <ID> | إلغاء نقل في الخلفية (مثال: stop T1) |
resume <local_file> | استئناف تنزيل تمت مقاطعته |
screenshot | التقاط شاشة العميل |
BerryTransfer هو وضع خادم مخصص لنقل الملفات فقط مستوحى من scp. عند التفعيل، يرفض الخادم أي وصول إلى الشل ويقبل فقط أوامر بروتوكول BT:*.
بدء التشغيل:
python3 BlackBerryC2_server.py --berrytransfer
python3 BlackBerryC2_server.py --berrytransfer --auto-confirm # بدون طلب مشغل لطلبات GET
أوامر شل BerryTransfer: