
Outil automatisé de pulvérisation de mots de passe
Le projet Trident est un outil automatisé de test de mots de passe par vaporisation (password spraying) développé pour répondre aux exigences suivantes :
la possibilité d'être déployé sur plusieurs plates-formes cloud / fournisseurs d'exécution
la possibilité de planifier des campagnes de vaporisation conformément à la politique de verrouillage de compte d'une cible
la possibilité d'augmenter le pool d'adresses IP d'origine des tentatives d'authentification pour des raisons de sécurité opérationnelle
la possibilité d'étendre rapidement les fonctionnalités pour inclure des plateformes d'authentification nouvellement rencontrées

Ce diagramme a été généré avec Diagrams. Le gopher Go a été conçu par Renee French et est sous licence CC BY 3.0.
Le déploiement de trident nécessite un projet Google Cloud, un nom de domaine (pour l'API de l'orchestrateur) et une configuration Cloudflare Access pour ce domaine. Cloudflare Access est utilisé pour authentifier les requêtes vers l'API de l'orchestrateur.
brew install cloudflare/cloudflare/cloudflared
brew install terraform
cd terraform
cloudflared login
terraform init
terraform plan
terraform apply
Trident dispose d'une interface en ligne de commande disponible sur la page des versions. Vous pouvez également télécharger et installer trident-client via go get :
GO111MODULE=on go get github.com/praetorian-inc/trident/cmd/trident-client
Le binaire trident-client envoie des requêtes API à l'orchestrateur. Il lit le fichier ~/.trident/config.yaml, qui a le format suivant :
orchestrator-url: https://trident.example.org
providers:
okta:
subdomain: example
adfs:
domain: adfs.example.org
o365:
domain: login.microsoft.com
Avec un config.yaml valide, le trident-client peut être utilisé pour créer des campagnes de vaporisation de mots de passe, comme illustré ci-dessous :
trident-client campaign -u usernames.txt -p passwords.txt --interval 5s --window 120s
L'option --interval permet à l'opérateur d'insérer des délais entre les tentatives d'authentification. L'option --window permet à l'opérateur de définir une heure d'arrêt impérative pour la campagne. Des arguments supplémentaires sont documentés ci-dessous :
Usage:
trident-cli campaign [flags]
Flags:
-a, --auth-provider string this is the authentication platform you are attacking (default "okta")
-h, --help help for campaign
-i, --interval duration requests will happen with this interval between them (default 1s)
-b, --notbefore string requests will not start before this time (default "2020-09-09T22:31:38.643959-05:00")
-p, --passfile string file of passwords (newline separated)
-u, --userfile string file of usernames (newline separated)
-w, --window duration a duration that this campaign will be active (ex: 4w) (default 672h0m0s)
La sous-commande results peut être utilisée pour interroger la table des résultats. Cette sous-commande dispose de plusieurs options, mais par défaut elle affiche toutes les identifiants valides de toutes les campagnes.
$ trident-client results
+----+-------------------+------------+-------+
| ID | USERNAME | PASSWORD | VALID |
+----+-------------------+------------+-------+
| 1 | [email protected] | Password1! | true |
| 2 | [email protected] | Password2! | true |
| 3 | [email protected] | Password3! | true |
+----+-------------------+------------+-------+
Des arguments supplémentaires sont documentés ci-dessous :
Usage:
trident-cli results [flags]
Flags:
-f, --filter string filter on db results (specified in JSON) (default '{"valid":true}')
-h, --help help for results
-o, --output-format string output format (table, csv, json) (default "table")
-r, --return string the list of fields you would like to see from the results (comma-separated string) (default "*")