Aller au contenu

Listener QUIC

QUIC (HTTP/3) fournit un transport C2 moderne basé sur UDP avec TLS 1.3 intégré, établissement de connexion 0-RTT et migration de connexion. Le trafic QUIC est de plus en plus courant sur Internet (utilisé par Google, Cloudflare, Meta), ce qui en fait un moyen de transport efficace pour se fondre dans le trafic normal.

Pourquoi QUIC ?

  • Basé sur UDP : contourne l'inspection approfondie des paquets axée sur TCP et les pare-feu qui inspectent uniquement les flux TCP.
  • TLS 1.3 intégré : Chiffré par défaut sans possibilité de rétrogradation - résistant aux appareils d'inspection SSL qui reposent sur l'interception TLS
  • Reprise 0-RTT : Reconnexion plus rapide après les cycles de sommeil : la poignée de main se termine en un seul aller-retour
  • Migration de connexion : Beacon survit aux changements de réseau (WiFi vers Ethernet, connexion/déconnexion VPN) sans rétablir la session
  • Flux multiplexés : Plusieurs requêtes simultanées sur une seule connexion sans blocage en tête de ligne

Architecture

QUIC réutilise exactement le même multiplexeur HTTP C2 que les listeners HTTP/HTTPS. La seule différence réside dans la couche de transport : HTTP/3 sur QUIC au lieu de HTTP/1.1 ou HTTP/2 sur TCP. Cela signifie que les profils malléables, l'enregistrement des beacons, la mise en file d'attente des tâches et toutes les opérations C2 fonctionnent de manière identique.

sequenceDiagram
    participant Implant as Implant (Windows)
    participant Relay as Relay C2 Server (Kali)
    participant Backend as Backend API Server

    Implant->>Relay: QUIC/HTTP3 request (UDP, TLS 1.3)
    Relay->>Backend: WebSocket event (beacon registration)
    Backend-->>Relay: WebSocket command (task queue)
    Relay-->>Implant: QUIC/HTTP3 response (task payload)
    Implant->>Relay: QUIC/HTTP3 request (task result)
    Relay->>Backend: WebSocket event (result delivery)

Création d'un listener QUIC

API REST

curl -s -X POST https://stentor.app/api/v1/listeners \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "QUIC Primary",
    "relay_id": "25b2e4d7-8b7f-411f-8fe0-7faed06b90d1",
    "type": "quic",
    "port": 8443,
    "tls_auto_generate": true
  }' | jq

Démarrer le listener

curl -s -X POST "https://stentor.app/api/v1/listeners/$LISTENER_ID/start" \
  -H "Authorization: Bearer $TOKEN"

Options de configuration

Paramètre Type Obligatoire Par défaut Description
name chaîne Oui -- Nom d'affichage pour le listener
relay_id UUID Oui -- Agent relais cible
type chaîne Oui -- Doit être quic
port int Oui -- Port UDP sur lequel écouter (par défaut : 8443)
host chaîne Non IP du relais Lier l'adresse
tls_auto_generate bool Non true Générer automatiquement un certificat TLS
tls_cert chaîne Non -- Certificat TLS personnalisé (PEM)
tls_key chaîne Non -- Clé privée TLS personnalisée (PEM)

Sélection des ports

Le port par défaut est 8443 (et non 443) pour éviter la liaison de port privilégié sous Linux. QUIC utilise UDP, donc le port 443/UDP est distinct du HTTPS sur 443/TCP. Vous pouvez exécuter simultanément un listener HTTPS et QUIC sur le port 443 car ils utilisent des protocoles différents (TCP vs UDP).


Prise en charge des profils malléables

QUIC prend en charge les profils C2 malléables, tout comme HTTPS. Étant donné que HTTP/3 est toujours HTTP sémantiquement, toutes les transformations HTTP (en-têtes, chemins URI, transformations de corps, codage de métadonnées) s'appliquent au trafic QUIC.

# Create QUIC listener with malleable profile
curl -s -X POST https://stentor.app/api/v1/listeners \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "QUIC Malleable",
    "relay_id": "25b2e4d7-8b7f-411f-8fe0-7faed06b90d1",
    "type": "quic",
    "port": 8443,
    "tls_auto_generate": true,
    "profile_id": "PROFILE_UUID"
  }' | jq

Génération de payload

Lors de la génération de payloads pour un listener QUIC, le serveur propage automatiquement la configuration QUIC (IP relais + port d'écoute) à partir du type d'listener. L'interface utilisateur détecte automatiquement le transport à partir de listener.type.

Formats de payload pris en charge : tous les formats prenant en charge HTTPS prennent également en charge QUIC (EXE, DLL, Service DLL, Shellcode, XLL).

# Generate payload for QUIC listener
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "listener_id": "LISTENER_UUID",
    "format": "exe",
    "arch": "x64"
  }' --output payload.exe

QUIC contre HTTPS

Caractéristique HTTPS RAPIDE
Protocole TCP + TLS 1.2/1.3 UDP + TLS 1.3 (intégré)
Port 443/TCP (ou personnalisé) 443/UDP (ou personnalisé)
Évasion DPI Modéré – Inspection TCP bien comprise Plus élevé -- L'inspection UDP est moins courante
Migration de connexion Non -- TCP 4-tuple corrigé Oui – survit aux changements de réseau
Reprise 0-RTT TLS 1.3 uniquement Intégré
Contournement du pare-feu Élevé – HTTPS autorisé partout Modéré – certains réseaux bloquent UDP 443
Profils malléables Prise en charge complète Prise en charge complète
Blocage en tête de ligne Oui (HTTP/1.1) ou par flux (HTTP/2) Aucun – flux indépendants

Compatibilité réseau

Certains réseaux d'entreprise bloquent entièrement l'UDP sortant ou n'autorisent que l'UDP 53 (DNS). Dans ces environnements, QUIC échouera et vous devrez plutôt utiliser HTTPS. Testez la connectivité QUIC avant de l’utiliser comme seul moyen de transport.


Considérations OPSEC

OPSEC

  • Le trafic QUIC sur les ports non standard (par exemple, 8443/UDP) peut apparaître dans les journaux réseau - préférez le port 443 lorsque cela est possible
  • Certains outils de surveillance du réseau n'inspectent pas encore le trafic QUIC, ce qui constitue un avantage
  • La migration de connexion signifie que le beacon peut survivre aux reconnexions VPN sans générer de nouvelles poignées de main TLS.
  • Les données 0-RTT peuvent théoriquement être relues -- la bibliothèque quic-go gère la protection contre la relecture au niveau de la couche de protocole
  • QUIC utilise la même infrastructure de certificats TLS que HTTPS : utilisez des certificats légitimes pour une furtivité maximale
  • L'implémentation QUIC utilise la bibliothèque quic-go qui produit une empreinte digitale TLS distincte (pas Chrome/Firefox) -- tenez-en compte lorsque l'analyse des empreintes digitales est un problème.

Dépannage

Problème Parce que Corriger
Délai de connexion UDP bloqué par le pare-feu Vérifiez les règles UDP sortantes, essayez le port 443
Erreur de certificat Certificat auto-signé rejeté Utilisez IMPLANT_INSECURE_SKIP_VERIFY=true ou un certificat valide
L'listener ne démarre pas Conflit portuaire Vérifiez les listeners UDP existants sur le port
Gouttes intermittentes Perte de paquets UDP sur les réseaux avec perte QUIC a une retransmission intégrée, mais une perte élevée peut entraîner des ralentissements