Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe – Hashing Basics

TryHackMe – Hashing Basics

Hola hacketones! Bienvenidos a un nuevo CTF para la Certificación SEC1 de la ruta Cyber Security 101 de TryHackMe – Hashing Basics

Tarea 1 Introducción

Imagina que acabas de descargar un archivo de 6 GB y quieres saber si la copia que descargaste es idéntica al archivo original, bit a bit. ¿Cómo lo harías? O si alguien te entregara este archivo de 6 GB en una memoria USB, ¿cómo puedes estar seguro de que es idéntico al archivo que quieres descargar?

La respuesta a ambas preguntas anteriores reside en comparar los valores hash de ambos archivos; si dos valores hash son iguales, se puede afirmar con gran certeza que son idénticos. Pero ¿qué es un valor hash?

Un valor hash es una cadena o un conjunto de caracteres de tamaño fijo que se calcula mediante una función hash. Una función hash toma una entrada de tamaño arbitrario y devuelve una salida de longitud fija, es decir, un valor hash. En esta sala, abordaremos diversos usos interesantes e ingeniosos de las funciones y valores hash.

Nota sobre la terminología: Hemos preferido los términos «función hash» y «valor hash». Sin embargo, en ocasiones usamos la palabra «hash» como verbo para referirse al cálculo del valor hash; además, en ocasiones usamos la palabra «hash» por sí sola como sustantivo para referirnos al valor hash.

Requisitos previos de la habitación

Esta sala es la tercera de tres salas introductorias sobre criptografía. Dado que se hará referencia a los temas de las dos salas anteriores, se recomienda completar las dos últimas antes de intentar esta.

Objetivos de aprendizaje

Al finalizar esta sala, aprenderá sobre:

  • Funciones hash y colisiones
  • El papel del hash en los sistemas de autenticación
  • Reconocer valores hash almacenados
  • Descifrando valores hash
  • El uso de hash para la protección de la integridad

Para continuar, primero, iniciemos la máquina virtual presionando el botón Iniciar máquina a continuación.

La máquina se iniciará en vista de pantalla dividida . Si la máquina virtual no está visible, utilice el botón azul » Mostrar vista dividida» en la parte superior de la página.

También puede acceder a la máquina virtual mediante SSH en la dirección IP MACHINE_IPusando las siguientes credenciales:

  • Nombre de usuario:user
  • Contraseña:Tryhackme123!

Tarea 2 Funciones hash

¿Qué es una función hash?

Las funciones hash son diferentes del cifrado. No tienen clave y su propósito es que sea imposible (o computacionalmente impráctico) pasar de la salida a la entrada.

Una función hash toma datos de entrada de cualquier tamaño y crea un resumen o compendio de ellos. La salida tiene un tamaño fijo. Es difícil predecir la salida para cualquier entrada y viceversa. Los buenos algoritmos hash serán relativamente rápidos de calcular y extremadamente lentos de revertir, es decir, partir de la salida y determinar la entrada. Cualquier cambio, incluso de un solo bit, en los datos de entrada debería causar un cambio significativo en la salida.

Veamos un ejemplo. En la terminal a continuación, vemos dos archivos: el primero contiene la letra T y el segundo, la letra U. Si revisas T y U en una tabla ASCII o usas hexdump, notarás que las dos letras difieren en un solo bit.

  • La letra T está 54en hexadecimal, es decir 01010100en binario.
  • La letra U está 55en hexadecimal, es decir 01010101en binario.

Por lo tanto, los dos archivos siguientes difieren en un solo bit. Sin embargo, si comparamos sus hashes MD5 (Algoritmo de Resumen de Mensaje 5), SHA1 (Algoritmo de Hash Seguro 1) o SHA-256 (Algoritmo de Hash Seguro 256), observaremos que son completamente diferentes. Le recomendamos que pruebe los siguientes comandos usted mismo. Los archivos se encuentran en formato ~/Hashing-Basics/Task-2/.

Terminal

strategos@g5000 ~> cat file1.txt
T⏎
strategos@g5000 ~> cat file2.txt
U⏎  
strategos@g5000 ~> hexdump -C file1.txt
00000000  54                                                |T|
00000001
strategos@g5000 ~> hexdump -C file2.txt
00000000  55                                                |U|
00000001
strategos@g5000 ~> md5sum *.txt
b9ece18c950afbfa6b0fdbfa4ff731d3  file1.txt
4c614360da93c0a041b22e537de151eb  file2.txt
strategos@g5000 ~> sha1sum *.txt
c2c53d66948214258a26ca9ca845d7ac0c17f8e7  file1.txt
b2c7c0caa10a0cca5ea7d69e54018ae0c0389dd6  file2.txt
strategos@g5000 ~> sha256sum *.txt
e632b7095b0bf32c260fa4c539e9fd7b852d0de454e9be26f24d0d6f91d069d3  file1.txt
a25513c7e0f6eaa80a3337ee18081b9e2ed09e00af8531c8f7bb2542764027e7  file2.txt

La salida de una función hash suele ser bytes sin procesar, que posteriormente se codifican. Las codificaciones comunes son base64 o hexadecimal. md5sum, sha1sum, sha256sum, y sha512sumgeneran sus salidas en formato hexadecimal. Recuerde que el formato hexadecimal imprime cada byte sin procesar como dos dígitos hexadecimales.

¿Por qué es importante el hashing?

El hash desempeña un papel fundamental en nuestro uso diario de internet. Al igual que otras funciones criptográficas, el hash permanece oculto al usuario. Ayuda a proteger la integridad de los datos y a garantizar la confidencialidad de las contraseñas.

Considere este ejemplo del uso del hash para proteger su ciberseguridad. Al iniciar sesión en TryHackMe, el servidor usa el hash para verificar su contraseña. De hecho, según las buenas prácticas de seguridad, un servidor no registra su contraseña, sino su valor hash. Cada vez que inicie sesión, calculará el valor hash de la contraseña que introdujo con el valor hash registrado. De igual manera, al iniciar sesión en su computadora, el hash desempeña un papel en la verificación de su contraseña. Interactúa con el hash de forma más indirecta de lo que cree, y casi a diario en el contexto de las contraseñas.

¿Qué es una colisión hash?

Una colisión hash ocurre cuando dos entradas diferentes dan la misma salida. Las funciones hash están diseñadas para evitar colisiones en la medida de lo posible. Además, están diseñadas para impedir que un atacante pueda crear, es decir, diseñar, una colisión intencionalmente. Sin embargo, dado que el número de entradas es prácticamente ilimitado y el número de salidas posibles es limitado, esto genera un efecto de encasillamiento.

Como ejemplo numérico , si una función hash produce un valor hash de 4 bits, solo tenemos 16 valores hash diferentes. El número total de valores hash posibles es 2 ( número de bits = 24 = 16 ) . La probabilidad de colisión es relativamente alta.

El efecto palomar establece que el número de elementos ( palomas ) es mayor que el número de contenedores ( casilleros ); algunos contenedores deben contener más de un elemento. En otras palabras, en este contexto, hay un número fijo de valores de salida diferentes para la función hash, pero se le puede asignar una entrada de cualquier tamaño. Como hay más entradas que salidas, algunas entradas inevitablemente deben dar la misma salida. Si tiene 21 palomas y 16 casilleros, algunos de los palomas compartirán los casilleros. En consecuencia, las colisiones son inevitables. Sin embargo, una buena función hash garantiza que la probabilidad de una colisión sea insignificante.

MD5 y SHA1 han sido atacados y ahora se consideran inseguros debido a su capacidad para generar colisiones de hash. Sin embargo, ningún ataque ha generado una colisión en ambos algoritmos simultáneamente, por lo que si compara los hashes MD5 y SHA1, verá que son diferentes. Puede ver el ejemplo de colisión MD5 en la  página de demostración de colisión MD5  ; además, puede leer los detalles del ataque de colisión SHA1 en  Shattered . Por estas razones, no debería confiar en ninguno de los dos algoritmos para el hash de contraseñas o datos.

Responda las preguntas a continuación

¿Cuál es el hash SHA256 del passport.jpgarchivo ~/Hashing-Basics/Task-2?

Entregar77148c6f605a8df855f2b764bcc3be749d7db814f5f79134d2aa539a64b61f02

¿Cuál es el tamaño de salida en bytes de la función hash MD5?

EntregarPista16

Si tiene una salida hash de 8 bits, ¿cuántos valores hash posibles hay?

Entregar256

Tarea 3 Almacenamiento de contraseñas inseguro para autenticación

El hash tiene múltiples usos en ciberseguridad. En esta sesión, nos centraremos en dos: el almacenamiento de contraseñas y la integridad de los datos. Nos referimos al almacenamiento de contraseñas cuando se utiliza para la autenticación.

Es importante tener en cuenta que esto no aplica a los administradores de contraseñas, donde se debe recuperar la contraseña en texto plano . Por otro lado, los mecanismos de autenticación solo necesitan confirmar que el usuario conoce la contraseña para poder acceder al recurso; por lo tanto, este problema difiere de los administradores de contraseñas.

Historias de almacenamiento inseguro de contraseñas para autenticación

La mayoría de las aplicaciones web necesitan verificar la contraseña de un usuario en algún momento. Almacenar estas contraseñas en texto plano es una práctica de seguridad muy insegura. Probablemente haya visto noticias sobre empresas cuyas bases de datos han sido filtradas. Sabiendo que muchas personas usan la misma contraseña en sus diversas cuentas, incluida la banca en línea, filtrar la contraseña de una cuenta pone en riesgo la seguridad de todas las demás.

Visitaremos tres prácticas inseguras en cuanto a contraseñas:

  • Almacenamiento de contraseñas en texto plano
  • Almacenamiento de contraseñas mediante un cifrado obsoleto
  • Almacenamiento de contraseñas mediante un algoritmo hash inseguro

Almacenamiento de contraseñas en texto plano

Se han producido numerosas filtraciones de datos que han filtrado contraseñas en texto plano. Probablemente conozcas la lista de contraseñas «rockyou.txt» de Kali Linux , entre muchas otras distribuciones de seguridad ofensivas. Esta lista de contraseñas proviene de RockYou, una empresa que desarrolla aplicaciones y widgets para redes sociales. Almacenaron sus contraseñas en texto plano y la empresa sufrió una filtración de datos. El archivo de texto contiene más de 14 millones de contraseñas. Puedes encontrarlo rockyou.txten el /usr/share/wordlistsdirectorio.

Terminal

strategos@g5000 /usr/share/wordlists> wc -l rockyou.txt
14344392 rockyou.txt     
strategos@g5000 /usr/share/wordlists> head rockyou.txt
123456
12345
123456789
password
iloveyou
princess
1234567
rockyou
12345678
abc123

Uso de un algoritmo de cifrado inseguro

La notable filtración de datos de Adobe fue ligeramente diferente. En lugar de usar una función de hash segura para almacenar los valores hash de las contraseñas, la empresa empleó un formato de cifrado obsoleto. Además, las pistas de contraseña se almacenaban en texto plano, a veces conteniendo la propia contraseña. En consecuencia, la contraseña en texto plano podía recuperarse con relativa rapidez.

Uso de una función hash insegura

LinkedIn también sufrió una filtración de datos en 2012. LinkedIn utilizó un algoritmo de hash inseguro, el SHA-1, para almacenar las contraseñas de los usuarios. Además, no se utilizó el método de sal de contraseñas. El método de sal de contraseñas consiste en añadir una sal (un valor aleatorio) a la contraseña antes de aplicarle el hash.

Responda las preguntas a continuación

¿Cuál es la contraseña número 20 en rockyou.txt?

Qwerty

Tarea 4 Uso de hash para el almacenamiento seguro de contraseñas

Uso de hash para almacenar contraseñas

Aquí es donde entra en juego el hash. ¿Qué pasaría si, en lugar de almacenar la contraseña, simplemente se almacenara su valor hash mediante una función de hash segura? Este proceso significa que nunca se necesita almacenar la contraseña del usuario y, si la base de datos sufre una filtración, un atacante tendría que descifrar cada contraseña para averiguar cuál era.

Hay un problema con esto. ¿Qué pasa si dos usuarios tienen la misma contraseña? Como una función hash siempre convierte la misma entrada en la misma salida, se almacenará el mismo hash de contraseña para cada usuario. Esto significa que si alguien descifra ese hash, obtendrá acceso a más de una cuenta. También significa que alguien puede crear una tabla arcoíris para descifrar los hashes.

Una tabla arcoíris es una tabla de consulta de hashes a texto plano, lo que permite averiguar rápidamente la contraseña de un usuario a partir del hash. Una tabla arcoíris compensa el tiempo necesario para descifrar un hash con espacio en el disco duro, pero su creación requiere tiempo. Aquí tienes un ejemplo rápido para que te hagas una idea de cómo es una tabla arcoíris.

PicadilloContraseña
02c75fb22c75b23dc963c7eb91a062cczxcvbnm
b0baee9d279d34fa1dfd71aadb908c3f11111
c44a471bd78cc6c2fea32b9fe028d30aasdfghjkl
d0199f51d2728db6011945145a1b607abaloncesto
dcddb75469b4b4875094e14561e573d8000000
e10adc3949ba59abbe56e057f20f883e123456
e19d5cd5af0378da05f63f891c7467afabcd1234
e99a18c428cb38d5f260853678922e03abc123
fcea920f7412b5da7be0cf42b8c937591234567
4c5923b6a6fac7b7355f53bfe2b8f8c1enS3CyourP4$$

Sitios web como CrackStation y Hashes.com utilizan internamente enormes tablas arcoíris para descifrar rápidamente contraseñas de hashes sin sales . Buscar en una lista ordenada de hashes es más rápido que intentar descifrar el hash.

Protegiéndose de las mesas arcoíris

Para protegerse contra las tablas arcoíris, añadimos una sal a las contraseñas. Esta sal es un valor generado aleatoriamente que se almacena en la base de datos y debe ser único para cada usuario. En teoría, se podría usar la misma sal para todos los usuarios, pero las contraseñas duplicadas seguirían teniendo el mismo hash y se podría crear una tabla arcoíris para las contraseñas con esa sal.

La sal se añade al principio o al final de la contraseña antes de su hash, lo que significa que cada usuario tendrá un hash de contraseña diferente, incluso si tienen la misma contraseña. Funciones de hash como Bcrypt y Scrypt gestionan esto automáticamente. No es necesario mantener la privacidad de las sales.

Ejemplo de almacenamiento seguro de contraseñas

Puede encontrar muchas buenas guías en línea que promueven las mejores prácticas de seguridad para el almacenamiento de contraseñas. Antes de adoptar una, verifique si existen estándares que deba seguir al almacenar contraseñas. Considere este ejemplo de buenas prácticas de seguridad para el almacenamiento de contraseñas de usuario:

  1. Seleccionamos una función hash segura, como Argon2, Scrypt, Bcrypt o PBKDF2.
  2. Añadimos una sal única a la contraseña, como por ejemploY4UV*^(=go_!
  3. Concatenar la contraseña con la sal única. Por ejemplo, si la contraseña es AL4RMc10k, la cadena resultante seríaAL4RMc10kY4UV*^(=go_!
  4. Calcula el valor hash de la contraseña y la sal combinadas. En este ejemplo, usando el algoritmo elegido, necesitas calcular el valor hash de AL4RMc10kY4UV*^(=go_!.
  5. Almacena el valor hash y la sal única utilizada ( Y4UV*^(=go_!).

Uso del cifrado para almacenar contraseñas

Considerando el problema de guardar contraseñas para la autenticación, ¿por qué no cifrarlas en lugar de todos estos engorrosos pasos? La razón es que, incluso si seleccionamos un algoritmo de hash seguro para cifrar las contraseñas antes de almacenarlas, aún necesitamos almacenar la clave utilizada. Por lo tanto, si alguien obtiene la clave, puede descifrar fácilmente todas las contraseñas.

Responda las preguntas a continuación

Verifique manualmente el hash “4c5923b6a6fac7b7355f53bfe2b8f8c1” usando la tabla arcoíris anterior.

inS3CyourP4$$

Descifra el hash “5b31f93c09ad1d065c0491b764d04933” usando una herramienta en línea.

tryhackme

¿Deberían cifrarse las contraseñas en los sistemas de verificación de contraseñas? Sí/No

NAY

Reconocer hashes de contraseñas

Desde la perspectiva de la ciberseguridad defensiva, vimos cómo almacenar contraseñas de forma segura para los sistemas de autenticación. Abordemos esto desde la perspectiva de la seguridad ofensiva: si partimos de un hash, ¿cómo podemos reconocer su tipo, descifrarlo y recuperar la contraseña original?

Existen herramientas automatizadas de reconocimiento de hash, como  hashID  , pero no son fiables para muchos formatos. Para los hashes con prefijo, estas herramientas sí son fiables. Utilice una buena combinación de contexto y herramientas. Si encuentra el hash en la base de datos de una aplicación web, es más probable que sea MD5 que NTLM (NT LAN Manager). Las herramientas automatizadas de reconocimiento de hash suelen confundir estos tipos de hash, lo que destaca la importancia de aprender a usarlas por su cuenta.

Contraseñas de Linux

En Linux , los hashes de contraseñas se almacenan en [ /etc/shadownombre del sistema], que normalmente solo puede leer el usuario root. Antes se almacenaban en [nombre del sistema] /etc/passwd, que era legible para todos.

El shadowarchivo contiene la información de la contraseña. Cada línea contiene nueve campos, separados por dos puntos ( :). Los dos primeros campos son el nombre de usuario y la contraseña cifrada. Puede encontrar más información sobre los demás campos al ejecutarlo man 5 shadowen un sistema Linux .

El campo de contraseña cifrada contiene la frase de contraseña hash con cuatro componentes: prefijo (ID del algoritmo), opciones (parámetros), sal y hash. Se guarda en formato $prefix$options$salt$hash. El prefijo facilita el reconocimiento de contraseñas de estilo Unix y Linux ; especifica el algoritmo de hash utilizado para generar el hash.

Aquí tienes una tabla rápida con algunos de los prefijos de contraseñas de estilo Unix más comunes. Están ordenados de mayor a menor seguridad. Puedes leer más sobre ellos consultando la página del manual con man 5 crypt.

PrefijoAlgoritmo
$y$yescrypt es un esquema de hash escalable y es la opción predeterminada y recomendada en los sistemas nuevos.
$gy$gost-yescrypt utiliza la función hash GOST R 34.11-2012 y el método hash yescrypt
$7$scrypt es una función de derivación de claves basada en contraseñas
$2b$, $2y$, $2a$,$2x$bcrypt es un hash basado en el cifrado de bloques Blowfish desarrollado originalmente para OpenBSD pero compatible con una versión reciente de FreeBSD, NetBSD, Solaris 10 y más nuevas, y varias distribuciones de Linux.
$6$sha512crypt es un hash basado en SHA-2 con salida de 512 bits desarrollado originalmente para GNU libc y comúnmente utilizado en sistemas Linux (más antiguos).
$md5SunMD5 es un hash basado en el algoritmo MD5 desarrollado originalmente para Solaris
$1$md5crypt es un hash basado en el algoritmo MD5 desarrollado originalmente para FreeBSD

 

 

Ejemplo de Linux moderno

Considere la siguiente línea del archivo de contraseña de un sistema Linuxshadow moderno .

Terminal

root@TryHackMe#sudocat/etc/shadow |grepstrategosstrategos:$y$j9T$76UzfgEM5PnymhQ7TlJey1$/OOSg64dhfF.TigVPdzqiFang6uZA4QA1pzzegKdVm4:19965:0:99999:7:::

Los campos están separados por dos puntos. Los más importantes son el nombre de usuario, el algoritmo hash, la sal y el valor hash. El segundo campo tiene el formato $prefix$options$salt$hash.

En el ejemplo anterior, tenemos cuatro partes separadas por $:

  • yIndica el algoritmo hash utilizado, yescrypt
  • j9Tes un parámetro que se pasa al algoritmo
  • 76UzfgEM5PnymhQ7TlJey1¿Se utiliza la sal?
  • /OOSg64dhfF.TigVPdzqiFang6uZA4QA1pzzegKdVm4es el valor hash

Contraseñas de MS Windows

Las contraseñas de MS Windows se cifran mediante NTLM , una variante de MD4. Son visualmente idénticas a los hashes MD4 y MD5 , por lo que es fundamental usar el contexto para determinar el tipo de hash.

En MS Windows, los hashes de contraseñas se almacenan en el SAM (Administrador de Cuentas de Seguridad). MS Windows intenta evitar que los usuarios normales los descarguen, pero existen herramientas como mimikatz para evadir la seguridad de MS Windows. Cabe destacar que los hashes que se encuentran allí se dividen en hashes NT y hashes LM.

Un excelente lugar para encontrar más formatos de hash y prefijos de contraseña es la página de ejemplos de hashes de Hashcat . Para otros tipos de hash, normalmente necesitará comprobar la longitud o la codificación, o incluso investigar la aplicación que los generó. Nunca subestime el poder de la investigación.

Responda las preguntas a continuación

¿Cuál es el tamaño del hash en yescrypt?

256

¿Cuál es el modo hash indicado para Cisco-ASA MD5?

2410

¿Qué algoritmo hash se utiliza en Cisco-IOS si comienza con $9$?

scrypt

Tarea 6 Descifrado de contraseñas

Ya hemos mencionado las tablas arcoíris como un método para descifrar hashes que no usan una sal, pero ¿qué pasa si hay una sal involucrada?

No se pueden descifrar los hashes de contraseñas. No están cifrados. Hay que descifrarlos aplicando hashes a muchas entradas diferentes (por ejemplo, rockyou.txtque cubran muchas contraseñas posibles), añadiendo la sal si la hay y comparándola con el hash objetivo. Una vez que coincida, se sabrá cuál era la contraseña. Herramientas como Hashcat y John the Ripper se utilizan habitualmente para estos fines.

Descifrando contraseñas con GPU

Las GPU (unidades de procesamiento gráfico) modernas tienen miles de núcleos. Se especializan en el procesamiento digital de imágenes y la aceleración de gráficos por computadora. Aunque no pueden realizar el mismo tipo de trabajo que una CPU , son muy eficaces en algunos cálculos matemáticos relacionados con las funciones hash. Una tarjeta gráfica permite descifrar rápidamente muchos tipos de hash. Algunos algoritmos de hash, como Bcrypt, están diseñados para que el hash en una GPU no ofrezca ninguna mejora de velocidad con respecto al uso de una CPU ; esto les ayuda a resistir el descifrado.

¿Cracking en máquinas virtuales?

Cabe mencionar que las máquinas virtuales (VM) normalmente no tienen acceso a las tarjetas gráficas del host. Dependiendo del software de virtualización que utilice, puede configurarlo, pero es engorroso. Además, se produce una degradación del rendimiento al usar la CPU de un sistema operativo virtualizado , y cuando el objetivo es descifrar un hash, se necesita cada ciclo adicional de CPU .

Si quieres ejecutar Hashcat , lo mejor es hacerlo en tu host para aprovechar al máximo tu GPU, si está disponible. Si prefieres MS Windows, estás de suerte; las compilaciones de MS Windows están disponibles en el sitio web y puedes ejecutarlo desde PowerShell . Puedes hacer que Hashcat funcione con OpenCL en una máquina virtual , pero la velocidad probablemente será menor que si lo ejecutas en tu host.

John the Ripper usa CPU de manera predeterminada y trabaja en una VM de manera predeterminada, aunque puede obtener mejores velocidades al ejecutarlo en el sistema operativo host para evitar sobrecarga de virtualización y aprovechar al máximo losnúcleos y subprocesos de su CPU .

Es hora de descifrar algunos hashes

Te proporcionaré los hashes. Descifralos. Tú eliges cómo. Necesitarás usar herramientas en línea, como Hashcat o John the Ripper . Aunque puedes usar tablas arcoíris en línea para resolver lo siguiente, te recomendamos encarecidamente no hacerlo, ya que esto limitará tu aprendizaje. Para las tres primeras preguntas, usar » hashcatjunto con» rockyou.txtes suficiente para encontrar las respuestas.

Hashcat utiliza la siguiente sintaxis básica: hashcat -m <hash_type> -a <attack_mode> hashfile wordlist, donde:

  • -m <hash_type>Especifica el tipo de hash en formato numérico. Por ejemplo, -m 1000es para NTLM. Consulte la documentación oficial ( man hashcat) y la página de ejemplo para encontrar el código de tipo de hash que debe usar.
  • -a <attack_mode>Especifica el modo de ataque. Por ejemplo, -a 0es para un ataque directo, es decir, probar una contraseña de la lista de palabras tras otra.
  • hashfilees el archivo que contiene el hash que quieres descifrar.
  • wordlistEs la lista de palabras de seguridad que desea utilizar en su ataque.

Por ejemplo, hashcat -m 3200 -a 0 hash.txt /usr/share/wordlists/rockyou.txttratará el hash como Bcrypt y probará las contraseñas en el rockyou.txtarchivo.

Responda las preguntas a continuación

Úselo hashcatpara descifrar el hash, $2a$06$7yoU3Ng8dHTXphAg913cyO6Bjs3K5lBnwq5FJyA6d01pMSrddr1ZG, guardado en ~/Hashing-Basics/Task-6/hash1.txt.

Entregar85208520

Úselo hashcatpara descifrar el hash SHA2-256, 9eb7ee7f551d2f0ac684981bd1f1e2fa4a37590199636753efe614d4db30e8e1, guardado en guardado en ~/Hashing-Basics/Task-6/hash2.txt.

Entregarhalloween

Úselo hashcatpara descifrar el hash, $6$GQXVvW4EuM$ehD6jWiMsfNorxy5SINsgdlxmAEl3.yif0/c3NqzGLa0P.S7KRDYjycw5bnYkF5ZtB8wQy8KnskuWQS3Yr1wQ0, guardado en ~/Hashing-Basics/Task-6/hash3.txt.

Entregarspaceman

Descifrar el hash, b6b0d451bbf6fed658659a9e7e5598fe, guardado en ~/Hashing-Basics/Task-6/hash4.txt.

EntregarPistafunforyou

Tarea 7 Hashing para verificación de integridad

En la Tarea 3, mencionamos que nos centraríamos en dos usos del hash: el almacenamiento de contraseñas y la integridad de los datos. Hemos analizado extensamente cómo el hash protege las contraseñas en los sistemas de autenticación. En esta tarea, analizaremos cómo podemos usar las funciones hash para comprobar la integridad de los archivos.

 

Comprobación de integridad

El hash se puede usar para comprobar que los archivos no se hayan modificado. Si introduce los mismos datos, siempre obtendrá los mismos datos. Incluso si cambia un solo bit, el hash cambiará significativamente, como se muestra en la Tarea 2. Esto significa que puede usarlo para comprobar que los archivos no se hayan modificado o para garantizar que el archivo descargado sea idéntico al del servidor web. El archivo de texto a continuación muestra el hash SHA256 de dos archivos ISO de Fedora Workstation. Si al ejecutar sha256sumel archivo descargado se obtuvo el mismo hash que aparece en este archivo firmado, puede estar seguro de que su archivo es idéntico al oficial.

Terminal de AttackBox

También puedes usar el hash para encontrar archivos duplicados; si dos documentos tienen el mismo hash, son el mismo documento. Esto resulta muy práctico para encontrar y eliminar archivos duplicados.

HMAC

HMAC (Keyed-Hash Message Authentication Code) es un tipo de código de autenticación de mensajes (MAC) que utiliza una función hash criptográfica en combinación con una clave secreta para verificar la autenticidad e integridad de los datos.

Un HMAC puede utilizarse para garantizar que quien lo creó sea quien dice ser; es decir, se confirma su autenticidad. Además, prueba que el mensaje no ha sido modificado ni corrompido; es decir, se mantiene su integridad. Esto se logra mediante el uso de una clave secreta para demostrar la autenticidad y un algoritmo hash para generar un hash y comprobar la integridad.

Los siguientes pasos le darán una idea bastante clara de cómo funciona HMAC.

  1. La clave secreta se rellena hasta el tamaño del bloque de la función hash.
  2. La clave rellenada se combina mediante una operación XOR con una constante (normalmente un bloque de ceros o unos).
  3. El mensaje se codifica mediante la función hash con la clave XOR.
  4. Luego, el resultado del paso 3 se vuelve a codificar con la misma función hash, pero utilizando la clave rellenada y XORizada con otra constante.
  5. El resultado final es el valor HMAC, normalmente una cadena de tamaño fijo.

La siguiente ilustración debería aclarar los pasos anteriores.

Técnicamente hablando, la función HMAC se calcula utilizando la siguiente expresión:

H M A C ( K , M ) = H (( K ⊕ o p a d )|| H (( K ⊕ i p a d )|| M ))

Nótese que M y K representan el mensaje y la clave, respectivamente.

Responda las preguntas a continuación

¿Qué es el hash SHA256 de libgcrypt-1.11.0.tar.bz2encontrado en ~/Hashing-Basics/Task-7?

09120c9867ce7f2081d6aaa1775386b98c2f2f246135761aae47d81f58685b9c

¿Para qué sirve el número de modo hashcat HMAC-SHA512 (key = $pass)?

1750

Tarea 8 Conclusión

En esta sala se abordaron las funciones hash y sus usos desde diversas perspectivas. Antes de continuar, conviene distinguir entre hash , codificación y cifrado .

El hash , como ya se mencionó, es un proceso que toma los datos de entrada y genera un valor hash, una cadena de caracteres de tamaño fijo, también conocida como resumen. Este valor hash representa de forma única los datos, y cualquier cambio en los datos, por pequeño que sea, debería generar un cambio en el valor hash. El hash no debe confundirse con el cifrado o la codificación; el hash es unidireccional y no es posible revertir el proceso para obtener los datos originales.

La codificación convierte datos de un formato a otro para hacerlos compatibles con un sistema específico. ASCII, UTF-8, UTF-16, UTF-32, ISO-8859-1 y Windows-1252 son métodos de codificación válidos para el inglés. Tenga en cuenta que UTF-8, UTF-16 y UTF-32 son codificaciones Unicode y pueden representar caracteres de otros idiomas, como el árabe y el japonés.

Otro tipo de codificación que se usa comúnmente al enviar o guardar datos no es para ningún lenguaje específico. Algunos ejemplos son Base32 y Base64. Considere el siguiente ejemplo de uso base64para codificar y decodificar.

Terminal

strategos@g5000 ~> base64
TryHackMe
VHJ5SGFja01lCg==
strategos@g5000 ~> base64 -d
VHJ5SGFja01lCg==
TryHackMe

La codificación no debe confundirse con el cifrado, ya que usar una codificación específica no protege la confidencialidad del mensaje. La codificación es reversible; cualquiera puede cambiar la codificación de los datos con las herramientas adecuadas.

Solo el cifrado , que abordamos en las salas anteriores, protege la confidencialidad de los datos mediante un cifrado criptográfico y una clave. El cifrado es reversible, siempre que conozcamos el cifrado y podamos acceder a la clave.

Para continuar con este módulo, únase a John the Ripper ; sin embargo, si desea obtener información más profunda sobre criptografía, considere esta sala que profundiza en más conceptos y muestra más herramientas relacionadas con la criptografía.

Responda las preguntas a continuación

Úselo base64para decodificar RU5jb2RlREVjb2RlCg==, guardado como decode-this.txten ~/Hashing-Basics/Task-8. ¿Cuál es la palabra original?

encodedecode

Asegúrese de haber tomado nota de los diversos conceptos y herramientas explorados en esta sala.

Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *