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
Spray365 — Spray365 makes spraying Microsoft accounts (Office 365 / Azure AD) easy through its customizable two-step password spraying approach. The built-in execution plan features options that attempt to bypass Azure Smart Lockout and insecure conditional access policies. | Kitploit
Outils/GitHubGitHub/markoh17/spray365
Password AttacksIDS/IPS EvasionPenetration TestingCloud SecurityAuthenticationRed TeamingArchived
GitHubmarkoh17/spray365

Spray365

Spray365 makes spraying Microsoft accounts (Office 365 / Azure AD) easy through its customizable two-step password spraying approach. The built-in execution plan features options that attempt to bypass Azure Smart Lockout and insecure conditional access policies.

Voir le dépôt
38157il y a 1 anVé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

Logo Spray 365


Qu'est-ce que Spray365 ?

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.

Génération d'un plan d'exécution (Étape 1)

Génération du plan d'exécution

Pulvérisation des identifiants avec un plan d'exécution (Étape 2)

Pulvérisation du plan d'exécution

Revue des résultats de Spray365 (Étape 3)

Revue des résultats de pulvérisation de mots de passe

Pour commencer

Prérequis

  • Python
    • 3.9 (minimum)
    • 3.10 (recommandé)

Installation

Clonez le dépôt, installez les paquets Python requis, puis lancez Spray365 !

root@kitploit:~
$ git clone https://github.com/MarkoH17/Spray365
$ cd Spray365
~/Spray365$ pip3 install -r requirements.txt -U
~/Spray365$ python3 spray365.py

Utilisation

Générer un plan d'exécution (Normal)

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.

root@kitploit:~
$ 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.

root@kitploit:~
$ python3 spray365.py generate normal -ep ex-plan.s365 -d example.com -u usernames -pf passwords

Générer un plan d'exécution (Audit)

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).

root@kitploit:~
$ 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.

root@kitploit:~
$ python3 spray365.py generate audit -ep ex-plan.s365 -d example.com -u usernames --passwords_in_userfile

Pulvériser un plan d'exécution

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.

root@kitploit:~
$ python3 spray365.py spray -ep <nom_du_fichier_plan_execution>

ex.

root@kitploit:~
$ python3 spray365.py spray -ep ex-plan.s365

Examiner les résultats d'une opération de pulvérisation

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 :

  • Les comptes valides (et invalides)
  • Les identifiants valides (et invalides)
  • Les identifiants partiellement valides (l'authentification a réussi, mais l'accès a été bloqué par MFA / les stratégies d'accès conditionnel)

Voir l'aide (spray365.py review -h) pour plus de détails.

root@kitploit:~
$ python3 spray365.py review <nom_du_fichier_json_resultats_pulverisation>

ex.

root@kitploit:~
$ python3 spray365.py review spray365_results_2022-05-20_18-58-31.json

Utilisation de Spray365

Mode Génération (Normal)
root@kitploit:~
Usage: spray365.py generate normal [OPTIONS]

Generates a vanilla (normal) execution plan

Options:
-ep, --execution_plan           File path where execution plan should be saved  [required]
-d, --domain                    Office 365 domain to authenticate against  [required]
--delay                         Delay in seconds to wait between authentication attempts  [default: 30]
-mD, --min_loop_delay           Minimum time to wait between authentication attempts for a given user. This option takes into account the time one spray iteration will take, so a pre-authentication delay may not occur every time  [default: 0]

User options:
  -u, --user_file               File containing usernames to spray (one per line without domain)  [required]

Password options: [mutually_exclusive, required]
  -p, --password                Password to spray
  -pf, --password_file          File containing passwords to spray (one per line)
  --passwords_in_userfile       Extract passwords from user_file (colon separated)

Authentication options:
  -cID, --aad_client            Client ID used during authentication. Leave unspecified for random selection, or provide a comma-separated string
  -eID, --aad_endpoint          Endpoint ID used during authentication. Leave unspecified for random selection, or provide a comma-separated string

User Agent options: [mutually_exclusive]
  -cUA, --custom_user_agent     Set custom user agent for authentication requests
  -rUA, --random_user_agent     Randomize user agent for authentication requests  [default: True]

Shuffle options: [all_or_none]
  -S, --shuffle_auth_order      Shuffle order of authentication attempts so that each iteration (User1:Pass1, User2:Pass1, User3:Pass1) will be sprayed in a random order with a random arrangement of passwords, e.g (User4:Pass16, User13:Pass25, User19:Pass40). Be aware this option introduces the possibility that the time between consecutive authentication attempts for a given user may occur DELAY seconds apart. Consider using the-mD/--min_loop_delay option to enforce a minimum delay between authentication attempts for any given user.
  -SO, --shuffle_optimization_attempts [default: 10]

-h, --help                      Show this message and exit.
Mode Génération (Audit)
root@kitploit:~
Usage: spray365.py generate audit [OPTIONS]

Generate an execution plan to identify flaws in MFA / Conditional Access Policies. This works best with with known credentials.

Options:
-ep, --execution_plan           File path where execution plan should be saved  [required]
-d, --domain                    Office 365 domain to authenticate against  [required]
--delay                         Delay in seconds to wait between authentication attempts  [default: 30]
-mD, --min_loop_delay           Minimum time to wait between authentication attempts for a given user. This option takes into account the time one spray iteration will take, so a pre-authentication delay may not occur every time  [default: 0]

User options:
  -u, --user_file               File containing usernames to spray (one per line without domain)  [required]

Password options: [mutually_exclusive, required]
  -p, --password                Password to spray
  -pf, --password_file          File containing passwords to spray (one per line)
  --passwords_in_userfile       Extract passwords from user_file (colon separated)

Shuffle options: [all_or_none]
  -S, --shuffle_auth_order      Shuffle order of authentication attempts so that each iteration (User1:Pass1, User2:Pass1, User3:Pass1) will be sprayed in a random order with a random arrangement of passwords, e.g (User4:Pass16, User13:Pass25, User19:Pass40). Be aware this option introduces the possibility that the time between consecutive authentication attempts for a given user may occur DELAY seconds apart. Consider using the-mD/--min_loop_delay option to enforce a minimum delay between authentication attempts for any given user.
  -SO, --shuffle_optimization_attempts [default: 10]

-h, --help                      Show this message and exit.
Mode Pulvérisation
root@kitploit:~
Usage: spray365.py spray [OPTIONS]

Password spray user accounts using an existing execution plan

Options:
-ep, --execution_plan         File path to execution plan  [required]
-l, --lockout                 Number of account lockouts to observe before aborting spraying session (disable with 0)  [default: 5]
-R, --resume_index            Resume spraying passwords from this position in the execution plan  [x>=1]
-i, --ignore_success          Ignore successful authentication attempts for users and continue to spray credentials. Setting this flag will enable spraying credentials for users even if Spray365 has already identified valid credentials.

Proxy options: [all_or_none]
  -x, --proxy                 HTTP Proxy URL (format: http[s]://proxy.address:port)
  -k, --insecure              Disable HTTPS certificate verification

-h, --help                    Show this message and exit.
Mode Revue
root@kitploit:~
Usage: spray365.py review [OPTIONS] RESULTS

View data from password spraying results to identify valid accounts and more

Options:
--show_invalid_creds
--show_invalid_users

-h, --help            Show this message and exit.

Remerciements

AuteurOutil / AutreLien
@__TexasRangermsspray : Mener des attaques par pulvérisation de mots de passe contre Azure AD et valider la mise en œuvre de MFA sur les points de terminaison Azure et Office 365https://github.com/SecurityRiskAdvisors/msspray

Avertissement

L'utilisation de ce logiciel pour attaquer des cibles sans consentement mutuel préalable est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois applicables, locales, étatiques et fédérales, ainsi que toutes les politiques d'utilisation acceptable en vigueur. L'utilisation de ce logiciel décharge l'auteur/les auteurs de toute responsabilité en cas d'utilisation abusive ou de dommages causés.

Télécharger l’outil