Pillole di Pentration Testing: Come riconoscere se un valore è una chiave hash?
- Andrea Tassotti
- Visite: 5071
In realtà potrebbe essere difficile risonoscere la funzione hash che genera la sequenza di cifre che stiamo osservando; un primo approccio potrebbe essere osservare la lunghezza (in bit) del valore complessivo: funzioni hash differenti infatti sono costruite per produrre chiavi di lunghezza definita di bit che sono tra loro (a volte) differenti ed identitarie.
Es. MD5 produce una stringa di 128 bit, SHA-1 produce una stringa 160 bit
Ovviamente per queste cose non si può andare per approssimazioni, in quanto determinare la giusta funzione da adoperare è strumentale alla correttezza del messaggio (o altra informazione) che si sta vagliando rispetto alla chiave hash. Per non parlare di quando questo deve essere applicato alle tecniche orientate a forzare la crittografia (ad esempio per trovare la versione in chiaro di password).
Una soluzione automatica, molto diffusa, nasce in costesto POSIX, e segnatamente dalla definizione della funzione C crypt (vedi https://en.wikipedia.org/wiki/Crypt_(C) )
Questa funzione ha definito un formato per indicare la funzione hash e il sale utilizzato da questa quando produce una chiave destinata ad essere trascritta (tipicamente) in un file.
Altri ambienti e altre occasioni di persistenza di chiavi hash in file di testo (o altro) hanno introdotto analoghi formati (vedi formati LM e NT di Windows).
Dunque se vogliamo avere subito una risposta alla nostra domanda iniziale, invece di studiare tutte le tecniche, possiamo utilizzare un comando, hashid (https://psypanda.github.io/hashID/), disponibile su una distribuzione come Kali Linux che risolve per noi questo compito.
Un ulteriore vantaggio di questo software è la possibilità di ottenere in output anche le opzioni che dovremo utilizzare in programmi di crack come hashcat e john per forzare il riconoscimento del formato.