Linux C2 बीकन जिसमें नेटिव इन-मेमोरी ELF BOF लोडर, AES-256-CFB एन्क्रिप्टेड पोलिंग, और फाइललेस पोस्ट-एक्सप्लॉइटेशन मॉड्यूल के लिए एक Python C2 सर्वर है।
एक Linux C2 बीकन जिसमें नेटिव इन-मेमोरी ELF BOF लोडर है, जिसे C में लिखा गया है और इसमें कोई Go या Rust रनटाइम नहीं है। इसे LazyOwn RedTeam फ्रेमवर्क में जोड़ने के लिए डिज़ाइन किया गया है और यह Cobalt Strike के Beacon Object Files से प्रेरित है।
इस रिपॉज़िटरी में शामिल हैं:
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-जैसा सर्वर जो कमांड परोसता है, परिणाम स्वीकार करता है,
और BOFs होस्ट करता है।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
यह सामान्य प्रवाह नहीं है। इसका उपयोग केवल तब करें जब आपको बाइनरी + कॉन्फ़िग + BOFs को एक ही निर्देशिका में बंडल करना हो जिसे आप कहीं और कॉपी कर सकें।
python3 c2/server.py
सर्वर डिफ़ॉल्ट रूप से 0.0.0.0:7070 पर बाइंड होता है और अपनी AES कुंजी
तथा C2 URI config/config.json से पढ़ता है। कॉन्फ़िग पथ को
BSB_CONFIG=/path/to/config.json के साथ ओवरराइड करें।
सर्वर के चालू होने के बाद आप REPL से कमांड इंजेक्ट कर सकते हैं:
Client ID: linux
Command: id
./build/beacon
बीकन config/config.json (बाइनरी के सापेक्ष, जो बाइनरी-सापेक्ष खोज पथ के माध्यम से पाया जाता है) पढ़ता है, C2 को पोल करता है, और जो भेजता और प्राप्त करता है उसे प्रिंट करता है। जब कोई कमांड कतार में नहीं होता है, तो यह पोल के बीच बस सोता रहता है।
BOF चलाने के लिए, C2 एक JSON ऑब्जेक्ट लौटाता है जिसमें एक bof फ़ील्ड /bof/<name>.x64.o की ओर इंगित करता है। बीकन फ़ाइल को फ़ेच करता है और इसे इन-मेमोरी ELF लोडर (beacons/v1/beacon.c में RunELF) के माध्यम से अपनी प्रक्रिया में लोड करता है।
सभी परिचालन पैरामीटर config/config.json में रहते हैं और स्टार्टअप पर पढ़े जाते हैं। बाइनरीज़ में कुछ भी बेक नहीं किया गया है।
| अनुभाग | कुंजी | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|---|
c2 | url | https://127.0.0.1:4444 | C2 बेस URL |
c2 | uri | /api/poll/ | क्लाइंट आईडी से पहले URI पथ |
c2 | client_id | linux | बीकन पहचानकर्ता |
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 | C2 TLS सत्यापन |
bof | download_chunk_size | 4096 | BOF डाउनलोड बफ़र |
CI एक गार्डरेल चलाता है जो बिल्ड को विफल कर देता है यदि स्रोत में 64-अक्षर वाली हेक्स कुंजी दिखाई देती है। वास्तविक कुंजियाँ config/config.json में होनी चाहिए, जो git-ignored है।
BOF बस एक C स्रोत फ़ाइल है जो void go(char *args, int alen) को एक्सपोर्ट करती है। कॉलबैक API के लिए bof/include/beacon_api.h और डायरेक्ट-सिसकॉल हेल्पर्स के लिए bof/include/syscalls.h शामिल करें। इसे position-independent और 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 को C2 होस्ट पर sessions/uploads/ में डालें और अपने कमांड
इंजेक्शन से bof:<name> जैसा कमांड लौटाकर इसे ट्रिगर करें।
पूर्ण कॉन्ट्रैक्ट के लिए docs/BOF_AUTHORING.md देखें।
make test
परीक्षण सूट tests/ में कई फ़ाइलों में विभाजित है:
| फ़ाइल | यह क्या कवर करती है |
|---|---|
test_config.py | C JSON कॉन्फ़िग लोडर: डिफ़ॉल्ट, ओवरराइड, त्रुटियाँ |
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। विश्लेषण आउटपुट: