
बहु-संचालक C2 फ्रेमवर्क जिसमें native C और Python एजेंट, HTTP(S) चैनल, asynchronous tasking, और red team संचालन के लिए reactive web UI शामिल है।
Striker एक सरल Command and Control (C2) प्रोग्राम है।


यह परियोजना सक्रिय विकास के अंतर्गत है। अधिकांश विशेषताएँ प्रायोगिक हैं, और आगे और भी आने वाली हैं। ब्रेकिंग चेंजेस की अपेक्षा करें।
A) एजेंट
B) बैकएंड / टीमसर्वर
C) यूज़र इंटरफ़ेस
रिपॉजिटरी क्लोन करें;
$ git clone https://github.com/4g3nt47/Striker.git
$ cd Striker
कोडबेस 4 स्वतंत्र खंडों में विभाजित है;
यह ऑपरेटरों और एजेंटों दोनों के लिए सर्वर-साइड लॉजिक को संभालता है। यह निम्नलिखित के साथ बनाया गया एक NodeJS एप्लिकेशन है;
express - REST API के लिए।socket.io - वेब सॉकेट संचार के लिए।mongoose - MongoDB से कनेक्ट करने के लिए।multer - फ़ाइल अपलोड को संभालने के लिए।bcrypt - उपयोगकर्ता पासवर्ड को हैश करने के लिए।स्रोत कोड backend/ निर्देशिका में है। सर्वर सेटअप करने के लिए;
Striker सभी महत्वपूर्ण डेटा को स्टोर करने के लिए बैकएंड डेटाबेस के रूप में MongoDB का उपयोग करता है। आप इसे डेबियन-आधारित डिस्ट्रो के लिए इस गाइड का उपयोग करके अपनी मशीन पर स्थानीय रूप से इंस्टॉल कर सकते हैं, या MongoDB Atlas (एक डेटाबेस-एज़-ए-सर्विस प्लेटफ़ॉर्म) के साथ एक मुफ्त डेटाबेस बना सकते हैं।
$ cd backend
$ npm install
$ mkdir static
आप इस फ़ोल्डर का उपयोग सर्वर पर स्थिर फ़ाइलों को होस्ट करने के लिए कर सकते हैं। यह वह स्थान भी होना चाहिए जहाँ आपका UPLOAD_LOCATION .env फ़ाइल में सेट है (इस पर बाद में और अधिक), लेकिन यह आवश्यक नहीं है। इस निर्देशिका में फ़ाइलें /static/ पथ के अंतर्गत सार्वजनिक रूप से सुलभ होंगी।
.env फ़ाइल बनाएं;नोट: < और > के बीच के मान प्लेसहोल्डर हैं। उन्हें उपयुक्त मानों से बदलें (<> सहित)। उन फ़ील्ड्स के लिए जिनमें रैंडम स्ट्रिंग की आवश्यकता है, आप इसे आसानी से निम्नलिखित का उपयोग करके जनरेट कर सकते हैं;
$ head -c 100 /dev/urandom | sha256sum
DB_URL=<your MongoDB connection URL>
HOST=<host to listen on (default: 127.0.0.1)>
PORT=<port to listen on (default: 3000)>
SECRET=<random string to use for signing session cookies and encrypting session data>
ORIGIN_URL=<full URL of the server you will be hosting the frontend at. Used to setup CORS>
REGISTRATION_KEY=<random string to use for authentication during signup>
MAX_UPLOAD_SIZE=<max file upload size, in bytes>
UPLOAD_LOCATION=<directory to store uploaded files to (default: static)>
SSL_KEY=<your SSL key file (optional)>
SSL_CERT=<your SSL cert file (optional)>
ध्यान दें कि SSL_KEY और SSL_CERT वैकल्पिक हैं। यदि कोई परिभाषित नहीं है, तो एक सादा HTTP सर्वर बनाया जाएगा। यह उसी होस्ट पर SSL-सक्षम रिवर्स प्रॉक्सी के पीछे सर्वर चलाने पर अनावश्यक ओवरहेड से बचने में मदद करता है।
$ node index.js
[12:45:30 PM] Connecting to backend database...
[12:45:31 PM] Starting HTTP server...
[12:45:31 PM] Server started on port: 3000
यह ऑपरेटरों द्वारा उपयोग किया जाने वाला वेब UI है। यह Svelte में लिखा गया एक सिंगल पेज वेब एप्लिकेशन है, और स्रोत कोड frontend/ निर्देशिका में है।
फ्रंटएंड सेटअप करने के लिए;
$ cd frontend
$ npm install
VITE_STRIKER_API वेरिएबल के साथ एक .env फ़ाइल बनाएं जो ऊपर कॉन्फ़िगर किए गए C2 सर्वर का पूरा URL सेट हो;VITE_STRIKER_API=https://c2.striker.local
$ npm run build
उपरोक्त सब कुछ dist/ निर्देशिका में एक स्थिर वेब एप्लिकेशन में संकलित करेगा। आप सभी फ़ाइलों को अपने वेब सर्वर की वेब रूट में ले जा सकते हैं, या इसे पायथन के बुनियादी HTTP सर्वर जैसे सर्वर के साथ भी होस्ट कर सकते हैं;
$ cd dist
$ python3 -m http.server 8000
Register बटन पर क्लिक करें।backend/.env में REGISTRATION_KEY देखें)यह एक मानक उपयोगकर्ता खाता बनाएगा। कुछ सुविधाओं तक पहुँचने के लिए आपको एक व्यवस्थापक खाते की आवश्यकता होगी। आपका पहला व्यवस्थापक खाता मैन्युअल रूप से बनाया जाना चाहिए, उसके बाद आप वेब UI के Users टैब में अन्य खातों को अपग्रेड और डाउनग्रेड कर सकते हैं।
अपना पहला व्यवस्थापक खाता बनाने के लिए;
users कलेक्शन को अपडेट करें और लक्ष्य उपयोगकर्ता के admin फ़ील्ड को true पर सेट करें;आप इसे करने के विभिन्न तरीके हैं। यदि आपके CLI में mongo उपलब्ध है, तो आप इसका उपयोग करके कर सकते हैं;
$ mongo <your MongoDB connection URL>
> db.users.updateOne({username: "<your username>"}, {$set: {admin: true}})
यदि यह काम करता है तो आपको निम्नलिखित प्रतिक्रिया मिलनी चाहिए;
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
अब आप लॉगिन कर सकते हैं :)
A) डंब पाइप रिडायरेक्शन
Striker के लिए लिखा गया एक डंब पाइप रिडायरेक्टर redirector/redirector.py पर उपलब्ध है। जाहिर है, यह केवल सादे HTTP ट्रैफ़िक के लिए काम करेगा, या HTTPS के लिए जब SSL सत्यापन अक्षम हो (आप C एजेंट में INSECURE_SSL मैक्रो को सक्षम करके ऐसा कर सकते हैं)।
निम्नलिखित उदाहरण सभी इंटरफेस पर पोर्ट 443 पर सुनता है और c2.example.org पर पोर्ट 443 पर अग्रेषित करता है;
$ cd redirector
$ ./redirector.py 0.0.0.0:443 c2.example.org:443
[*] Starting redirector on 0.0.0.0:443...
[+] Listening for connections...
B) Nginx रिवर्स प्रॉक्सी रिडायरेक्टर के रूप में
$ sudo apt install nginx
/etc/nginx/sites-available/striker);प्लेसहोल्डर;
<domain-name> - यह आपके सर्वर का FQDN है, और इसे आपके SSL प्रमाणपत्र से मेल खाना चाहिए।<ssl-cert> - उपयोग करने के लिए SSL प्रमाणपत्र फ़ाइल।<ssl-key> - उपयोग करने के लिए SSL कुंजी फ़ाइल।<c2-server> - अनुरोधों को अग्रेषित करने के लिए C2 सर्वर का पूरा URL।चेतावनी: client_max_body_size आपकी backend/.env फ़ाइल में MAX_UPLOAD_SIZE द्वारा परिभाषित आकार जितना बड़ा होना चाहिए, अन्यथा बड़ी फ़ाइलों के अपलोड विफल हो जाएंगे।
server {
listen 443 ssl;
server_name <domain-name>;
ssl_certificate <ssl-cert>;
ssl_certificate_key <ssl-key>;
client_max_body_size 100M;
access_log /var/log/nginx/striker.log;