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


mythic_file تعمل كبروكسي لمسار Mythic /direct/download/{uuid} عبر عناوين URL نظيفة؛ وضع UUID ثابت أو وضع بروكسي؛ التحكم بالوصول عبر مجموعة تصفية InfraGuard/metrics تعرض عدّادات الطلبات ورسومًا بيانية لكمون المنابع العلوية وحالة قاطع الدائرة وحداثة المصادر والاتصالات النشطةon_event وإعدادات لكل إضافة وتصفية أحداث.env.htaccess وrobots.txt الموجودة.env؛ بناء جملة ${VAR} يعمل في جميع قيم ومفاتيح الإعداداطّلع على صفحة الويكي للتثبيت
infraguard --version Show version infraguard --help Show help
infraguard run -c config.yaml Start the reverse proxy infraguard run -c config.yaml --port 8443 Override listen port infraguard run -c config.yaml --host 0.0.0.0 Override bind address
infraguard dashboard -c config.yaml Start the web dashboard infraguard dashboard -c config.yaml --port 9090 Override dashboard port
infraguard tui Launch TUI with login screen infraguard tui --url http://host:8080 --token TOK Auto-connect to dashboard infraguard tui -c config.yaml Read URL/token from config
infraguard command-post -c command-post.yaml Start multi-instance dashboard infraguard command-post --instance name:url:token Add instance via CLI (repeatable)
infraguard profile parse Parse and display a C2 profile infraguard profile parse --format json Output as JSON infraguard profile parse --type brute_ratel Force profile type infraguard profile convert -o out.json Convert profile to JSON
infraguard ingest <files...> Ingest .htaccess/robots.txt rules infraguard ingest <files...> --format blocklist Output as IP blocklist infraguard ingest <files...> --format json Output as JSON infraguard ingest <files...> -o banned_ips.txt Write blocklist to file
infraguard generate nginx -c config.yaml Generate Nginx config infraguard generate caddy -c config.yaml Generate Caddyfile infraguard generate apache -c config.yaml Generate Apache VirtualHost
infraguard init -o config.yaml Generate starter config infraguard validate -c config.yaml Validate config file
### خيارات المولّد
يقبل أمر `generate` علامات إضافية لتخصيص المشغّل:
| Flag | Description |
|---|---|
| `--listen-port PORT` | تجاوز منفذ الاستماع (الافتراضي: من الإعدادات) |
| `--ssl-cert PATH` | تجاوز مسار شهادة SSL |
| `--ssl-key PATH` | تجاوز مسار مفتاح SSL |
| `--redirect-url URL` | تجاوز عنوان URL لإعادة التوجيه للطلبات المحجوبة |
| `--default-action redirect\|404` | إجراء للطلبات غير المتطابقة |
| `--no-ip-filter` | حذف قوائم السماح/الرفض لعناوين IP |
| `--no-header-check` | حذف قواعد التحقق من الترويسات |
| `--alias DOMAIN:ALIAS` | إضافة اسم مستعار للخادم (قابل للتكرار) |
| `--header NAME:VALUE` | إضافة ترويسة استجابة مخصصة (قابل للتكرار) |
## مركز القيادة (لوحة تحكم متعددة المثيلات)
عند تشغيل مثيلات متعددة من InfraGuard عبر خوادم VPS مختلفة أو موفري سحابيين، يقوم مركز القيادة بتجميع الإحصائيات والطلبات والأحداث المباشرة من جميع العقد في لوحة تحكم واحدة.```
┌─────────────────────────────┐
│ Command Post Dashboard │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ parallel fetch
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N

infraguard command-post -c config/command-post.yaml
infraguard command-post
--instance "prod:https://ig1.example.com:8080:TOKEN1"
--instance "staging:https://ig2.example.com:8080:TOKEN2"
--port 9090
docker compose --profile command-post up -d command-post
### الإعدادات
أنشئ `config/command-post.yaml`:```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
docker compose up -d
يقوم هذا بتشغيل خدمتين:
- **proxy** -- مُعيد التوجيه على المنفذين 443 و80
- **dashboard** -- واجهة الويب على المنفذ 8080
### مع Let's Encrypt```bash
# Set in .env:
# INFRAGUARD_LETSENCRYPT=true
# INFRAGUARD_DOMAIN=cdn.example.com
# [email protected]
# Obtain the initial certificate
docker compose --profile letsencrypt up certbot
# Start the proxy (will use the LE cert)
docker compose up -d proxy dashboard
# Start auto-renewal (checks every 12 hours)
docker compose --profile letsencrypt up -d certbot-renew
متطلبات Let's Encrypt:
INFRAGUARD_DOMAIN إلى عنوان IP العام لهذا المضيفINFRAGUARD_DOMAIN_EMAIL عنوان بريد إلكتروني صالحًاdocker compose --profile geoip up geoip-update
docker compose up -d proxy dashboard
### مع PwnDrop (تسليم الحمولة)```bash
# Start PwnDrop alongside the proxy
docker compose --profile pwndrop up -d pwndrop
# Access PwnDrop admin UI at https://localhost:8443
# InfraGuard reaches it internally at http://pwndrop:80
ثم قم بتكوين مسارات المحتوى في إعداداتك لتوجيه مسارات الحمولة إلى PwnDrop:```yaml domains: cdn.example.com: content_routes: - path: "/downloads/*" backend: type: "pwndrop" target: "http://pwndrop:80" auth_token: "${PWNDROP_TOKEN}"
### مع Ollama (توليد الملفات الشخصية بمساعدة الذكاء الاصطناعي)```bash
# Start the Ollama service
docker compose --profile ollama up -d ollama
# Pull the default model (~5 GB)
docker compose --profile ollama exec ollama ollama pull qwen3:8b
# The dashboard's AI chat panel will connect automatically
متغير البيئة الخاص بلوحة المعلومات INFRAGUARD_OLLAMA_URL مُهيأ مسبقًا في ملف docker-compose.yml. عند تشغيل Ollama، يظهر مفتاح المساعد الذكي في صفحة الأشراك والملفات الشخصية بلوحة المعلومات.
docker compose up -d --scale proxy-node=3
أزل التعليق عن خدمة `proxy-node` في `docker-compose.yml` لتفعيلها.
### وحدات التخزين
| Volume | الغرض |
|---|---|
| `./config` | ملفات الإعدادات (مثبّتة للقراءة فقط) |
| `./examples` | ملفات تعريف C2 (مثبّتة للقراءة فقط) |
| `./rules` | قوائم الحظر المستوردة وملفات مصادر القواعد (مثبّتة للقراءة فقط) |
| `./data` | قاعدة بيانات SQLite وملفات التعريف المُنشأة (مستمرة) |
| `certs` | شهادات TLS (مشتركة بين الوكيل وcertbot) |
| `geoip` | قواعد بيانات GeoLite2 (تُملأ بواسطة خدمة `geoip-update`) |
| `pwndrop-data` | ملفات PwnDrop المرفوعة وقاعدة البيانات |
| `ollama-data` | أوزان نموذج Ollama والإعدادات |
## البنية```
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 and generators (8 types)
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. انظر LICENSE للتفاصيل.
حقوق النشر (c) 2026, Whispergate
| Endpoint | Method | Description |
|---|
/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 | أحداث مباشرة متعددة الإرسال من جميع النسخ |
| الميزة | RedWarden | InfraGuard |
|---|
| البنية | ملف واحد ~99KB | حزمة معيارية |
| تحليل البروفايل | آلة حالة regex | محلل منظم مع دعم كامل للكتل والتحويلات |
| دعم 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 / تقييم UA وترويسات بيئة الاختبار |
| اكتشاف التعداد | لا يوجد | تعداد المسارات + تتبع DNS NXDOMAIN مع حظر تلقائي |
| اكتشاف الاحتراق | لا يوجد | مراقبة سجلات CT، سمعة النطاق، اكتشاف المحللين عبر النطاقات، تقييم الثقة |
| مرونة البنية التحتية | لا يوجد | قاطع الدائرة، تجاوز البروتوكول، مفتاح الرجل الميت، تدوير البنية التحتية |
| تسليم الحمولة | لا يوجد | PwnDrop، مخزن ملفات Mythic، نظام الملفات، وكيل HTTP مع تسليم مشروط |
| حماية الحمولة | لا يوجد | رموز لمرة واحدة، تحديد المعدل لكل مسار، ضمانات التسليم |
| حماية التصيد | لا يوجد | التحقق من رمز الحملة (قائمة ثابتة أو موقعة HMAC) |
| واجهة المشغّل | لا يوجد | لوحة تحكم ويب + واجهة طرفية + مركز قيادة متعدد النسخ |
| قابلية المراقبة | لا يوجد | مقاييس Prometheus، تقارير الجلسات، تسجيل منظم |
| توليد الإعدادات | لا يوجد | 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 في الذاكرة، يبقى بعد إعادة التشغيل |
| إجراءات الإسقاط | redirect, reset, proxy | redirect, reset, proxy, tarpit |
| إدارة TLS | يدوي فقط | تلقائي ذاتي التوقيع + تكامل Let's Encrypt |
| نشر الحافة | لا يوجد | Cloudflare Worker + وكلاء حافة AWS Lambda مع إخفاء النطاق |
| أمان الإعدادات | لا يوجد | تشفير age و SOPS، فحوصات التحقق، إدارة مفاتيح API |
| النشر | يدوي | Docker Compose مع فحوصات الصحة |
| غير متزامن | استدعاءات Tornado | async/await أصلي (ASGI + uvicorn) |