LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam

Utilizzando Internet e un computer, abbiamo sempre più password. Si tratta di password e accessi alla cassetta postale, a Skype, ai siti su cui ci siamo registrati (VKontakte, compagni di classe, ecc.) E gli utenti più avanzati usano anche password per programmi diversi, password FTP, chiavi di licenza e questo l'elenco è ancora lungo. Più password abbiamo (ovviamente, accede anche a loro), più ovvio che abbiamo bisogno di un tipo di archiviazione affidabile per loro. Naturalmente, possiamo creare un documento .txt e registrare e archiviare tutto lì. Può darsi che leggendo queste righe, pensi: "Sto facendo proprio questo, perché è male?" Potrebbe non essere male, ma non è conveniente, inoltre esiste un modo migliore per archiviare le password. Sono sicuro che apprezzerai. Questo metodo è quello di usando un gestore di password chiamato KeePass. Quali sono i suoi vantaggi?

1) Tutte le tue password sono in un programma protetto in modo affidabile dal crack delle password e allo stesso tempo sono crittografate con l'algoritmo AES (crittografia a blocchi a 128 bit che utilizza una chiave a 256 bit). Quando si entra nel programma, è necessario inserire una password, altrimenti non si otterrà l'accesso. Si raccomanda che la password sia composta da almeno 20 caratteri, se il cracker vuole raccogliere una tale password, ci vorranno decenni; quasi nessuno sarebbe interessato a raccogliere una password così lunga;
2) Interfaccia intuitiva programmi, è possibile combinare gruppi in password (ad esempio, il " Social networks", Gruppo" Posta ");
3) Funzione di composizione automatica: il programma può inserire automaticamente un login e una password;
4) La versione portatile di KeePass ti consente di trasportare comodamente tutte le tue password su un'unità flash;
5) C'è un generatore di password in KeePass, quindi ora non è necessario inventarli da soli. Password Generator contiene anche altre impostazioni, che consente di specificare quali caratteri utilizzare o meno e quante volte devono comparire nella stessa password.

Questi sono i principali vantaggi. Ora vediamo come lavorare con il programma KeePass. Cominciamo con l'installazione e la russificazione di KeePass. (Scarica il programma KeePass alla fine di questo articolo). L'installazione è intuitiva, quindi non ci soffermeremo su di essa. Dopo l'installazione, il programma deve essere Russificato. Per fare ciò, nell'archivio che hai scaricato, trova il file "Russian" e copialo nella cartella con programma stabilito. Di solito il percorso è: "C / Programmi / Password KeePass sicura". Ma potrebbe esserci un altro modo, a seconda delle impostazioni.

Quindi eseguire il programma. Al suo primo lancio ci sarà una finestra simile:

Ci viene chiesto se includere aggiornamento automatico. Naturalmente, questo deve essere fatto, quindi selezioniamo la prima opzione: "Abilita (consiglia)". Vedremo la finestra principale del programma:

KeePass è ancora in inglese e devi completare la russificazione. Per completarlo, vai a: Visualizza / Cambia lingua. Immagine dello schermo:

Qui selezioniamo il russo

Ecco come va la russificazione di KeePass.

E ora stiamo iniziando a creare il nostro database di password. Per fare ciò, fai clic su: File / Nuovo o semplicemente Ctrl + N.

Troviamo un nome per il nostro database e facciamo clic su "Salva". Prestare attenzione a dove si salva il database delle password, poiché d'ora in poi tutte le password verranno archiviate qui. Ad esempio, se si desidera trasferire il database delle password su un altro computer, sarà necessario copiare questo file. Potrebbero esserci alcune altre situazioni in cui è necessario un file di database delle password. Pertanto, conservalo dove puoi trovarlo facilmente. In relazione a questo un momento importante molto attentamente.

Qui abbiamo bisogno di trovare una password di base che verrà utilizzata durante l'accesso al programma. Deve contenere almeno 20 caratteri, come già accennato all'inizio dell'articolo. Non utilizzare una password di meno di 20 caratteri; non salvare il numero di caratteri nella password. Ora sarà l'unica password che devi ricordare, altre verranno memorizzate nel programma. Seleziona anche la casella accanto al "File chiave", senza di essa, anche conoscendo la password, non sarai in grado di accedere al programma. Questo passaggio renderà più difficile decifrare il database delle password se qualcuno tenta di farlo. Questo tipo di protezione viene utilizzato in KeePass. Fai clic su "Nuovo".

Qui impostiamo il nome del file chiave e lo salviamo. Ricorda dove lo salvi. File di database delle password e file chiave - Questi sono due file principali necessari per accedere al database delle password. Non devi perderli, altrimenti non potrai riottenere l'accesso alle password archiviate in KeePass.

In questa finestra è necessario generare numeri casuali. Anche se sembra complicato, è molto semplice. Spostare il cursore del mouse sull'area grigia e in questo modo vengono generati numeri casuali. "Per quanto tempo trascinare il mouse sull'area grigia?" - tu chiedi. Si noti che sotto è presente un'area vuota (la seconda freccia punta verso di essa). Sposta il mouse in modo casuale fino a riempire quest'area.

Quale dovrebbe essere il risultato? Guarda lo screenshot:

Vediamo che il numero di bit è 256, il che significa che abbiamo fatto tutto bene e ora facciamo clic su "OK". La nostra chiave è pronta!

Ora anche qui tutto è pronto. Clicca OK.

Nella finestra "Crea un nuovo database delle password" fai clic su "OK".

Tutto è pronto e nello screenshot possiamo vedere come appare KeePass.

Come accennato all'inizio dell'articolo, le password possono essere ordinate in gruppi in questo programma. In esso, per impostazione predefinita, i gruppi per l'archiviazione delle password e le voci della password di prova sono già creati. A sinistra ci sono gruppi e a destra sono le password. Naturalmente, non abbiamo bisogno di record di test. Eliminali.

Elimina anche il gruppo. Se i gruppi già esistenti sono adatti a te, non puoi eliminarli. Elimineremo i gruppi esistenti e ne creeremo altri, nuovi. Per eliminare un gruppo, fai clic destro su di esso e seleziona la voce "Elimina gruppo".

Quindi, i gruppi sono stati eliminati e ora ne stiamo creando di nuovi. Per fare ciò, vai su Modifica / Aggiungi gruppo

Inserisci il nome del gruppo. Lascia che in questo gruppo memorizzeremo le password per le nostre caselle di posta. Chiameremo il gruppo di password "Mail". Immagine dello schermo:

Come puoi vedere, abbiamo creato un gruppo di password che abbiamo creato con il nome Mail. Un nome scelto correttamente semplifica la comprensione delle password a cui sono memorizzate. Conclusione: dacci nomi amichevoli e troverai il record che ti serve più facile e veloce.

L'attività successiva è quella di registrare in un gruppo. Come hai già indovinato, il login e la password per la posta, così come alcune altre cose utili, verranno memorizzati nel record. Ne parleremo un po 'più avanti. Ora vediamo come aggiungere una voce a un gruppo. Per fare ciò, vai su "Modifica / Aggiungi voce ..."

Abbiamo aperto la finestra "Aggiungi record"

Compiliamo il modulo, 1) troviamo il nome del record, 2) il nome è il login, 3) cancelliamo la password che è già lì e inseriamo quella che usiamo per la posta, puoi anche impostare un link alla pagina in cui dovrai inserire login e password e scrivi più commenti. Nei commenti, possiamo indicare la risposta a domanda di Sicurezza o alcuni altri dati che abbiamo fornito durante la registrazione, in generale, tutto ciò di cui abbiamo bisogno. Ecco un esempio:

Ecco come appare il record creato.

A proposito, il login (in KeePass si chiama Nome) può essere nascosto con asterischi, come la password è nascosta. Per fare ciò, vai alla scheda Visualizza e seleziona l'elemento appropriato.

Riassumiamo il lavoro svolto. Abbiamo aggiunto un solo record e questo è sufficiente per capire come va questo processo. Ora trasferisci allo stesso modo tutte le tue password su questo programma. Pertanto, creerai la tua base e sarai in grado di trovare in modo conveniente e rapido le combinazioni di accessi e password di cui hai bisogno.

Come "estrarre" il login e la password dal record ora? Fare clic con il tasto destro sul record. Guarda lo screenshot:

È apparso un menu. Dopo averlo esaminato attentamente, puoi vedere che puoi copiare il nome, copiare la password, modificare ed eliminare la voce. Queste sono le funzioni di base. Ma ce n'è un altro caratteristica utilechiamato Avvia composizione automatica. Come usarlo? Innanzitutto, posiziona il cursore nel campo di accesso nel modulo sul sito, quindi vai al record e seleziona "Avvia composizione automatica". Il programma inserirà automaticamente nome utente e password.

Un'altra cosa utile che KeePass ha è un generatore di password. Che cos'è e perché è necessario, spero che tutti capiscano. Si trova nella scheda Strumenti. Lì è tutto intuitivo, penso che non sarà difficile capirlo.

Questo può essere completato. I migliori auguri a te.

È possibile in qualche modo rompere KeePass e unire le password?

Se qualcuno non sa cosa sia KeePass, in breve: questo è un programma di gestione delle password che ti consente di memorizzare un master password ricordandone uno. Puoi leggere di più sui nostri gestori di password.

Fino a poco tempo fa, hackerare KeePass era impossibile, ma l'altro giorno un certo Denis Andzakovic ha pubblicato sulla rete utilità gratuita KeeFarce, che consente a un utente malintenzionato di rubare le password a un noto gestore di password.

Scarica KeeFarce gratuitamente a questo link diretto.

Hacking KeePass con KeeFarce

Per decifrare il gestore delle password di KeePass e unire le password, deve essere aperto, ad es. in modo che l'utente che accede con la password master non chiuda il programma per un po '.

L'uso di KeeFarce è molto semplice. Basta copiare i file nella cartella KeePass:

  • BootstrapDLL.dll
  • KeeFarceDLL.dll
  • Microsoft.Diagnostic.Runtime.dll

Ed esegui il file eseguibile KeeFarce.exe


Dopo l'avvio, il programma si inietta in processo in corso KeePass. Quindi l'utilità esporta tutte le password in file CSV nella cartella appdata.

Come proteggerti dall'hacking di KeePass

Prima di tutto, controlla il tuo computer alla ricerca di trojan (), da allora questo schema può essere implementato se l'attaccante ha accesso remoto al tuo computer o c'è accesso fisico mentre hai lasciato il gestore delle password aperto e lasciato brevemente il computer.

La seconda e più importante cosa è non lasciare il gestore delle password aperto per molto tempo. Siamo entrati nel programma, estratto il nome utente e la password necessari, effettuato l'accesso al sito e chiuso immediatamente il gestore. Puoi leggere di più sulla corretta configurazione di KeePass nell'articolo ““. A proposito, ho parlato di questa minaccia e ho consigliato di ridurre il tempo necessario per chiudere automaticamente il programma quando è inattivo, anche prima che appaia l'utilità.

E gli altri gestori di password?

Questa vulnerabilità (non questa utility) può essere utilizzata per rubare le password da altri programmi di archiviazione delle password. Penso che presto non ci sarà un numero limitato di tali strumenti, sia separati che integrati in vari programmi dannosi.

Devo rifiutare di utilizzare i gestori di password?

Tu decidi. Personalmente, credo che con un uso corretto di KeePass e una corretta igiene del computer, non dovrebbero esserci problemi.

In uno dei video precedenti, ho già parlato di un programma per l'archiviazione sicura delle password. Ma, a seguito di alcuni esperimenti, si è scoperto che la memorizzazione delle password non è così sicura, ma questo vale per la versione classica del programma. Pertanto, in questo video, considereremo la versione professionale di KeePass. Inoltre, è gratuito come la versione classica. Se è la prima volta che ascolti questo programma, ti consiglio di esaminare prima la mia recensione della versione classica in modo che non ci siano domande inutili.

E quindi, cosa faremo in questa lezione:

Creiamo la versione classica di KeePass Password Safe tramite Key logger;

Importiamo la base dalla versione classica a quella professionale;

Considerare le principali differenze e innovazioni;

E prova a hackerare Key logger con la versione professionale.

E prima di tutto, andiamo al sito web degli sviluppatori del programma www.keepass.info \\ download. Scaricheremo entrambe le versioni in un formato portatile, poiché porto un database con le password su un'unità flash, quindi il programma per visualizzarle dovrebbe essere eseguito anche da un'unità flash, senza installarlo nel sistema operativo.

L'ho già fatto e ho anche creato un database di test per la versione classica. Sul questo momento, Ho spyware LanAgent in esecuzione sul mio sistema. Questo programma appartiene ai keylogger, ad es. programmi che registrano tutte le azioni dell'utente sul computer. Quindi, ora scopriamo quanto siano affidabili questo programma protegge le nostre password!

Avviamo la versione classica e apriamo il database creato al suo interno, immettiamo la password per il database e accediamo al sito Web Rutracker.org.

Ora vediamo cosa LanAgent è stato in grado di intercettare, aggiornare i registri e vedere che il programma ha intercettato sia la chiave principale che il login e la password per il sito Rutracker. Anche se proviamo a inserire i dati negli Appunti, il programma intercetterà anche il contenuto del buffer. D'altra parte, la password del database è inutile se l'attaccante non ha nulla per cui usarla, ad es. la base si trova sul nostro flash drive. Ma in questa situazione, i programmi possono sfondo copia il contenuto dell'unità flash o dei file a cui hai avuto accesso, e quindi invisibile a noi, il database può essere copiato e tutte le password possono essere aperte usando la chiave master!

In generale, è possibile trarre la seguente conclusione, la versione classica è adatta per non memorizzare le password in una forma chiaramente aperta, ma quando si utilizza lo spyware, non sarà di aiuto. E per liberarci di questo divario, la versione professionale ci aiuterà!

1) Russificare il programma per un lavoro più conveniente ( www. keePass. informazioni \ Traduzioni \ russo \\ 2.28 \\ decomprimere nella cartella del programma \\Visualizza \ Modificare linguaggio \ russo)

2) Crea nuova base (File \\ Nuovo \\ Specifica il percorso e il nome \\ Imposta la password principale)

3) Trasferisci i dati dal vecchio database in modo da non guidare tutto manualmente ( File \\ Importa \\Keepass 1. x \\ Specifica il percorso del vecchio database \\ OK \\ Inserisci la password per il database \\ Nuovi identificatori)

Ora considera ciò che è nuovo e interessante in questa versione. Non prenderò in considerazione tutte le innovazioni, ci vorrà molto tempo, ma mi concentrerò sulle più interessanti, secondo me:

1) Inserimento della password principale in modalità protetta, che consente di bloccare il Key logger, quando si inserisce la password principale ( Servizio \\ Impostazioni \\ Sicurezza \\ Immettere la password principale in modalità protetta)

2) Il generatore di password crea immediatamente 30 password, in base alla complessità selezionata. Da cui puoi scegliere, secondo te, il più difficile.

3) La lingua di composizione automatica è più facile da usare rispetto alla versione classica. Non ho parlato di lui nella recensione della versione classica, quindi vediamo come può aiutare!

Per impostazione predefinita, la seguente sequenza di comandi viene attivata durante l'immissione automatica. Il campo attivo è inserito login, TAB, password ed ENTER. Questa sequenza può essere vista se aprire la voce \\ Composizione automatica \\ Utilizzare la seguente sequenza. E questa opzione adatto nella maggior parte dei casi, come avvicinato all'ingresso del rutracker.

Tuttavia, non è adatto per l'immissione di posta attraverso il sito www.mail.ru. Poiché la mia casella di prova non è su mail.ru, ma su bk.ru, puoi inserire un singolo algoritmo di input per questo sito (NOME UTENTE) (TAB) (PASSWORD) (TAB) (GIÙ) (GIÙ) (GIÙ) (TAB) (INVIO).

L'elenco dei comandi è fornito qui, c'è anche aiuto, anche se è in inglese, ma puoi capirlo se lo desideri. Dalla mia pratica, a volte consiglierei di usare la squadra (RITARDO 1000)Questo è un comando di ritardo tra i team. Accade solo che con Internet lenta, il browser non ha il tempo di accettare la sequenza di comandi, quindi ha bisogno di tempo per pensare, in questa situazione questo comando aiuterà (5000 - 5 secondi di ritardo).

4) Doppia complicazione del set - con questo metodo, il programma non inserisce i dati in modo esplicito, prende parte del nome utente e della password dagli appunti e parte entra con caratteri.

Ora controlliamo se LanAgent può rivelare le nostre password!? Come puoi vedere, non è stato possibile estrarre nulla e, quindi, il programma ha funzionato bene e ora le tue password sono protette al massimo!

  • lezione

L'altro giorno, dovevo implementare la decrittografia del database KeePass. Sono stato colpito dal fatto che non esiste un singolo documento e nemmeno un singolo articolo con informazioni complete sull'algoritmo di decodifica per i file .kdb e .kdbx, tenendo conto di tutte le sfumature. Questo mi ha spinto a scrivere questo articolo.


Attualmente ci sono 2 versioni di KeePass:

  • KeePass 1.x (genera file .kdb);
  • KeePass 2.x (genera file .kdbx).

La struttura del file con il database KeePass (.kdb, .kdbx) è composta da 3 parti:

  • Firma (non crittografata);
  • Header (non crittografato);
  • Dati (crittografati).

Decrittazione del database KeePass

sequencing:
  1. Leggi la firma del database.
  2. Leggi l'intestazione del database.
  3. Generiamo una chiave master.
  4. Decifriamo il database.
  5. Verifica l'integrità dei dati.
  6. Se il file è stato compresso, decomprimilo.
  7. Decifriamo le password.

Le voci 5, 6 e 7 si applicano solo ai file .kdbx!

Firma
BaseSignature (4 byte)

La prima firma è la stessa per i file .kdb e .kdbx. Lei lo dice file dato è un database KeePass:

  • 0x9AA2D903
VersionSignature (4 byte)

La seconda firma indica la versione di KeePass e, pertanto, è diversa per i file .kdb e .kdbx:

  • 0xB54BFB65 - KeePass 1.x (file .kdb).
  • 0xB54BFB66 - Pre-release di KeePass 2.x (file .kdbx).
  • 0xB54BFB67 - KeePass 2.x post-release (file .kdbx).
FileVersion (4 byte)

Solo i file .kdbx hanno una terza firma e contengono la versione del file. Per i file .kdb questa informazione contenuto nell'intestazione del database.


Pertanto, in KeePass 1.x, la lunghezza della firma è di 8 byte e in KeePass 2.x è di 12 byte..

Titolo

Dopo aver firmato il database, inizia l'intestazione.

Intestazione KeePass 1.x.

L'intestazione del file .kdb è costituita dai seguenti campi:

  1. Flag (4 byte): questo campo indica quali tipi di crittografia sono stati utilizzati durante la creazione del file:
    • 0x01 - SHA256;
    • 0x02 - AES256;
    • 0x04 - ARC4;
    • 0x08 - Twofish.
  2. Versione (4 byte): versione del file.
  3. Master Seed (16 byte): utilizzato per creare una chiave master.
  4. Crittografia IV (16 byte): utilizzato per decrittografare i dati.
  5. Numero di gruppi (4 byte): il numero totale di gruppi nel database.
  6. Numero di voci (4 byte): il numero totale di voci nel database.
  7. Content Hash (32 byte): hash decodifica i dati.
  8. Transform Seed (32 byte): utilizzato per creare una chiave master.
  9. Transform Rounds (4 byte): utilizzato per creare una chiave master.
Intestazione KeePass 2.x.

File B.kdbx, ogni campo di intestazione è composto da 3 parti:

  1. ID campo (1 byte): i valori possibili sono compresi tra 0 e 10.
  2. Lunghezza dei dati (2 byte).
  3. Dati ([lunghezza dati] byte)

L'intestazione del file .kdbx è costituita dai seguenti campi:

  • ID \u003d 0x01 Commento: questo campo può essere rappresentato nell'intestazione, ma non era nel mio database.
  • ID \u003d 0x02 ID crittografia: UUID che indica il metodo di crittografia utilizzato (ad esempio, per AES 256 UUID \u003d).
  • ID \u003d 0x03 Flag di compressione: ID dell'algoritmo utilizzato per comprimere il database:
    • 0x00: nessuno
    • 0x01: GZip.
  • ID \u003d 0x04 Master Seed: utilizzato per creare una chiave master.
  • ID \u003d 0x05 Transform Seed: utilizzato per creare una chiave master.
  • ID \u003d 0x06 Round di trasformazione: usato per creare una chiave master.
  • ID \u003d 0x07 Crittografia IV: utilizzato per decrittografare i dati.
  • ID \u003d 0x08 Chiave stream protetta: utilizzata per decrittografare le password.
  • ID \u003d 0x09 Byte inizio stream: primi 32 byte del database decrittografato. Vengono utilizzati per verificare l'integrità dei dati decrittografati e la correttezza della chiave principale. Questi 32 byte vengono generati casualmente ogni volta che le modifiche vengono salvate nel file.
  • ID \u003d 0x0A ID flusso casuale interno: ID dell'algoritmo utilizzato per decrittografare le password:
    • 0x00: nessuno
    • 0x01: ARC4;
    • 0x02: Salsa20.
  • ID \u003d 0x00 Fine dell'intestazione: l'ultimo campo dell'intestazione del database, dopo di che inizia il database stesso.
Generazione chiave principale

La generazione della chiave principale avviene in 2 fasi:

  1. Generazione di chiavi composte;
  2. Genera una chiave master basata su una chiave composita.
1. Generazione chiave composta

L'algoritmo hash SHA256 viene utilizzato per generare la chiave composita. Le tabelle seguenti mostrano lo pseudo-codice per la generazione della chiave composita, in base alla versione di KeePass utilizzata e agli input necessari per decrittografare il database (solo password, solo chiave di file o tutti insieme):


KeePass 1.x



KeePass 2.x



Attiro la tua attenzione sul fatto che se sono necessarie più entità per decrittografare il database (ad esempio una password e una chiave di file), prima devi ottenere l'hash da ciascuna entità, quindi collegarli insieme (concat) e prendere l'hash dalla sequenza combinata.

2. Generazione di una chiave master basata su una chiave composita
  1. Bisogno di cifrare la chiave composita ottenuta sopra usando l'algoritmo AES-256-ECB.
    • Come chiave è necessario utilizzare il seed di trasformazione dall'intestazione.
    • Questa crittografia deve essere eseguita per Transform Rounds (dall'intestazione) volte.
  2. Usando SHA256 otteniamo l'hash dalla chiave composita crittografata.
  3. Colleghiamo il seme principale dall'intestazione con l'hash ricevuto.
  4. Usando SHA256 otteniamo l'hash dalla sequenza combinata - questa è la nostra chiave principale!

Codice pseudo

void GenerateMasterKey () (// crittografa i tempi della chiave composita TransformRounds per (int i \u003d 0; i< TransformRounds; i++) { result = encrypt_AES_ECB(TransformSeed, composite_key); composite_key = result; }

// ottiene l'hash dalla chiave composita crittografata hash \u003d sha256 (composite_key); // combina l'hash risultante con il campo MasterSeed dalla chiave di intestazione \u003d concat (MasterSeed, hash); // ottiene l'hash dalla sequenza combinata sopra master_key \u003d sha256 (chiave);

Decrittazione dei dati KeePass 1.x

Immediatamente dopo l'intestazione, inizia il database crittografato stesso. L'algoritmo di decodifica è il seguente:

  1. L'intero pezzo di file rimanente decifrare
  2. Usando SHA256 otteniamo un hash dai dati decrittati ( i byte del paragrafo precedente non vengono presi in considerazione).
  3. Verifica che l'hash ricevuto corrisponda al campo Hash contenuto dall'intestazione:
    • se l'hash corrisponde, allora abbiamo decifrato con successo il nostro database! Puoi salvare i dati decrittografati come file .xml e assicurarti che tutti gli accessi con password siano decodificati correttamente,
    • se l'hash non corrisponde, significa che è stata fornita la password o il file chiave errati o che i dati sono stati danneggiati.

Codice pseudo

bool DecryptKeePass1x () (// determina la lunghezza del database crittografato // (dimensione file - dimensione firma - dimensione intestazione) db_len \u003d file_size - signature_size - header_size;

// decodifica i dati decrypted_data \u003d decrypt_AES_256_CBC (master_key, EncryptionIV ,crypted_data); // trova il numero di byte "extra" extra \u003d decrypted_data; // ottiene l'hash dai dati (esclusi i byte extra!) content_hash \u003d sha256 (decrypted_data [:( db_len - extra)]); // verifica che l'hash ricevuto corrisponda al campo ContentHash dall'intestazione se (СontentHash \u003d\u003d content_hash) restituisce true; altrimenti restituisce false;

Decrittazione dei dati KeePass 2.x

Immediatamente dopo il campo End of Header dell'intestazione, inizia il database crittografato stesso. L'algoritmo di decodifica è il seguente:

  1. L'intero pezzo di file rimanente decifrare usando l'algoritmo AES-256-CBC.
    • Come chiave, utilizzare la chiave principale generata sopra.
    • Usiamo Encryption IV dall'intestazione come vettore di inizializzazione.
  2. Gli ultimi pochi byte del database decrittografato sono ridondanti: si tratta di diversi byte identici alla fine del file (riempimento). Per eliminare la loro influenza, è necessario leggere l'ultimo byte del database decrittografato: questo è il numero di byte "extra" che non dovrebbero essere presi in considerazione in futuro.
  3. Verificare che i primi 32 byte del database decrittografato corrispondano al campo Byte di inizio flusso dell'intestazione:
    • se i dati corrispondono, abbiamo generato la chiave master corretta,
    • se i dati non corrispondono, significa che è stata fornita la password errata, il file chiave o WUA o che i dati sono stati danneggiati.
  4. Se l'elemento precedente ha esito positivo, eliminare i primi 32 byte. Controlla il campo Flag di compressione dell'intestazione. Se è stata utilizzata la compressione del file GZip, decomprimere i dati.
  5. Procediamo a verificare l'integrità dei dati. I dati sono divisi in blocchi, la dimensione massima del blocco è 1024 * 1024. Ogni blocco di dati inizia con un'intestazione. La struttura dell'intestazione è la seguente:
    • ID blocco (4 byte): numero di blocco che inizia da 0;
    • Hash di dati di blocco (32 byte);
    • Dimensione del blocco (4 byte).
  6. Pertanto, la procedura è la seguente:
    • Leggi l'intestazione del blocco.
    • Leggi i dati di blocco.
    • Usando SHA256 otteniamo un hash dai dati del blocco.
    • Verifica che l'hash corrisponda all'hash dall'intestazione.
  7. Eseguiamo la sequenza di azioni dal paragrafo precedente per ciascun blocco di dati. Se i dati in tutti i blocchi vengono salvati, vengono eliminate tutte le intestazioni dei blocchi e la sequenza risultante è il database decrittografato.
  8. ATTENZIONE: anche nel file .kdbx decodificato, le password possono essere crittografate.
  9. Salviamo i dati decrittografati e decapitati come file .xml.
  10. Troviamo in esso tutti i nodi con il nome "Valore", l'attributo "Protetto", il valore di questo attributo "Vero" e prendiamo i valori di questi nodi. Queste sono ancora password crittografate.
  11. Decodifica tutte le password crittografate utilizzando l'algoritmo base64decode.
  12. Nel campo ID flusso casuale interno dell'intestazione, esaminiamo l'algoritmo utilizzato per crittografare le password. Nel mio caso, era Salsa20.
  13. Generiamo una sequenza pseudo-casuale di 64 byte usando l'algoritmo Salsa20:
    • Come chiave, usiamo l'hash del campo Chiave di flusso protetta dell'intestazione ottenuta usando SHA256.
    • Come vettore di inizializzazione, utilizziamo la sequenza costante di 8 byte 0xE830094B97205D2A.
  14. IMPORTANTE: Utilizzando questa sequenza di 64 byte, è possibile decrittografare esattamente 64 caratteri in ordine di password decodificate uniti. Se ciò non è sufficiente per decrittografare tutte le password, è necessario generare la seguente sequenza pseudo-casuale e continuare a decrittografare password, ecc. finire.
  15. Per ottenere la password finale, è necessario effettuare una decodifica XOR con password base64decode con la sequenza pseudo-casuale ottenuta nel paragrafo precedente (la sequenza di azioni è presentata più chiaramente nello pseudo-codice seguente).
  16. MOLTO IMPORTANTE: le password devono essere decifrate in ordine! È nell'ordine in cui sono presentati file xml.
  17. Troviamo nel file xml tutti i nodi con il nome "Valore", l'attributo "Protetto", il valore di questo attributo "Vero":
    • Sostituisci il valore dell'attributo con "Falso".
    • Il valore del nodo viene sostituito con la password decodificata.
  18. E solo ora abbiamo ottenuto il database KeePass 2.x completamente decifrato! Evviva! \u003d)

Codice pseudo

bool DecryptKeePass2x () (// determina la lunghezza del database crittografato // (dimensione file - dimensione firma - dimensione intestazione) db_len \u003d file_size - signature_size - header_size;

// decodifica i dati decrypted_data \u003d decrypt_AES_256_CBC (master_key, EncryptionIV ,crypted_data); // trova il numero di byte "extra" extra \u003d decrypted_data; db_len - \u003d extra; // verifica che i primi 32 byte del database decrittografato // corrispondano al campo StreamStartBytes dell'intestazione se (StreamStartBytes! \u003d decrypted_data) restituisce false; // scarta questi 32 byte db_len - \u003d 32; decrypted_data + \u003d 32; // controlla il campo CompressionFlag dell'intestazione // se il file è stato compresso, decomprimilo se (CompressionFlag \u003d\u003d 1) decomprimere (decrypted_data); // controlla l'integrità dei dati while (db_len\u003e (BlockHeaderSize)) (// leggi l'intestazione del database block_data \u003d decrypted_data; decrypted_data + \u003d BlockHeaderSize; db_len - \u003d BlockHeaderSize; if (block_data.blockDataSize \u003d\u003d 0) (break;) // get hash blocco dati hash \u003d sha256 (decrypted_data); // verifica che l'hash corrisponda all'hash dell'intestazione if (block_data.blockDataHash \u003d\u003d hash) (pure_data + \u003d decrypted_data; decrypted_data + \u003d block_data.blockDataSize; db_len. block ;) else (return false;)) // salva i dati decifrati e senza testa come file xml xml \u003d pure_data.ToXml (); // ottiene l'hash dal campo ProtectedStreamKey della chiave di intestazione \u003d sha256 (ProtectedStreamKey); // inizializza l'algoritmo Salsa20 IV_SALSA \u003d 0xE830094B97205D2A; salsa.setKey (chiave); salsa.setIv (IV_SALSA); stream_pointer \u003d 0; key_stream \u003d salsa.generateKeyStream (); // decodifica le password mentre (true) (// trova il nodo successivo in una riga con il nome "Valore", // attributo "Protetto", valore dell'attributo "Vero" nodo \u003d xml.FindNextElement ("Valore", "Protetto", "Vero" ); if (node \u200b\u200b\u003d\u003d NULL) (break;) // accetta il valore del nodo e decodifica utilizzando l'algoritmo base64decode decoded_pass \u003d base64decode (node.value); // decodifica la password utilizzando la sequenza pseudocasuale key_stream per (int i \u003d 0; i< len(decoded_pass); i++) { decoded_pass[i] = decoded_pass[i] ^ key_stream; stream_pointer++; //если 64 байтной псевдослучайной последовательности не хватило, //генерируем еще одну последовательность if (stream_pointer >\u003d 64) (key_stream \u003d salsa.generateKeyStream (); stream_pointer \u003d 0;)) // sostituisce il valore dell'attributo "Protetto" con "Falso" node.attribute.value \u003d "(! LANG: False"; //заменяем зашифрованный пароль дешифрованным node.value = decoded_pass; } return true; !}


Questo è fondamentalmente tutto ciò che volevo dire. Spero che questa guida salverà qualcuno da inutili mal di testa e sarà informativo e informativo \u003d)

tag:

  • crittografia
  • keePass
  • aES-256
  • sha256
Aggiungere etichette

LA CAMPANA

C'è chi legge questa notizia prima di te.
Iscriviti per ricevere articoli freschi.
E-mail
Nome
Cognome
Come vuoi leggere The Bell
Niente spam