LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

Utilizzando Internet e i computer, abbiamo sempre più password. Queste sono password e accessi alla casella di posta, a Skype, ai siti su cui ci siamo registrati (VKontakte, compagni di classe, ecc.), e gli utenti più avanzati usano anche password per vari programmi, password FTP, chiavi di licenza e questo l'elenco può essere continuato a lungo. Più password abbiamo (ovviamente, anche per accedervi), più è ovvio che abbiamo bisogno di un qualche tipo di archiviazione affidabile per loro. Naturalmente, possiamo creare un documento .txt e registrare e archiviare tutto lì. Forse, leggendo queste righe, pensi: "Questo è esattamente quello che sto facendo, perché è brutto?" Forse non è male, ma non è conveniente, inoltre, ce ne sono di più Il modo migliore memorizzazione delle password. Sono sicuro che apprezzerai. In questo modo è utilizzando un gestore di password chiamato KeePass... Quali sono i suoi vantaggi?

1) Tutte le tue password sono in un programma che è protetto in modo affidabile dall'hacking con una password e allo stesso tempo sono crittografate con l'algoritmo AES (cifratura a blocchi a 128 bit utilizzando una chiave a 256 bit). Quando si accede al programma, è necessario inserire una password, altrimenti non si avrà accesso. Si raccomanda che la password sia lunga almeno 20 caratteri, se un utente malintenzionato vuole indovinare una tale password, avrà bisogno di decenni; quasi nessuno sarà interessato a indovinare una password così lunga;
2) Interfaccia comoda programmi, è possibile combinare i gruppi in password (ad esempio, il gruppo " Social networks", Gruppo" Posta ");
3) Funzione di composizione automatica: il programma può inserire automaticamente un nome utente e una password;
4) Versione portatile KeePass ti consente di portare comodamente con te tutte le tue password su un'unità flash USB;
5) KeePass ha un generatore di password, quindi ora non devi inventarle tu. Il generatore di password contiene anche altre impostazioni, che consente di specificare quali caratteri utilizzare o non utilizzare e quante volte devono comparire nella stessa password.

Questi sono i principali vantaggi. Ora diamo un'occhiata a come lavorare con il programma KeePass. Iniziamo installando e russificando KeePass. (Scarica il software 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 "Russo" e copialo nella cartella con programma installato... In genere il percorso è "C / Programm Files / KeePass Password Safe". Ma potrebbe esserci un altro modo, a seconda delle impostazioni.

Quindi lanciamo il programma. Al primo avvio, ci sarà una finestra come questa:

Ci viene chiesto se includere aggiornamento automatico... Naturalmente, questo deve essere fatto, quindi selezioniamo la prima opzione: "Abilita (consigliato)". 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 scegliamo la lingua russa

Ecco come KeePass viene russificato.

Ora iniziamo a creare il nostro database di password. Per fare ciò, premi: File / Nuovo o semplicemente Ctrl + N.

Trova un nome per il nostro database e fai clic su "Salva". Fai attenzione a dove salvi il database delle password, poiché d'ora in poi tutte le tue 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 altre situazioni in cui avrai bisogno di un file di database delle password. Pertanto, tienilo dove puoi trovarlo facilmente. Prendi questo punto importante estremamente attentamente.

Qui dobbiamo trovare una password principale che verrà utilizzata quando si accede al programma. Deve essere lungo almeno 20 caratteri, come menzionato all'inizio dell'articolo. Non deve essere utilizzata una password di meno di 20 caratteri; non lesinare sul numero di caratteri nella password. Ora questa sarà l'unica password che dovrai ricordare, altre verranno memorizzate nel programma. Seleziona anche la casella accanto a "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. Ecco come KeePass lo protegge. Fare 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 entrare nel database delle password. Non devi perderli, altrimenti non potrai riottenere l'accesso alle password salvate in KeePass.

In questa finestra, devi generare numeri casuali. Anche se sembra complicato, è molto semplice da fare. Sposta il cursore del mouse sull'area grigia e verranno generati numeri casuali. "Quanto tempo ci vuole per spostare il mouse sull'area grigia?" - tu chiedi. Notare che c'è un'area vuota in basso (la seconda freccia la indica). Muovi il mouse in ordine casuale fino a riempire quest'area.

Quale dovrebbe essere il risultato? Vedi 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!

Adesso è tutto pronto anche qui. Fare clic su "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, in questo programma le password possono essere ordinate in gruppi. In esso, per impostazione predefinita, sono già stati creati gruppi per l'archiviazione di password e record di password di prova. Gruppi a sinistra e password a destra. Naturalmente, non abbiamo bisogno di record di test. Li eliminiamo.

Eliminiamo anche i gruppi. Se i gruppi già esistenti ti soddisfano, non devi eliminarli. Cancelleremo i gruppi esistenti e ne creeremo altri nuovi. Per eliminare un gruppo, fai clic su di esso clic destro mouse e selezionare la voce "Elimina gruppo".

Quindi, i gruppi sono stati eliminati e ora ne creiamo di nuovi. Per farlo, vai su Modifica/Aggiungi gruppo

Inserisci il nome del gruppo. Lascia entrare questo gruppo memorizzeremo le password per il nostro cassette postali... Chiamiamo questo gruppo di password - "Mail". Immagine dello schermo:

Come puoi vedere, abbiamo un gruppo di password che abbiamo creato con il nome "Mail". Un nome ben scelto rende più facile capire a cosa si riferiscono le password che vi sono memorizzate. Conclusione: dai nomi chiari e troverai la voce richiesta più facile e veloce.

Il prossimo compito è quello di inserire una voce nel gruppo. Come avrai intuito, il record memorizzerà il login e la password per la posta, oltre ad altre cose utili. Parliamo ancora un po' di loro. Ora vediamo come aggiungere una voce a un gruppo. Per fare ciò, vai su "Modifica / Aggiungi record ..."

Abbiamo aperto la finestra "Aggiungi record"

Compiliamo il modulo, 1) troviamo un nome per la voce, 2) il nome è un login, 3) cancelliamo la password che esiste già e inseriamo quella che usiamo per la posta, puoi anche impostare un link alla pagina in cui sarà necessario inserire login e password e scrivere ulteriori 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 post creato.

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

Riassumiamo il lavoro svolto. Abbiamo aggiunto tutta una voce e questo è sufficiente per capire come va questo processo. Ora trasferirai allo stesso modo tutte le tue password a questo programma. In questo modo creerai il tuo database e sarai in grado di trovare comodamente e rapidamente le combinazioni di nomi utente e password di cui hai bisogno.

Come posso "estrarre" login e password dal record ora? Fare clic con il pulsante destro del mouse sulla voce. Vedi 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 più basilari. Ma c'è un altro molto caratteristica utile chiamato "Avvia composizione automatica". Come lo uso? Innanzitutto, mettiamo il cursore nel campo di accesso nel modulo sul sito, quindi andiamo al record e selezioniamo "Avvia digitazione 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. È nella scheda degli strumenti. Lì tutto è intuitivamente chiaro, penso che sarà facile capirlo.

Qui è dove possiamo finire. Tanti auguri a te.

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

Se qualcuno non sa cosa sia KeePass, allora, in breve, è un programma di gestione delle password che consente di memorizzare una password principale ricordandola. Puoi leggere di più sui gestori di password sul nostro.

Fino a poco tempo, hackerare KeePass era impossibile, ma pochi giorni fa un certo Denis Andzakovic ha postato sulla rete utilità gratuita KeeFarce, che consente a un utente malintenzionato di rubare le password di un famoso gestore di password.

Puoi scaricare KeeFarce gratuitamente a questo link diretto.

Hackerare KeePass con KeeFarce

Per hackerare il manager password KeePass ed è necessario unire le password in modo che sia aperto, ad es. in modo che l'utente che ha effettuato l'accesso con la password principale non chiuda il programma per qualche tempo.

KeeFarce è molto facile da usare. Basta copiare i file nella cartella KeePass:

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

Ed esegui il file eseguibile KeeFarce.exe


Dopo il lancio, il programma inietta in processo in esecuzione KeePass. L'utilità quindi esporta tutte le password in file csv nella cartella appdata.

Come proteggersi dagli hack di KeePass

Prima di tutto, controlla il tuo computer per Trojan (), perché questo schema può essere implementato se l'attaccante ha accesso remoto al tuo computer o avere accesso fisico lasciando aperto il gestore di password per un breve periodo lontano dal computer.

In secondo luogo, e soprattutto, non lasciare aperto il gestore di password per lunghi periodi di tempo. Siamo entrati nel programma, abbiamo estratto il nome utente e la password richiesti, abbiamo effettuato l'accesso al sito e chiuso immediatamente il gestore. Impara di più riguardo impostazione corretta Puoi leggere KeePass nell'articolo ““. A proposito, ho parlato di questa minaccia e ho consigliato di ridurre il tempo per la chiusura automatica del programma durante il tempo di inattività, anche prima che apparisse questa utility.

E gli altri gestori di password?

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

Dovresti smettere di usare 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 al suo interno non è così sicura, ma questo vale per la versione classica del programma. Pertanto, in questo video, prenderemo in considerazione la versione professionale di KeePass. Inoltre, è gratuito come la versione classica. Se è la prima volta che senti parlare di questo programma, ti consiglio di guardare prima la mia recensione della versione classica in modo da non avere domande inutili.

E quindi, cosa faremo in questa lezione:

Iniziamo a craccare la versione classica di KeePass Password Safe tramite Key logger;

Importiamo la base dalla versione classica a quella professionale;

Consideriamo le principali differenze e innovazioni;

E proveremo a hackerare la versione professionale del Key logger.

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

L'ho già fatto e ho anche creato un database di prova per la versione classica. Sopra questo momento, ho lo spyware LanAgent in esecuzione sul mio sistema. Questo programma appartiene ai Key logger, ad es. programmi che registrano tutte le azioni dell'utente sul computer. Quindi, ora scopriremo quanto sia affidabile questo programma protegge le nostre password!

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

Ora vediamo cosa è stato in grado di intercettare LanAgent, aggiornare i registri e vedere che il programma ha intercettato sia la chiave principale che il login e la password per il sito Web Rutracker. Anche se proviamo a inserire dati tramite gli appunti, il programma intercetterà anche il contenuto degli appunti. D'altra parte, la password del database è inutile se l'attaccante non ha nulla a cui applicarla, ad es. la base si trova sulla nostra unità flash. Ma in questa situazione, i programmi possono sfondo copiare il contenuto dell'unità flash o i file a cui si è avuto accesso, e quindi impercettibilmente per noi, il database può essere copiato e tutte le password aperte utilizzando la chiave principale!

In generale, possiamo trarre la seguente conclusione, la versione classica è adatta per non memorizzare le password in testo normale, ma quando si utilizza lo spyware, non sarà di aiuto. E per eliminare questa lacuna, la versione professionale ci aiuterà!

1) Russificare il programma per un lavoro più conveniente ( www. ricordo. Informazioni \ Traduzioni \ inglese\ 2.28 \ decomprimi nella cartella con il programma \Visualizzazione \ Modificare Lingua \ inglese)

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

3) Trasferiremo 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 diamo un'occhiata a cosa c'è di nuovo e interessante in questa versione. Non prenderò in considerazione tutte le novità, ci vorrà molto tempo, ma mi concentrerò sulle più, a mio avviso, interessanti:

1) Inserimento della password principale in modalità sicura, che permette di bloccare il Keylogger, all'inserimento della password principale ( Servizio \ Impostazioni \ Sicurezza \ Inserisci la password principale in modalità protetta)

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

3) Il linguaggio di auto-digitazione è più facile da usare rispetto alla versione classica. Non ne ho parlato nella recensione della versione classica, quindi vediamo come può essere d'aiuto!

Per impostazione predefinita, durante l'inserimento automatico viene attivata la seguente sequenza di comandi. Login, TAB, password e ENTER vengono inseriti nel campo attivo. Questa sequenza può essere vista se apri voce \ Composizione automatica \ Usa la seguente sequenza... E questa opzione si adatta per la maggior parte del tempo, mentre si avvicinava all'ingresso di rutracker.

Tuttavia, non è adatto per accedere alla posta tramite il sito Web www.mail.ru. Poiché la mia casella di prova non è su mail.ru, ma bk.ru, per questo sito puoi inserire un algoritmo di input individuale (NOME UTENTE) (TAB) (PASSWORD) (TAB) (GI) (GI) (GI) (TAB) (ENTER).

L'elenco dei comandi è riportato qui, c'è anche un aiuto, sebbene sia in inglese, ma se lo desideri, puoi capirlo. Dalla mia pratica, ti consiglierei di usare a volte il comando (RITARDO 1000), questo è un ritardo di comando tra i comandi. Succede solo che con una 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 - quando questo metodo, il programma non inserisce dati in modo esplicito, prende parte del login e della password dagli appunti e ne inserisce parte in simboli.

Ora controlliamo se LanAgent può decifrare le nostre password!? Come puoi vedere, non è stato ottenuto nulla e, quindi, il programma ha funzionato perfettamente e ora le tue password sono protette il più possibile!

  • Tutorial

L'altro giorno avevo bisogno di implementare la decrittazione del database KeePass. Sono rimasto stupito dal fatto che non ci sia un singolo documento e non un singolo articolo con informazioni complete sull'algoritmo di decrittazione 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 del database KeePass (.kdb, .kdbx) è composta da 3 parti:

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

Decifrare il database KeePass

Sequenziamento:
  1. Leggiamo la firma del database.
  2. Leggiamo l'intestazione del database.
  3. Generiamo una chiave principale.
  4. Decifriamo il database.
  5. Verifichiamo l'integrità dei dati.
  6. Se il file è stato compresso, scompattalo.
  7. Decodifichiamo le password.

Gli articoli 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 dice che questa vitaè un database KeePass:

  • 0x9AA2D903
Firma versione (4 byte)

La seconda firma indica la versione KeePass ed è quindi 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-rilascio (file .kdbx).
FileVersion (4 byte)

Solo i file .kdbx hanno una terza firma e contengono una 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..

Intestazione

Dopo aver firmato il database, inizia l'intestazione.

Intestazione KeePass 1.x

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

  1. Flags (4 byte): questo campo indica quali tipi di crittografia sono stati utilizzati durante la creazione del file:
    • 0x01 - SHA256;
    • 0x02 - AES256;
    • 0x04 - ARC4;
    • 0x08 - Due pesci.
  2. Versione (4 byte): la versione del file.
  3. Master Seed (16 byte): utilizzato per creare una chiave principale.
  4. Crittografia IV (16 byte): utilizzata 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 dei dati decrittografati.
  8. Transform Seed (32 byte): utilizzato per creare una chiave principale.
  9. Transform Rounds (4 byte): utilizzato per creare una chiave principale.
Intestazione KeePass 2.x

Nei file kdbx, ogni campo di intestazione è composto da 3 parti:

  1. ID campo (1 byte): Valori possibili da 0 a 10.
  2. Lunghezza dati (2 byte).
  3. Dati ([lunghezza dati] byte)

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

  • ID = 0x01 Commento: questo campo può essere presente nell'intestazione, ma non era nel mio database.
  • ID = 0x02 Cipher ID: UUID che indica il metodo di crittografia utilizzato (ad esempio, per AES 256 UUID =).
  • ID = 0x03 Compression Flags: ID dell'algoritmo utilizzato per comprimere il database:
    • 0x00: Nessuno;
    • 0x01: GZip.
  • ID = 0x04 Master Seed: utilizzato per creare una chiave principale.
  • ID = 0x05 Transform Seed: utilizzato per creare una chiave principale.
  • ID = 0x06 Transform Rounds: utilizzato per creare una chiave principale.
  • ID = 0x07 Crittografia IV: utilizzato per decrittografare i dati.
  • ID = 0x08 Chiave di flusso protetta: utilizzata per decrittografare le password.
  • ID = 0x09 Stream Start Byte: primi 32 byte del database decrittografato. Sono utilizzati per verificare l'integrità dei dati decifrati e la correttezza della chiave master. Questi 32 byte vengono generati casualmente ogni volta che le modifiche vengono salvate nel file.
  • ID = 0x0A Inner Random Stream ID: ID dell'algoritmo utilizzato per decrittografare le password:
    • 0x00: Nessuno;
    • 0x01: ARC4;
    • 0x02: Salsa20.
  • ID = 0x00 End of Header: L'ultimo campo dell'intestazione del database, seguito dal database stesso.
Generazione chiave master

La chiave principale viene generata in 2 fasi:

  1. Generazione di chiavi composite;
  2. Generazione di una chiave principale basata su una chiave composita.
1. Generazione di una chiave composita

L'algoritmo di hash SHA256 viene utilizzato per generare la chiave composita. Le tabelle seguenti forniscono uno pseudocodice per la generazione di una chiave composita in base alla versione di KeePass utilizzata e all'input richiesto per decrittografare il database (solo password, solo file chiave o entrambi):


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 un file chiave), è necessario prima ottenere un hash da ciascuna entità, quindi concatenarle insieme (concat) e prendi un hash dalla sequenza combinata.

2. Generazione di una chiave principale basata su una chiave composta
  1. Necessario crittografare la chiave composta ottenuta sopra utilizzando l'algoritmo AES-256-ECB.
    • Usa il seme di trasformazione dall'intestazione come chiave.
    • Questa crittografia deve essere eseguita Trasforma turni (dall'intestazione) volte.
  2. Usando SHA256, otteniamo l'hash dalla chiave composita crittografata.
  3. Colleghiamo il seme principale dall'intestazione con l'hash risultante.
  4. Con SHA256 otteniamo l'hash dalla sequenza combinata - questa è la nostra chiave principale!

Pseudocodice

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

// ottiene l'hash dalla chiave composita crittografata hash = sha256 (composite_key); // concatena l'hash risultante con il campo MasterSeed dall'header key = concat (MasterSeed, hash); // ottiene un hash dalla sequenza combinata sopra master_key = sha256 (key);

Decifrare i dati di KeePass 1.x

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

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

Pseudocodice

bool DecryptKeePass1x () (// determina la lunghezza del database crittografato // (dimensione file - dimensione firma - dimensione intestazione) db_len = dimensione_file - dimensione_firma - dimensione_intestazione;

// decrittografa i dati decrypted_data = decrypt_AES_256_CBC (master_key, EncryptionIV,crypted_data); // scopri il numero di byte "extra" extra = decrypted_data; // ottiene un hash dai dati (esclusi i byte extra!) content_hash = sha256 (decrypted_data [:( db_len - extra)]); // controlla che l'hash ricevuto corrisponda al campo СontentHash dall'intestazione if (СontentHash == content_hash) return true; altrimenti restituisce false;

Decifrare i dati di KeePass 2.x

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

  1. L'intero pezzo rimanente del file decifrare utilizzando l'algoritmo AES-256-CBC.
    • Come chiave, usiamo la chiave principale generata sopra.
    • Usiamo la crittografia IV dall'intestazione come vettore di inizializzazione.
  2. Gli ultimi byte del database decifrato sono superflui: si tratta di diversi byte identici alla fine del file (imbottitura). Per eliminare la loro influenza, è necessario leggere l'ultimo byte del database decrittografato: questa è la quantità di byte "extra" che non dovrebbero essere presi in considerazione in futuro.
  3. Verifica che i primi 32 byte del database decrittografato corrispondano al campo di intestazione Stream Start Bytes:
    • se i dati corrispondono, abbiamo generato la chiave principale corretta,
    • Se i dati non corrispondono, significa che è stata fornita una password, un file chiave o un file WUA errati oppure che i dati sono stati danneggiati.
  4. Se il passaggio precedente ha esito positivo, scartiamo i primi 32 byte. Controllo del campo di intestazione Flag di compressione. Se hai utilizzato la compressione GZip del file, decomprimi i dati.
  5. Iniziamo 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 blocco a partire da 0;
    • Blocco dati hash (32 byte);
    • Dimensione del blocco (4 byte).
  6. Pertanto, la procedura è la seguente:
    • Leggiamo l'intestazione del blocco.
    • Leggiamo i dati del blocco.
    • Usando SHA256, otteniamo un hash dai dati del blocco.
    • Verifichiamo che l'hash corrisponda all'hash dell'intestazione.
  7. Eseguiamo la sequenza di azioni del paragrafo precedente per ogni 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 Nota: anche in un file .kdbx decifrato, le password possono essere crittografate.
  9. Salviamo i dati decifrati 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. Decodifichiamo tutte le password crittografate utilizzando l'algoritmo base64decode.
  12. Nel campo Inner Random Stream ID dell'intestazione, vedere quale algoritmo è stato utilizzato per crittografare le password. Nel mio caso, era Salsa20.
  13. Generiamo una sequenza pseudo-casuale di 64 byte utilizzando l'algoritmo Salsa20:
    • Come chiave, utilizziamo l'hash del campo di intestazione Protected Stream Key ottenuto utilizzando SHA256.
    • Usiamo la sequenza di 8 byte costante 0xE830094B97205D2A come vettore di inizializzazione.
  14. IMPORTANTE: Con questa sequenza di 64 byte, puoi decifrare esattamente 64 caratteri in ordine concatenati insieme password decodificate... Se questo non è sufficiente per decifrare tutte le password, è necessario generare la successiva sequenza pseudo-casuale e continuare a decifrare le password, ecc. finire.
  15. Per ottenere la password finale, è necessario eseguire l'XOR della password decodificata in base64decode con la sequenza pseudo-casuale ottenuta nel paragrafo precedente (la sequenza delle azioni è più chiara nello pseudocodice sotto).
  16. MOLTO IMPORTANTE: le password devono essere decifrate in ordine! Esattamente nella sequenza in cui sono presentati in file xml.
  17. Troviamo nel file xml tutti i nodi con il nome "Value", l'attributo "Protected", il valore di questo attributo è "True":
    • Modificare il valore dell'attributo in "Falso".
    • Sostituiamo il valore del nodo con la password decifrata.
  18. E solo ora abbiamo un database KeePass 2.x completamente decifrato! Evviva! =)

Pseudocodice

bool DecryptKeePass2x () (// determina la lunghezza del database crittografato // (dimensione file - dimensione firma - dimensione intestazione) db_len = dimensione_file - dimensione_firma - dimensione_intestazione;

// decrittografa i dati decrypted_data = decrypt_AES_256_CBC (master_key, EncryptionIV,crypted_data); // scopri il numero di byte "extra" extra = decrypted_data; db_len - = extra; // controlla che i primi 32 byte del database decrittografato // corrispondano al campo di intestazione StreamStartBytes if (StreamStartBytes! = decrypted_data) return false; // scarta questi 32 byte db_len - = 32; decrypted_data + = 32; // controlla il campo dell'intestazione di CompressionFlag // se il file è stato compresso, scompattalo if (CompressionFlag == 1) unzip (decrypted_data); // verifica l'integrità dei dati while (db_len> (BlockHeaderSize)) (// legge l'intestazione del database block_data = decrypted_data; decrypted_data + = BlockHeaderSize; db_len - = BlockHeaderSize; if (block_data.blockDataSize == 0) (break;) // ottiene l'hash dei dati del blocco hash = sha256 (decrypted_data); // verifica che l'hash ricevuto corrisponda all'hash dall'intestazione if (block_data.blockDataHash == hash) (pure_data + = decrypted_data; decrypted_data + = block_data.blockDataSize; db_data.lenb - = blockData ;) else (return false;)) // salva i dati decifrati e decifrati come file xml xml = pure_data.ToXml (); // ottiene un hash dal campo dell'intestazione ProtectedStreamKey key = sha256 (ProtectedStreamKey); // inizializza l'algoritmo Salsa20 IV_SALSA = 0xE830094B97205D2A; salsa.setKey (chiave); salsa.setIv (IV_SALSA); stream_pointer = 0; key_stream = salsa.generateKeyStream (); // decrittografa le password while (true) (// trova il nodo successivo nell'ordine con il nome "Value", // con l'attributo "Protected", il valore dell'attributo "True" node = xml.FindNextElement ("Value" , "Protected", "True" ); if (node ​​== NULL) (break;) // prende il valore del nodo e lo decodifica utilizzando l'algoritmo base64 decoded_pass = base64decode (node.value); // decodifica la password utilizzando una sequenza pseudo-casuale key_stream for (int i = 0; i< len(decoded_pass); i++) { decoded_pass[i] = decoded_pass[i] ^ key_stream; stream_pointer++; //если 64 байтной псевдослучайной последовательности не хватило, //генерируем еще одну последовательность if (stream_pointer >= 64) (key_stream = salsa.generateKeyStream (); stream_pointer = 0;)) // sostituisci il valore dell'attributo "Protetto" con "False" node.attribute.value = "(! LANG: False"; //заменяем зашифрованный пароль дешифрованным node.value = decoded_pass; } return true; !}


Questo è, in generale, tutto ciò che volevo dire. Spero che questa guida salverà qualcuno da inutili mal di testa e sarà informativa e istruttiva =)

tag:

  • crittografia
  • ricordo
  • aes-256
  • sha256
Aggiungere etichette

LA CAMPANA

C'è chi ha letto questa notizia prima di te.
Iscriviti per ricevere gli ultimi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam