منارة C2 لنظام Linux مع محمّل ELF BOF أصلي في الذاكرة، واستطلاع مشفّر بـ AES-256-CFB، وخادم C2 بلغة Python لوحدات استغلال ما بعد الاختراق بدون ملفات.
منارة C2 لنظام Linux مع محمّل ELF BOF أصلي في الذاكرة، مكتوبة بلغة C دون أي وقت تشغيل لـ Go أو Rust. مصممة للاندماج مع إطار عمل LazyOwn RedTeam ومستوحاة من ملفات كائنات Beacon الخاصة بـ Cobalt Strike.
يحتوي هذا المستودع على:
beacons/v1/، beacons/v2/، beacons/v3/
ثلاث نسخ من منارة HTTPS/CFB نفسها. v1 هي منارة السحب القياسية
(pull-mode). تضيف v2 اكتشاف الشبكة المتداخلة/النظير للنظير (mesh/p2p). v3 فرع
تجريبي.bof/<name>/bof.c
كائنات ELF مستقلة عن الموقع يمكن للمنارة جلبها وتنفيذها
في الذاكرة. الخمسة المضمّنة هي: whoami، is_sudo، cat،
userenum، suid_enum.c2/server.py
خادم Python صغير شبيه بـ Gopher يقدّم الأوامر، ويستقبل
النتائج، ويستضيف ملفات BOF.include/
AES-256 مستقلة (aes.c/aes.h)، وcJSON، ومحمّل
إعدادات وقت التشغيل (config.c/config.h بالإضافة إلى نسخة Python
المطابقة config_py.py)، وأغلفة AES-256-CFB المشتركة بين
المنارة والاختبارات.Makefile، وCI في .github/workflows/ci.yml،
والاختبارات في tests/.لتشغيل شامل من البداية إلى النهاية في 5 دقائق، راجع QUICKSTART.md. لدليل تأليف BOF، راجع docs/BOF_AUTHORING.md. لبروتوكول اتصال C2، راجع docs/PROTOCOL.md.
البناء (Debian/Ubuntu):
sudo apt-get install gcc libcurl4-openssl-dev libssl-dev make
وقت التشغيل لخادم C2:
pip install -r requirements.txt
make config # one-time: copies config.example.json -> config.json
make beacon # builds build/beacon (runnable, with build/config.json staged next to it)
make bofs # builds all BOFs into build/bof/*.x64.o
make all-beacons # builds v1, v2, v3
make test # runs the full test suite
make clean # removes build/
بعد make beacon، يصبح الملف التنفيذي جاهزًا للتشغيل:
./build/beacon
يقرأ build/config.json (بجانبه) عبر مسار البحث النسبي للثنائي، لذا لا حاجة إلى BSB_CONFIG أو cd config/. يعمل الثنائي نفسه المنسوخ إلى مضيف آخر بشكل مطابق طالما وُجد config.json بجانبه.
إذا كنت تريد إعادة بناء BOF واحد فقط:
make bof-whoami
make bof-suid_enum
للتسليم إلى هدف ما، يتضمن ملف Makefile هدف install الذي
يُهيّئ دليلاً مكتفياً بذاته:
make install-all DESTDIR=/tmp/deploy
scp -r /tmp/deploy/* user@target:/opt/bsb/
ssh user@target /opt/bsb/beacon
هذا ليس التدفق الطبيعي. استخدمه فقط عندما تحتاج إلى تجميع الملف الثنائي + الإعدادات + ملفات BOF في دليل واحد يمكنك نسخه إلى مكان آخر.
python3 c2/server.py
يستمع الخادم افتراضيًا على 0.0.0.0:7070 ويقرأ مفتاح AES الخاص به
ومعرّف URI الخاص بـ C2 من config/config.json. يمكن تجاوز مسار الإعدادات
عبر BSB_CONFIG=/path/to/config.json.
بمجرد تشغيل الخادم، يمكنك حقن الأوامر من REPL:
Client ID: linux
Command: id
./build/beacon
يقرأ الـ beacon ملف config/config.json (نسبةً إلى الملف التنفيذي، ويُعثر عليه عبر مسار البحث النسبي للملف التنفيذي)، ويستعلم من C2، ويطبع ما يرسله ويستقبله. وعندما لا تكون هناك أوامر في قائمة الانتظار فإنه ينام فقط بين الاستعلامات.
لتشغيل BOF، يُرجع C2 كائن JSON يحتوي على حقل bof يشير إلى /bof/<name>.x64.o. يجلب الـ beacon الملف ويحمّله في عمليته الخاصة عبر محمّل ELF في الذاكرة (RunELF في beacons/v1/beacon.c).
تعيش جميع المعاملات التشغيلية في config/config.json وتُقرأ عند بدء التشغيل. لا شيء مضمّن في الملفات التنفيذية.
| القسم | المفتاح | الافتراضي | الغرض |
|---|---|---|---|
c2 | url | https://127.0.0.1:4444 | عنوان URL الأساسي لـ C2 |
c2 | uri | /api/poll/ | مسار URI قبل معرّف العميل |
c2 | client_id | linux | معرّف الـ beacon |
crypto | aes_key_hex | (عنصر نائب) | 64 حرفًا سداسيًا = 32 بايت |
crypto | mode | cfb | وضع التشفير |
timing | sleep_seconds | 6 | فاصل الاستعلام الأساسي |
timing | jitter_percent | 20 | نسبة التذبذب +/- على فترة النوم |
timing | curl_timeout_seconds | 10 | المهلة الإجمالية لـ libcurl |
timing | curl_connect_timeout_seconds | 5 | مهلة اتصال libcurl |
network | user_agents | (4 سلاسل نصية) | قائمة التبديل |
network | verify_tls | false | التحقق من TLS الخاص بـ C2 |
bof | download_chunk_size | 4096 | مخزن تنزيل BOF المؤقت |
يشغّل CI حارسًا يُفشل البناء إذا ظهر مفتاح سداسي مكوّن من 64 حرفًا في الشيفرة المصدرية. تنتمي المفاتيح الحقيقية إلى config/config.json، وهو مستبعد من git.
BOF هو مجرد ملف مصدر C يصدّر void go(char *args, int alen). ضمّن bof/include/beacon_api.h لواجهة برمجة استدعاءات callback وbof/include/syscalls.h لمساعدات الاستدعاء المباشر للنظام. ترجمه مستقلًا عن الموقع وبدون libc:
gcc -c -fPIC -nostdlib -m64 -O2 -I bof/include bof/<name>/bof.c -o build/bof/<name>.x64.o
يغلّف هدف make bof-<name> هذا. ضع ملف .x64.o الناتج في sessions/uploads/ على مضيف C2 وشغّله بإرجاع أمر مثل bof:<name> من حقن الأوامر الخاص بك.
راجع docs/BOF_AUTHORING.md للاطلاع على العقد الكامل.
make test
تُقسَّم مجموعة الاختبارات إلى عدة ملفات في tests/:
| الملف | ما يغطيه |
|---|---|
test_config.py | محمّل إعدادات JSON بلغة C: القيم الافتراضية، والتجاوزات، والأخطاء |
test_crypto.py | اختبار ذهاب وإياب لتشفير AES-256-CFB والتفاعل بين Python وC |
test_bof_compile.py | يُترجَم كل BOF، ويُصدِّر go، ولا يحتوي على تسريب libc |
test_beacon_build.py | يُبنى ملف Beacon الثنائي، ويكشف واجهة BOF API وRunELF |
test_c2_server.py | موزّع C2: GET/POST/BOF، وتحصين ضد اجتياز المسارات |
test_c2_http_e2e.py | اختبار ذهاب وإياب حقيقي عبر مقبس HTTP/1.1 مع التشفير |
test_install_deploy.py | سير عمل make ينتج شجرة قابلة للتشغيل، وmake clean يمحوها |
beacons/
v1/beacon.c canonical beacon
v2/beacon.c mesh/p2p variant
v3/beacon.c experimental variant
bof/
include/ shared BOF headers (beacon_api.h, syscalls.h)
whoami/bof.c sample: print effective UID
is_sudo/bof.c sample: check sudo/wheel membership
cat/bof.c sample: read a file
userenum/bof.c sample: list /etc/passwd users and privileges
suid_enum/bof.c privesc recon: walk FS, list SUID/SGID binaries
c2/
server.py Gopher-style C2 server
config/
config.example.json template (copy to config.json)
include/
config.h, config.c runtime config loader
config_py.py Python mirror for the C2
aes.h, aes.c standalone AES (ECB/CTR/CBC)
aes_cfb.h, aes_cfb.c AES-256-CFB the beacon actually uses
cJSON.h, cJSON.c vendored JSON parser
beacon.h BOF API the beacon implements
tests/
test_*.py Python test suite
*_harness.c C test harnesses
docs/
PROTOCOL.md wire protocol
BOF_AUTHORING.md BOF contract and gotchas
.github/workflows/
ci.yml build + test + key-leak guard
Makefile
requirements.txt C2 server runtime deps
GPL v3. راجع LICENSE.
تم تحليل هذا المشروع بواسطة ReadMenator،
وهي أداة تحليل ثابت متعددة اللغات بدون استهلاك رموز. أعد التوليد باستخدام
pip install readmenator && readmenator . --rebuild. مخرجات التحليل: