LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
E-mail
Nom
Nom de famille
Comment voulez-vous lire La cloche
Pas de spam

En utilisant Internet et les ordinateurs, nous avons de plus en plus de mots de passe. Ce sont des mots de passe et des connexions à la boîte aux lettres, à Skype, aux sites sur lesquels nous nous sommes inscrits (VKontakte, camarades de classe, etc.), et les utilisateurs plus avancés utilisent également des mots de passe pour divers programmes, des mots de passe FTP, des clés de licence et cela la liste peut être continué pendant longtemps. Plus nous avons de mots de passe (bien sûr, également des connexions à eux), plus il est évident que nous avons besoin d'une sorte de stockage fiable pour eux. Bien sûr, nous pouvons créer un document .txt et enregistrer et stocker tout là-bas. Peut-être qu'en lisant ces lignes, vous pensez : « Je viens de faire ça, pourquoi est-ce mauvais ? ». Peut-être pas mal, mais ce n'est pas pratique, d'ailleurs il y a plus La meilleure voie stockage des mots de passe. Je suis sûr que vous l'aimerez. Cette façon est en utilisant un gestionnaire de mots de passe appelé KeePass... Quels sont ses avantages ?

1) Tous vos mots de passe sont dans le programme, qui est protégé de manière fiable contre le piratage avec un mot de passe et en même temps, ils sont cryptés avec l'algorithme AES (chiffrement par bloc 128 bits utilisant une clé 256 bits). Lorsque vous entrez dans le programme, vous devez entrer un mot de passe, sinon vous n'aurez pas accès. Il est recommandé que le mot de passe comporte au moins 20 caractères ; si un attaquant veut deviner un tel mot de passe, il lui faudra des décennies ; presque personne ne sera intéressé à deviner un mot de passe aussi long ;
2) Interface pratique programmes, vous pouvez combiner des groupes en mots de passe (par exemple, le groupe " Réseaux sociaux", Groupe" Courrier ");
3) Fonction de numérotation automatique - le programme peut saisir automatiquement un nom d'utilisateur et un mot de passe ;
4) Version portable KeePass vous permet de transporter facilement tous vos mots de passe avec vous sur une clé USB ;
5) KeePass dispose d'un générateur de mots de passe, vous n'avez donc plus besoin de les inventer vous-même. Le générateur de mot de passe contient également paramètres additionnels, vous permettant de spécifier quels caractères utiliser ou ne pas utiliser et combien de fois ils doivent apparaître dans le même mot de passe.

Ce sont les principaux avantages. Voyons maintenant comment travailler avec le programme KeePass. Commençons par installer et russifier KeePass. (Téléchargez le logiciel KeePass à la fin de cet article)... L'installation est intuitive, nous ne nous attarderons donc pas dessus. Après l'installation, le programme doit être russifié. Pour ce faire, dans l'archive que vous avez téléchargée, recherchez le fichier "Russe" et copiez-le dans le dossier avec programme installé... Habituellement, le chemin est "C / Programm Files / KeePass Password Safe". Mais il peut y avoir un autre moyen, en fonction de vos paramètres.

Ensuite, nous lançons le programme. Lorsque vous le démarrez pour la première fois, il y aura une fenêtre comme celle-ci :

On nous demande s'il faut inclure mise à jour automatique... Bien sûr, cela doit être fait, nous sélectionnons donc la première option: "Activer (recommander)". Nous verrons la fenêtre principale du programme :

KeePass est toujours en anglais et vous devez terminer la russification. Pour le compléter, allez dans : Afficher / Changer de langue. Capture d'écran:

Ici, nous choisissons la langue russe

C'est ainsi que KeePass est russifié.

Commençons maintenant à créer notre base de données de mots de passe. Pour ce faire, appuyez sur : Fichier / Nouveau, ou simplement Ctrl + N.

Trouvez un nom pour notre base de données et cliquez sur "Enregistrer". Faites attention à l'endroit où vous enregistrez la base de données de mots de passe, car à partir de maintenant, tous vos mots de passe seront stockés ici. Par exemple, si vous souhaitez transférer la base de données de mots de passe sur un autre ordinateur, vous devrez copier ce fichier. Il peut y avoir d'autres situations où vous aurez besoin d'un fichier de base de données de mots de passe. Par conséquent, gardez-le où vous pouvez le trouver facilement. Prends ça point important extrêmement soigneusement.

Ici, nous devons trouver un mot de passe principal qui sera utilisé lors de l'entrée dans le programme. Il doit comporter au moins 20 caractères, comme mentionné au début de l'article. Un mot de passe de moins de 20 caractères ne doit pas être utilisé ; ne lésinez pas sur le nombre de caractères du mot de passe. Maintenant, ce sera le seul mot de passe que vous devez retenir, d'autres seront stockés dans le programme. Cochez également la case à côté de "Fichier clé", sans cela, même en connaissant le mot de passe, vous ne pourrez pas entrer dans le programme. Cette étape rendra plus difficile le piratage de votre base de données de mots de passe si quelqu'un essaie de le faire. C'est ainsi que KeePass le protège. Cliquez sur "Nouveau".

Ici, nous définissons le nom du fichier de clé et l'enregistrons. Rappelez-vous où vous l'enregistrez. Fichier de base de données de mots de passe et fichier clé- ce sont deux fichiers principaux qui sont nécessaires pour entrer dans la base de données des mots de passe. Vous ne devez pas les perdre, sinon vous ne pourrez pas récupérer l'accès aux mots de passe enregistrés dans KeePass.

Dans cette fenêtre, vous devez générer des nombres aléatoires. Bien que cela semble compliqué, c'est très simple à faire. Déplacez le curseur de la souris sur la zone grise et ainsi des nombres aléatoires seront générés. « Combien de temps faut-il pour déplacer la souris sur la zone grise ? » - tu demandes. Notez qu'il y a une zone vide en bas (la deuxième flèche pointe vers elle). Déplacez la souris dans un ordre aléatoire jusqu'à ce que cette zone soit remplie.

Quel devrait être le résultat ? Voir capture d'écran :

Nous voyons que le nombre de bits est de 256, ce qui signifie que nous avons tout fait correctement et que nous cliquons maintenant sur "OK". Notre clé est prête !

Maintenant, tout est prêt ici aussi. Cliquez sur OK".

Dans la fenêtre "Créer une nouvelle base de données de mots de passe", cliquez sur "OK".

Tout est prêt et dans la capture d'écran, nous pouvons voir à quoi ressemble KeePass.

Comme mentionné au début de l'article, dans ce programme, les mots de passe peuvent être triés en groupes. Dans celui-ci, par défaut, des groupes de stockage des mots de passe et des enregistrements de mots de passe de test ont déjà été créés. Groupes à gauche et mots de passe à droite. Bien sûr, nous n'avons pas besoin d'enregistrements de test. Nous les supprimons.

Nous supprimons également les groupes. Si les groupes qui existent déjà vous conviennent, vous n'êtes pas obligé de les supprimer. Nous supprimerons les groupes existants et en créerons d'autres. Pour supprimer un groupe, cliquez dessus clic-droit souris et sélectionnez l'élément "Supprimer le groupe".

Ainsi, les groupes ont été supprimés, et maintenant nous en créons de nouveaux. Pour cela, allez dans Modifier/Ajouter un groupe

Saisissez le nom du groupe. Laissez dans ce groupe, nous garderons les mots de passe de notre boîtes aux lettres... Appelons ce groupe de mots de passe - "Mail". Capture d'écran:

Comme vous pouvez le voir, nous avons un groupe de mots de passe que nous avons créé avec le nom "Mail". Un nom bien choisi permet de mieux comprendre à quoi se réfèrent les mots de passe qui y sont stockés. Conclusion : donnez des noms clairs et vous trouverez l'entrée requise plus facilement et plus rapidement.

La tâche suivante consiste à faire une entrée dans le groupe. Comme vous l'avez peut-être deviné, l'enregistrement contiendra le nom d'utilisateur et le mot de passe pour le courrier, ainsi que d'autres éléments utiles. Parlons d'eux un peu plus loin. Voyons maintenant comment ajouter une entrée à un groupe. Pour cela, allez dans "Modifier/Ajouter un enregistrement..."

Nous avons ouvert la fenêtre "Ajouter un enregistrement"

Nous remplissons le formulaire, 1) trouvons un nom pour l'enregistrement, 2) le nom est un identifiant, 3) nous effaçons le mot de passe qui existe déjà et entrons celui que nous utilisons pour le courrier, vous pouvez également définir un lien à la page sur laquelle vous devrez entrer votre identifiant et votre mot de passe, et écrire plus et des commentaires. Dans les commentaires, nous pouvons indiquer la réponse à Question de sécurité ou d'autres données que nous avons fournies lors de l'inscription, en général, tout ce dont nous avons besoin. Voici un exemple :

Voici à quoi ressemble le post créé.

À propos, la connexion (dans KeePass, elle s'appelle le nom) peut être masquée par des astérisques, de la même manière que le mot de passe est masqué. Pour ce faire, allez dans l'onglet Affichage et sélectionnez l'élément approprié.

Résumons le travail effectué. Nous avons ajouté une seule entrée et cela suffit pour comprendre comment se déroule ce processus. Vous allez maintenant transférer de la même manière tous vos mots de passe vers ce programme. Ainsi, vous créerez votre propre base de données et pourrez trouver facilement et rapidement les combinaisons de noms d'utilisateur et de mots de passe dont vous avez besoin.

Comment puis-je « extraire » le nom d'utilisateur et le mot de passe de l'enregistrement maintenant ? Faites un clic droit sur l'entrée. Voir capture d'écran :

Un menu est apparu. Après l'avoir attentivement examiné, vous pouvez voir que vous pouvez copier le nom, copier le mot de passe, modifier et supprimer l'entrée. Ce sont les fonctions les plus basiques. Mais il y a un autre très fonctionnalité utile appelé "Démarrer la numérotation automatique". Comment l'utiliser ? Tout d'abord, nous plaçons le curseur dans le champ de connexion dans le formulaire sur le site, puis allons à l'enregistrement et sélectionnons « Démarrer la saisie automatique ». Le programme entrera automatiquement votre nom d'utilisateur et votre mot de passe.

Une autre chose utile de KeePass est un générateur de mot de passe. Qu'est-ce que c'est et pourquoi est-ce nécessaire, j'espère que tout le monde comprend. C'est dans l'onglet outils. Tout y est intuitivement clair, je pense que ce sera facile à comprendre.

C'est là que nous pouvons terminer. Meilleurs voeux à vous.

Est-il possible de pirater KeePass et de fusionner des mots de passe ?

Si quelqu'un ne sait pas ce qu'est KeePass, en bref, il s'agit d'un programme de gestion de mots de passe qui vous permet de stocker un mot de passe principal en vous souvenant. Vous pouvez en savoir plus sur les gestionnaires de mots de passe sur notre site Web.

Jusqu'à récemment, pirater KeePass était impossible, mais il y a quelques jours un certain Denis Andzakovic a posté sur le réseau utilitaire gratuit KeeFarce, qui permet à un attaquant de voler les mots de passe d'un gestionnaire de mots de passe populaire.

Vous pouvez télécharger KeeFarce gratuitement sur ce lien direct.

Piratage de KeePass avec KeeFarce

Pour pirater le gestionnaire Mots de passe KeePass et il est nécessaire de fusionner les mots de passe pour qu'il soit ouvert, c'est-à-dire afin que l'utilisateur connecté avec le mot de passe principal ne ferme pas le programme pendant un certain temps.

KeeFarce est très facile à utiliser. Copiez simplement les fichiers dans le dossier KeePass :

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

Et exécutez le fichier exécutable KeeFarce.exe


Après le lancement, le programme injecte dans processus en cours KeePass. L'utilitaire exporte ensuite tous les mots de passe vers fichier csv dans le dossier appdata.

Comment se protéger contre les piratages KeePass

Tout d'abord, vérifiez votre ordinateur pour les chevaux de Troie (), car ce schéma peut être mis en œuvre si l'attaquant a accès à distanceà votre ordinateur ou avoir un accès physique tout en laissant le gestionnaire de mots de passe ouvert pendant un court instant loin de l'ordinateur.

Deuxièmement, et surtout, ne laissez pas le gestionnaire de mots de passe ouvert pendant de longues périodes. Nous sommes entrés dans le programme, avons retiré le nom d'utilisateur et le mot de passe requis, nous nous sommes connectés au site et avons immédiatement fermé le gestionnaire. En savoir plus sur réglage correct Vous pouvez lire KeePass dans l'article "". À propos, j'ai parlé de cette menace et conseillé de réduire le temps de fermeture automatique du programme pendant les périodes d'inactivité, avant même que cet utilitaire n'apparaisse.

Qu'en est-il des autres gestionnaires de mots de passe ?

Cette vulnérabilité (pas cet utilitaire particulier) peut également être utilisée pour voler des mots de passe à partir d'autres programmes de stockage de mots de passe. Je pense qu'il y aura bientôt un grand nombre de ces outils, à la fois séparés et intégrés à divers programmes malveillants.

Faut-il arrêter d'utiliser les gestionnaires de mots de passe ?

Tu décides. Personnellement, je pense qu'avec une bonne utilisation de KeePass et une bonne hygiène informatique, il ne devrait y avoir aucun problème.

Dans l'une des vidéos précédentes, j'ai déjà parlé d'un programme de stockage sécurisé des mots de passe. Mais, à la suite de certaines expériences, il s'est avéré que le stockage des mots de passe n'est pas si sûr, mais cela s'applique à la version classique du programme. Par conséquent, dans cette vidéo, nous considérerons la version professionnelle de KeePass. De plus, il est aussi gratuit que la version classique. Si c'est la première fois que vous entendez parler de ce programme, alors je vous conseille de regarder d'abord mon avis sur la version classique afin de ne pas vous poser de questions inutiles.

Et donc, qu'allons-nous faire dans cette leçon :

Commençons par cracker la version classique de KeePass Password Safe via Key logger ;

Nous importons la base de la version classique à la version professionnelle ;

Considérons les principales différences et innovations ;

Et nous allons essayer de pirater la version professionnelle du Key logger.

Et tout d'abord, allons sur le site des développeurs du programme www.keepass.info\téléchargement. Nous téléchargeons les deux versions dans un format portable, puisque je transporte la base de données avec les mots de passe sur un lecteur flash, le programme pour les visualiser doit également être lancé à partir d'un lecteur flash, sans l'installer dans le système d'exploitation.

Je l'ai déjà fait, et j'ai également créé une base de données de test pour la version classique. Au ce moment, j'ai un logiciel espion LanAgent en cours d'exécution sur mon système. Ce programme appartient aux enregistreurs de frappe, c'est-à-dire programmes qui enregistrent toutes les actions de l'utilisateur sur l'ordinateur. Alors, maintenant, nous allons découvrir à quel point la fiabilité ce programme protège nos mots de passe !

Nous lançons la version classique et ouvrons la base de données créée dans celle-ci, saisissons le mot de passe de la base de données et nous connectons au site Web Rutracker.org.

Voyons maintenant ce que LanAgent a pu intercepter, mettre à jour les journaux et voir que le programme a intercepté à la fois la clé principale ainsi que le login et le mot de passe du site Rutracker. Même si nous essayons d'entrer des données via le presse-papiers, le programme interceptera également le contenu du presse-papiers. En revanche, le mot de passe de la base de données est inutile si l'attaquant n'a rien à quoi l'appliquer, c'est-à-dire la base est située sur notre lecteur flash. Mais dans cette situation, les programmes peuvent Contexte copier le contenu de la clé USB ou les fichiers auxquels on a accédé, et donc imperceptiblement pour nous, la base de données peut être copiée et tous les mots de passe ouverts à l'aide de la clé principale !

En général, on peut tirer la conclusion suivante, la version classique est adaptée pour ne pas stocker les mots de passe en clair, mais lors de l'utilisation de logiciels espions, cela n'aidera pas. Et pour combler cette lacune, la version professionnelle va nous aider !

1) Russifier le programme pour un travail plus pratique ( www. gardien. Info \ Traductions \ Anglais\ 2.28 \ décompressez dans le dossier avec le programme \Vue \ Changer Langue \ Anglais)

2) Créer nouvelle base (Fichier \ Nouveau \ Spécifiez le chemin et le nom \ Spécifiez le mot de passe principal)

3) Nous allons transférer les données de l'ancienne base de données afin de ne pas tout piloter manuellement ( Fichier \ Importer \KeePass 1. X\ Indiquez le chemin de l'ancienne base de données \ OK \ Saisissez le mot de passe de la base de données \ Nouveaux identifiants)

Voyons maintenant ce qu'il y a de nouveau et d'intéressant dans cette version. Je ne considérerai pas toutes les innovations, cela prendra beaucoup de temps, mais je me concentrerai sur les plus, à mon sens, intéressantes :

1) Saisie du mot de passe principal en mode sécurisé, ce qui permet de bloquer le Key logger, lors de la saisie du mot de passe principal ( Service \ Paramètres \ Sécurité \ Entrer le mot de passe principal en mode protégé)

2) Le générateur de mots de passe crée 30 mots de passe à la fois, selon la complexité choisie. Parmi lesquels vous pouvez choisir, à votre avis, le plus difficile.

3) Le langage de saisie automatique est plus facile à utiliser que la version classique. Je n'en ai pas parlé dans le test de la version classique, alors voyons comment cela peut aider !

Par défaut, la séquence de commandes suivante est déclenchée lors de la saisie automatique. Login, TAB, mot de passe et ENTER sont saisis dans le champ actif. Cette séquence peut être vue si ouvrez l'entrée \ Numérotation automatique \ Utilisez la séquence suivante... ET cette option s'adapte la plupart du temps, à l'approche de l'entrée de rutracker.

Cependant, il ne convient pas pour se connecter à la messagerie via le site Web www.mail.ru. Étant donné que ma boîte de test n'est pas sur mail.ru, mais sur bk.ru, alors pour ce site, vous pouvez entrer un algorithme de saisie individuel (NOM D'UTILISATEUR) (TAB) (MOT DE PASSE) (TAB) (DOWN) (DOWN) (DOWN) (TAB) (ENTER).

La liste des commandes est donnée ici, il y a aussi une aide, bien qu'elle soit en anglais, mais si vous le souhaitez, vous pouvez la découvrir. De ma propre pratique, je vous conseillerais d'utiliser parfois la commande (RETARD 1000), il s'agit d'un délai de commande entre les commandes. Il se trouve simplement qu'avec un Internet lent, le navigateur n'a pas le temps d'accepter la séquence de commandes, il a donc besoin de temps pour y réfléchir, dans cette situation cette commande aidera (5000 - 5 secondes de retard).

4) Double complication de l'ensemble - quand cette méthode, le programme n'entre pas explicitement de données, il prend une partie du nom d'utilisateur et du mot de passe du presse-papiers et en saisit une partie sous forme de symboles.

Vérifions maintenant si LanAgent peut déchiffrer nos mots de passe !? Comme vous pouvez le voir, cela n'a pas fonctionné et, par conséquent, le programme a parfaitement fonctionné et maintenant vos mots de passe sont protégés autant que possible !

  • Didacticiel

L'autre jour, j'avais besoin de mettre en œuvre le décryptage de la base de données KeePass. J'ai été étonné qu'il n'y ait pas un seul document ni un seul article contenant des informations complètes sur l'algorithme de décryptage des fichiers .kdb et .kdbx, en tenant compte de toutes les nuances. Cela m'a poussé à écrire cet article.


Il existe actuellement 2 versions de KeePass :

  • KeePass 1.x (génère des fichiers .kdb) ;
  • KeePass 2.x (génère des fichiers .kdbx).

La structure du fichier de base de données KeePass (.kdb, .kdbx) se compose de 3 parties :

  • Signature (non cryptée) ;
  • Titre (non crypté) ;
  • Données (cryptées).

Décryptage de la base de données KeePass

Séquençage:
  1. Nous lisons la signature de la base de données.
  2. Nous lisons l'en-tête de la base de données.
  3. Nous générons une clé principale.
  4. Nous décryptons la base de données.
  5. Nous vérifions l'intégrité des données.
  6. Si le fichier a été compressé, décompressez-le.
  7. Nous décryptons les mots de passe.

Les éléments 5, 6 et 7 s'appliquent uniquement aux fichiers .kdbx!

Signature
Signature de base (4 octets)

La première signature est la même pour les fichiers .kdb et .kdbx. Elle dit que ce fichier est une base de données KeePass :

  • 0x9AA2D903
VersionSignature (4 octets)

La deuxième signature indique la version KeePass et est donc différente pour les fichiers .kdb et .kdbx :

  • 0xB54BFB65 - KeePass 1.x (fichier .kdb).
  • 0xB54BFB66 - Pré-version KeePass 2.x (fichier .kdbx).
  • 0xB54BFB67 - Post-version de KeePass 2.x (fichier .kdbx).
FileVersion (4 octets)

Seuls les fichiers .kdbx ont une troisième signature et contiennent une version du fichier. Pour les fichiers .kdb cette information contenu dans l'en-tête de la base de données.


Ainsi, dans KeePass 1.x, la longueur de la signature est de 8 octets, et dans KeePass 2.x, elle est de 12 octets..

Titre

Après la signature de la base de données, l'en-tête commence.

En-tête KeePass 1.x

L'en-tête du fichier .kdb se compose des champs suivants :

  1. Flags (4 octets) : ce champ indique quels types de cryptage ont été utilisés lors de la création du fichier :
    • 0x01 - SHA256 ;
    • 0x02 - AES256 ;
    • 0x04 - ARC4 ;
    • 0x08 - Deux poissons.
  2. Version (4 octets) : La version du fichier.
  3. Master Seed (16 octets) : utilisé pour créer une clé principale.
  4. Cryptage IV (16 octets) : Utilisé pour déchiffrer les données.
  5. Nombre de groupes (4 octets) : nombre total de groupes dans la base de données.
  6. Nombre d'entrées (4 octets) : nombre total d'entrées dans la base de données.
  7. Content Hash (32 octets) : hachage des données décryptées.
  8. Transform Seed (32 octets) : utilisé pour créer une clé principale.
  9. Transform Rounds (4 octets) : utilisé pour créer une clé principale.
En-tête KeePass 2.x

Dans les fichiers kdbx, chaque champ d'en-tête se compose de 3 parties :

  1. ID de champ (1 octet) : Valeurs possibles de 0 à 10.
  2. Longueur des données (2 octets).
  3. Données ([longueur des données] octets)

L'en-tête du fichier .kdbx se compose des champs suivants :

  • ID = 0x01 Commentaire : Ce champ peut être présent dans l'en-tête, mais il n'était pas dans ma base de données.
  • ID = 0x02 Cipher ID : UUID indiquant la méthode de chiffrement utilisée (par exemple, pour AES 256 UUID =).
  • ID = 0x03 Compression Flags : ID de l'algorithme utilisé pour compresser la base de données :
    • 0x00 : Aucun ;
    • 0x01 : GZip.
  • ID = 0x04 Master Seed : utilisé pour créer une clé principale.
  • ID = 0x05 Transform Seed : utilisé pour créer une clé principale.
  • ID = 0x06 Transform Rounds : utilisé pour créer une clé principale.
  • ID = 0x07 Cryptage IV : Utilisé pour déchiffrer les données.
  • ID = 0x08 Protected Stream Key : utilisé pour déchiffrer les mots de passe.
  • ID = 0x09 Stream Start Bytes : les 32 premiers octets de la base de données déchiffrée. Ils sont utilisés pour vérifier l'intégrité des données déchiffrées et l'exactitude de la clé principale. Ces 32 octets sont générés aléatoirement à chaque fois que des modifications sont enregistrées dans le fichier.
  • ID = 0x0A Inner Random Stream ID : ID de l'algorithme utilisé pour déchiffrer les mots de passe :
    • 0x00 : Aucun ;
    • 0x01 : ARC4 ;
    • 0x02 : Salsa20.
  • ID = 0x00 Fin de l'en-tête : Le dernier champ de l'en-tête de la base de données, suivi de la base de données elle-même.
Génération de clé principale

Le passe-partout est généré en 2 étapes :

  1. Génération de clés composites ;
  2. Génération d'une clé principale basée sur une clé composite.
1. Génération d'une clé composite

L'algorithme de hachage SHA256 est utilisé pour générer la clé composite. Les tableaux ci-dessous fournissent un pseudocode pour générer une clé composite en fonction de la version de KeePass utilisée et de l'entrée requise pour déchiffrer la base de données (mot de passe uniquement, fichier de clé uniquement ou les deux) :


KeePass 1.x



KeePass 2.x



J'attire votre attention sur le fait que si plusieurs entités sont nécessaires pour décrypter une base de données (par exemple, un mot de passe et un fichier clé), vous devez d'abord obtenir un hachage de chaque entité, puis les concaténer ensemble (concat) et prendre un hachage de la séquence combinée.

2. Génération d'une clé principale basée sur une clé composite
  1. Nécessaire Crypter la clé composite obtenue ci-dessus en utilisant l'algorithme AES-256-ECB.
    • Utilisez la graine de transformation de l'en-tête comme clé.
    • Ce chiffrement doit être effectué plusieurs fois par tour de transformation (à partir de l'en-tête).
  2. En utilisant SHA256, nous obtenons le hachage de la clé composite cryptée.
  3. Nous connectons le Master Seed de l'en-tête avec le hachage résultant.
  4. Avec SHA256, nous obtenons le hachage de la séquence combinée - c'est notre passe-partout !

Pseudocode

void GenerateMasterKey () (// chiffrer la clé composite TransformRounds fois pour (int i = 0; i< TransformRounds; i++) { result = encrypt_AES_ECB(TransformSeed, composite_key); composite_key = result; }

// obtient le hachage de la clé composite chiffrée hash = sha256 (composite_key); // concaténer le hachage résultant avec le champ MasterSeed de l'en-tête key = concat (MasterSeed, hash); // obtient un hachage de la séquence combinée ci-dessus master_key = sha256 (key);

Décryptage des données KeePass 1.x

Immédiatement après l'en-tête, la base de données chiffrée elle-même commence. L'algorithme de décryptage est le suivant :

  1. Tout le morceau restant du fichier déchiffrer
  2. En utilisant SHA256, nous obtenons un hachage à partir des données déchiffrées ( les octets du point précédent ne sont pas pris en compte).
  3. Nous vérifions que le hachage reçu correspond au champ Content Hash de l'en-tête :
    • si le hachage correspond, alors nous avons déchiffré avec succès notre base de données ! Vous pouvez enregistrer les données décryptées sous forme de fichier .xml et vous assurer que toutes les connexions avec mots de passe sont décryptées correctement,
    • Si le hachage ne correspond pas, cela signifie que le mauvais mot de passe ou le mauvais fichier de clé a été fourni, ou que les données ont été corrompues.

Pseudocode

bool DecryptKeePass1x () (// détermine la longueur de la base de données cryptée // (taille du fichier - taille de la signature - taille de l'en-tête) db_len = file_size - signature_size - header_size;

// déchiffre les données decrypted_data = decrypt_AES_256_CBC (master_key, EncryptionIV,coded_data); // découvrir le nombre d'octets "extra" extra = decrypted_data; // obtient un hachage à partir des données (à l'exclusion des octets supplémentaires !) content_hash = sha256 (decrypted_data [:( db_len - extra)]); // vérifie que le hachage reçu correspond au champ СontentHash de l'en-tête if (СontentHash == content_hash) return true; sinon retourne faux ;

Décryptage des données KeePass 2.x

Immédiatement après le champ d'en-tête End of Header, la base de données chiffrée elle-même commence. L'algorithme de décryptage est le suivant :

  1. Tout le morceau restant du fichier déchiffrer en utilisant l'algorithme AES-256-CBC.
    • En tant que clé, nous utilisons la clé principale générée ci-dessus.
    • Nous utilisons Encryption IV à partir de l'en-tête comme vecteur d'initialisation.
  2. Les derniers octets de la base de données déchiffrée sont superflus - ce sont plusieurs octets identiques à la fin du fichier (padding). Pour éliminer leur influence, vous devez lire le dernier octet de la base de données déchiffrée - il s'agit du nombre d'octets "supplémentaires" qui ne devraient pas être pris en compte à l'avenir.
  3. Vérifiez que les 32 premiers octets de la base de données déchiffrée correspondent au champ d'en-tête Stream Start Bytes :
    • si les données correspondent, alors nous avons généré la clé principale correcte,
    • Si les données ne correspondent pas, cela signifie qu'un mot de passe, un fichier de clé ou un WUA incorrect a été fourni, ou que les données ont été corrompues.
  4. Si l'étape précédente réussit, nous rejetons les 32 premiers octets. Vérification du champ d'en-tête Compression Flags. Si vous avez utilisé la compression GZip du fichier, décompressez les données.
  5. Commençons par vérifier l'intégrité des données. Les données sont divisées en blocs, la taille de bloc maximale est de 1024 * 1024. Chaque bloc de données commence par un en-tête. La structure de l'en-tête est la suivante :
    • ID de bloc (4 octets) : numéro de bloc à partir de 0 ;
    • Bloquer le hachage des données (32 octets) ;
    • Taille de bloc (4 octets).
  6. Par conséquent, la procédure est la suivante :
    • Nous lisons l'en-tête du bloc.
    • Nous lisons les données du bloc.
    • En utilisant SHA256, nous obtenons un hachage à partir des données de bloc.
    • Nous vérifions que le hachage correspond au hachage de l'en-tête.
  7. Nous effectuons la séquence d'actions du paragraphe précédent pour chaque bloc de données. Si les données de tous les blocs sont enregistrées, nous supprimons tous les en-têtes de bloc et la séquence résultante est la base de données déchiffrée.
  8. ATTENTION: même dans un fichier .kdbx déchiffré, les mots de passe peuvent être chiffrés.
  9. Nous sauvegardons les données décryptées et décapitées dans un fichier .xml.
  10. On y retrouve tous les nœuds portant le nom « Value », l'attribut « Protected », la valeur de cet attribut est « True » et reprenons les valeurs de ces nœuds. Ce sont toujours des mots de passe cryptés.
  11. Nous décodons tous les mots de passe cryptés à l'aide de l'algorithme base64decode.
  12. Dans le champ Inner Random Stream ID de l'en-tête, voyez quel algorithme a été utilisé pour chiffrer les mots de passe. Dans mon cas, c'était Salsa20.
  13. Nous générons une séquence pseudo-aléatoire de 64 octets en utilisant l'algorithme Salsa20 :
    • En tant que clé, nous utilisons le hachage du champ d'en-tête Protected Stream Key obtenu à l'aide de SHA256.
    • Nous utilisons la séquence constante de 8 octets 0xE830094B97205D2A comme vecteur d'initialisation.
  14. IMPORTANT: Avec cette séquence de 64 octets, vous pouvez décrypter exactement 64 caractères dans l'ordre concaténés mots de passe décodés... Si cela ne suffit pas pour déchiffrer tous les mots de passe, vous devez générer la séquence pseudo-aléatoire suivante et continuer à déchiffrer les mots de passe, etc. finir.
  15. Pour obtenir le mot de passe final, vous devez effectuer un XOR sur le mot de passe décodé en base64 avec la séquence pseudo-aléatoire obtenue au paragraphe précédent (la séquence d'actions est plus claire dans le pseudocode ci-dessous).
  16. TRÈS IMPORTANT: les mots de passe doivent être déchiffrés dans l'ordre ! Exactement dans l'ordre dans lequel ils sont présentés dans fichier xml.
  17. On retrouve dans le fichier xml tous les nœuds avec le nom « Value », l'attribut « Protected », la valeur de cet attribut est « True » :
    • Remplacez la valeur de l'attribut par "False".
    • Nous remplaçons la valeur du nœud par le mot de passe déchiffré.
  18. Et seulement maintenant, nous avons une base de données KeePass 2.x complètement décryptée ! Hourra ! =)

Pseudocode

bool DecryptKeePass2x () (// déterminer la longueur de la base de données cryptée // (taille du fichier - taille de la signature - taille de l'en-tête) db_len = file_size - signature_size - header_size;

// déchiffre les données decrypted_data = decrypt_AES_256_CBC (master_key, EncryptionIV,coded_data); // découvrir le nombre d'octets "extra" extra = decrypted_data; db_len - = extra; // vérifier que les 32 premiers octets de la base de données déchiffrée // correspondent au champ d'en-tête StreamStartBytes if (StreamStartBytes! = decrypted_data) return false; // rejetez ces 32 octets db_len - = 32; decrypted_data + = 32 ; // vérifiez le champ d'en-tête CompressionFlag // si le fichier a été compressé, décompressez-le if (CompressionFlag == 1) unzip (decrypted_data); // vérifier l'intégrité des données while (db_len> (BlockHeaderSize)) (// lire l'en-tête de la base de données block_data = decrypted_data; decrypted_data + = BlockHeaderSize; db_len - = BlockHeaderSize; if (block_data.blockDataSize == 0) (break;) // obtenir le hachage des données de bloc hash = sha256 (decrypted_data); // vérifier que le hachage reçu correspond au hachage de l'en-tête if (block_data.blockDataHash == hash) (pure_data + = decrypted_data; decrypted_data + = block_data.blockDataSize; db_data.lenb - = blockData ;) else (return false;)) // enregistre les données décryptées et décapitées dans un fichier xml xml = pure_data.ToXml (); // obtient un hachage à partir du champ d'en-tête ProtectedStreamKey key = sha256 (ProtectedStreamKey); // initialise l'algorithme Salsa20 IV_SALSA = 0xE830094B97205D2A; salsa.setKey (clé); salsa.setIv (IV_SALSA); stream_pointer = 0; key_stream = salsa.generateKeyStream (); // déchiffre les mots de passe while (true) (// trouve le nœud suivant dans l'ordre avec le nom "Value", // avec l'attribut "Protected", la valeur de l'attribut "True" node = xml.FindNextElement ("Value" , "Protected", "True" ); if (node ​​== NULL) (break;) // prend la valeur du nœud et le décode en utilisant l'algorithme base64 decoded_pass = base64decode (node.value); // décode le mot de passe en utilisant une séquence pseudo-aléatoire key_stream pour (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;)) // remplace la valeur de l'attribut "Protected" par "False" node.attribute.value = "(! LANG: False"; //заменяем зашифрованный пароль дешифрованным node.value = decoded_pass; } return true; !}


C'est, en général, tout ce que je voulais dire. J'espère que ce guide sauvera quelqu'un de maux de tête inutiles et sera informatif et informatif =)

Mots clés:

  • cryptographie
  • gardien
  • as-256
  • sha256
Ajouter des balises

LA CLOCHE

Il y a ceux qui ont lu cette nouvelle avant vous.
Abonnez-vous pour recevoir les derniers articles.
E-mail
Nom
Nom de famille
Comment voulez-vous lire La cloche
Pas de spam