
انفرا جارد هو وكيل إعادة توجيه ومدير للقيادة والتحكم (C2) يحمي بنية فريقك الأحمر من التهديد المُسند.
متعقِّب البنية التحتية للفريق الأحمر ومعيد توجيه C2 -- بديل حديث لـ RedWarden.
يجلس InfraGuard بين الإنترنت وخادم فريق C2 الخاص بك، ويتحقق من كل طلب وارد مقابل ملف تعريف C2 القابل للتشكيل، ويحظر أي شيء لا يتوافق. يتم إعادة توجيه الماسحات والروبوتات واستطلاعات الفريق الأزرق إلى موقع شرك، بينما يمر حركة منارة الشرعية إلى خادم فريقك.


ssl_fingerprint، HAProxy JA3 الأصلي) أو بروتوكول asyncio مخصص؛ وضع القائمة البيضاء الاختياري يفرض بصمة JA3 للمنارة.htaccess وrobots.txt الموجودةmythic_file توكيل /direct/download/{uuid} من Mythic بعناوين URL نظيفة؛ UUID ثابت (تسمية بديلة للرابط) أو وضع وكيل (UUID من المسار)؛ التحكم في الوصول مقدم بالكامل من خلال مكدس تصفية InfraGuardon_event، تكوين لكل إضافة، تصفية الأحداث (محظور فقط، الحد الأدنى للدرجة، تضمين/استبعاد النطاق).env؛ بناء الجملة ${VAR} يعمل في جميع قيم ومفاتيح التكويناطلع على صفحة الويكي للتثبيت
infraguard --version عرض الإصدار
infraguard --help عرض المساعدة
infraguard run -c config.yaml بدء الوكيل العكسي
infraguard run -c config.yaml --port 8443 تجاوز منفذ الاستماع
infraguard run -c config.yaml --host 0.0.0.0 تجاوز عنوان الربط
infraguard dashboard -c config.yaml بدء لوحة تحكم الويب
infraguard dashboard -c config.yaml --port 9090 تجاوز منفذ لوحة التحكم
infraguard tui تشغيل TUI مع شاشة تسجيل الدخول
infraguard tui --url http://host:8080 --token TOK اتصال تلقائي بلوحة التحكم
infraguard tui -c config.yaml قراءة الرابط/الرمز من التكوين
infraguard command-post -c command-post.yaml بدء لوحة تحكم متعددة المثيلات
infraguard command-post --instance name:url:token إضافة مثيل عبر CLI (قابل للتكرار)
infraguard profile parse <file> تحليل وعرض ملف تعريف C2
infraguard profile parse <file> --format json الإخراج بصيغة JSON
infraguard profile parse <file> --type brute_ratel فرض نوع ملف التعريف
infraguard profile convert <file> -o out.json تحويل ملف التعريف إلى JSON
# القيم المدعومة لـ --type: auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# الاكتشاف التلقائي: .profile = CS, .toml = Havoc, .yaml = PoshC2, .json = اكتشاف تلقائي حسب المفاتيح
infraguard ingest <files...> استيراد قواعد .htaccess/robots.txt
infraguard ingest <files...> --format blocklist الإخراج كقائمة منع IP
infraguard ingest <files...> --format json الإخراج بصيغة JSON
infraguard ingest <files...> -o banned_ips.txt كتابة قائمة المنع إلى ملف
infraguard generate nginx -c config.yaml توليد إعدادات Nginx
infraguard generate caddy -c config.yaml توليد Caddyfile
infraguard generate apache -c config.yaml توليد VirtualHost لـ Apache
infraguard init -o config.yaml توليد إعدادات بدء التشغيل
infraguard validate -c config.yaml التحقق من صحة ملف التكوين
يقبل أمر generate علامات إضافية لتخصيص المشغل:
عند تشغيل عدة مثيلات InfraGuard عبر VPSes مختلفة أو موفري سحابة، يقوم مركز القيادة بتجميع الإحصائيات والطلبات والأحداث الحية من جميع العقد في لوحة تحكم واحدة.
┌─────────────────────────────┐
│ لوحة تحكم القيادة │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ جلب متوازي
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N

# عبر ملف التكوين
infraguard command-post -c config/command-post.yaml
# عبر وسائط CLI
infraguard command-post \
--instance "prod:https://ig1.example.com:8080:TOKEN1" \
--instance "staging:https://ig2.example.com:8080:TOKEN2" \
--port 9090
# عبر Docker
docker compose --profile command-post up -d command-post
أنشئ config/command-post.yaml:
instances:
- name: "prod-cs"
url: "https://ig1.example.com:8080"
token: "${IG_PROD_TOKEN}"
- name: "prod-mythic"
url: "https://ig2.example.com:8080"
token: "${IG_MYTHIC_TOKEN}"
- name: "staging"
url: "https://ig3.example.com:8080"
token: "${IG_STAGING_TOKEN}"
port: 9090
# auth_token: "${COMMAND_POST_TOKEN}"
cp .env.example .env
# عدِّل .env باسم النطاق وخادم الفريق والرمز
docker compose up -d
يبدأ هذا خدمتين:
# عيّن في .env:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# احصل على الشهادة الأولية
docker compose --profile letsencrypt up certbot
# ابدأ الوكيل (سيستخدم شهادة LE)
docker compose up -d proxy dashboard
# ابدأ التجديد التلقائي (يفحص كل 12 ساعة)
docker compose --profile letsencrypt up -d certbot-renew
متطلبات Let's Encrypt:
INFRAGUARD_DOMAIN إلى IP العام لهذا المضيفINFRAGUARD_DOMAIN_EMAIL عنوان بريد إلكتروني صالحًا# تحميل قواعد بيانات GeoLite2 الثلاث (City، ASN، Country)
docker compose --profile geoip up geoip-update
# ثم ابدأ بشكل عادي - يتم تثبيت قواعد البيانات في /app/geoip/
docker compose up -d proxy dashboard
# ابدأ PwnDrop بجانب الوكيل
docker compose --profile pwndrop up -d pwndrop
# الوصول إلى واجهة إدارة PwnDrop على https://localhost:8443
# يصل InfraGuard إليه داخليًا على http://pwndrop:80
ثم قم بتكوين مسارات المحتوى في إعداداتك لتوكيل مسارات الحمولة إلى PwnDrop:
domains:
cdn.example.com:
content_routes:
- path: "/downloads/*"
backend:
type: "pwndrop"
target: "http://pwndrop:80"
auth_token: "${PWNDROP_TOKEN}"
# تشغيل عدة عقد معيد
docker compose up -d --scale proxy-node=3
قم بإلغاء تعليق خدمة proxy-node في docker-compose.yml لتمكينه.
infraguard/
__init__.py Package init
__main__.py python -m infraguard entry
main.py Click CLI
config/ YAML config loading, .env support, Pydantic validation
core/ ASGI proxy engine (app, proxy, router, TLS, drop actions, content delivery)
profiles/ C2 profile parsers (Cobalt Strike, Mythic, Brute Ratel, Sliver, Havoc, Nighthawk, PoshC2)
pipeline/ Request validation filters (JA3, IP, bot, header, DNS, geo, profile, replay, enumeration, sandbox)
intel/ IP intelligence (blocklists, GeoIP, rDNS, feeds, rule ingestion)
tracking/ SQLite persistence (request logging, stats, node registry)
plugins/ Plugin system (protocol, loader, builtins)
ui/
api/ REST API + WebSocket (Starlette)
web/ SPA dashboard (HTML/JS/CSS)
tui/ Terminal UI (Textual) with login screen
command_post/ Multi-instance aggregation dashboard
listeners/ Protocol listeners (HTTP, DNS, MQTT, WebSocket)
backends/ Config generators (Nginx, Caddy, Apache)
models/ Shared types and event models
إذا كنت ترغب في المساهمة في المشروع، فيرجى إنشاء فرع جديد باسم الإصدار وتحديد نفس اسم الإصدار في طلب السحب. على سبيل المثال: branch=v1.2.3 | [v1.2.3] تمت إضافة عنصر كذا.
رخصة BSD 2-Clause. انظر LICENSE للتفاصيل.
حقوق النشر (c) 2026, Whispergate
| العلامة | الوصف |
|---|
--listen-port PORT | تجاوز منفذ الاستماع (الافتراضي: من التكوين) |
--ssl-cert PATH | تجاوز مسار شهادة SSL |
--ssl-key PATH | تجاوز مسار مفتاح SSL |
--redirect-url URL | تجاوز رابط إعادة التوجيه للطلبات المحظورة |
--default-action redirect|404 | الإجراء للطلبات غير المتطابقة |
--no-ip-filter | استبعاد كتل السماح/المنع لـ IP |
--no-header-check | استبعاد قواعد التحقق من صحة الرأس |
--alias DOMAIN:ALIAS | إضافة اسم مستعار لاسم الخادم (قابل للتكرار) |
--header NAME:VALUE | إضافة رأس استجابة مخصص (قابل للتكرار) |
| نقطة النهاية | الطريقة | الوصف |
|---|
/api/instances | GET | سرد جميع المثيلات مع حالة الصحة |
/api/stats | GET | إحصائيات مدمجة من جميع المثيلات |
/api/requests | GET | سجل الطلبات المتداخلة من جميع المثيلات |
/api/intel/whitelist | POST | السماح لـ IP على جميع المثيلات |
/api/intel/blocklist | POST | منع IP على جميع المثيلات |
/api/intel/blocklist | DELETE | إلغاء منع IP على جميع المثيلات |
/ws/events | WS | أحداث حية متعددة الإرسال من جميع المثيلات |
| وحدة التخزين | الغرض |
|---|
./config | ملفات التكوين (مثبتة للقراءة فقط) |
./examples | ملفات تعريف C2 (مثبتة للقراءة فقط) |
./rules | قوائم المنع المستوردة وملفات القواعد المصدرية (مثبتة للقراءة فقط) |
./data | قاعدة بيانات SQLite (مستمرة) |
certs | شهادات TLS (مشتركة بين الوكيل وcertbot) |
geoip | قواعد بيانات GeoLite2 (مملوءة بواسطة خدمة geoip-update) |
pwndrop-data | ملفات مرفوعة لقاعدة بيانات PwnDrop |
| الميزة | RedWarden | InfraGuard |
|---|
| البنية المعمارية | ملف واحد ~99KB | حزمة معيارية |
| تحليل ملف التعريف | آلة حالة تعبيرية | محلل منظم مع دعم كامل للحظر والتحويل |
| دعم C2 | Cobalt Strike فقط | Cobalt Strike، Mythic، Brute Ratel C4، Sliver، Havoc، Nighthawk، PoshC2 |
| البروتوكولات | HTTP فقط | HTTP، DNS، MQTT، WebSocket |
| نموذج التصفية | نجاح/فشل ثنائي | قائم على التسجيل (عتبة 0.0-1.0)، سلسلة من 10 مرشحات |
| بصمة TLS | لا يوجد | منع JA3 (Masscan، ZGrab2، Shodan، curl، Python requests، Nmap) |
| كشف صندوق الرمل | لا يوجد | تسجيل المتصفح بدون رأس / Safe Links / وكلاء المستخدم والرؤوس الخاصة بالصندوق الرمل |
| كشف التعداد | لا يوجد | تعداد المسار + تتبع NXDOMAIN لـ DNS مع منع تلقائي |
| كشف الاحتراق | لا يوجد | مراقبة سجل CT، سمعة النطاق (URLhaus/OpenPhish/GSB)، كشف المحلل عبر النطاقات |
| توصيل الحمولة | لا يوجد | PwnDrop، مخزن ملفات Mythic، نظام الملفات، وكيل HTTP مع توصيل مشروط |
| حماية الحمولة | لا يوجد | رموز لمرة واحدة، تحديد معدل لكل مسار، حراس التوصيل (ربط المفتاح البيئي) |
| حماية التصيد | لا يوجد | التحقق من رمز الحملة (قائمة ثابتة أو بتوقيع HMAC) |
| واجهة المستخدم للمشغل | لا يوجد | لوحة تحكم ويب + واجهة طرفية + مركز قيادة متعدد المثيلات |
| توليد التكوين | لا يوجد | Nginx، Caddy، Apache مع تخصيص كامل |
| استيراد القواعد | لا يوجد | محلل .htaccess + robots.txt |
| خلاصات استخبارات التهديدات | لا يوجد | تحديث تلقائي من 5 مصادر عامة |
| نظام الإضافات | واجهة بسيطة من 4 طرق | يعتمد على الأحداث مع خطافات on_event + تكوين لكل إضافة |
| تكامل SIEM | لا يوجد | Elasticsearch، Wazuh، Syslog (CEF/JSON) |
| تنبيهات Webhook | لا يوجد | Discord، Slack، webhook عام (تنبيهات الاحتراق تمر عبر نفس الإضافات) |
| ذكاء القائمة البيضاء | لا يوجد | إثراء تلقائي لـ CIDRs بـ ASN/منظمة/دولة عند بدء التشغيل |
| مكافحة إعادة التشغيل | تجزئة SQLite | SQLite مستمر مع ذاكرة تخزين مؤقت L1 داخلية، ينجو من إعادة التشغيل |
| إجراءات الإسقاط | إعادة توجيه، إعادة تعيين، وكيل | إعادة توجيه، إعادة تعيين، وكيل، tarpit |
| إدارة TLS | يدوي فقط | تلقائي ذاتي التوقيع + تكامل Let's Encrypt |
| النشر الطرفي | لا يوجد | عوامل Cloudflare Worker + AWS Lambda مع واجهة أمامية للنطاق |
| النشر | يدوي | Docker Compose مع فحوصات صحية |
| التسجيل | مخرجات ملونة مخصصة | JSON منظم (structlog) |
| غير متزامن | استدعاءات Tornado | أصلي async/await (ASGI + uvicorn) |