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-gogè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-goqui 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 |