Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SteppingStones — Outil web de journalisation des activités de red team, de génération de rapports et de connaissance de la situation, avec intégration de Cobalt Strike et BloodHound. | Kitploit
Outils/GitHubGitHub/nccgroup/steppingstones
Scripting et AutomatisationCollecte d'InformationsTests d'IntrusionCommandement et ContrôleUtilitaires et FrameworksRed Teaming
GitHubnccgroup/steppingstones

SteppingStones

Outil web de journalisation des activités de red team, de génération de rapports et de connaissance de la situation, avec intégration de Cobalt Strike et BloodHound.

Voir le dépôt
24334il y a 0 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Stepping Stones

Objectif

Un hub pour l'activité Red Team afin de faciliter la tenue de registres, la connaissance de la situation et le reporting. Stepping Stones fournit une interface web permettant à l'équipe de consigner son activité et de générer des extraits de rapport. L'interface est conçue pour être suffisamment rapide pour être utilisée tout au long de la mission, et pas seulement en phase de reporting.

Article de blog de la version

Installation

Stepping Stones est une application Python Django, donc pour obtenir une copie locale fonctionnelle :

  1. Installez la dernière version de Python 3 (testée avec 3.12.2 sur Windows et Linux)
  2. Placez-vous dans le répertoire racine d'une copie de ce dépôt
  3. Créez un environnement virtuel pour isoler les dépendances des autres applications : python -m venv .venv
  4. Activez l'environnement virtuel : .venv\Scripts\activate ou source .venv/bin/activate sur *nix
  5. Installez les dépendances : pip install -r requirements.txt
  6. Assurez-vous que le module de tâches de fond tiers dispose de toutes les migrations requises : python manage.py makemigrations background_task
  7. Mettez le schéma de la base de données à jour : python manage.py migrate
  8. Démarrez l'application :
    • Si vous l'exécutez sur un système Linux avec systemd, consultez le guide systemd
    • Pour les versions de développement :
      • Exécutez python manage.py runserver et python manage.py process_tasks simultanément
    • Pour les versions de production :
      • Exécutez python manage.py check --deploy pour obtenir des recommandations de durcissement, puis suivez un guide tel que : https://docs.djangoproject.com/en/6.0/howto/deployment/
  9. Visitez l'application pour configurer une tâche et un utilisateur admin : par exemple, accédez à http://127.0.0.1:8000 si vous l'exécutez en local
    • Remarque : L'utilisateur créé sera également utilisé pour l'application principale et apparaîtra comme « opérateur red team » associé aux événements consignés, choisissez donc un nom d'utilisateur adapté, par exemple « ST » ou « stephen », plutôt que « admin ». Si vous utilisez l'intégration Cobalt Strike, utiliser les mêmes noms d'utilisateur pour les deux outils facilitera l'intégration.

Intégration Cobalt Strike

  • Placez un Cobalt Strike SOUS LICENCE dans /opt/cobaltstrike ou c:\tools\cobaltstrike-dist\cobaltstrike

Sur le serveur d'équipe, ouvrez une porte dans le pare-feu pour permettre à Stepping Stones de se connecter, par ex. :

  • Sur AWS, autorisez le groupe de sécurité Stepping Stones à accéder au port 50050 du Team Server
  • Sur l'hôte, assurez-vous que le pare-feu autorise également le trafic entrant, par ex. sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050

Mise à jour de l'application

Si vous exécutez une copie locale, lorsque le code a été mis à jour dans git et que vous souhaitez profiter des nouvelles fonctionnalités :

  1. Arrêtez les deux services, par ex. avec systemd :
    • sudo service ssbot stop
    • sudo service steppingstones stop
  2. Obtenez la dernière version, par ex. depuis https://github.com/nccgroup/SteppingStones/archive/refs/heads/main.zip
  3. Décompressez le téléchargement et copiez les fichiers par-dessus le déploiement, par ex. rm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones
  4. Activez l'environnement virtuel (si ce n'est pas déjà fait) depuis le répertoire steppingstones : .venv\Scripts\activate ou source .venv/bin/activate sur *nix
  5. Ajoutez les éventuelles nouvelles dépendances avec : pip install -r requirements.txt
  6. Assurez-vous que le module de tâches de fond tiers dispose de toutes les migrations requises : python manage.py makemigrations background_task
  7. Exécutez les éventuels scripts de migration pour transformer votre base de données locale vers le nouveau schéma : python manage.py migrate.

Repartir avec une base de données propre

Si vous utilisez la même instance pour différents travaux et souhaitez archiver les anciennes données puis repartir de zéro, vous pouvez :

  • Effectuer l'étape 1 de Mise à jour de l'application ci-dessus pour arrêter l'application
  • Renommer la base de données SQLite :
    • mv db.sqlite3 db.sqlite.OLD_CLIENT_NAME
  • Effectuer les étapes 2, 4 et 7 à 9 de Installation ci-dessus pour créer la structure de base de données correcte et accéder à l'application nouvellement configurée.

Sauvegardes

Le système utilise SQLite. Sauvegardez régulièrement le fichier db.sqlite3 situé à la racine du serveur ou via l'interface web pour protéger vos précieuses données.

Webhooks

Chacune des URL de webhook configurées recevra un petit document JSON lors des événements clés. Le document JSON a toujours la structure suivante :

root@kitploit:~
{
    "type": "notification type",
    "message": "Human readable message"
}

Le champ type peut être l'une des valeurs suivantes :

  • new beacon (un beacon jamais vu auparavant s'est connecté à un Team Server surveillé)
  • respawned beacon (un beacon déjà vu s'est connecté à un Team Server surveillé)
  • returned beacon (un beacon explicitement surveillé pour une reconnexion vient de se reconnecter)

Pour consommer ces notifications, vous pouvez utiliser un scénario https://make.com, basé sur le blueprint suivant :

root@kitploit:~
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}

Importez le blueprint ci-dessus en créant un scénario vierge et en utilisant la fonctionnalité « Import Blueprint » sous le menu « ... » (Plus) situé en bas au centre de l'interface web.

Deux étapes supplémentaires sont ensuite requises :

  • Cliquez sur le cercle du webhook et ajoutez un nouveau webhook nommé pour générer une URL
  • Cliquez sur le logo Apple pour inscrire un iPhone auprès de make.com avec leur application integromat.

Les webhooks peuvent être testés via un bouton sur la page des webhooks de Stepping Stones.

Modèle de sécurité

Stepping Stones utilise le système de permissions au niveau des modèles de Django, permettant de restreindre les utilisateurs dans la création, la modification, la consultation et la suppression de chaque type de modèle de données. Les groupes se trouvent dans la console /admin et attribuent un ensemble de permissions, par ex. adaptées à la Blue Team d'un client, à tous les membres de ce groupe.

Groupes existants :

RôleDescription
Client Blue Team - Read OnlyPeut lire la page des événements et des fichiers
Client Blue Team - Limited WriteComme Client Blue Team - Read Only avec accès en écriture aux champs de résultat et de détection d'un événement

Les utilisateurs créés pendant le processus d'installation reçoivent le statut « superuser » et disposent donc implicitement de toutes les permissions possibles. Cependant, lors de la création manuelle d'utilisateurs via la console d'administration, assurez-vous qu'ils ne soient marqués ni comme « staff » ni comme « superuser », afin qu'ils ne démarrent avec aucune permission implicite et n'obtiennent des permissions qu'en étant ajoutés à des groupes.

Localisation

Les fuseaux horaires des utilisateurs peuvent être modifiés via le portail /admin. Les heures dans les rapports sont volontairement affichées en UTC pour faciliter la corrélation par les Blue Teams.

Les formats de date présentés par Stepping Stones doivent correspondre à la locale du navigateur web. C'est-à-dire que les utilisateurs dont le navigateur est configuré avec une locale américaine verront les dates au format MM/DD/YYYY dans l'interface web et les extraits de rapport.

EventStream

Stepping Stones peut ingérer des journaux provenant d'autres outils s'ils sont formatés dans le format EventStream sur mesure, basé sur JSON. Le format est détaillé dans l'interface web de SteppingStones, y compris les schémas et des exemples de données.

Une fois qu'un journal EventStream a été ingéré par Stepping Stones, les entrées pertinentes peuvent être clonées dans des événements pour le rapport.

Détails de l'intégration Cobalt Strike

La méthode privilégiée pour intégrer Cobalt Strike est via SSBot. Cela nécessite une copie sous licence de Cobalt Strike dans /opt/cobaltstrike ou c:\tools\cobaltstrike, qui sera utilisée pour contacter tout serveur d'équipe (activé) configuré dans l'interface web.

Une fois l'intégration effectuée :

  • Les listes déroulantes Source/Cible incluront les beacons
  • Les listes déroulantes de fichiers incluront les fichiers téléversés/téléchargés via CS
  • L'onglet Credentials se remplira en fonction de la sortie des outils et des identifiants ajoutés dans CS.
  • Les actions CS individuelles peuvent être transformées en événements – soyez sélectifs et ajoutez du contexte à chaque événement plutôt que de dupliquer les actions en bloc afin de maintenir la qualité du rapport.

Il existe des commandes CLI supplémentaires qui peuvent être utilisées si SSBot ne fonctionne pas comme prévu :

  • .\manage.py reset_cs_data [-s SERVER] - Réinitialise toutes les données analysées depuis le serveur d'équipe donné, ou toutes si aucun nom n'est fourni. Cela n'affectera pas les données dérivées des journaux CS, par ex. les événements clonés manuellement ou les identifiants.
  • .\manage.py parse_log_tar <file name> - Analyse le contenu d'un répertoire de journaux, compressé en tar et récupéré depuis un serveur d'équipe. Remarque : cela n'inclut pas toutes les données accessibles par SSBot et n'est donc pas la technique d'ingestion privilégiée

Intégration BloodHound

Les serveurs Neo4j configurés via l'interface web seront utilisés pour :

  • Mettre à jour le statut owned de BloodHound lorsque des identifiants sont ajoutés avec un mot de passe, ou lorsqu'un beacon est exécuté en tant que système sur un hôte spécifique.
  • Renseigner les listes déroulantes Source/Cible avec les utilisateurs et les ordinateurs
  • Fournir des rapports supplémentaires sur les comptes dans la section des identifiants de Stepping Stones

Plugins de rapport

Il est possible d'étendre les fonctionnalités de Stepping Stones via des plugins. Une documentation supplémentaire est disponible ici.

Télécharger l’outil
  • Si Django vous demande d'exécuter python manage.py makemigrations, arrêtez-vous et contactez les développeurs de Stepping Stones – il est important que tous les utilisateurs travaillent à partir du même ensemble de scripts de migration et ceux-ci doivent être coordonnés par les développeurs.
  • Redémarrez les deux services, par ex. avec systemd :
    • sudo service ssbot restart
    • sudo service steppingstones restart
  • Assurez-vous qu'il n'y a pas d'erreurs, par ex. avec systemd journalctl -u steppingstones