
Spray365 facilite le pulvérisation de mots de passe sur les comptes Microsoft (Office 365 / Azure AD) grâce à son approche personnalisable en deux étapes. Le plan d'exécution intégré propose des options qui tentent de contourner Azure Smart Lockout et les politiques d'accès conditionnel non sécurisées.

Spray365 est un outil de pulvérisation de mots de passe qui identifie les identifiants valides pour les comptes Microsoft (Office 365 / Azure AD). En quoi Spray365 est-il différent des nombreux autres outils de pulvérisation de mots de passe déjà disponibles ? Spray365 permet de pulvériser les mots de passe à partir d'un « plan d'exécution ». Le fait de disposer d'un plan d'exécution pré-généré qui décrit l'opération de pulvérisation bien avant qu'elle n'ait lieu offre de nombreux autres avantages que Spray365 exploite, mais cela permet également de reprendre les pulvérisations de mots de passe (option -R) après une erreur réseau ou toute autre interruption. Bien qu'il soit plus facile de générer un plan d'exécution Spray365 directement avec Spray365, d'autres outils produisant une structure JSON compatible permettent de créer facilement des flux de travail uniques de pulvérisation de mots de passe.
Spray365 expose quelques options utiles lors de la pulvérisation d'identifiants. Des agents utilisateurs aléatoires peuvent être utilisés pour détecter et contourner les stratégies d'accès conditionnel non sécurisées qui limitent les types d'appareils autorisés. De même, l'argument --shuffle_auth_order est un excellent moyen de pulvériser les identifiants de manière moins prévisible. Cette option a été ajoutée pour tenter de contourner les verrouillages intelligents de comptes (par exemple, Azure Smart Lockout). Bien que ce ne soit pas parfait, randomiser l'ordre dans lequel les identifiants sont essayés présente d'autres avantages, comme rendre la détection de ces opérations de pulvérisation encore plus difficile. Spray365 prend également en charge le proxy du trafic via HTTP/HTTPS, ce qui s'intègre bien avec d'autres outils comme Burp Suite pour manipuler la source de l'opération de pulvérisation.



Clonez le dépôt, installez les paquets Python requis, puis lancez Spray365 !
$ git clone https://github.com/MarkoH17/Spray365
$ cd Spray365
~/Spray365$ pip3 install -r requirements.txt -U
~/Spray365$ python3 spray365.py
Un plan d'exécution est nécessaire pour pulvériser les identifiants, nous devons donc en créer un ! Spray365 peut générer son propre plan d'exécution en exécutant la commande generate en mode « normal » : (spray365.py generate normal). Voir l'aide (spray365.py generate -h / spray365.py generate normal -h) pour plus de détails.
$ python3 spray365.py generate normal -ep <nom_du_fichier_plan_execution> -d <nom_de_domaine> -u <fichier_contenant_les_noms_utilisateurs> -pf <fichier_contenant_les_mots_de_passe>
ex.
$ python3 spray365.py generate normal -ep ex-plan.s365 -d example.com -u usernames -pf passwords
Spray365 peut également auditer les configurations d'authentification multifacteur (MFA) et de stratégies d'accès conditionnel en pulvérisant des identifiants valides. Les plans d'exécution de type audit tentent toutes les combinaisons d'Agent Utilisateur + ID Client AAD + ID Point de Terminaison AAD pour une paire d'identifiants donnée.
Spray365 peut générer un plan d'exécution de type audit en exécutant la commande generate en mode « audit » : (spray365.py generate audit). Voir l'aide (spray365.py generate -h / spray365.py generate audit -h) pour plus de détails. Bien qu'il soit possible de fournir une liste d'utilisateurs et de mots de passe séparément (-u et -pf), ces options conviennent mieux aux plans d'exécution pour la pulvérisation de mots de passe (pas l'audit), ce qui entraînerait probablement de nombreuses tentatives de connexion invalides. Envisagez plutôt d'utiliser -u / --user_file avec --passwords_in_userfile, ce qui indiquera à Spray365 d'extraire les mots de passe du « fichier_utilisateur » en divisant chaque ligne du fichier d'entrée sur le caractère deux-points, où la valeur avant les deux-points est traitée comme le nom d'utilisateur et la valeur après les deux-points comme le mot de passe (ex. <nom_utilisateur>:<mot_de_passe>, jsmith:Password01).
$ python3 spray365.py generate audit -ep <nom_du_fichier_plan_execution> -d <nom_de_domaine> -u <fichier_contenant_noms_utilisateurs_et_mots_de_passe> --passwords_in_userfile
ex.
$ python3 spray365.py generate audit -ep ex-plan.s365 -d example.com -u usernames --passwords_in_userfile
Une fois le plan d'exécution créé, Spray365 peut être utilisé pour le traiter. L'exécution de Spray365 en mode « spray » (spray365.py spray) traitera le plan d'exécution spécifié et pulvérisera les identifiants appropriés. Tous les types de plans d'exécution (normal et audit) peuvent être traités dans ce mode. Voir l'aide (spray365.py spray -h) pour plus de détails.
$ python3 spray365.py spray -ep <nom_du_fichier_plan_execution>
ex.
$ python3 spray365.py spray -ep ex-plan.s365
Après avoir pulvérisé les identifiants à partir d'un plan d'exécution, Spray365 génère un fichier JSON contenant les résultats. Ce fichier peut être traité avec d'autres outils comme JQ pour obtenir des informations sur l'opération de pulvérisation après qu'elle a eu lieu. Cependant, Spray365 inclut également une commande « review » qui peut être utilisée pour connaître :
Voir l'aide (spray365.py review -h) pour plus de détails.
$ python3 spray365.py review <nom_du_fichier_json_resultats_pulverisation>
ex.
$ python3 spray365.py review spray365_results_2022-05-20_18-58-31.json
Usage: spray365.py generate normal [OPTIONS]
Generates a vanilla (normal) execution plan