How can you extract the hash of the password from an encrypted
container, such as a KeePass file, or a LUKS, TrueCrypt or Veracrypt
volume?
Dipende :-). Avrai bisogno di un programma in grado di leggere il rispettivo formato di file e di estrarre informazioni sulla password.
Si noti inoltre che un file / contenitore protetto da una password di solito non contiene un hash della password (come ad esempio un UNIX Shadow file would). Invece contiene dati protetti da una chiave di crittografia (che è calcolata dalla password), e possibilmente informazioni su come è stata calcolata la chiave di crittografia. In genere, per calcolare la chiave viene utilizzato un algoritmo speciale (una funzione di derivazione della chiave ).
Questi dati possono essere attaccati in modo simile alla forzatura bruta di un hash della password: puoi provare diverse password, eseguirle attraverso la funzione di derivazione della chiave giusta e verificare se corrispondono ai dati crittografati.
Quindi avrai bisogno di un programma che esegua questa forza bruta. Hashcat è una scelta popolare (e Hashcat capita di supportare il formato dei dati usato da KeePass - vedi PR 282 su GitHub ).
I tried to use keepass2john from John the Ripper, but it did not work
with a KDBX file from KeePass (error message: "file version not
supported") .
Potrebbe trattarsi di un numero qualsiasi di problemi, ed è probabilmente fuori portata qui. Prova a fare una domanda più specifica sul link .
During my research I found some people saying that you cannot extract
the hash. If so, then what are scripts like keepass2john for?
Bene, a volte alcune persone hanno torto :-). keepass2john è davvero utile per estrarre informazioni da un database KeePass che ti permette di decifrare la password con John The Ripper.
Also, if you cannot extract the hash, how does the encryption software
validate the key?
Lo fanno come i programmi di cracking: provano la password e si lamentano se non funziona.