CTF. Mots de passe dans Firefox. Mot de passe Android. Attaque Bit-Flipping. Résolution des problèmes avec r0ot-mi Crypto. Partie 3

image



Dans cet article, nous cassons la permutation et les chiffrements de Vigenere, déchiffrons le mot de passe enregistré dans le navigateur Mozilla Firefox, traitons le blocage Android et traitons l'attaque Bit-Flipping. Parties précédentes:



Partie 1 - Codages, chiffrement par décalage, hachages bruts et création d'images en utilisant PIL python

Partie 2 - Crypt, XOR, cracking ZIP non crypté et PRNG.



Informations organisationnelles
, - , :



  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.


, , , .



, , Telegram . , , .



. , - , .





Mot de passe Mozilla Firefox







Nous devons trouver le mot de passe de l'utilisateur. Téléchargez et ouvrez l'archive contenant le répertoire .mozilla. Ce répertoire contient un dossier avec des extensions et un dossier avec le nom du navigateur.







Comme nous ne sommes pas intéressés par les extensions, nous allons dans le diu-browser. Il existe un fichier de configuration de profil et un autre répertoire.







Nous allons dans le dossier et visualisons les fichiers.







Tous les mots de passe stockés dans la base de données sont cryptés, vous ne pourrez donc pas les voir comme ça. Vous pouvez utiliser ce script pour le déchiffrement .

python3 firefox_decrypt.py ~//.mozilla/firefox/o0s0xxhl.default/






Chiffre de Vigenère







On nous a donné un texte chiffré et nous devons trouver son auteur. Puisqu'il s'agit d'un chiffre Vigenère, nous utiliserons un décodeur en ligne .







Nous choisissons le mode automatique.







Et nous obtenons le texte brut et la clé. Il reste à google le texte et à trouver l'auteur.



Modèle de verrouillage Android







On nous donne un vidage du système de fichiers Android et on nous demande de trouver le mot de passe. C'est très facile à faire avec l'accès au système de fichiers. Le hachage du mot de passe (SHA1) se trouve dans le fichier /data/system/gesture.key.







Nous pouvons soit prendre et tordre le hachage, soit utiliser androidpatternlock .







Mot de passe et modèle trouvés.



Chiffrement de permutation







On nous donne un message chiffré et on nous demande de le déchiffrer. Puisqu'il s'agit d'un chiffrement Rail Fence, nous utiliserons le décodeur en ligne déjà familier .







Et maintenant, parmi les décryptages proposés, nous devons choisir celui qui a un texte significatif.







Et nous obtenons la réponse.



AES CBC - Attaque de retournement de bits







On nous donne un hôte et un port pour se connecter. Connectons-nous en utilisant netcat.







Nous avons des options d'action - inscrivez-vous ou connectez-vous. Inscrivons-nous d'abord.







Et on nous a fourni un texte partiellement ouvert et chiffré. Maintenant, nous nous connectons avec ce jeton.







Mais après la connexion, nous ne pouvons pas accéder aux données, car nous ne sommes pas membre du groupe.







Une fois la tâche réglée, traitons maintenant de l'attaque Bit-Flipping. Cette attaque se produit généralement lorsque la fonction de chiffrement prend une entrée, ajoute une chaîne aléatoire et y ajoute une autre chaîne avant de la chiffrer (notre cas).



Voici un diagramme pour décrypter un message à l'aide de l'algorithme AES CBC.







Le fait est que le bloc précédent de texte chiffré est xorsé avec le bloc suivant, afin de supprimer la superposition de texte, nous avons donc le texte déchiffré.



Ainsi, si nous changeons un octet de texte chiffré dans le bloc précédent, alors un octet de texte en clair dans le bloc suivant changera.







Revenons maintenant à la tâche. Le texte clair a le paramètre is_member = false. Il est difficile d'imaginer comment changer. Mais puisque nous avons les symboles de l'équation, pour que le texte entier soit un multiple de la taille du bloc, nous pouvons les changer de sorte qu'une fois déchiffrée, la chaîne is_member = true soit obtenue.



Voyons comment faire cela. Cette ligne doit être obtenue lors du décryptage dans le dernier bloc - EvilP2. Pour ce faire, nous devons collecter le bloc EvilC1.







Comment faire: Nous avons CC1 et PP2. En les mandatant ensemble, nous pouvons obtenir DC2. Puisque nous savons que EvilP2 contient «; is_member = false]» et que nous connaissons DC2, en les mandatant entre nous, vous pouvez obtenir EvilC1.



Enregistrons à nouveau.







Nous initialisons les paramètres initiaux.







Maintenant, nous obtenons les blocs que nous connaissons.







Maintenant, nous obtenons de nouveaux blocs.







Nous collectons la charge.







Tentative de connexion.







Et rien n'en est sorti, ils nous ont trouvés. Ceci est probablement dû à la présence de deux paramètres identiques. Tuerons le premier.







Et maintenant, nous nous connectons avec succès et prenons le jeton.







Vous pouvez nous rejoindre sur Telegram... Rassemblons une communauté dans laquelle il y aura des gens qui connaissent de nombreux domaines de l'informatique, alors nous pourrons toujours nous entraider sur tous les problèmes informatiques et de sécurité de l'information.



All Articles