
الهدف
الفكرة هنا إنك تبني بنية كاملة لـ C2 (Command and Control) تكون آمنة ومموهة، وما يقدر أحد يربطها بجهازك أو يحدد موقعك الحقيقي. تستخدم فيها Cloudflare، VPS، VPN، Nginx، وجهازك الشخصي (غالبًا Kali Linux) عشان تشغل أدوات مثل Sliver أو Metasploit أو أي C2 Framework ثاني.
الطريقة هذي مثالية لأي شخص يشتغل في بيئة Red Team أو يبي يحاكي سيناريو واقعي بشكل احترافي.
مكونات البنية
1. Victim Machine (جهاز الضحية)
هو الجهاز اللي يستقبل الـ Payload أو Beacon، ويتصل بدومينك عن طريق HTTPS، مثل:
https://domain.com
2. Cloudflare
وظيفته إنه يخفي عنوان IP الحقيقي الخاص فيك، ويوفر حماية طبقة أولى.
- يستقبل اتصال الضحية على بورت 443
- يوجهه إلى VPS بدل ما يوصلك مباشرة
3. VPS (بدون خدمات)
السيرفر هذا ما عليه لا C2 ولا Nginx. يشتغل كجسر بس: ياخذ الترافيك من Cloudflare، ويرسله لجهازك عبر VPN.
4. VPN Tunnel
النفق هذا هو الرابط المشفر بين VPS وجهازك المحلي (مثلاً Kali). بكذا، يصير VPS يشوف جهازك كأنه داخل نفس الشبكة، ويقدر يمرر الترافيك بأمان.
5. Kali Linux
الجهاز اللي عندك، وفيه كل الخدمات:
- Nginx يشتغل كـ Reverse Proxy
- C2 Server (مثل Sliver, Metasploit, Mythic, Covenant… إلخ) يشتغل على بورت داخلي مثل 50050
6. Nginx Reverse Proxy
هو المسؤول عن استقبال الترافيك على بورت 443، وتحويله داخليًا للـ C2. المثال التالي يوضح:
https://10.10.10.10:50050
هذا IP يكون من شبكة VPN، مخصص لجهازك داخل النفق.
ملاحظة:
- البورت الخارجي (443): اللي يوصله الترافيك من Cloudflare
- البورت الداخلي (50050): اللي عليه C2 فعليًا
7. C2 Server
الخدمة اللي تستقبل الـ Beacon من الضحية وتبدأ الجلسة. تقدر ترسل أوامر، تتحكم بالجهاز، تسحب بيانات.. كل شي يتم من هنا.
8. Operator (المهاجم)
أنت، كمهاجم، اللي تدير الجلسات وتتحكم في C2 من جهازك المحلي.
مخطط توضيحي للبنية
تسلسل الاتصال بالكامل:
- الضحية يتصل بالدومين (domain.com) عبر HTTPS
- Cloudflare يحوّل الاتصال إلى VPS على بورت 443
- الـ VPS يرسل الترافيك عبر VPN Tunnel إلى جهازك المحلي
- Nginx في Kali يستقبل على بورت 443
- يعيد التوجيه داخليًا إلى C2 على https://10.10.10.10:50050
- C2 يستقبل Beacon ويبدأ الجلسة
- Operator يتحكم بالضحية عن طريق C2
إعداد Nginx على Kali
server {
listen 443 ssl;
server_name domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
location / {
proxy_pass https://10.10.10.10:50050;
proxy_ssl_verify off;
proxy_ssl_server_name on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
تأكد إن IP اللي تستخدمه داخلي (من الـ VPN)، مثل 10.10.10.10
إعداد SSL داخل Cloudflare
Cloudflare يعطيك ثلاث خيارات للـ SSL:
النوع | الوصف | مناسب للاستخدام في C2؟ |
---|---|---|
Flexible | يوصل الضحية عبر HTTPS لكن Cloudflare يرسل HTTP داخليًا | غير امن |
Full | Cloudflare يرسل HTTPS، بس ما يتحقق من الشهادة | مقبول |
Full (Strict) | يتحقق من الشهادة وتكون موثوقة | الأفضل |
الأفضل دائمًا: Full (Strict) + شهادة Let’s Encrypt
كيف تطلع شهادة Let’s Encrypt
1.تثبيت certbot
sudo apt install certbot
2.إنشاء الشهادة:
sudo certbot certonly --standalone -d domain.com
3.المسارات المطلوبة
/etc/letsencrypt/live/domain.com/fullchain.pem
/etc/letsencrypt/live/domain.com/privkey.pem
وحطها في إعدادات Nginx مثل ما هو فوق.
نصايح أمنية
- لا تشغل C2 على VPS أبدا، خله بجهازك المحلي
- استخدم VPN آمن مثل WireGuard
- غيّر البورتات الافتراضية اللي يستخدمها C2
- فعّل Access Rules في Cloudflare لو تبي تحصر الدخول
- راقب DNS Queries و Cloudflare Logs باستمرار
الخاتمة
اللي سويته هنا هو بنية نظيفة وآمنة لـ C2، تخلي التواصل يتم عن طريق Cloudflare، ويكون VPS مجرد جسر يوصل الترافيك المشفر إلى جهازك. بكذا حتى لو أحد وصل للدومين، مستحيل يعرف أنت وين فعليًا، ولا كيف C2 شغّال. الطريقة هذي ممتازة لأي شخص يشتغل في بيئة احترافية أو يتعلم تقنيات Red Team بشكل متقدم.
المراجع
Let’s Encrypt
Certbot – Get HTTPS
Nginx Reverse Proxy Guide
WireGuard VPN