Salts en hashes Bitcoin "wallet.dat"

Iniciado por MA40, 9 Noviembre 2020, 13:20 PM

0 Miembros y 2 Visitantes están viendo este tema.

MA40

Hola.

Estoy haciendo pruebas con HashCat.

En mi archivo de hashes, tengo varios del tipo Bitcoin "wallet.dat".

HashCat dice que algunos hashes tienen salts y otros no.

¿Los hashes de contraseñas de Bitcoin "wallet.dat" realmente tienen salts?

Un saludo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

MA40

¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

AlbertoBSD

Cita de: MA40 en  9 Noviembre 2020, 13:20 PM
¿Los hashes de contraseñas de Bitcoin "wallet.dat" realmente tienen salts?

Para Bitcoin, la información completa para poder crackear la Wallet siempre debe de tener un SALT.

Si no tiene el salt, posible me sea otro tipo de wallet, ya que sin ese Salt seria fácil generar diccionarios para crackear las wallets rápidamente

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MA40

Hola.

Hay algo que se me escapa.

Sí por salt entendemos lo que se describe en https://es.m.wikipedia.org/wiki/Sal_(criptograf%C3%ADa) , no entiendo lo siguiente:

Un archivo "wallet.dat" cifrado tiene el hash de la contraseña y si tiene salt, entonces el hash es el de la contraseña + el salt.

Pero un archivo "wallet.dat" es un archivo independiente y transportable. Quiero decir que si tengo en un ordenador instalado Bitcoin Core con su "wallet.dat", y ahora copio el "wallet.dat" en otro ordenador con Bitcoin Core, en este segundo ordenador también funciona el "wallet.dat". O sea, puedo transferir bitcoins sólo con la contraseña. ¿Cómo sabe este segundo ordenador qué salt se debe añadir a la contraseña para descifrar las claves privadas?

Según el artículo de la Wikipedia, los salts se guardan aparte de los hashes para que sean efectivos.

Me explico ¿no?

Un saludo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

AlbertoBSD

Si te explicas y tu duda es valida.

El SALT se encuentra dentro del archivo wallet.dat también, son 8 bytes random que se eligen diferente cada vez que cambias tu passphase, asi si mueves tu archivo wallet.dat a otro PC o movil, el bitcoincore sabra encontrar el SALT y utilizarlo junto con tu contraseña para desbloquear las llaves cifradas que tambien estan dentro del mismo archivo.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MA40

Muchas gracias AlbertoBSD.

El hash se puede extraer fácilmente del archivo "wallet.dat". ¿Se podría extraer también el salt? ¿Cómo?

Un saludo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

AlbertoBSD

Ya hay programas que lo hacen, pero si te interesa hacerlo manual, tienes que localizar la posicion del ascii "mkey" en el archivo, segun he visto solo hay un mkey por wallet, pero no me a tocado ver muchas wallets.

Una vez localizada la posición inicial de ascii mkey en el wallet, el salt se encuentra iniciando -23 posiciones antes del mkey y solo son 8 bytes, ejemplo, el texto selecionado son los 8 bytes en hexadecimal que representan el salt.




Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MA40

#7
Muchas gracias AlbertoBSD.

Me salen caracteres no imprimibles.

Por otro lado, he probado en HashCat con un hash que tiene salt, un hash del que conozco la contraseña, y sin especificar ningún salt, especificando sólo la contraseña, HashCat la recupera.

¿Cómo es posible?

Un saludo.

EDITO: Y con John the Ripper pasa lo mismo.
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador

AlbertoBSD

Cita de: MA40 en 23 Noviembre 2020, 14:10 PM
Me salen caracteres no imprimibles.

Si generalmente son valores no imprimibles, se tienen que transformar a un string hexdecimal para poder manejarlo sin problemas..

Cita de: MA40 en 23 Noviembre 2020, 14:10 PM
Muchas gracias AlbertoBSD.
Por otro lado, he probado en HashCat con un hash que tiene salt, un hash del que conozco la contraseña, y sin especificar ningún salt, especificando sólo la contraseña, HashCat la recupera.

A ver tiene o no tiene Salt?

Si te de la contraseña, seguramente el string que le estas pasando a hashcat o johntheripper tiene el salt y no te has dado cuenta, generalmente es un string de 16 digitos hexadecimales que corresponde a los 8 bytes con caracteres no imprimibles.

Por ejemplo tienes un hash tipo

$bitcoin$64$<....>&16$001122aabbccddee$....

El valor 001122aabbccddee Corresponde al SALT

byte 1 : 00
byte 2 : 11
byte 3 : 22
byte 4 : aa
byte 5 : bb
byte 6 : cc
byte 7 : dd
byte 8 : ee

Entonces el hash que le pasas a los programas tiene o no tiene salt?

Veo que tiene interés en el tema, sigue así investiga mas!! y no utilices los programas sin saber que hacen, así hasta que estés totalmente seguro del proceso.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

MA40

#9
Tienes toda la razón AlbertoBSD.

Tooooodos los hashes que tengo resulta que llevan el salt incorporado. Soy tooonto.

Es que no le encontraba sentido. Pensaba que los salts se utilizaban precisamente para evitar precisamente eso: encontrar toda la información para una autentificación, todo en un mismo sitio.

Los "wallet.dat" contienen toda la información (cifrada, claro) para una autentificación. Y los hashes que utilizan HashCat y John the Ripper, la llevan.

¿Por qué utiliza entonces salts Bitcoin Core en sus "wallet.dat"? Supongo que para que los hashes sean siempre diferentes aun utilizando la misma contraseña. Eso protege al menos de las tablas arco iris.

Muchísimas gracias AlbertoBSD; creo que ya tengo todo claro. (Bueno, todo todo no, aún me queda saber cómo programar un computador cuántico para descifrar los hashes de Bitcoin). ;D

Un saludo.

EDITO: Por cierto, muy bueno tu blog https://albertobsd.dev/blog/
¿Qué sucedería si se enfrentara una fuerza imparable contra un muro inamovible?
Visita Ediciones MA40 - Libros clásicos de ajedrez y este blog de ajedrez
ChessFaucet.com - Gana bitcoins jugando al ajedrez contra el ordenador