
InfraGuard es un Proxy y Gestor de Redirección de Comando y Control que protege tu Infraestructura de Red Team contra la atribución de amenazas.

Rastreador de infraestructura de red team y redirector C2 -- una alternativa moderna a [RedWarden](https://github.com/mgeeky/RedWarden).
InfraGuard se sitúa entre internet y tu teamserver de C2, validando cada solicitud entrante contra tu perfil C2 maleable y bloqueando todo lo que no cumpla. Los escáneres, bots y sondas del blue team son redirigidos a un sitio señuelo mientras el tráfico legítimo de beacons pasa hacia tu teamserver.


## Arquitectura

## Características
### Proxy y Listeners
- **Proxy multidominio** -- proxy de múltiples dominios simultáneamente, cada uno con perfiles C2, upstreams y reglas independientes
- **Listeners multiprotocolo** -- listeners HTTP/HTTPS, HTTP/3 (QUIC), WebSocket, gRPC, DNS, MQTT y túnel TCP ejecutándose simultáneamente con inteligencia de IP y seguimiento de eventos compartidos
- **Circuit breaker** -- protección de fallos por upstream con estados closed/open/half-open; recurre a la acción de drop del dominio cuando los backends no son alcanzables
- **Failover de protocolo** -- failover y failback automáticos entre protocolos de listener clasificados por prioridad
### Soporte de perfiles C2
- **Validación de perfiles C2** -- parsea y aplica perfiles de Cobalt Strike, Mythic, Brute Ratel C4, Sliver, Havoc, Nighthawk y PoshC2 como reglas de redirector
- **Perfiles intercambiables en caliente** -- intercambia el perfil C2 activo de un dominio en tiempo de ejecución desde el dashboard sin reiniciar el proxy
- **Asistente de generación de perfiles** -- genera nuevos perfiles C2 desde cero para los 8 tipos soportados mediante un formulario guiado, o importa y sube perfiles existentes con detección automática de tipo y validación
- **Generación de perfiles asistida por IA** -- la integración opcional con Ollama proporciona un panel de chat en el dashboard para ayuda en la creación de perfiles y consejos de OPSEC
### Pipeline de filtros
- **Pipeline de filtros basado en puntuación** -- 10 filtros contribuyen cada uno con una puntuación de 0.0--1.0; un umbral configurable determina block/allow. Filtros: JA3, IP, bot, header, DNS, geo, profile, replay, enumeration, sandbox.
- **Filtrado de huellas TLS JA3** -- bloquea Masscan, ZGrab2, Shodan, curl, Python requests y Nmap en la capa de handshake TLS antes de que se intercambie cualquier dato HTTP; funciona mediante cabecera de reverse-proxy o protocolo asyncio personalizado; el modo allowlist opcional exige el JA3 del beacon
- **Detección de sandbox y navegador headless** -- acumulación de puntuación a través de señales HTTP: UA de HeadlessChrome, Accept-Language ausente, Chrome sin sec-ch-ua, UAs de escáner Safe Links y msnbot, orden de Accept no-navegador
- **Detección de enumeración de rutas** -- seguimiento de URI únicos por IP en una ventana deslizante; bloquea dirbuster/ffuf/gobuster antes de que mapeen el espacio de URI
- **Detección de enumeración de subdominios DNS** -- rastrea respuestas NXDOMAIN por IP de cliente; auto-bloquea IPs de origen al superar el umbral
- **Anti-bot / anti-crawling** -- más de 40 patrones conocidos de User-Agent de escáneres/bots, detección de anomalías en cabeceras
- **Protección contra replay** -- rechaza solicitudes duplicadas por hash de contenido; los hashes se persisten en SQLite para que la protección sobreviva a los reinicios
- **Acciones de drop** -- redirección, reset TCP, proxy a sitio señuelo o tarpit (respuesta de goteo lento para hacer perder tiempo a los escáneres)
### Inteligencia
- **Inteligencia de IP** -- listas de bloqueo CIDR integradas para 19 rangos de proveedores de seguridad (Shodan, Censys, Rapid7, etc.), filtrado GeoIP, coincidencia de palabras clave en DNS inverso
- **Feeds de threat intel** -- auto-actualización de listas de bloqueo desde fuentes públicas (abuse.ch, Emerging Threats, Spamhaus DROP, Binary Defense) con intervalo de actualización configurable y caché en disco
- **Bloqueo dinámico de IP** -- bloquea IPs fuera de rangos en whitelist; auto-whitelist de IPs tras N solicitudes C2 válidas
- **Enriquecimiento de whitelist** -- los CIDR en whitelist se enriquecen automáticamente con datos de ASN, organización, país y continente al arrancar mediante bases de datos GeoIP
- **Detección de burn** -- monitorización de logs de Certificate Transparency vía crt.sh, auto-monitorización de reputación de dominio vía URLhaus/OpenPhish/Google Safe Browsing, y detección de analistas entre dominios cuando una única IP accede a múltiples dominios del operador
- **Puntuación de confianza de burn** -- puntuación continua de 0--100 a partir de 6 señales ponderadas: diversidad JA3, picos de volumen, nuevos ASN, exposición en logs CT, hits de reputación e intentos de autenticación fallidos. Incluye acciones recomendadas: monitorizar, rotar o burn inmediato.
- **Inyección de canary tokens** -- píxeles de seguimiento, enlaces honeypot y formularios honeypot auto-inyectados en páginas señuelo para detectar la investigación del blue team
- **Monitorización de DNS pasivo** -- consulta CIRCL PDNS para la resolución externa de tus dominios; detecta nuevos registros, picos de NXDOMAIN y primera exposición vista
### Entrega de payloads
- **Rutas de entrega de contenido** -- sirve payloads, señuelos y archivos estáticos en rutas específicas mediante PwnDrop, almacén de archivos de Mythic, sistema de archivos local o backends de proxy HTTP; entrega condicional opcional para servir contenido real a los objetivos y señuelos a los escáneres
- **Staging de archivos de Mythic** -- el backend `mythic_file` hace proxy de `/direct/download/{uuid}` de Mythic en URLs limpias; UUID fijo o modo proxy; control de acceso proporcionado por la pila de filtros de InfraGuard
- **Tokens de payload de un solo uso** -- tokens emitidos automáticamente cuando un beacon se añade dinámicamente a la whitelist; aplicación atómica de un solo uso en SQLite evita el replay de URL por analistas o sandboxes; TTL y número máximo de usos configurables
- **Rate limiting por ruta** -- limitador de tasa de descarga por IP con ventana deslizante en rutas de contenido; superar el límite sirve el señuelo de escáner configurado o un 429
- **Guardas de entrega** -- keying por entorno para rutas de contenido: requiere IP de beacon, allowlist de UA, valores de cabecera requeridos, cabeceras prohibidas; las comprobaciones fallidas sirven la acción de drop del dominio, no un 403 en bruto
- **Tokens de campaña de phishing** -- protege páginas de phishing tras tokens por campaña embebidos en enlaces de correo; lista de tokens estáticos o tokens auto-validantes firmados con HMAC con TTL configurable
### Resiliencia
- **Rotación de infraestructura** -- rotación blue-green con Terraform en un clic a través de 5 proveedores cloud con comprobaciones previas, rollback y estado cifrado con age
- **Programación de rotaciones** -- políticas de rotación automatizadas: intervalo fijo, activada por burn, umbral de recuento de solicitudes y rolling escalonado
- **Watchdog de auto-rotación** -- consulta la puntuación de burn y la caducidad del certificado a intervalos; auto-rota cuando se supera el umbral de burn o a un certificado le quedan menos de N días, o recurre al modo solo-alerta con un límite de coste
- **Circuit breakers** -- seguimiento de fallos por upstream con estados HEALTHY / PROBING / TRIPPED y timeout de recuperación configurable, mostrados en vivo en el widget Upstreams del dashboard
- **Domain fronting** -- enrutamiento C2 basado en CDN mediante división de cabecera SNI/Host con eliminación de cabeceras de CDN y protección SSRF
- **Dead man's switch** -- TTL de heartbeat del operador que detiene automáticamente el reenvío de C2 si el operador no se registra
- **Espejo purple-team** -- duplicado fire-and-forget de eventos permitidos a un colector del blue team para puntuación de engagement
- **Backend de estado compartido (Redis)** -- caché de replay entre nodos opcional, whitelist dinámica, bolsa de sesión de beacon y rate-limit de drop para que las réplicas escaladas horizontalmente vean el mismo estado
- **Proxies de borde** -- Cloudflare Worker y AWS Lambda para domain fronting a través de infraestructura CDN, bloqueo de países en el borde y reescritura de host
### Dashboard y herramientas del operador
- **Dashboard web** -- SPA en tiempo real con página de login, feed de solicitudes en vivo, estadísticas por dominio, IPs bloqueadas principales, streaming de eventos por WebSocket y acciones inline de block/whitelist/unblock
- **Gestión de páginas señuelo** -- lista, previsualiza y edita páginas HTML señuelo directamente desde el dashboard; **Canary Overview** por dominio (conmutadores de píxel / enlace oculto / formulario oculto) y un panel **Canary Hits** que muestra cada escáner o sandbox que descargó un recurso señuelo
- **Tokens señuelo con endpoints de callback dedicados** -- el píxel de seguimiento inyectado, el enlace oculto y el formulario oculto disparan cada uno un evento `canary_hit` en `/_ig/px|hp|hf?c=<token>`; los hits llegan a la BD de seguimiento con `filter_result=canary_hit` y se transmiten en vivo a la página Decoys y a cualquier plugin de alertas suscrito
- **Pestaña Plugins** -- lista los plugins cargados con conmutadores de `enable / disable` en tiempo de ejecución (sin reinicio) y un **Plugin Marketplace** para añadir cualquiera de los 29 plugins integrados con un clic; cada mutación persiste en `config.yaml` y queda como un commit en el repositorio de historial de configuración
- **Command Post** -- dashboard de agregación multi-instancia que fusiona estadísticas, solicitudes y eventos en vivo de múltiples nodos de InfraGuard en una única vista, con un **Fleet Map** (MapLibre) que traza cada proxy además de cada IP de origen bloqueada en su lat/lon geolocalizada y un conmutador de plugin de fan-out para operaciones entre instancias
- **Interfaz de terminal** -- TUI basada en Textual con pantalla de login, polling en vivo de la API y log de solicitudes con código de colores
- **Informes de engagement** -- informes HTML, JSON o CSV autocontenidos con desgloses por dominio, efectividad de filtros y pista de auditoría del operador
- **Métricas de Prometheus** -- endpoint `/metrics` que expone contadores de solicitudes, histogramas de latencia de upstream, estado del circuit breaker, frescura de feeds, conexiones activas y el gauge `infraguard_active_beacons` sobre el que escala el HPA de Helm
- **OpenTelemetry** -- exportador de trazas + métricas OTLP opcional; el perfil de compose de observabilidad levanta un colector OTEL más Prometheus + un dashboard de resumen de Grafana auto-aprovisionado
- **Chart de Helm para Kubernetes** -- proxy, dashboard, StatefulSet de Redis, ServiceMonitor y HPA sobre el gauge de beacons activos; se distribuye en `deploy/helm/infraguard/`
### Integraciones y plugins
- **Integración con SIEM** -- plugins integrados para Elasticsearch, Wazuh y Syslog (CEF/JSON) con reenvío por lotes
- **Alertas por webhook** -- plugins integrados para Discord (embeds), Slack (Block Kit), webhook genérico, **PagerDuty** (Events API v2, deduplicado por clave) y **Telegram** (chat de operaciones bidireccional: `/status`, `/sessions`, `/kill`, `/ack` desde un teléfono)
- **Plugins de detección** -- reglas YARA sobre cuerpos de solicitud, consulta a GreyNoise Community, clasificador ML de bots (regresión logística sobre JA4 + UA + timing), canary de respuesta (canarytokens.org), fingerprinting p0f v3, enriquecimiento JA4/JA4H, enriquecimiento GeoIP
- **Manipuladores de respuesta** -- reescritor HTML, marca de agua de payload, eliminador de firmas, desafío JS, mimetismo de caché, tarpit lento, shadow-block (devuelve 200 a los escáneres para que nunca se adapten)
- **Integración con Phishing.club** -- receptor de webhook firmado con HMAC que ingiere eventos de phishing y auto-añade a la whitelist las IPs de objetivos que hacen clic
- **Sistema de plugins** -- arquitectura dirigida por eventos con hooks `on_event`, configuración por plugin y filtrado de eventos; cada plugin puede activarse o cargarse desde la pestaña **Plugins** del dashboard sin reinicio, y el cambio persiste en `config.yaml` con un commit de auditoría en el historial de configuración
### Configuración y despliegue
- **Cifrado de configuración** -- cifrado con age (archivo completo) y SOPS (por valor) con soporte de archivo `.env`
- **Validación de configuración** -- herramienta CLI de diff y más de 20 comprobaciones de validación de seguridad, operativas y TLS
- **Gestión de claves de API** -- crea, revoca y rota claves de API con límites de tasa por clave, seguimiento de uso y cuotas
- **Generación de configuración de backend** -- genera configuraciones de Nginx, Caddy o Apache con TLS, filtrado de IP, comprobaciones de cabeceras, alias y cabeceras personalizadas
- **Ingesta de reglas** -- importa listas de bloqueo de IP y patrones de User-Agent desde archivos `.htaccess` y `robots.txt` existentes
- **Despliegue con Docker** -- Dockerfile + docker-compose con Let's Encrypt opcional, descargador de GeoIP, servidor de payloads PwnDrop y asistente de IA Ollama
- **Soporte GeoIP** -- las tres bases de datos GeoLite2 (City, ASN, Country) con auto-descarga en Docker
- **Fallback TLS autofirmado** -- autogenera certificados cuando las rutas configuradas no existen
- **Soporte de variables de entorno** -- archivo `.env` auto-cargado; la sintaxis `${VAR}` funciona en todos los valores y claves de configuración
- **Endpoint de health configurable** -- cambia la ruta de comprobación de salud para evitar fingerprinting
- **Logging estructurado** -- logs estructurados con formato JSON vía structlog
- **Seguimiento y persistencia** -- SQLite con modo WAL para logging de solicitudes, estadísticas, registro de nodos, hashes de replay y tokens de payload
## Guía de instalación
Consulta la [Wiki Page](https://infraguard.whispergate.org/docs/getting-started/installation/) para la instalación
## Referencia de CLI```
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 <file> Parse and display a C2 profile
infraguard profile parse <file> --format json Output as JSON
infraguard profile parse <file> --type brute_ratel Force profile type
infraguard profile convert <file> -o out.json Convert profile to JSON
# Supported --type values: auto, cobalt_strike, mythic, brute_ratel, sliver, havoc, nighthawk, poshc2
# Auto-detection: .profile = CS, .toml = Havoc, .yaml = PoshC2, .json = auto-detect by keys
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
infraguard simulate-beacon -c config.yaml --domain <d> Run one synthetic beacon
through the loaded filter
pipeline in-process
infraguard drop-preview -c config.yaml --domain <d> Render the drop-action
response without any live
traffic (decoy / redirect
/ tarpit preview)
infraguard events tail -c config.yaml Tail the tracking DB as a
structured event stream
infraguard profile transpile <in> --to <c2> Convert a C2 profile
between formats using the
shared profile IR
infraguard preflight -c config.yaml Adversary-emulation
self-test: DNS, cert,
upstream, decoy dir,
writes a Markdown report
infraguard config set <domains.<d>.upstream> <value> Mutate config from CLI;
writes .bak, atomic file
replace, and commit to the
config-history git repo
infraguard config log Show mutation history
infraguard config revert HEAD~N Roll back N mutations
```
### Opciones del generador
El comando `generate` acepta flags adicionales para la personalización del operador:
| Flag | Descripción |
|---|---|
| `--listen-port PORT` | Sobrescribe el puerto de escucha (por defecto: desde la configuración) |
| `--ssl-cert PATH` | Sobrescribe la ruta del certificado SSL |
| `--ssl-key PATH` | Sobrescribe la ruta de la clave SSL |
| `--redirect-url URL` | Sobrescribe la URL de redirección para solicitudes bloqueadas |
| `--default-action redirect\|404` | Acción para solicitudes no coincidentes |
| `--no-ip-filter` | Omite los bloques de permitir/denegar IP |
| `--no-header-check` | Omite las reglas de validación de encabezados |
| `--alias DOMAIN:ALIAS` | Añade un alias de nombre de servidor (repetible) |
| `--header NAME:VALUE` | Añade un encabezado de respuesta personalizado (repetible) |
## Command Post (Panel Multi-Instancia)
Cuando se ejecutan múltiples instancias de InfraGuard en diferentes VPSes o proveedores de nube, el Command Post agrega estadísticas, solicitudes y eventos en vivo de todos los nodos en un único panel.```
┌─────────────────────────────┐
│ Command Post Dashboard │
│ http://localhost:9090 │
└──────────┬──────────────────┘
│ parallel fetch
┌─────┼──────┬──────────┐
▼ ▼ ▼ ▼
IG-1 IG-2 IG-3 ... IG-N
```

### Inicio rápido```bash
# Via config file
infraguard command-post -c config/command-post.yaml
# Via CLI args
infraguard command-post \
--instance "prod:https://ig1.example.com:8080:TOKEN1" \
--instance "staging:https://ig2.example.com:8080:TOKEN2" \
--port 9090
# Via Docker
docker compose --profile command-post up -d command-post
```
### Configuración
Crea `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}"
```
### Qué muestra
- **Estadísticas combinadas** -- total de solicitudes, permitidas, bloqueadas sumadas en todas las instancias
- **Barra de estado de instancias** -- estado verde/rojo para cada nodo conectado
- **Registro de solicitudes intercalado** -- solicitudes de todas las instancias ordenadas por marca de tiempo, cada una etiquetada con el nombre de su instancia
- **IPs bloqueadas principales combinadas** -- agregadas en todas las instancias
- **Estadísticas por dominio** -- dominios de todas las instancias con tasas de bloqueo recalculadas
- **Flujo de eventos en vivo** -- eventos WebSocket multiplexados de todos los nodos
- **Acciones de bloqueo/lista blanca** -- distribuidas a todas las instancias o a una específica
### Endpoints de la API
| Endpoint | Método | Descripción |
|---|---|---|
| `/api/instances` | GET | Lista todas las instancias con estado de salud |
| `/api/stats` | GET | Estadísticas combinadas de todas las instancias |
| `/api/requests` | GET | Registro de solicitudes intercalado de todas las instancias |
| `/api/intel/whitelist` | POST | Añadir una IP a la lista blanca en todas las instancias |
| `/api/intel/blocklist` | POST | Bloquear una IP en todas las instancias |
| `/api/intel/blocklist` | DELETE | Desbloquear una IP en todas las instancias |
| `/ws/events` | WS | Eventos en vivo multiplexados de todas las instancias |
## Despliegue con Docker
### Inicio rápido```bash
cp .env.example .env
# Edit .env with your domain, teamserver, and token
docker compose up -d
```
Esto inicia dos servicios:
- **proxy** -- el redireccionador en los puertos 443 y 80
- **dashboard** -- la interfaz web en el puerto 8080
### Con 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
```
Requisitos para Let's Encrypt:
- El puerto 80 debe ser accesible desde internet
- `INFRAGUARD_DOMAIN` debe resolver a la IP pública de este host
- `INFRAGUARD_DOMAIN_EMAIL` debe ser una dirección de correo electrónico válida
### Con bases de datos GeoIP```bash
# Download all three GeoLite2 databases (City, ASN, Country)
docker compose --profile geoip up geoip-update
# Then start normally - databases are mounted at /app/geoip/
docker compose up -d proxy dashboard
```
### Con PwnDrop (entrega de payload)```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
```
Luego configure las rutas de contenido en su configuración para redirigir las rutas de payload a PwnDrop:```yaml
domains:
cdn.example.com:
content_routes:
- path: "/downloads/*"
backend:
type: "pwndrop"
target: "http://pwndrop:80"
auth_token: "${PWNDROP_TOKEN}"
```
### Con Ollama (generación de perfiles asistida por IA)```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
```
La variable de entorno del panel de control `INFRAGUARD_OLLAMA_URL` está preconfigurada en docker-compose.yml. Cuando Ollama está en ejecución, el interruptor del Asistente de IA aparece en la página de señuelos y perfiles del panel de control.
### Escalado```bash
# Run multiple redirector nodes
docker compose up -d --scale proxy-node=3
```
Descomenta el servicio `proxy-node` en `docker-compose.yml` para habilitarlo.
### Volúmenes
| Volumen | Propósito |
|---|---|
| `./config` | Archivos de configuración (montados como solo lectura) |
| `./examples` | Perfiles C2 (montados como solo lectura) |
| `./rules` | Listas de bloqueo ingestadas y archivos fuente de reglas (montados como solo lectura) |
| `./data` | Base de datos SQLite y perfiles generados (persistidos) |
| `certs` | Certificados TLS (compartidos entre el proxy y certbot) |
| `geoip` | Bases de datos GeoLite2 (pobladas por el servicio `geoip-update`) |
| `pwndrop-data` | Archivos subidos y base de datos de PwnDrop |
| `ollama-data` | Pesos de modelos y configuración de Ollama |
> En hosts Linux, ejecuta `chown -R 1000:1000 config/` si quieres que las mutaciones
> dirigidas desde el dashboard (drop-action, cambio de perfil, activación de plugins) persistan
> de vuelta en `config.yaml`. El uid no-root del contenedor necesita permiso de escritura
> sobre el montaje.
## Despliegue en Kubernetes
El chart de Helm en `deploy/helm/infraguard/` despliega el proxy, el dashboard, el
StatefulSet de Redis y un HPA que escala el proxy según la métrica personalizada
`infraguard_active_beacons` (requiere `prometheus-adapter` en el clúster). Consulta la página
[Kubernetes Deployment](https://infraguard.whispergate.org/docs/deployment/kubernetes/)
de la wiki para la guía completa.```bash
# One-shot install
helm install infraguard deploy/helm/infraguard \
--namespace infraguard --create-namespace \
-f my-values.yaml
# Get the API token the chart minted
kubectl get secret -n infraguard infraguard-secrets \
-o jsonpath='{.data.INFRAGUARD_API_TOKEN}' | base64 -d
```
Las sondas del chart acceden a `/health` en el listener HTTPS con `scheme: HTTPS`, por lo que el contenedor necesita un bloque `tls:` en la configuración (el fallback autofirmado es suficiente).
## Contribuciones
- Mgeeky - Idea original ([RedWarden](https://github.com/mgeeky/RedWarden))
- curi0usJack - [reglas de .htaccess](https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10)
- Perfiles
- threatexpress - [jquery-c2.3.14.profile](https://github.com/threatexpress/malleable-c2/blob/master/jquery-c2.3.14.profile)
- InfinityCurve - [Perfil de Havoc](https://github.com/whispergate/infraguard/blob/main/examples/kaine.toml)
- Frameworks C2
- [Cobalt Strike](https://www.cobaltstrike.com/) - Soporte de perfiles Malleable C2
- [Mythic](https://github.com/its-a-feature/Mythic) - Soporte de perfiles HTTPX + file staging
- [Brute Ratel C4](https://bruteratel.com/) - Soporte de perfiles de configuración del servidor
- [Sliver](https://github.com/BishopFox/sliver) - Soporte de perfiles HTTP C2
- [Havoc](https://www.infinitycurve.org/) - Soporte de perfiles TOML
- [Nighthawk](https://nighthawkc2.io/) - Soporte de configuración de listener JSON
- [PoshC2](https://github.com/nettitude/PoshC2) - Soporte de configuración YAML
Si deseas contribuir al proyecto, crea una nueva rama con el nombre de la versión y especifica el mismo nombre de versión en el pull request. Ej.: branch=v1.2.3 | [v1.2.3] Added blah item.
## Licencia
Licencia BSD de 2 cláusulas. Consulta [LICENSE](https://github.com/whispergate/infraguard/blob/main/LICENSE) para más detalles.
Copyright (c) 2026, Whispergate