
Generatore di tentativi di password basato su Grammatica Probabilistica Libera dal Contesto (PCFG)
PCFG = Grammatica Probabilistica a Contesto Libero
PCFG = Indovinello Fuzzy Piuttosto Figo
In breve: Una raccolta di strumenti per condurre ricerche su come gli umani generano le password. Questi possono essere usati per craccare hash di password, ma anche per creare password sintetiche (honeywords) o aiutare a sviluppare migliori algoritmi di robustezza delle password.
Trainer: 4.4
Guesser: 4.6
PRINCE_LING: 4.3
Password_Scorer: 4.4
Sphinx viene utilizzato per creare dinamicamente una Guida per Sviluppatori basata sui docstring nel codice. Per costruire la Guida per Sviluppatori, fare riferimento alle istruzioni in /doc/INSTRUCTIONS.rst
Una Guida per Sviluppatori pre-costruita in PDF si trova anche in /doc/build/latex/pcfgdevelopersguide.pdf. Nota: non ricostruirò questa guida tra le versioni principali per mantenere la cronologia git più pulita. In pratica, fare commit di PDF diventa molto caotico molto rapidamente. Ciò significa che la guida pre-costruita potrebbe essere leggermente obsoleta, quindi se la stai usando per aiutarti a scrivere/modificare codice, si consiglia di costruire la guida da solo invece di usare quella pre-costruita.
Questo progetto utilizza l'apprendimento automatico per identificare le abitudini di creazione delle password degli utenti. Un modello PCFG viene generato addestrandosi su un elenco di password in chiaro/crackate divulgate. Nel contesto di questo progetto, il modello viene chiamato ruleset e contiene molte diverse parti delle password identificate durante l'addestramento, insieme alle loro probabilità associate. Questa derivazione (stemming) può essere utile per altri strumenti di cracking come PRINCE, e/o parti del ruleset possono essere incorporate direttamente in attacchi basati su dizionario più tradizionali. Questo progetto include anche un generatore di tentativi PCFG che utilizza questo ruleset per generare tentativi di password in ordine di probabilità. Questo è molto più potente degli attacchi standard al dizionario, e nei test si è dimostrato in grado di craccare password in media con significativamente meno tentativi rispetto ad altri metodi pubblicamente disponibili. Lo svantaggio è che generare tentativi in ordine di probabilità è lento, il che significa che crea in media 50-100k tentativi al secondo, mentre gli algoritmi basati su GPU possono creare milioni a miliardi (e oltre) di tentativi al secondo contro algoritmi di hashing veloci. Pertanto, il guesser PCFG è più adatto per l'uso contro grandi numeri di hash salati, o altri algoritmi di hashing lenti, dove il costo prestazionale dell'algoritmo è compensato dall'accuratezza dei tentativi.
pip3 install chardetIl ruleset predefinito incluso in questo repository è stato creato addestrandosi su un sottoinsieme di 1 milione di password del dataset RockYou. Prestazioni migliori possono essere ottenute addestrandosi sull'intero set di 32 milioni di password per RockYou, ma ciò è stato escluso per mantenere piccola la dimensione del download. Puoi usare il ruleset predefinito per iniziare a generare password senza doverti addestrare su una nuova lista, ma si consiglia di addestrarsi su un insieme target di password che potrebbero essere più vicine a ciò che stai cercando di colpire. Se crei il tuo ruleset, ecco una guida rapida:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6
b. --save_sensitive: Se specificato, i dati sensibili come indirizzi e-mail e siti web completi scoperti durante l'addestramento verranno salvati nel ruleset. Sebbene il generatore di tentativi PCFG attualmente non utilizzi questi dati, sono molto preziosi durante un vero attacco di cracking delle password. Questa opzione è disattivata per impostazione predefinita per rendere questo strumento più facile da usare in un contesto accademico. Nota: anche quando è disattivata, ci sarà quasi certamente comunque qualche dato PII salvato all'interno di un ruleset, quindi proteggi i ruleset generati di conseguenza. Esempio: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive
c. --comments: Aggiunge un commento al file di configurazione del ruleset. Questo è utile per sapere perché e come hai generato il ruleset quando lo rivedi in seguito. Includi il commento che vuoi aggiungere tra virgolette.Questo genera tentativi su stdout utilizzando un ruleset PCFG precedentemente addestrato. Questi tentativi possono quindi essere reindirizzati tramite pipe a qualsiasi programma che desideri utilizzarli. Se non viene specificato alcun ruleset, verrà utilizzato il ruleset predefinito DEFAULT. Ai fini di questa guida si presuppone che il ruleset utilizzato sia NEW_RULESET.