Aller au contenu

Tableau de bord

Le tableau de bord est la première page que les opérateurs voient après la connexion. Il fournit un résumé opérationnel en temps réel de l'infrastructure C2 (beacons actifs, listeners en cours d'exécution, sessions, campagnes) ainsi que des graphiques et un flux d'activité qui regroupent des données provenant de plusieurs sources.


Aperçu

Le tableau de bord est composé de quatre sections :

  1. Cartes de statistiques : compteurs animés affichant les beacons actifs, les listeners en cours, les sessions et les campagnes.
  2. Ligne des graphiques : distribution de l'état des beacons (beignet), distribution du système d'exploitation (beignet) et chronologie d'enregistrement sur 24 heures (graphique en aires).
  3. Flux d'activité : une chronologie unifiée fusionnant les enregistrements de beacons, les changements d'état des listeners et les mises à jour de campagne.
  4. Actions rapides – boutons de raccourci pour les tâches courantes de l'opérateur
graph TB
    subgraph Dashboard
        A[Stat Cards Row]
        B[Charts Row]
        C[Activity Feed]
        D[Quick Actions]
    end

    subgraph "Data Sources"
        E[Beacons API]
        F[Listeners API]
        G[Sessions API]
        H[Campaigns API]
        I[Stats API]
    end

    E --> A
    E --> B
    E --> C
    F --> A
    F --> C
    G --> A
    H --> A
    H --> C
    I --> A

Cartes de statistiques

La rangée supérieure affiche quatre cartes statistiques animées avec des compteurs en direct. Chaque carte renvoie à sa page de gestion respective.

Carte Valeur Lien
Beacons actives Beacons actives/totales Poste de pilotage
Listeners En cours d'exécution/Nombre total d'listeners Listeners
Séances Nombre total de sessions dans toutes les campagnes Campagnes
Campagnes Campagnes actives/totales Campagnes

Les cartes utilisent des animations d'entrée échelonnées lors du chargement de la page et des transitions de nombres animées lorsque les valeurs changent. Une carte devient verte lorsque sa métrique principale est différente de zéro (par exemple, au moins un beacon active ou un listener en cours d'exécution).

Calcul de beacon active

Un beacon est considérée comme « active » si son dernier enregistrement se situe dans 1,5 fois son intervalle de veille configuré. Par exemple, un beacon avec une veille de 60 secondes est active si elle s'est enregistrée dans les 90 dernières secondes. Ce même seuil est utilisé sur toute la plateforme.


Graphiques

La ligne des graphiques affiche trois visualisations côte à côte, chacune avec un indicateur de fraîcheur indiquant la dernière actualisation des données sous-jacentes.

Distribution de l'état des beacons

Un graphique en anneau montrant le nombre de beacons dans chaque catégorie de statut :

Statut Couleur Signification
ACTIF Vert Enregistré dans l'intervalle prévu
DORMANT Jaune Enregistrement prévu manqué mais pas encore mort
MORT Rouge Pas d'enregistrement pendant une période prolongée

Le centre du beignet affiche le nombre total de beacons. Lorsqu’aucune beacon n’existe, un message d’espace réservé s’affiche à la place.

Distribution du système d'exploitation

Un graphique en anneau décomposant les beacons par système d'exploitation. Les noms des systèmes d'exploitation sont normalisés pour plus de clarté :

  • windows (amd64) devient Windows
  • Les chaînes du système d'exploitation contenant server deviennent Windows Server
  • Les variantes linux deviennent Linux
  • Les variantes darwin / macos deviennent macOS

Lorsqu'un seul système d'exploitation est présent, le graphique affiche un grand nombre numérique au lieu d'un anneau.

Chronologie d'enregistrement (24h)

Un graphique en zones montrant l'activité d'enregistrement des beacons au cours des dernières 24 heures, regroupées par heure. Le graphique comprend :

  • Nombre d'enregistrements horaires le long de l'axe Y
  • Étiquettes horaires (HH:00) le long de l'axe X
  • Un remplissage dégradé sous la ligne de zone
  • Un résumé du décompte de pointe sous le graphique

Flux d'activité

Le flux d'activité fusionne les événements de trois sources dans une seule chronologie inverse (le plus récent en premier), affichant les 30 événements les plus récents.

Type d'événement Source Affichage
beacon_checkin Beacons Badge d'état du nom d'hôte, de l'adresse IP, du nom d'utilisateur, du système d'exploitation et du beacon
listener_change Listeners Nom du listener, statut, protocole et adresse de liaison
campaign_change Campagnes Nom de la campagne, statut, beacon et nombre d'identifiants

Chaque événement montre :

  • Un point d'état à code couleur (vert pour actif/en cours d'exécution, jaune pour dormant/en pause, rouge pour mort/erreur, gris pour arrêté/archivé)
  • Une icône indiquant le type d'événement (signal pour les beacons, radio pour les listeners, cible pour les campagnes)
  • Un horodatage relatif (par exemple, "il y a 3 minutes")
  • Un badge de statut

Éléments interactifs

Les noms d'hôtes des beacons dans le flux d'activité affichent une carte de survol avec des informations détaillées sur le beacon (PID, niveau d'intégrité, intervalle de veille). Les adresses IP prennent en charge le clic pour copier pour une utilisation rapide dans d'autres outils.

Indicateur de fraîcheur

Les graphiques et le flux d'activité affichent un indicateur de fraîcheur indiquant la date à laquelle les données sous-jacentes ont été récupérées pour la dernière fois. Cela aide les opérateurs à faire la distinction entre des données obsolètes et un engagement véritablement silencieux.


Actions rapides

Le panneau d'actions rapides sur le côté droit du tableau de bord permet de naviguer en un clic vers les tâches courantes :

Action Destination Description
Nouvel listener /listeners/new Créer un listener C2
Générer un payload /payloads/generate Construire un nouvel implant
Cockpit ouvert /cockpit Topologie et accès au shell
Voir les beacons /cockpit Implants C2 actifs

API de statistiques

Les cartes de statistiques du tableau de bord sont alimentées par un point de terminaison de statistiques consolidé qui renvoie tous les nombres de badges de la barre latérale en une seule réponse. Cela évite les appels d'API N+1 lors du rendu simultané de la barre latérale et du tableau de bord.

curl -s https://stentor.app/api/v1/stats/counts \
  -H "Authorization: Bearer $TOKEN" | jq
{
  "active_beacons": 3,
  "running_listeners": 2,
  "targets": 47,
  "services": 156,
  "credentials": 12,
  "downloads": 8,
  "keystrokes": 3,
  "screenshots": 5
}

Champs de réponse :

Champ Type Description
active_beacons int Beacons actuellement dans leur seuil d'enregistrement (calculé à partir du registre en mémoire)
running_listeners int Listeners avec le statut running
targets int Total des cibles découvertes
services int Total des services réseau découverts
credentials int Total des identifiants récoltés
downloads int Total des fichiers téléchargés
keystrokes int Total des enregistrements de capture de frappe
screenshots int Total des captures d'écran capturées

Les beacons actifs sont calculées en temps réel

Le nombre active_beacons n'est pas une requête de base de données : il est calculé à partir du BeaconRegistry en mémoire en vérifiant le last_seen de chaque beacon par rapport à un seuil de 1,5 fois son intervalle de veille. Tous les autres décomptes proviennent de requêtes d’agrégation de bases de données.


Actualisation des données

Les données du tableau de bord s'actualisent automatiquement via le mécanisme d'interrogation de React Query :

Source de données Intervalle d'actualisation Méthode
Beacons 10 secondes Interrogation via le hook useBeacons
Listeners Par défaut (sur le focus) Interrogation via le hook useListeners
Séances Par défaut (sur le focus) Interrogation via le hook useSessions
Campagnes Par défaut (sur le focus) Interrogation via le hook useC2Campaigns

Les données des beacons sont actualisées le plus fréquemment (toutes les 10 secondes), car la récence de l'enregistrement est essentielle à la connaissance opérationnelle. D'autres sources de données s'actualisent lors du focus de la fenêtre ou de la navigation, ce qui est suffisant pour des données moins volatiles.


Prochaines étapes