CTF. Contraseñas en Firefox. Contraseña de Android. Ataque Bit-Flipping. Resolviendo problemas con r0ot-mi Crypto. Parte 3

imagen



En este artículo, rompemos la permutación y los cifrados de Vigenère, desciframos la contraseña guardada en el navegador Mozilla Firefox, nos ocupamos del bloqueo de Android y nos ocupamos del ataque Bit-Flipping. Partes anteriores:



Parte 1 - Codificaciones, cifrado de cambio, hashes brutas y creación de imágenes usando PIL python.

Parte 2 - Craqueo de Crypt, XOR, ZIP sin cifrar y PRNG.



Información organizacional
, - , :



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


, , , .



, , Telegram . , , .



. , - , .





Contraseña de Mozilla Firefox







Necesitamos encontrar la contraseña del usuario. Descargue y abra el archivo que contiene el directorio .mozilla. Este directorio contiene una carpeta con extensiones y una carpeta con el nombre del navegador.







Como no nos interesan las extensiones, vamos al navegador diu. Hay un archivo de configuración de perfil y un directorio más.







Entramos en la carpeta y vemos los archivos.







Todas las contraseñas almacenadas en la base de datos están cifradas, por lo que no podrá verlas así. Puede utilizar este script para descifrar .

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






Cifrado de Vigenère







Se nos ha proporcionado un texto encriptado y necesitamos encontrar su autor. Dado que se trata de un cifrado de Vigenère, utilizaremos un decodificador en línea .







Elegimos el modo automático.







Y obtenemos el texto sin formato y la clave. Queda por buscar en Google el texto y encontrar al autor.



Patrón de bloqueo de Android







Se nos da un volcado del sistema de archivos de Android y se nos pide que busquemos la contraseña. Esto es muy fácil de hacer con acceso al sistema de archivos. El hash de la contraseña (SHA1) se encuentra en el archivo /data/system/gesture.key.







Podemos tomar y torcer el hash, o usar androidpatternlock .







Encontré contraseña y patrón.



Cifrado de permutación







Se nos da un mensaje cifrado y se nos pide que lo descifremos. Dado que se trata de un cifrado Rail Fence, utilizaremos el ya familiar decodificador en línea .







Y ahora, entre los descifrados propuestos, debemos elegir el que tenga un texto significativo.







Y obtenemos la respuesta.



AES CBC - Ataque de cambio de bits







Se nos da un host y un puerto para conectarnos. Conectemos usando netcat.







Se nos proporcionan opciones para la acción: registrarse o iniciar sesión. Regístrese primero.







Y se nos proporcionó un texto parcialmente abierto y cifrado. Ahora iniciamos sesión con este token.







Pero después de iniciar sesión, no podemos acceder a los datos, ya que no somos miembros del grupo.







Con la tarea resuelta, ahora tratemos con el ataque Bit-Flipping. Este ataque generalmente ocurre cuando la función de cifrado toma alguna entrada, agrega una cadena aleatoria y agrega otra cadena antes de cifrarla (nuestro caso).



A continuación se muestra un diagrama para descifrar un mensaje utilizando el algoritmo AES CBC.







El hecho es que el bloque anterior del texto cifrado se modifica con el siguiente bloque, para eliminar la superposición de texto, como resultado tenemos el texto descifrado.



Por lo tanto, si cambiamos un byte de texto cifrado en el bloque anterior, cambiará un byte de texto sin formato en el siguiente bloque.







Ahora volvamos a la tarea. El texto claro tiene el parámetro is_member = false. Es difícil imaginar cómo cambiar. Pero como tenemos los símbolos de la ecuación, para que todo el texto sea un múltiplo del tamaño del bloque, podemos cambiarlos para que cuando se descifre, se obtenga la cadena is_member = true.



Averigüemos cómo hacer esto. Esta línea debe obtenerse durante el descifrado en el último bloque: EvilP2. Para hacer esto, necesitamos recolectar el bloque EvilC1.







Cómo hacerlo: Tenemos CC1 y PP2. Al representarlos juntos, podemos obtener DC2. Ya que sabemos que EvilP2 contiene “; is_member = false]” y conocemos DC2, usándolos como proxy entre nosotros, puede obtener EvilC1.



Regístrese de nuevo.







Inicializamos los parámetros iniciales.







Ahora tenemos los bloques que conocemos.







Ahora tenemos nuevos bloques.







Recogemos la carga.







Intentando iniciar sesión.







Y no salió nada, nos encontraron. Lo más probable es que esto se deba a la presencia de dos parámetros idénticos. Matemos al primero.







Y ahora iniciamos sesión con éxito y tomamos el token.







Puedes unirte a nosotros en Telegram... Reunamos una comunidad en la que haya personas con experiencia en muchas áreas de TI, entonces siempre podremos ayudarnos unos a otros en cualquier tema de TI y seguridad de la información.



All Articles