Référence de l'API REST¶
Documentation complète pour l'API REST Stentor : authentification, catalogue de points de terminaison, schémas de requête/réponse, codes d'erreur et exemples de requêtes utilisant curl.
Introduction¶
L'API REST de Stentor fournit un accès programmatique à toutes les opérations C2. Il suit les conventions REST standard avec les corps de requête et de réponse JSON.
| Propriété | Valeur |
|---|---|
| URL de base | https://stentor.app/api/v1 |
| Type de contenu | application/json |
| Authentification | Jeton JWT Bearer (voir Authentification ci-dessous) |
| Limitation de taux | Points de terminaison d'authentification : limites strictes de force brute. Tous les autres critères : limites standard de prévention des abus. |
Tous les points de terminaison protégés nécessitent un en-tête Authorization :
Authentification¶
Stentor utilise JWT (JSON Web Tokens) pour l'authentification. Les jetons d'accès sont de courte durée et sont renvoyés dans le corps de la réponse JSON. Les jetons d'actualisation sont fournis via des cookies sécurisés httpOnly (jamais exposés à JavaScript).
Connexion¶
Authentifiez-vous avec votre e-mail et votre mot de passe pour obtenir un jeton d'accès.
POST /api/v1/auth/login
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email | chaîne | Oui | Adresse email de l'opérateur |
password | chaîne | Oui | Mot de passe opérateur |
Corps de la réponse :
| Champ | Type | Description |
|---|---|---|
access_token | chaîne | Jeton d'accès JWT pour les requêtes API |
user.id | chaîne | UUID de l'utilisateur |
user.email | chaîne | E-mail de l'utilisateur |
user.role | chaîne | Rôle utilisateur (admin ou operator) |
user.created_at | chaîne | Horodatage ISO 8601 |
Un cookie httpOnly stentor_refresh est également défini avec le jeton d'actualisation.
curl -s -X POST https://stentor.app/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "your-password"
}'
Réponse (200 OK) :
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"user": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "[email protected]",
"role": "admin",
"created_at": "2026-01-15T10:30:00Z"
}
}
import requests
resp = requests.post("https://stentor.app/api/v1/auth/login", json={
"email": "[email protected]",
"password": "your-password"
})
token = resp.json()["access_token"]
headers = {"Authorization": f"Bearer {token}"}
Réponses aux erreurs :
| Statut | Corps | Parce que |
|---|---|---|
| 400 | {"error": "invalid request body"} | Champs manquants ou mal formés |
| 401 | {"error": "invalid credentials"} | Mauvais email ou mot de passe |
| 500 | {"error": "failed to generate tokens"} | Échec de la génération de jetons côté serveur |
Actualisation des jetons¶
Échangez le jeton d'actualisation (à partir du cookie httpOnly) contre un nouveau jeton d'accès. Implémente la rotation des jetons : chaque actualisation émet un nouveau jeton d'actualisation et révoque l'ancien.
POST /api/v1/auth/refresh
Aucun corps de requête requis. Le jeton d'actualisation est lu à partir du cookie stentor_refresh.
Corps de la réponse :
| Champ | Type | Description |
|---|---|---|
access_token | chaîne | Nouveau jeton d'accès JWT |
Un nouveau cookie stentor_refresh est défini avec le jeton d'actualisation pivoté.
Réponses aux erreurs :
| Statut | Corps | Parce que |
|---|---|---|
| 401 | {"error": "refresh token required"} | Aucun cookie d'actualisation présent |
| 401 | {"error": "refresh token expired"} | Le jeton a expiré |
| 401 | {"error": "token revoked"} | Le jeton a été explicitement révoqué |
Révocation de jeton (déconnexion)¶
Révoquez le jeton d'actualisation actuel et effacez le cookie. Il s'agit du point de terminaison de déconnexion.
POST /api/v1/auth/revoke
Aucun corps de requête requis. Lit et révoque le jeton d'actualisation du cookie.
curl -s -X POST https://stentor.app/api/v1/auth/revoke \
-H "Authorization: Bearer $TOKEN" \
-b "stentor_refresh=<refresh_token>"
Réponse (200 OK) :
Billet WebSocket¶
Générez un ticket opaque de courte durée pour l'authentification WebSocket. Utilisé par le frontend pour établir des connexions WebSocket authentifiées sans exposer le JWT dans les paramètres de requête.
POST /api/v1/auth/ws-ticket
Corps de la réponse :
| Champ | Type | Description |
|---|---|---|
ticket | chaîne | Ticket opaque à usage unique |
Opérateur d'enregistrement¶
Créez un nouveau compte opérateur. Administrateur uniquement : nécessite un utilisateur administrateur authentifié.
POST /api/v1/auth/register
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
email | chaîne | Oui | Email du nouvel opérateur |
password | chaîne | Oui | Mot de passe (minimum 8 caractères) |
Réponse (201 créées) :
| Champ | Type | Description |
|---|---|---|
id | chaîne | UUID du nouvel utilisateur |
email | chaîne | E-mail de l'utilisateur |
role | chaîne | Rôle assigné |
curl -s -X POST https://stentor.app/api/v1/auth/register \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "securepassword123"}'
Réponses aux erreurs :
| Statut | Corps | Parce que |
|---|---|---|
| 400 | {"error": "invalid email format"} | Adresse e-mail mal formée |
| 400 | {"error": "password must be at least 8 characters"} | Mot de passe trop court |
| 409 | {"error": "email already registered"} | E-mail en double |
Utilisateur actuel¶
Obtenez le profil de l'utilisateur authentifié.
GET /api/v1/auth/me
Corps de la réponse :
| Champ | Type | Description |
|---|---|---|
id | chaîne | UUID de l'utilisateur |
email | chaîne | E-mail de l'utilisateur |
role | chaîne | Rôle de l'utilisateur |
created_at | chaîne | Horodatage ISO 8601 |
Modèles courants¶
Format de réponse d'erreur¶
Toutes les réponses d'erreur suivent un format cohérent :
Codes d'état HTTP standard :
| Code d'état | Signification |
|---|---|
| 200 | Succès |
| 201 | Créé (nouvelle ressource) |
| 400 | Mauvaise demande (entrée invalide, erreur de validation) |
| 401 | Non autorisé (jeton manquant ou invalide) |
| 403 | Interdit (autorisations insuffisantes) |
| 404 | Introuvable (la ressource n'existe pas) |
| 409 | Conflit (ressource en double) |
| 429 | Trop de demandes (tarif limité) |
| 500 | Erreur de serveur interne |
| 503 | Service indisponible |
Limitation du débit¶
Les points de terminaison d'authentification (/auth/login, /auth/refresh) ont des limites de débit strictes pour empêcher les attaques par force brute. Tous les autres points de terminaison protégés ont des limites standard de prévention des abus. Lorsque le débit est limité, l'API renvoie 429 Too Many Requests.
Health check¶
Deux points de terminaison de santé sont disponibles (aucune authentification requise) :
# Root health check
curl https://stentor.app/health
# Versioned health check (includes server identifier)
curl https://stentor.app/api/v1/health
Réponse :
Référence du point de terminaison¶
Listeners¶
Les listeners sont les points de terminaison du serveur C2 qui reçoivent les connexions d'implant. Chaque listener s'exécute sur un agent de relais et prend en charge les transports HTTP/HTTPS, DNS, SMB ou WireGuard.
Liste des listeners¶
GET /api/v1/listeners
Renvoie tous les listeners configurés.
Réponse (200 OK) :
[
{
"id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"name": "HTTPS Relay",
"type": "https",
"host": "10.0.0.50",
"port": 8443,
"relay_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"status": "running"
}
]
Créer un listener¶
POST /api/v1/listeners
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | chaîne | Oui | Nom d'affichage |
type | chaîne | Oui | Type de transport : http, https, dns, smb, wireguard |
host | chaîne | Oui | Adresse de liaison (IP du relais) |
port | entier | Oui | Lier le port |
relay_id | chaîne | Oui | UUID du relais sur lequel exécuter le listener |
dns_domain | chaîne | Non | Domaine pour les listeners DNS |
smb_pipe_name | chaîne | Non | Canal nommé pour les listeners SMB |
profile_id | chaîne | Non | Profil C2 malléable UUID |
certificate_id | chaîne | Non | Certificat de signature de code UUID pour HTTPS |
curl -s -X POST https://stentor.app/api/v1/listeners \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "HTTPS Relay",
"type": "https",
"host": "10.0.0.50",
"port": 8443,
"relay_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
}'
Réponse (201 créées) :
{
"id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"name": "HTTPS Relay",
"type": "https",
"host": "10.0.0.50",
"port": 8443,
"relay_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"status": "stopped"
}
Commencer après la création
Les listeners nouvellement créés ont le statut "stopped". Vous devez explicitement les démarrer avec POST /api/v1/listeners/:id/start.
Obtenir un listener¶
GET /api/v1/listeners/:id
Mettre à jour le listener¶
PUT /api/v1/listeners/:id
Utilise le même corps de requête que Create. Seuls les champs fournis sont mis à jour.
Supprimer le listener¶
DELETE /api/v1/listeners/:id
Cycle de vie du listener¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/listeners/:id/start | Démarrer le listener sur son relais |
POST | /api/v1/listeners/:id/stop | Arrêtez le listener |
POST | /api/v1/listeners/:id/restart | Redémarrez le listener |
# Start a listener
curl -s -X POST "https://stentor.app/api/v1/listeners/$LISTENER_ID/start" \
-H "Authorization: Bearer $TOKEN"
Hébergement de fichiers¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/listeners/:id/host | Héberger un fichier sur le listener |
DELETE | /api/v1/listeners/:id/host | Supprimer le fichier hébergé |
Points de terminaison d'écoute supplémentaires¶
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/listeners/:id/redirector-config | Générer la configuration du redirecteur (Apache/nginx) |
POST | /api/v1/listeners/:id/generate-all | Générer toutes les variantes de payload pour cet listener |
POST | /api/v1/listeners/wireguard/keygen | Générer une paire de clés WireGuard |
Relais¶
Les relais sont les agents basés sur Kali qui exécutent les listeners et transmettent le trafic C2 au backend.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/relays | Lister tous les relais |
POST | /api/v1/relays | Enregistrez un nouveau relais |
GET | /api/v1/relays/:id | Obtenir les détails du relais |
PUT | /api/v1/relays/:id | Mettre à jour la configuration du relais |
DELETE | /api/v1/relays/:id | Supprimer un relais |
Réponse (200 OK) :
[
{
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"name": "Kali Relay",
"description": "Primary Kali relay agent",
"ip_address": "10.0.0.50",
"status": "online"
}
]
Payloads¶
Les payloads sont les binaires de l'implant et le shellcode générés pour être livrés aux cibles.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/payloads | Répertorier tous les enregistrements de payload |
POST | /api/v1/payloads | Créer un enregistrement de payload |
POST | /api/v1/payloads/generate | Générer un binaire de payload |
GET | /api/v1/payloads/:id | Obtenir les détails de le payload |
DELETE | /api/v1/payloads/:id | Supprimer un payload |
GET | /api/v1/payloads/:id/download | Téléchargez le binaire de payload |
POST | /api/v1/payloads/:id/regenerate | Régénérer le payload |
POST | /api/v1/payloads/:id/driveby | Créer une URL de téléchargement drive-by |
Générer un payload¶
POST /api/v1/payloads/generate
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
listener_id | chaîne | Oui | UUID du listener cible |
format | chaîne | Oui | Format de sortie (exe, dll, shellcode, powershell, hta, etc.) |
arch | chaîne | Non | Architecture (x64, x86). La valeur par défaut est x64 |
name | chaîne | Non | Nom de payload personnalisé |
curl -s -X POST https://stentor.app/api/v1/payloads/generate \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"listener_id": "6ea88162-d558-404a-a19f-4b4cab34b22f",
"format": "exe",
"arch": "x64"
}'
Beacons¶
Les beacons sont des sessions d'implantation actives sur des hôtes compromis. L'API beacon fournit des fonctionnalités de gestion, de mise en file d'attente des tâches, d'extraction d'informations d'identification, d'énumération du réseau et de post-exploitation.
Chemin d'accès à l'API
Tous les points de terminaison du beacon sont sous /api/v1/c2/beacons. N'utilisez pas /api/v1/cockpit/beacons -- ce chemin n'existe pas.
Liste des beacons¶
GET /api/v1/c2/beacons
Réponse (200 OK) :
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"hostname": "WORKSTATION-01",
"username": "CORP\\jsmith",
"ip_internal": "192.168.1.50",
"ip_external": "10.0.0.20",
"os": "Windows 10 Pro 19045",
"arch": "x64",
"pid": 4832,
"integrity": "Medium",
"last_seen": "2026-02-19T14:05:30Z",
"sleep": 5000,
"jitter": 10
}
]
Obtenir un beacon¶
GET /api/v1/c2/beacons/:id
Supprimer le beacon¶
DELETE /api/v1/c2/beacons/:id
Mettre à jour la note du beacon¶
PUT /api/v1/c2/beacons/:id/note
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
note | chaîne | Oui | Note de l'opérateur pour ce beacon |
Mettre à jour les beacons de beacon¶
PUT /api/v1/c2/beacons/:id/tags
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
tags | chaîne[] | Oui | Tableau de chaînes de beacons |
Tâche de mise en file d'attente¶
Envoyez une commande à un beacon. La tâche est mise en file d'attente et livrée lors du prochain enregistrement de beacon.
POST /api/v1/c2/beacons/:id/task
Corps de la demande :
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
command | chaîne | Oui | Commande à exécuter (par exemple, shell, ps, ls) |
args | objet | Non | Arguments spécifiques à la commande |
curl -s -X POST "https://stentor.app/api/v1/c2/beacons/$BEACON_ID/task" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"command": "shell", "args": {"command": "whoami"}}'
Réponse (200 OK) :
Gestion de l'état des beacons¶
Contrôlez le comportement d’exécution du beacon.
| Méthode | Chemin | Description |
|---|---|---|
PUT | /api/v1/c2/beacons/:id/state/sleep | Définir l'intervalle de sommeil et la gigue |
PUT | /api/v1/c2/beacons/:id/state/ppid | Définir le PID parent pour l'usurpation d'identité |
PUT | /api/v1/c2/beacons/:id/state/syscallMethod | Définir la méthode d'exécution de l'appel système |
PUT | /api/v1/c2/beacons/:id/state/blockdlls | Activer/désactiver le blocage des DLL non Microsoft |
GET | /api/v1/c2/beacons/:id/state/beacongate | Obtenir la configuration de BeaconGate (syscall gate) |
PUT | /api/v1/c2/beacons/:id/state/beacongate | Définir la configuration de BeaconGate |
POST | /api/v1/c2/beacons/:id/state/checkin | Forcer l'enregistrement immédiat |
POST | /api/v1/c2/beacons/:id/state/pause | Mettre le beacon en pause |
POST | /api/v1/c2/beacons/:id/state/exit | Quitter le beacon (terminer l'implant) |
DELETE | /api/v1/c2/beacons/:id/queue | Effacer toutes les tâches en attente |
Définir un exemple de sommeil :
curl -s -X PUT "https://stentor.app/api/v1/c2/beacons/$BEACON_ID/state/sleep" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"sleep": 5000, "jitter": 20}'
Opérations de jetons¶
Gérez les jetons d'accès Windows sur l'hôte du beacon.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/c2/beacons/:id/token/list | Liste des jetons volés/créés |
POST | /api/v1/c2/beacons/:id/token/steal | Voler un jeton à un processus |
POST | /api/v1/c2/beacons/:id/token/make | Créer un jeton avec des informations d'identification |
POST | /api/v1/c2/beacons/:id/token/use | Usurer l'identité d'un jeton stocké |
POST | /api/v1/c2/beacons/:id/token/revert | Revenir au jeton d'origine |
POST | /api/v1/c2/beacons/:id/token/getprivs | Activer tous les privilèges disponibles |
Extraction des informations d'identification¶
Extrayez les informations d’identification de l’hôte du beacon.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacons/:id/hashdump | Vider les hachages de la base de données SAM |
POST | /api/v1/c2/beacons/:id/logonpasswords | Exécutez Mimikatz sekurlsa ::logonpasswords |
POST | /api/v1/c2/beacons/:id/mimikatz | Exécuter une commande Mimikatz arbitraire |
POST | /api/v1/c2/beacons/:id/chromedump | Extraire les informations d'identification du navigateur Chrome |
POST | /api/v1/c2/beacons/:id/dcsync | Attaque DCSync pour répliquer les informations d'identification AD |
POST | /api/v1/c2/beacons/:id/keylogger/start | Démarrer l'enregistreur de frappe |
POST | /api/v1/c2/beacons/:id/keylogger/stop | Arrêter l'enregistreur de frappe |
??? remarque « Points de terminaison d'attaque Active Directory » Ces points de terminaison implémentent des techniques d’attaque AD avancées. Tous nécessitent un beacon active avec les privilèges appropriés.
**Attaques Kerberos :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/pkinit` | Authentification basée sur le certificat PKINIT |
| `POST` | `/api/v1/c2/beacons/:id/unpac` | UnPAC le hachage de PKINIT |
| `POST` | `/api/v1/c2/beacons/:id/golden_ticket` | Billet d'or de la Forge |
| `POST` | `/api/v1/c2/beacons/:id/diamond_ticket` | Billet Forge Diamant |
| `POST` | `/api/v1/c2/beacons/:id/sapphire_ticket` | Billet Forge Saphir |
| `POST` | `/api/v1/c2/beacons/:id/skeleton_key` | Déployer la clé squelette |
| `POST` | `/api/v1/c2/beacons/:id/sid_history` | Injection de l'historique SID |
**Attaques ADCS (services de certificats) :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/esc1` | ESC1 – Modèle de certificat mal configuré |
| `POST` | `/api/v1/c2/beacons/:id/esc2` | ESC2 – Modèle de certificat à tout usage |
| `POST` | `/api/v1/c2/beacons/:id/esc3` | ESC3 - Modèle d'agent d'inscription |
| `POST` | `/api/v1/c2/beacons/:id/esc4` | ESC4 – LCA du modèle de certificat vulnérable |
| `POST` | `/api/v1/c2/beacons/:id/esc6` | ESC6 - EDITF_ATTRIBUTESUBJECTALTNAME2 |
| `POST` | `/api/v1/c2/beacons/:id/esc7` | ESC7 - Abus d'un agent de l'AC |
| `POST` | `/api/v1/c2/beacons/:id/esc8` | ESC8 - Relais NTLM vers ADCS HTTP |
**Identifiants fantômes :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/shadow_creds` | Ajouter des informations d'identification fantômes à la cible |
**Abus d'ACL :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/acl_pwreset` | Forcer la réinitialisation du mot de passe via ACL |
| `POST` | `/api/v1/c2/beacons/:id/acl_setspn` | Définir le SPN pour Kerberoasting |
| `POST` | `/api/v1/c2/beacons/:id/acl_addmember` | Ajouter un membre au groupe via ACL |
| `POST` | `/api/v1/c2/beacons/:id/acl_dcsync` | Accorder les droits DCSync |
| `POST` | `/api/v1/c2/beacons/:id/acl_owner` | S'approprier l'objet AD |
| `POST` | `/api/v1/c2/beacons/:id/acl_sdhold` | Modifier AdminSDHolder |
**RBCD (délégation contrainte basée sur les ressources) :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/rbcd_addcomputer` | Ajouter un compte d'ordinateur pour RBCD |
| `POST` | `/api/v1/c2/beacons/:id/rbcd_write` | Écrire msDS-AllowedToActOnBehalfOfOtherIdentity |
| `POST` | `/api/v1/c2/beacons/:id/rbcd_attack` | Exécuter la chaîne d'attaque RBCD |
**Abus de GPO :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/gpo_enum` | Énumérer les objets de stratégie de groupe |
| `POST` | `/api/v1/c2/beacons/:id/gpo_modify` | Modifier le GPO pour la persistance/le mouvement latéral |
| `POST` | `/api/v1/c2/beacons/:id/gpo_cleanup` | Nettoyer les modifications du GPO |
**DCShadow :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/dcshadow` | Attaque DCShadow (complète) |
| `POST` | `/api/v1/c2/beacons/:id/dcshadow_register` | Enregistrer un DC malveillant |
| `POST` | `/api/v1/c2/beacons/:id/dcshadow_push` | Pousser les modifications de DCShadow |
| `POST` | `/api/v1/c2/beacons/:id/dcshadow_cleanup` | Nettoyer l'enregistrement DC malveillant |
**Dumping d'informations d'identification :**
| Méthode | Chemin | Description |
|--------|------|-------------|
| `POST` | `/api/v1/c2/beacons/:id/laps_dump` | Vider les mots de passe LAPS |
| `POST` | `/api/v1/c2/beacons/:id/gmsa_dump` | Vider les mots de passe du compte gMSA |
| `POST` | `/api/v1/c2/beacons/:id/trust_enum` | Énumérer les approbations de domaine |
Énumération du réseau¶
Découvrez les ressources réseau de l'hôte du beacon.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacons/:id/net/domain | Énumérer les informations du domaine |
POST | /api/v1/c2/beacons/:id/net/group | Énumérer les groupes de domaines |
POST | /api/v1/c2/beacons/:id/net/user | Énumérer les utilisateurs du domaine |
POST | /api/v1/c2/beacons/:id/net/localgroup | Énumérer les groupes locaux |
POST | /api/v1/c2/beacons/:id/net/logons | Énumérer les utilisateurs connectés |
POST | /api/v1/c2/beacons/:id/net/sessions | Énumérer les sessions actives |
POST | /api/v1/c2/beacons/:id/net/share | Énumérer les partages réseau |
POST | /api/v1/c2/beacons/:id/net/time | Obtenir l'heure du contrôleur de domaine |
Opérations de registre¶
Lisez et modifiez le registre Windows à distance.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacons/:id/reg/query | Interroger une clé ou une valeur de registre |
POST | /api/v1/c2/beacons/:id/reg/create | Créer une clé ou une valeur de registre |
POST | /api/v1/c2/beacons/:id/reg/delete | Supprimer une clé ou une valeur de registre |
Injection de processus¶
Injectez du code dans des processus distants.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacons/:id/inject/beacon | Injecter une nouvelle beacon dans un processus |
POST | /api/v1/c2/beacons/:id/inject/dll | Injecter une DLL dans un processus |
POST | /api/v1/c2/beacons/:id/inject/shellcode | Injecter du shellcode brut dans un processus |
GET | /api/v1/c2/beacons/:id/elevate/list | Répertorier les exploits d'élévation de privilèges disponibles |
POST | /api/v1/c2/beacons/:id/elevate/:exploit | Exécuter un exploit d'élévation de privilèges |
Persistance¶
Installez et gérez les mécanismes de persistance.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacons/:id/persist/dll_hijack | Installer la persistance du détournement de DLL |
POST | /api/v1/c2/beacons/:id/persist/com_hijack | Installer la persistance du détournement COM |
POST | /api/v1/c2/beacons/:id/persist/list | Répertorier les mécanismes de persistance installés |
POST | /api/v1/c2/beacons/:id/persist/remove | Supprimer un mécanisme de persistance |
Variables de beacon¶
Variables côté serveur associées à un beacon (aucune tâche envoyée à l'implant).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/c2/beacons/:id/variables | Obtenez toutes les variables de beacon |
PUT | /api/v1/c2/beacons/:id/variables | Définir une variable de beacon |
Points forts des beacons¶
Mise en évidence visuelle des beacons dans l'interface utilisateur (partagée entre les opérateurs).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/beacons/highlights | Répertorier tous les points forts des beacons |
PUT | /api/v1/beacons/:id/highlight | Définir la couleur de surbrillance d'un beacon |
DELETE | /api/v1/beacons/:id/highlight | Supprimer le surlignage d'un beacon |
Séances¶
Les sessions suivent l'accès post-exploitation aux hôtes, y compris les associations d'informations d'identification.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/sessions | Lister toutes les sessions |
POST | /api/v1/sessions | Créer une séance |
GET | /api/v1/sessions/:id | Obtenir les détails de la session |
PUT | /api/v1/sessions/:id | Mettre à jour une session |
DELETE | /api/v1/sessions/:id | Supprimer une séance |
GET | /api/v1/sessions/:id/credentials | Répertorier les informations d'identification pour une session |
POST | /api/v1/sessions/:id/credentials | Associer un identifiant à une session |
Informations d'identification¶
Gestion des informations d'identification autonome (non liée à une session spécifique).
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/credentials | Créer un identifiant autonome |
GET | /api/v1/credentials | Répertorier toutes les informations d'identification |
PUT | /api/v1/credentials/:credId | Mettre à jour un identifiant |
DELETE | /api/v1/credentials/:credId | Supprimer un identifiant |
Poste de pilotage¶
Le cockpit est la principale interface opérateur pour interagir avec les beacons. Il fournit le shell, les opérations sur les fichiers, la gestion des processus, le pivotement, etc.
Connexion WebSocket
Le WebSocket du cockpit (/api/v1/cockpit/ws) fournit un streaming d'événements en temps réel. Consultez la page Protocole WebSocket pour plus de détails.
Exécution des shells et des commandes¶
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/cockpit/ws | Point de terminaison WebSocket pour les événements en temps réel |
POST | /api/v1/cockpit/chat | Envoyer un message de discussion à l'opérateur |
GET | /api/v1/cockpit/operators | Lister les opérateurs connectés |
POST | /api/v1/cockpit/shell | Exécuter une commande shell sur un beacon |
POST | /api/v1/cockpit/shell/open | Ouvrir une session shell interactive |
POST | /api/v1/cockpit/shell/close | Fermer une session shell interactive |
POST | /api/v1/cockpit/shell/sleep | Définir l'intervalle de sommeil via le shell |
POST | /api/v1/cockpit/execute | Exécuter une technique par ID |
GET | /api/v1/cockpit/techniques | Obtenez toutes les techniques prises en charge |
GET | /api/v1/cockpit/opsec | Obtenez toutes les évaluations des risques OPSEC |
GET | /api/v1/cockpit/opsec/:techniqueID | Recevez un avertissement OPSEC pour une technique spécifique |
Opérations sur les fichiers¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/file/browse | Parcourir le système de fichiers distant |
POST | /api/v1/cockpit/file/download | Télécharger un fichier depuis le beacon |
GET | /api/v1/cockpit/file/content/:taskId | Obtenir le contenu du fichier téléchargé |
POST | /api/v1/cockpit/file/upload | Télécharger un fichier sur le beacon |
POST | /api/v1/cockpit/file/cancel | Annuler un téléchargement actif |
GET | /api/v1/cockpit/file/active | Liste des transferts de fichiers actifs |
Gestion des processus¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/beacons/:beaconId/processes | Répertorier les processus sur l'hôte du beacon |
POST | /api/v1/cockpit/beacons/:beaconId/processes/kill | Tuer un processus par PID |
Proxy SOCKS¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/socks/start | Démarrer un proxy SOCKS5 via un beacon |
POST | /api/v1/cockpit/socks/stop | Arrêter un proxy SOCKS5 |
PUT | /api/v1/cockpit/socks/logging | Activer/désactiver la journalisation du trafic SOCKS |
GET | /api/v1/cockpit/socks | Répertorier tous les proxys SOCKS actifs |
GET | /api/v1/cockpit/socks/:beaconId | Obtenez un proxy SOCKS pour un beacon spécifique |
Redirection de port¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/portfwd/start | Démarrer un transfert de port inversé |
POST | /api/v1/cockpit/portfwd/stop | Arrêter un transfert de port inversé |
POST | /api/v1/cockpit/portfwd/start_local | Démarrer une redirection de port local |
POST | /api/v1/cockpit/portfwd/stop_local | Arrêter un transfert de port local |
GET | /api/v1/cockpit/portfwd | Liste toutes les redirections de ports |
GET | /api/v1/cockpit/portfwd/:beaconId | Obtenez des transferts de port pour un beacon spécifique |
Pivot du navigateur¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/browserpivot/start | Démarrer un pivot de navigateur (injecter dans le navigateur) |
POST | /api/v1/cockpit/browserpivot/stop | Arrêter un pivot de navigateur |
GET | /api/v1/cockpit/browserpivot | Répertorier les pivots de navigateur actifs |
GET | /api/v1/cockpit/browserpivot/:beaconId | Obtenir le pivot du navigateur pour un beacon |
VPN secret¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/covertvpn/start | Démarrez un tunnel VPN secret |
POST | /api/v1/cockpit/covertvpn/stop | Arrêtez un tunnel VPN secret |
GET | /api/v1/cockpit/covertvpn | Répertorier les tunnels VPN secrets actifs |
GET | /api/v1/cockpit/covertvpn/:beaconId | Obtenez un VPN secret pour un beacon |
Listeners pivots¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/pivot | Créer un listener pivot (liaison TCP) |
DELETE | /api/v1/cockpit/pivot | Arrêter un listener pivot |
GET | /api/v1/cockpit/pivot | Répertorier les listeners pivots actifs |
Opérations de beacon¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/spawn | Générer un nouveau processus de beacon |
GET | /api/v1/cockpit/beacons/:beaconId/tasks | Obtenir l'historique des tâches pour un beacon |
GET | /api/v1/cockpit/beacons/:beaconId/spawnto | Obtenir la configuration du spawn |
PUT | /api/v1/cockpit/beacons/:beaconId/spawnto | Mettre à jour le binaire d'apparition |
GET | /api/v1/cockpit/beacons/:beaconId/jobs | Répertorier les tâches en cours d'exécution sur un beacon |
POST | /api/v1/cockpit/beacons/:beaconId/jobkill | Tuer un travail en cours |
Sessions SSH¶
Gestion complète des sessions SSH via un beacon.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/connect | Connectez-vous à un hôte via SSH |
POST | /api/v1/cockpit/ssh/inject | Injecter la clé de l'agent SSH |
POST | /api/v1/cockpit/ssh/disconnect | Déconnecter la session SSH |
POST | /api/v1/cockpit/ssh/shell | Exécuter la commande dans une session SSH |
POST | /api/v1/cockpit/ssh/upload | Télécharger le fichier via SSH |
POST | /api/v1/cockpit/ssh/download | Télécharger le fichier via SSH |
POST | /api/v1/cockpit/ssh/list | Répertorier le répertoire via SSH |
POST | /api/v1/cockpit/ssh/cd | Changer de répertoire en session SSH |
POST | /api/v1/cockpit/ssh/pwd | Imprimer le répertoire de travail dans la session SSH |
POST | /api/v1/cockpit/ssh/sudo | Exécuter la commande avec sudo |
POST | /api/v1/cockpit/ssh/timestomp | Copier les horodatages entre les fichiers |
Téléchargements groupés SSH :
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/download/init | Initialiser le téléchargement fragmenté |
POST | /api/v1/cockpit/ssh/download/chunk | Obtenir le prochain morceau de téléchargement |
POST | /api/v1/cockpit/ssh/download/cancel | Annuler le téléchargement fragmenté |
Transferts de ports inversés SSH :
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/rportfwd/start | Démarrer le transfert du port inverse SSH |
POST | /api/v1/cockpit/ssh/rportfwd/stop | Arrêter le transfert du port inverse SSH |
GET | /api/v1/cockpit/ssh/rportfwd/:beaconId/:sessionId | Liste des transferts de ports inversés SSH |
Procuration SSH SOCKS :
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/socks/start | Démarrez le proxy SOCKS via SSH |
POST | /api/v1/cockpit/ssh/socks/stop | Arrêter le proxy SSH SOCKS |
GET | /api/v1/cockpit/ssh/socks/:beaconId | Liste des proxys SSH SOCKS |
GET | /api/v1/cockpit/ssh/socks/:beaconId/:sessionId | Obtenir un proxy SSH SOCKS spécifique |
SSH P2P (pair à pair) :
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/p2p/connect | Connectez-vous au peer via SSH |
POST | /api/v1/cockpit/ssh/p2p/unlink | Dissocier la connexion SSH P2P |
POST | /api/v1/cockpit/ssh/p2p/list | Liste des connexions SSH P2P |
Listeners pivots SSH :
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ssh/pivot/start | Démarrer le listener pivot via SSH |
POST | /api/v1/cockpit/ssh/pivot/stop | Arrêter le listener pivot SSH |
POST | /api/v1/cockpit/ssh/pivot/list | Répertorier les listeners pivots SSH |
Opérations PowerShell¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/psinject | Injecter PowerShell dans un processus |
POST | /api/v1/cockpit/powerpick | Exécuter PowerShell sans powershell.exe |
Bibliothèque BOF¶
Gérez et exécutez les fichiers d'objets Beacon (BOF).
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/bof/execute | Exécuter un BOF |
POST | /api/v1/cockpit/bof/upload | Télécharger un BOF dans la bibliothèque |
GET | /api/v1/cockpit/bof/list | Lister les BOF dans la bibliothèque |
DELETE | /api/v1/cockpit/bof/:id | Supprimer un BOF |
POST | /api/v1/cockpit/bof/pack | Pack d'arguments BOF |
Usurpation d’arguments¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/argue | Configurer les règles d'usurpation d'argument |
Trousse Postex¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/postex/execute | Exécuter une DLL post-exploitation |
POST | /api/v1/cockpit/postex/send | Envoyer des données à une tâche Postex en cours d'exécution |
Topologie, machines et playbooks¶
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/cockpit/topology | Obtenez la topologie du réseau en direct |
GET | /api/v1/cockpit/machines/:hostname | Obtenir les détails de la machine par nom d'hôte |
GET | /api/v1/cockpit/playbooks | Répertorier tous les playbooks |
POST | /api/v1/cockpit/playbooks | Créer un playbook |
GET | /api/v1/cockpit/playbooks/:id | Obtenir les détails du playbook |
PUT | /api/v1/cockpit/playbooks/:id | Mettre à jour un playbook |
DELETE | /api/v1/cockpit/playbooks/:id | Supprimer un playbook |
POST | /api/v1/cockpit/playbooks/:id/execute | Exécuter un playbook |
Requêtes LDAP¶
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/cockpit/ldap/query | Exécuter une requête LDAP via un beacon |
GET | /api/v1/cockpit/ldap/templates | Obtenez des modèles de requêtes LDAP prédéfinis |
Recherche d'erreurs Windows¶
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/cockpit/winerror/stats | Statistiques de la base de données des codes d'erreur Windows |
GET | /api/v1/cockpit/winerror/lookup/:code | Rechercher un code d'erreur Windows |
Profils¶
Les profils C2 malléables définissent l'apparence du trafic des implants sur le fil.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/profiles | Créer un profil |
GET | /api/v1/profiles | Lister tous les profils |
GET | /api/v1/profiles/:id | Obtenir les détails du profil |
PUT | /api/v1/profiles/:id | Mettre à jour un profil |
DELETE | /api/v1/profiles/:id | Supprimer un profil |
POST | /api/v1/profiles/lint | Valider un profil pour les erreurs de syntaxe |
# Lint a profile before saving
curl -s -X POST https://stentor.app/api/v1/profiles/lint \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"content": "http-get { set uri \"/updates\"; ... }"}'
Certificats¶
Certificats de signature de code pour la signature de payload.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/certificates | Télécharger un certificat |
GET | /api/v1/certificates | Lister tous les certificats |
GET | /api/v1/certificates/:id | Obtenir les détails du certificat |
DELETE | /api/v1/certificates/:id | Supprimer un certificat |
POST | /api/v1/sign | Signer un payload avec un certificat |
Phishing¶
Gestion de campagnes de spear phishing.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/phishing/campaigns | Répertorier les campagnes de phishing |
POST | /api/v1/phishing/campaigns | Créer une campagne |
GET | /api/v1/phishing/campaigns/:id | Obtenir les détails de la campagne |
DELETE | /api/v1/phishing/campaigns/:id | Supprimer une campagne |
POST | /api/v1/phishing/campaigns/:id/targets/import | Importer des cibles depuis CSV |
GET | /api/v1/phishing/campaigns/:id/targets | Répertorier les cibles de la campagne |
POST | /api/v1/phishing/campaigns/:id/send | Envoyer des e-mails de phishing |
POST | /api/v1/phishing/campaigns/:id/attachments | Télécharger la pièce jointe d'un e-mail |
GET | /api/v1/phishing/campaigns/:id/attachments | Liste des pièces jointes |
DELETE | /api/v1/phishing/campaigns/:id/attachments/:attachmentId | Supprimer la pièce jointe |
POST | /api/v1/phishing/campaigns/:id/preview | Aperçu du rendu des e-mails |
POST | /api/v1/phishing/campaigns/:id/template/import | Importer un e-mail à partir d'un fichier EML |
Scripts¶
Gestion CNA (Aggressor Script) et console REPL.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/scripts/load | Charger un script CNA |
POST | /api/v1/scripts/unload | Décharger un script en cours d'exécution |
POST | /api/v1/scripts/reload | Recharger un script |
GET | /api/v1/scripts | Liste des scripts chargés |
POST | /api/v1/scripts/eval/x | Évaluer l'expression (commande x) |
POST | /api/v1/scripts/eval/e | Évaluer le bloc de script (commande électronique) |
POST | /api/v1/scripts/eval/q | État du script de requête (commande q) |
GET | /api/v1/scripts/help | Obtenir le texte d'aide du script |
POST | /api/v1/scripts/tab-complete | Complétion des onglets pour la console de script |
GET | /api/v1/scripts/menubars | Récupérer les entrées de la barre de menus à partir des scripts |
GET | /api/v1/scripts/popups/:hook | Obtenir les éléments du menu contextuel pour un hook |
POST | /api/v1/scripts/popups/execute | Exécuter un élément de menu contextuel |
POST | /api/v1/scripts/dialog-response | Soumettre une réponse de dialogue |
Rallonges¶
Gestion des extensions de type Armory (packs BOF, outils tiers).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/extensions | Liste des extensions installées |
GET | /api/v1/extensions/catalog | Parcourez le catalogue d'extensions |
GET | /api/v1/extensions/:id | Obtenir les détails de l'extension |
POST | /api/v1/extensions/install | Installer l'extension à partir du catalogue |
POST | /api/v1/extensions/upload | Téléchargez une extension personnalisée |
DELETE | /api/v1/extensions/:id | Supprimer une extension |
POST | /api/v1/extensions/:id/update | Mettre à jour une extension |
POST | /api/v1/extensions/:id/toggle | Activer/désactiver une extension |
Campagnes C2¶
Gestion opérationnelle des campagnes pour l'organisation des beacons, des listeners et du suivi de l'engagement.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/campaigns | Créer une campagne |
GET | /api/v1/c2/campaigns | Lister toutes les campagnes |
GET | /api/v1/c2/campaigns/:id | Obtenir les détails de la campagne |
PUT | /api/v1/c2/campaigns/:id | Mettre à jour une campagne |
DELETE | /api/v1/c2/campaigns/:id | Supprimer une campagne |
POST | /api/v1/c2/campaigns/:id/beacons | Associer un beacon à une campagne |
DELETE | /api/v1/c2/campaigns/:id/beacons/:beaconId | Dissocier un beacon |
GET | /api/v1/c2/campaigns/:id/beacons | Liste des beacons de campagne |
POST | /api/v1/c2/campaigns/:id/listeners | Associer un listener à la campagne |
DELETE | /api/v1/c2/campaigns/:id/listeners/:listenerId | Dissocier un listener |
GET | /api/v1/c2/campaigns/:id/listeners | Liste des listeners liés |
GET | /api/v1/c2/campaigns/:id/activity | Obtenir le journal d'activité de la campagne |
GET | /api/v1/c2/campaigns/:id/credentials | Obtenez les identifiants de la campagne |
GET | /api/v1/c2/campaigns/:id/export | Exporter les données de la campagne |
GET | /api/v1/c2/campaigns/:id/report/social-eng | Générer un rapport d'ingénierie sociale |
POST | /api/v1/c2/campaigns/:id/report/custom | Exécuter un modèle de rapport personnalisé |
POST | /api/v1/c2/campaigns/:id/report/validate-template | Valider un modèle de rapport |
POST | /api/v1/c2/campaigns/:id/record-mode | Définir le mode d'enregistrement |
Cibles¶
Hôtes découverts sur le réseau.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/targets | Lister toutes les cibles |
POST | /api/v1/targets | Créer une cible |
POST | /api/v1/targets/batch | Créer des cibles par lots |
POST | /api/v1/targets/import/nmap | Importer des cibles depuis Nmap XML |
PUT | /api/v1/targets/bulk-os | Mettre à jour en bloc les informations du système d'exploitation |
GET | /api/v1/targets/:id | Obtenir les détails de la cible |
PUT | /api/v1/targets/:id/note | Mettre à jour la note sur la cible |
DELETE | /api/v1/targets/:id | Supprimer une cible |
Prestations¶
Services réseau découverts (ports, protocoles).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/services | Lister tous les services |
POST | /api/v1/services | Créer une entrée de service |
PUT | /api/v1/services/:id/note | Mettre à jour la note de service |
DELETE | /api/v1/services/:id | Supprimer un service |
Téléchargements¶
Historique de téléchargement centralisé pour les fichiers récupérés à partir des beacons.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/downloads | Lister tous les téléchargements |
DELETE | /api/v1/downloads/:id | Supprimer un enregistrement de téléchargement |
Frappes¶
Résultats agrégés du keylogger sur toutes les beacons.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/keystrokes | Répertorier toutes les frappes capturées |
GET | /api/v1/keystrokes/captured | Répertorier toutes les frappes clavier des sites clonés |
Captures d'écran¶
Résultats de capture d'écran agrégés sur toutes les beacons.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/screenshots | Liste toutes les captures d'écran capturées |
Sites clonés¶
Clonage de sites pour le phishing et la livraison de payloads.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/sites | Créer un site cloné |
GET | /api/v1/sites | Liste des sites clonés |
GET | /api/v1/sites/:id | Obtenez les détails du site cloné |
GET | /api/v1/sites/:id/keystrokes | Répertorier les frappes capturées à partir du site |
DELETE | /api/v1/sites/:id | Supprimer un site cloné |
Profileur de système¶
Reconnaissance cible via le profilage du navigateur.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/profiler/visits | Liste des visites du profileur |
POST | /api/v1/profiler/visits | Enregistrer une visite |
GET | /api/v1/profiler/stats | Obtenir les statistiques du profileur |
DELETE | /api/v1/profiler/visits | Effacer toutes les visites |
Trousses¶
Gestion des modèles du kit d’artefacts, du kit de ressources et du kit de masque de sommeil.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/kits/upload | Télécharger un modèle de kit |
GET | /api/v1/kits | Lister tous les kits |
GET | /api/v1/kits/artifact | Exporter le kit d'artefacts |
GET | /api/v1/kits/:id | Obtenir le kit par ID |
GET | /api/v1/kits/:id/download | Télécharger le fichier du kit |
DELETE | /api/v1/kits/:id | Supprimer un kit |
Guacamole (accès VM)¶
Intégration d'Apache Guacamole pour l'accès à distance aux machines virtuelles du laboratoire.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/guacamole/connections | Liste des connexions |
POST | /api/v1/guacamole/connections | Créer une connexion |
GET | /api/v1/guacamole/connections/:id | Obtenir les détails de la connexion |
GET | /api/v1/guacamole/connections/:id/session | Obtenez une session active |
DELETE | /api/v1/guacamole/connections/:id | Supprimer une connexion |
Préférences de l'opérateur¶
Paramètres par opérateur avec stockage JSONB.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/preferences | Obtenir les préférences de l'opérateur |
PUT | /api/v1/preferences | Mettre à jour les préférences |
POST | /api/v1/preferences/logo | Télécharger un logo personnalisé |
GET | /api/v1/preferences/logo | Obtenez un logo personnalisé |
DELETE | /api/v1/preferences/logo | Supprimer le logo personnalisé |
Piste d'audit¶
Journal d'audit pour les actions de l'opérateur (administrateur uniquement pour la liste).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/audit/events | Répertorier les événements d'audit |
Statistiques¶
L’agrégation de la barre latérale compte.
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/stats/counts | Obtenez le nombre de barres latérales (beacons, listeners, sessions, etc.) |
Administrateur¶
Points de terminaison de gestion des données administratives.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/admin/data/clear | Effacer les données par catégorie (administrateur uniquement) |
GET | /api/v1/admin/data/categories | Obtenir les catégories de données disponibles |
Profils C2 (anciens)¶
Liste de profils C2 basée sur des fichiers (utilisée par l'assistant de génération de payload).
| Méthode | Chemin | Description |
|---|---|---|
GET | /api/v1/c2/profiles | Répertorier les profils C2 basés sur des fichiers |
Points de terminaison du protocole C2¶
Usage interne uniquement
Ces points de terminaison sont utilisés par le relais et l'implant pour la communication C2. Ils ne sont pas authentifiés via JWT : le relais utilise un secret partagé et l'implant utilise un échange de clés cryptées. N’appelez pas ces points de terminaison à partir des outils opérateur.
| Méthode | Chemin | Description |
|---|---|---|
POST | /api/v1/c2/beacon | Enregistrement par beacon (battement de coeur) |
POST | /api/v1/c2/task | Récupérer les tâches en attente |
POST | /api/v1/c2/result | Soumettre les résultats de la tâche |
GET | /api/v1/c2/pubkey | Obtenez la clé publique RSA pour l'échange de clés |
POST | /api/v1/c2/keyx | Effectuer un échange de clés (RSA-OAEP + AES-256-GCM) |
Relais WebSocket¶
Le relais se connecte au backend via WebSocket pour le transfert C2 en temps réel.
| Chemin | Description |
|---|---|
GET /ws/relay | Agent de relais WebSocket (authentifié via l'en-tête secret de relais) |
Ce point de terminaison n'est pas appelé par les opérateurs. Consultez la page WebSocket Protocol pour le CockpitHub WebSocket destiné à l'opérateur.