
Azure apim mini proxy
apimspray è un kit di password spraying per Entra ID specializzato, progettato per ricerche di sicurezza autorizzate e Red Teaming. Utilizza i gateway di Azure API Management (APIM) come livello proxy distribuito e rotante per l'IP Rotating.
Leggi il Post del Blog per maggiori dettagli su questo progetto.
az): Necessaria per lo script rotator per distribuire le risorse. (Eseguire lo script da una sessione CLI già autenticata con az cli o utilizzare Azure Cloud Shell)pip install -r requirements.txt
az login
Esegui apimspray direttamente da un ambiente Azure autenticato.
git clone https://github.com/crtvrffnrt/apimspray.git
cd apimspray
python3 apimspray.py --help
Distribuisci più gateway APIM in varie località.
python3 apimspraycreate.py --count 5 --outfile urls.txt
Distribuisce 33 istanze APIM in Germanywestcentral e westeurope e le salva in urls.txt
python3 apimspraycreate.py --location germanywestcentral,westeurope --count 33 --outfile urls.txt
Riferimenti CLI di apimspraycreate:
usage: apimspraycreate.py [-h] --outfile OUTFILE [--count COUNT] [--location LOCATION] [--prefix PREFIX] [--realm-prefix REALM_PREFIX] [--delete-old]
apimspraycreate - Azure APIM Deployer
options:
-h, --help mostra questo messaggio di aiuto ed esce
--outfile OUTFILE File di output per gli URL
--count COUNT Numero di istanze
--location LOCATION Località APIM separate da virgola in cui distribuire. Se fornito, vengono utilizzate solo quelle regioni e la prima località viene usata per il gruppo di risorse.
--prefix PREFIX Prefisso dell'URL API
--realm-prefix REALM_PREFIX
Prefisso dell'API Realm
--delete-old Elimina i vecchi gruppi di risorse
Importante: Per tutti i metodi, è necessario avere una sessione az attiva in background (az login).
Assicurati di avere pronte le tue liste di obiettivi:
users.txt: Elenco di UserPrincipalNames (es., [email protected]).passwords.txt: Elenco di password per lo spray.Se non disponi di un elenco utenti, puoi utilizzare lo script helper generate_upns.py. Questo strumento:
users.txt.Utilizzo:
# Genera users.txt per un dominio specifico o un ID tenant
python3 generate_upns.py --target example.com
# OPPURE usando Tenantid
python3 generate_upns.py --target 00000000-0000-0000-0000-000000000000
Riferimenti CLI di generate_upns:
usage: generate_upns.py [-h] --target TARGET
Generate UPNs from connected Azure Tenants and Service Accounts.
options:
-h, --help mostra questo messaggio di aiuto ed esce
--target TARGET Dominio di destinazione (es., example.com) o UUID tenant
usage: apimspray.py [-h] [--urls URLS] [--users USERS] [--passwords PASSWORDS] [--output OUTPUT] [--tenant TENANT] [--domain DOMAIN] --mode {spray,validate} [--pace {stealth,low,mid,medium,high}]
[--continue-on-success]
apimspray - Strumento di valutazione Entra ID
options:
-h, --help mostra questo messaggio di aiuto ed esce
--urls URLS Percorso del file degli URL APIM (da apimspraycreate.py o apimsprayrotator.sh)
--users USERS Percorso del file utenti
--passwords PASSWORDS
Percorso del file password
--output OUTPUT Directory di output
--tenant TENANT ID tenant o dominio
--domain DOMAIN Aggiungi il dominio agli utenti se mancante
--mode {spray,validate}
Modalità operativa. 'spray' testa tutte le password su tutti gli utenti (1:N). 'validate' esegue test 1:1 di coppie credenziali.
--pace {stealth,low,mid,medium,high}
Profilo di ritmo per le richieste e gestione del blocco:
- high: 15 workers, 0.1s delay, 10 passaggi/chunk, 5m blocco, 20 soglia sicura
- medium: 5 workers, 1.0s delay, 5 passaggi/chunk, 10m blocco, 10 soglia sicura, 10% jitter
- low: 2 workers, 5.0s delay, 2 passaggi/chunk, 15m blocco, 5 soglia sicura, 20% jitter
- stealth: 1 worker, 30.0s delay, 1 passaggio/chunk, 20m blocco, 1 soglia sicura, 40% jitter
--continue-on-success
Continua la valutazione anche dopo aver trovato credenziali valide.
validate: Controlla un elenco di coppie utente:password. Richiede liste di uguale lunghezza.
python3 apimspray.py --urls urls.txt --mode validate --users u.txt --passwords p.txt
spray: Tenta una password su tutti gli utenti, poi attende (se configurato), poi passa alla password successiva.
python3 apimspray.py --urls urls.txt --mode spray --users users.txt --passwords common_passwords.txt --pace medium
L'argomento --pace controlla l'aggressività dello spray. I valori sono hardcoded per garantire stabilità e sicurezza.
AADSTS50053), lo strumento si interrompe immediatamente.I risultati vengono salvati nella directory results/<timestamp>/:
valid_*.txt: Autenticazioni riuscite (MFA richiesto o Token ricevuto).blocked_*.txt: Account bloccati o condizionalmente bloccati.failed_*.txt: Credenziali non valide o utente non trovato.| Profilo | Workers | Ritardo | Conteggio (Chunk) | Attesa Blocco | Soglia Sicura | Jitter |
|---|
high | 15 | 0.1s | 10 | 5m | 20 bloccati | 0% |
medium | 5 | 1.0s | 5 | 10m | 10 bloccati | 10% |
low | 2 | 5.0s | 2 | 15m | 5 bloccati | 20% |
stealth | 1 | 30.0s | 1 | 20m | 1 bloccato | 40% |