
Cloud-native C2 framework utilisant le stockage cloud comme canal de communication dead-drop.
Framework de persistance cloud · v3.0.1
Un point d'appui de secours qui transite par une infrastructure que les défenseurs ne peuvent pas bloquer.
Votre C2 principal devient silencieux. Le domaine est blacklisté. Le beacon est signalé. L'EDR tue le processus. Vous êtes dehors.
Vous avez besoin d'un second canal — un canal qui n'aurait de toute façon jamais dû être bloqué.
Et si le trafic de commande et contrôle ressemblait exactement à un employé synchronisant des fichiers vers Dropbox ?
C'est Stratum. Les commandes et les réponses voyagent comme des fichiers ordinaires dans un dossier de stockage cloud. L'agent ne se connecte jamais à l'infrastructure de l'attaquant. Le seul trafic observable est du HTTPS vers un fournisseur que le pare-feu de la cible a déjà mis sur liste blanche — car bloquer Dropbox ou OneDrive signifie bloquer chaque employé qui les utilise.
Pas de teamserver. Pas de domaine appartenant à l'attaquant. Pas de certificat TLS suspect. Rien à bloquer.
OPÉRATEUR FOURNISSEUR CLOUD CIBLE
──────── ───────────── ──────
/Machine1/
WebGUI ──HTTPS──► input.txt 🔒 ◄── poll ── agent
output.txt 🔒 ──► read ──┘
heartbeat.txt (beacon chiffré)
L'agent se réveille à un intervalle configurable (+ gigue log-normale), lit le fichier d'entrée, exécute, chiffre la réponse, la téléverse, puis dort. Tout est chiffré de bout en bout avec RSA-4096-OAEP + AES-256-GCM. L'IP de l'opérateur n'apparaît jamais dans aucun journal réseau côté cible.
| Fournisseur | Notes | |
|---|---|---|
| Dropbox | Jeton d'actualisation OAuth2 · Comptes professionnels et personnels | |
| Microsoft OneDrive | API Microsoft Graph · Comptes personnels et M365 | |
| Google Drive | API Google Drive v3 · Flux de service OAuth2 | |
| SharePoint Online | API Microsoft Graph · Sites de locataires M365 | |
| Compatible S3 | AWS S3 · DigitalOcean Spaces · Backblaze B2 · tout point de terminaison S3 |
Les cinq partagent le même format de transmission, la même paire de clés RSA et la même session opérateur. Changez de fournisseur en pleine mission en quelques minutes sans toucher à l'agent. Aucun autre framework open-source ne propose cela prêt à l'emploi.
Un SOC qui veut arrêter un C2 bloque le domaine du teamserver ou l'infrastructure frontée. Un SOC qui veut arrêter Stratum doit bloquer Dropbox, OneDrive, Google Drive, SharePoint et S3 simultanément. Ce n'est pas une règle de pare-feu — c'est une décision commerciale qu'aucune entreprise ne prendra. L'architecture de boîte aux lettres morte ne tente pas d'échapper à la détection. Elle opère sur une infrastructure que le défenseur a déjà décidé de faire confiance, de façon permanente.
| Format | Plateforme | Dépendances |
|---|---|---|
.exe / .dll | Windows | Aucune — PE compilé en Rust (ABI MSVC), pas d'interpréteur, pas de PowerShell dans l'arborescence des processus |
.elf | Linux | Aucune — musl-static compilé en Rust, fonctionne sur tout Linux x86_64 |
.bin | Linux / Windows | Shellcode PIC x64 — à injecter dans n'importe quel chargeur ou injecteur externe |
L'assistant génère tous ces formats. Vous répondez aux invites ; il compile, chiffre et empaquette. Pas de drapeaux de compilateur, pas de variables d'environnement, pas de gestion manuelle des clés.
| Mode | Fonctionnement | Idéal pour |
|---|---|---|
| staged-enc | Stub minimal sur la cible. Au premier lancement : récupère une clé d'amorçage à usage unique depuis le cloud, déchiffre l'agent complet en mémoire, supprime la clé du cloud. La charge utile ne touche jamais le disque en clair. | Missions standard — artefact initial le plus petit, clé détruite à la livraison |
| stageless-enc | Agent complet intégré dans un seul fichier de livraison, chiffré avec une clé intégrée au stub. Aucune récupération de clé cloud nécessaire après la livraison. | Réseaux isolés ou restreints — un seul fichier autonome |
| stageless-plain | Agent en clair. Les commandes et les réponses restent entièrement chiffrées en transit. | Laboratoires et environnements contrôlés |
Tous les modes partagent le même comportement post-exécution : le stub met en cache un blob chiffré avec empreinte matérielle localement, de sorte que les exécutions suivantes se chargent depuis le disque sans toucher au cloud.
Avant de toucher à une seule clé de registre ou entrée cron, exécutez /persist probe. L'agent vérifie chaque technique disponible au niveau de privilège actuel et renvoie un rapport de faisabilité. Non destructif — aucun artefact laissé derrière.
/persist probe
✓ schtask-logon — faisable (SYSTEM)
✓ registry-run — faisable
✗ schtask-boot — nécessite une élévation
✓ startup-folder — faisable
...
Choisissez ce qui fonctionne, installez-le, retirez-le proprement une fois terminé. La WebGUI suit chaque technique installée par session. /kill démonte tout — persistance, binaire, artefacts cloud — en une seule commande.
Date de fin de vie, fenêtre de maintenance, gigue log-normale, clé d'amorçage à usage unique — tout est configuré une fois dans l'assistant et compilé dans l'agent de façon permanente. Rien à gérer pendant la mission, rien à oublier de nettoyer à la fin.
Stratum ne remplace pas Cobalt Strike, Sliver ou Havoc. C'est la couche en dessous d'eux.
Jour 1 : déployer Stratum en parallèle de votre C2 principal
Jour 4 : le beacon principal est signalé, processus tué
Jour 4 : ouvrir une session Stratum, évaluer ce qui s'est passé
Jour 4 : réintroduire le C2 principal via le shell Stratum
Jour 5 : retour à un accès complet
Votre C2 principal gère la post-exploitation. Stratum gère la survie. C'est le canal qui ne serait jamais détecté parce qu'il n'a jamais essayé de se cacher — il ressemble simplement à Dropbox.
C'est le même paradigme utilisé dans la nature par des acteurs de menace documentés en 2025–2026 : TukTuk (boîte aux lettres morte Dropbox + Arweave), NarwhalRAT/APT37 (pCloud), COBALT MIRAGE/Drokbk (GitHub). Stratum apporte la même architecture côté équipe rouge en tant que véritable framework, pas un implant ponctuel.
git clone https://github.com/daniomass/stratum-c2.git
cd stratum-c2
./install.sh --server
Les agents compilés (.exe, .elf, .dll, .bin, Rust natif) sont une fonctionnalité centrale de Stratum. L'assistant détecte et utilise les cibles disponibles, en sautant uniquement ce qu'il ne peut pas compiler.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
# Windows PE / DLL
rustup target add x86_64-pc-windows-gnu && sudo apt install mingw-w64
# Linux musl-static ELF
rustup target add x86_64-unknown-linux-musl && sudo apt install musl-tools
# Shellcode x64 plat
rustup target add x86_64-unknown-none && sudo apt install lld
python3 stratum-server.py
Ouvrez https://<hôte>:<port>, connectez-vous, cliquez sur Déployer. L'assistant vous guide à travers les identifiants du fournisseur, le format de l'agent, le mode de déploiement, l'identité de persistance et les garde-fous (date de fin de vie, fenêtre, gigue). À la fin, il vous remet des artefacts prêts à l'emploi. Détails complets de configuration dans le wiki (docs/wiki.html).
# Linux — en arrière-plan, sans terminal
chmod +x stub.elf && nohup ./stub.elf &>/dev/null &
# Windows — fenêtre masquée (cmd ou PowerShell)
start /b stub.exe
La session apparaît automatiquement dans la WebGUI au premier beacon.
Multi-opérateur, temps réel, basée navigateur. Chaque opérateur voit les mêmes sessions en direct via WebSocket.
/sysinfo — profil système complet : matériel, OS, réseau, AV/EDR, conteneurs
/persist probe — vérification de faisabilité non destructive, toutes les techniques
/persist install <id>— installer une technique de persistance
/persist remove <id> — retirer une technique spécifique
/creds harvest — collecter les identifiants (Firefox/cloud analysés en ligne, le reste mis en file)
/creds harvest decrypt — + déchiffrer Chrome/Edge/DPAPI via CryptUnprotectData (OPSEC↑)
/creds coerce — forcer l'authentification locale pour capturer NTLMv2 / énumérer les agents SSH
/creds sam — extraction de hachages SAM en mémoire (Windows, nécessite SYSTEM ou Admin élevé)
/creds listen start [proto:port] — démarrer un écouteur d'identifiants (smb:445, http:80, http-ntlm:80)
/creds listen stop [proto:port] — arrêter un écouteur spécifique ou tous les écouteurs
/creds listen dump — récupérer les identifiants NTLMv2 + Basic capturés (remplit automatiquement l'onglet Identifiants)
/bof <file.o> [args] — exécuter un Beacon Object File (COFF) en mémoire (Windows, Rust uniquement)
/assembly <file.exe> [args] — exécuter un assembly .NET via hébergement CLR (Windows, Rust uniquement)
/assembly-amsibypass <file.exe> [args] — assembly .NET + contournement AMSI (Windows, Rust uniquement)
/memexec <file> [args] — exécuter PE/ELF en mémoire (Win : réflexif, Linux : memfd — Rust uniquement)
/script <file> [interpreter] — exécuter un script sans fichier via pipe stdin (Win+Linux, Rust uniquement)
/script-amsibypass <file> [interp] — script sans fichier + contournement AMSI (Win PS uniquement, Rust uniquement)
/kill — retirer toute persistance + effacer les artefacts + terminer l'agent
/download <path> — récupérer un fichier depuis la cible
/upload <path> — envoyer un fichier vers la cible
/sleep <s> — modifier l'intervalle du beacon en direct
/jitter <pct> — modifier le pourcentage de gigue en direct
/timestomp <args> — définir les horodatages de fichiers sur la cible
/exit — arrêter le processus de l'agent (la persistance survit)
Chaque session dispose d'onglets dédiés : Shell · Historique · Artefacts · Persistance · Identifiants · Contrôle · Infos. Vues globales : Sessions · Déploiement · Archives · Tradecraft · Paramètres.
| Mode | Description |
|---|---|
local | Nom d'utilisateur/mot de passe dans server.yml. Pas de rôles — tous les opérateurs sont égaux. |
oidc-manual | Fournisseur OIDC externe (Keycloak, Azure AD, Okta). Accès basé sur liste blanche. |
oidc-auto | Toute identité authentifiée obtient l'accès. Liste noire pour la révocation. |
| Couche | Algorithme |
|---|---|
| Échange de clés | RSA-4096-OAEP-SHA-256 (paire de clés par déploiement) |
| Chiffrement des commandes | AES-256-GCM (clé de session, pré-partagée) |
| Chiffrement du heartbeat | RSA-4096-OAEP-SHA-256 + AES-256-GCM |
| Signature des réponses | RSA-PSS-SHA-256 |
| Dérivation de clé de blob | PBKDF2-HMAC-SHA-256 · 210 000 itérations |
| Clé d'amorçage | À usage unique — supprimée du cloud au premier lancement de l'agent |
| Clé de session dans le binaire | Obscurcie par XOR dans .rodata — l'hex brut n'apparaît jamais tel quel |
| Chiffrement du blob local | AES-256-GCM — blob avec empreinte matérielle mis en cache sur disque |
Ajouter un fournisseur représente ~360 lignes : transport HTTP (upload / download / delete / actualisation du jeton) + assistant de déploiement. Le chiffrement, le heartbeat, la répartition des commandes, la persistance, le timestomping et le suivi des artefacts sont fournis gratuitement par le cœur. Implémentation de référence : providers/dropbox/.
La documentation technique complète — protocole cryptographique, format de transmission, internes du heartbeat, interface de transport, techniques de persistance, notes OPSEC — se trouve dans docs/wiki.html. Ouvrez-la localement dans un navigateur.
Les maquettes d'interface pour tous les écrans (liste des sessions, shell, onglet persistance, onglet infos, assistant de déploiement, chat) se trouvent dans docs/mockups.html — ouvrez localement dans un navigateur pour parcourir chaque scène.
Stratum est destiné uniquement à des fins éducatives et de tests de sécurité autorisés.
Ce logiciel est fourni pour la recherche en sécurité défensive, la formation aux tests d'intrusion et les évaluations de sécurité autorisées. Les utilisateurs sont seuls responsables de s'assurer que leur utilisation est conforme à toutes les lois et réglementations applicables.
Pour les services cloud : Si les tests ciblent des hébergements sur Dropbox, OneDrive, Google Drive, S3 ou SharePoint, vous devez disposer d'une autorisation explicite à la fois du fournisseur de services et du propriétaire de la ressource. L'accès non autorisé aux services cloud est illégal.
L'accès non autorisé aux systèmes informatiques est une infraction pénale et peut entraîner de lourdes sanctions civiles et pénales, y compris des amendes et l'emprisonnement.
En utilisant ce logiciel, vous reconnaissez avoir lu cet avertissement et acceptez d'utiliser Stratum uniquement à des fins légales avec une autorisation appropriée.
Voir CHANGELOG.md pour l'historique complet des versions.
Conçu pour les opérateurs qui ont besoin d'une infrastructure qui n'existe pas.
Si Stratum vous a été utile, pensez à laisser une ⭐ — cela aide d'autres à le trouver.