
Generatore di password basato su modello di Markov in C che enumera i candidati per probabilità, generando prima le password più probabili per il cracking di hash tramite Hashcat o John.
OMEN è un password guesser basato su modello Markov scritto in C. Genera candidati password in base alle loro probabilità di occorrenza, ovvero restituisce prima le password più probabili. OMEN migliora significativamente la velocità di guessing rispetto alle proposte esistenti. Se sei interessato ai dettagli su come OMEN migliori gli approcci esistenti di password guessing basati su modello Markov, fai riferimento a OMEN: Faster Password Guessing Using an Ordered Markov Enumerator.
OMEN è composto da due moduli programma separati: createNG e enumNG. createNG
calcola le probabilità degli n-grammi in base a una data lista di password e le memorizza
su disco. In base a queste probabilità enumNG enumera nuove
password nell'ordine corretto (decrescente).
Usa una versione recente di Linux e assicurati di aver installato git (sistema di controllo versione Git), gcc (GNU Compiler Collection) e make (GNU Make). Puoi installarli su Ubuntu Linux tramite:
$ sudo apt-get install build-essential git
Scarica il codice sorgente tramite:
$ git clone https://github.com/RUB-SysSec/OMEN.git OMEN
Spostati nella directory appena creata OMEN ed esegui:
$ make
Se la compilazione ha successo, puoi trovare createNG e enumNG nella directory corrente.
.
├── alphabetCreator
├── createNG
├── docs
│ ├── CHANGELOG.md
│ ├── LICENSE
│ └── screenshots
├── enumNG
├── evalPW
├── makefile
├── README.md
└── src
├── alphabetCreator.c
...
Se vuoi, ora puoi rimuovere la cartella src e il file makefile, non sono più utilizzati.
Una breve guida all'installazione usando Cygwin su Windows 10 è disponibile qui.
Prima di poter generare qualsiasi password, le probabilità degli n-grammi devono essere stimate usando
createNG. Per calcolare le probabilità usando le impostazioni predefinite, createNG deve essere
invocato fornendo un percorso a una lista di password su cui effettuare il training:
$ ./createNG --iPwdList password-training-list.txt
Ogni password della lista fornita deve essere su una nuova riga. Il modulo quindi
legge e valuta la lista generando una serie di file. Oltre a un file di configurazione (createConfig) che memorizza le impostazioni usate (in questo caso l'impostazione predefinita), vengono creati diversi file contenenti informazioni sui grammi e sulla lunghezza delle password. Questi file hanno l'estensione '.level':
Le probabilità di ogni n-gramma e le lunghezze sono mappate su livelli tra 0
(più probabile) e 10 (meno probabile). Una volta creati questi file, enumNG può
essere usato per generare una lista di password ordinate per probabilità. Attualmente, enumNG supporta tre modalità operative: file, stdout, simulated plaintext attack. Nella modalità predefinita di enumNG, viene creata una lista di tentativi di password basata su questi livelli. Usando il comando
$ ./enumNG
vengono generate 1 miliardo di password e memorizzate in un file di testo, che può essere trovato
nella cartella 'results'. Le password in questo file sono ordinate per livello (cioè per
probabilità). Poiché gli editor di testo comuni non sono in grado di gestire file così grandi,
per i test si raccomanda di ridurre il numero di password create. Questo
può essere fatto usando l'argomento -m.
$ ./enumNG -m 10000
Creerà una lista ordinata con solo 10.000 password. Se sei interessato a stampare le password sullo standard output (stdout) stream usa l'argomento -p.
$ ./enumNG -p -m 10000
Se sei interessato a valutare le prestazioni di guessing rispetto a un set di test di password in plaintext usa l'argomento -s. Nota bene: in questa modalità OMEN beneficia dell'algoritmo adattivo di scheduling della lunghezza che incorpora feedback live, non disponibile (a causa del canale di feedback mancante) nelle modalità file e stdout.
$ ./enumNG -s=password-testing-list.txt -m 10000
Il risultato di questa valutazione può essere trovato nella cartella 'results'.
Entrambi i moduli forniscono una finestra di aiuto che può essere mostrata usando l'argomento -h o --help.
Come passare da $2a$10$HNYF4KajSTqxIP/KoiB5tOCVeKUgvscTh32hhAmppFk4T/USmI2B. a "GoodOMEN!123"?
OMEN è stato sviluppato per casi d'uso accademici come migliorare la modellazione probabilistica delle password, stimare i guess numbers o la robustezza delle password, in generale, per migliorare la sicurezza delle password. Non abusare di questo software per danneggiare la privacy altrui o violare la legge.
I valutatori di hash più diffusi come Hashcat e John the Ripper supportano centinaia di formati di hash e cifratura e potrebbero essere facilmente integrati grazie al loro supporto per leggere i candidati password tramite il loro standard input (stdin) stream.
$ ./enumNG -p -m 10000 | ./hashcat64.bin ...
oppure
$ ./enumNG -p -m 10000 | ./john --stdin ...
Per prestazioni di guessing ottimali, considera di addestrare createNG con una distribuzione di password simile a quella che desideri crackare.
Nota bene: usare la modellazione probabilistica delle password per crackare password, in generale, dovrebbe essere considerato solo contro hash lenti (ad esempio, bcrypt, PBKDF2, scrypt o Argon2) dove il numero di tentativi fattibili è limitato o in attacchi molto mirati. Al contrario, per hash molto veloci (MD5, SHA-1 o NTLM), usare buoni dizionari e regole di mangling (ad esempio, best64.rule) è la strada da seguire.
Se sei interessato a questo argomento, considera di leggere i seguenti paper e i loro lavori correlati (questa lista è incompleta, puoi contribuire ad ampliarla):
Probabilistic Context-Free Grammars
Markov Models