Resultados 1 al 4 de 4

Rompiendo algoritmos XOR. Caso real

  1. #1 Rompiendo algoritmos XOR. Caso real 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    Días atrás encontré una web la cual pedía autenticación para acceder a una zona privada (Creo que el software de cifrado se llama 8vsb). Lo curioso de esto es que la autenticación no era enviada por formularios a ninguna parte.

    Dicha página contenía la zona privada dentro de sí misma, pero este contenido estaba encriptado, y únicamente podía ser visualizado si se introducía la password.

    En la siguiente imagen se ve la página encriptada:





    Si continuamos analizando el código JavaScript, veremos unas líneas en donde se realizan varias comprobaciones previas al algoritmo de descrifrado, para verificar que todo es correcto.

    He marcado de amarillo las líneas que hay que eliminar, y de azul las líneas que hay que añadir para ‘engañar’ al sistema de comprobación.





    Seguimos traceando el codigo JavaScript, y vemos que la operación de des/cifrado consiste en una operación XOR (c=c^44^password[índice]), como se ve en la siguiente captura:





    El funcionamiento de un algoritmo XOR es muy simple,
    Un algoritmo XOR es tremendamente débil en los casos en los que se conoce parte del contenido cifrado.

    Su funcionamiento es muy simple, se realiza una operación XOR byte a byte del contenido a encriptar con el byte correspondiente del password.
    La operación lógica XOR vale 0 cuando los dos operandos son iguales (0:0 o 1:1), y vale 1 cuando los dos operandos son diferentes (1:0 o 0:1).





    Por lo tanto, si lo aplicamos alreves (Al byte encriptado le aplicamos el password), obtendremos el byte original, ya que se trata de un algoritmo reversible.





    Por lo tanto, si supiéramos el contenido de los primeros bytes del contenido cifrado de dicha página, sería muy simple obtener los primeros bytes del password.
    Dado que lo más probable es que el contenido cifrado de la página sea contenido HTML, es de suponer que el contenido cifrado empiece por ‘<html>’ (6 bytes).

    Si esta suposición fuese correcta, únicamente deberíamos realizar 256 operaciones para la obtención de cada byte del password, lo cual, mediante un ataque de fuerza bruta sería algo trivial. Si tenemos en cuenta que se trata de un password, habría que reducir las 256 posibilidades al mapa de caracteres imprimibles, quedando éste mucho mas reducido.

    Para la obtención del primer byte del password sería un algoritmo similar a este:
    Charset = “abcdefghijklmnñopqrstuvwxyz0123456789.:,-|@#€¬€¿?”;
    For (int i = 0; i < charset.length ; i++)
    {
    if (cifrado[0] ^ charset[i]) == “<”
    Message(“El primer byte del password es “ + charset[i]);
    }

    Para la obtención del Segundo byte del password, se debería realizar la comprobación con ‘h’ en vez de ‘<’, ya que ‘h’ es el segundo byte de ‘<html>’.

    ¡Dejémonos de teoría!, vamos a ver si esto realmente funciona.
    He modificado el código Javascript, introduciendo unas líneas antes de la operación XOR, la cual nos mostrará en pantalla partes del contenido descenriptado con el password que nosotros introduzcamos.




    En este punto, no sabemos el password que debemos introducir, sin embargo suponemos que el contenido del primer byte será ‘<’, por lo que introduciremos por ‘fuerza bruta manual’ distintos valores.
    En la siguiente imagen, introduje el carácter ‘A’ , y el primer byte descrifrado que nos devolvió fue ‘o’. Por lo tanto… La password no empieza por ‘A’.





    Ahora, introduciremos ‘2’ como password, y vemos que nos devuelve ‘<’ como primer byte. Todo coincide, puede que sea el inicio de ‘<html>’





    Solo hay que seguir realizando los mismos pasos, byte a byte hasta conseguir el password.





    ¡Hasta otra!



    Publicado por TheSur en http://soctano.blogspot.com/2010/05/rompiendo-algoritmos-xor-caso-real.html
    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  2. #2  
    Iniciado
    Fecha de ingreso
    Aug 2010
    Mensajes
    12
    Descargas
    0
    Uploads
    0
    buff Muy avanzando para mi xd
    Citar  
     

  3. #3  
    Medio
    Fecha de ingreso
    Oct 2010
    Mensajes
    104
    Descargas
    6
    Uploads
    0
    Cita Iniciado por LUK Ver mensaje
    Días atrás encontré una web la cual pedía autenticación para acceder a una zona privada (Creo que el software de cifrado se llama 8vsb). Lo curioso de esto es que la autenticación no era enviada por formularios a ninguna parte.

    Dicha página contenía la zona privada dentro de sí misma, pero este contenido estaba encriptado, y únicamente podía ser visualizado si se introducía la password.

    En la siguiente imagen se ve la página encriptada:





    Si continuamos analizando el código JavaScript, veremos unas líneas en donde se realizan varias comprobaciones previas al algoritmo de descrifrado, para verificar que todo es correcto.

    He marcado de amarillo las líneas que hay que eliminar, y de azul las líneas que hay que añadir para ‘engañar’ al sistema de comprobación.





    Seguimos traceando el codigo JavaScript, y vemos que la operación de des/cifrado consiste en una operación XOR (c=c^44^password[índice]), como se ve en la siguiente captura:





    El funcionamiento de un algoritmo XOR es muy simple,
    Un algoritmo XOR es tremendamente débil en los casos en los que se conoce parte del contenido cifrado.

    Su funcionamiento es muy simple, se realiza una operación XOR byte a byte del contenido a encriptar con el byte correspondiente del password.
    La operación lógica XOR vale 0 cuando los dos operandos son iguales (0:0 o 1:1), y vale 1 cuando los dos operandos son diferentes (1:0 o 0:1).





    Por lo tanto, si lo aplicamos alreves (Al byte encriptado le aplicamos el password), obtendremos el byte original, ya que se trata de un algoritmo reversible.





    Por lo tanto, si supiéramos el contenido de los primeros bytes del contenido cifrado de dicha página, sería muy simple obtener los primeros bytes del password.
    Dado que lo más probable es que el contenido cifrado de la página sea contenido HTML, es de suponer que el contenido cifrado empiece por ‘<html>’ (6 bytes).

    Si esta suposición fuese correcta, únicamente deberíamos realizar 256 operaciones para la obtención de cada byte del password, lo cual, mediante un ataque de fuerza bruta sería algo trivial. Si tenemos en cuenta que se trata de un password, habría que reducir las 256 posibilidades al mapa de caracteres imprimibles, quedando éste mucho mas reducido.

    Para la obtención del primer byte del password sería un algoritmo similar a este:
    Charset = “abcdefghijklmnñopqrstuvwxyz0123456789.:,-|@#€¬€¿?”;
    For (int i = 0; i < charset.length ; i++)
    {
    if (cifrado[0] ^ charset[i]) == “<”
    Message(“El primer byte del password es “ + charset[i]);
    }

    Para la obtención del Segundo byte del password, se debería realizar la comprobación con ‘h’ en vez de ‘<’, ya que ‘h’ es el segundo byte de ‘<html>’.

    ¡Dejémonos de teoría!, vamos a ver si esto realmente funciona.
    He modificado el código Javascript, introduciendo unas líneas antes de la operación XOR, la cual nos mostrará en pantalla partes del contenido descenriptado con el password que nosotros introduzcamos.




    En este punto, no sabemos el password que debemos introducir, sin embargo suponemos que el contenido del primer byte será ‘<’, por lo que introduciremos por ‘fuerza bruta manual’ distintos valores.
    En la siguiente imagen, introduje el carácter ‘A’ , y el primer byte descrifrado que nos devolvió fue ‘o’. Por lo tanto… La password no empieza por ‘A’.





    Ahora, introduciremos ‘2’ como password, y vemos que nos devuelve ‘<’ como primer byte. Todo coincide, puede que sea el inicio de ‘<html>’





    Solo hay que seguir realizando los mismos pasos, byte a byte hasta conseguir el password.





    ¡Hasta otra!



    Publicado por TheSur en http://soctano.blogspot.com/2010/05/rompiendo-algoritmos-xor-caso-real.html
    Muchas gracias por el tutorial LUK, aunque tambien es avanzado para mi tratare de hacerlo xD - total probar no cuesta nada & sirve para seguir aprendiendo - Saludos
    El ignorante afirma, el sabio duda y reflexiona!
    Citar  
     

  4. #4  
    Colaborador HH
    Fecha de ingreso
    Jun 2006
    Ubicación
    Uruguay
    Mensajes
    1.451
    Descargas
    11
    Uploads
    0
    Es que hacer autenticación del lado del cliente es delirante
    Louis Armstrong le dice a Ella Fitzgerald
    "take another drink of wine, and maybe you change your mind"
    Citar  
     

Temas similares

  1. Respuestas: 22
    Último mensaje: 09-03-2019, 18:06
  2. Caso Real
    Por hystd en el foro OFF-TOPIC
    Respuestas: 15
    Último mensaje: 02-10-2011, 04:14
  3. Algoritmos de planificacion(CPU) Pascal
    Por 3rg0 en el foro PROGRAMACION DESKTOP
    Respuestas: 12
    Último mensaje: 08-09-2007, 13:50
  4. para los que saben de esto de algoritmos !!!!
    Por urystation en el foro GENERAL
    Respuestas: 0
    Último mensaje: 23-05-2003, 08:50
  5. Respuestas: 5
    Último mensaje: 14-11-2002, 19:42

Marcadores

Marcadores