Android Pin / Contraseña que agrieta: Halloween no es la única cosa asustadiza en octubre

CCL Forense hizo el mundo forense móviles un gran servicio cuando lanzó varios scripts python para craquear gesto Android, PIN y los bloqueos de contraseña. Me he encontrado con la mayoría cerraduras gesto en mis exámenes, y los he agrietado con éxito cada vez con Herramientas de la CCL. Pero hace poco, tuve la oportunidad de echar un vistazo a la herramienta de cracking pin / contraseña.

Un colega me contactó y me dijo que había estado en marcha la herramienta CCL BruteForceAndroidPin.py durante más de dos semanas, pero tuvo que no tenga grietas una contraseña. Yo estaba bastante ingenuo cuando pensé: «Eso es ridículo, debes estar haciendo algo mal», pero me alegro de haber tenido la idea ninguno el menos. Me alegro porque el pensamiento me hizo investigar. Y la investigación llevó a algunos hechos bastante sorprendentes y una mejora en el ataque de fuerza bruta.


¿Qué hay en una contraseña para Android?

Así que, ¿cuántas posibilidades contraseña con los que cuenta un personaje 4-16 contraseña de longitud donde cada valor de posición puede ser cualquiera de los 94 personajes? Quiero decir, ¿qué es lo que estamos pidiendo nuestra cpu de hacer aquí? La siguiente tabla proporciona la respuesta.

Tabla 1. contraseña Posibilidades Android
Largo Número de Posibilidades

4

78074896

5

7339040224

6

689869781056

7

64.847.759.419.264

8

6.095.689.385.410.816

9

572.994.802.228.616.704

10

53.861.511.409.489.970.176

11

5.062.982.072.492.057.196.544

12

475.920.314.814.253.376.475.136

13

44.736.509.592.539.817.388.662.784

14

4.205.231.901.698.742.834.534.301.696

15

395.291.798.759.681.826.446.224.359.424

16

37.157.429.083.410.091.685.945.089.785.856

Las cifras de cada fila de la tabla son independientes de las otras filas

Sí, el gráfico anterior los totales más 37500000000000 cuatrillones de posibilidades! Y un total de las columnas-que es el verdadero efecto de buscar todas las combinaciones de contraseñas 4-16 longitud, por cierto-es un 3.7557e friolera de 31

Puede ser difícil de entender lo que significan los números grandes. Así, supongamos un escenario del peor caso: una contraseña de longitud de 16 caracteres. Ya que no podemos conocer la longitud de la contraseña de examinar los valores de hash, tenemos que comenzar nuestro ataque a una longitud de 4. Ahora, suponiendo que tenemos un razonablemente buen procesador, podemos hacer unos 200.000 contraseña intenta un segundo con el CCL script de fuerza bruta. Eso significa que nos tomará alrededor de 1.87784856658094e 26 segundos para completar la tarea. Hay 86.400 segundos en un día, y 365 días en un año (sí, sé que usted supiera que uno). Entonces, eso es una mera: 5.954.618.742.329.212.000 año! Voy a tratar de decir que en Inglés, «que es de 5,9 años Quintiliano!»

«Está bien,» usted dice, «Entiendo que no tengo ninguna esperanza de craqueo una contraseña de 16 caracteres de longitud. Pero , ¿cuánto tiempo de una contraseña puedo esperar razonablemente de romper con este script? » No demasiados, me temo. Vamos a continuar a asumir 94 caracteres son posibles por el valor de posición, y podemos generar y contraseñas de prueba a una velocidad de 200.000 por segundo.

Tabla 2. el tiempo para completar, 200K/sec Largo Número de Posibilidades Tiempo para completar

4

7.80749e 07

6 minutos

5

7.33904e 09

10 horas

6

6.8987e 11

39 días

7

6.48478e 13

1 décadas

8

6.09569e 15

96 décadas

9

5.72995e 17

90 milenios

10

5.38615e 19

8539 milenios

11

5.06298e 21

802.730 milenios

12

4.7592e +23

75456670 milenios

13

4.47365e 25

7092927066 milenios

14

4.20523e 27

666735144231 milenios

15

3.95292e 29

62.673.103.557.788 milenios

16

3.71574e 31

5.891.271.734.432.093 milenios

Las cifras de cada fila de la tabla son independientes de las otras filas

Las estadísticas arriba realmente no ofrecen mucha esperanza si la contraseña tiene una longitud de siete o más. Pero, como se trata de matemática simple, se hace evidente la forma de acelerar los resultados: reducir el espacio de claves, o acelerar el número de cálculos por segundo. Mejor aún, hacer las dos cosas!

== La reducción del espacio de claves

La herramienta de fuerza bruta CCL, como está escrito, incluye 95 caracteres ASCII. Uno de ellos, el carácter de espacio, es ilegal en las contraseñas de Android, por lo que, podemos editar la variable lista_caracteres un comienzo del código de 94 caracteres. Pero si tenemos en cuenta cómo son los personajes visibles en el teclado por defecto de Android en la pantalla de bloqueo, vemos que hay 26 letras minúsculas y 5 caracteres de puntuacion accesibles con una sola pulsación, llave regular. La naturaleza humana sugiere que la mayoría de las contraseñas se componen de estas teclas solo, y puesto que las palabras son más fáciles de recordar, probablemente, las 26 letras minúsculas bastaría.

Así que, ¿qué pasa si reducimos la variable lista_caracteres a apenas inferior letras mayúsculas, reduciendo así nuestra keyspace a 26, pero todavía están calculando a razón de 200K/sec? Echemos un vistazo:

<ª align = "center" width = "33%" valign = "top"> Número de Posibilidades

Tabla 3. el tiempo para completar, keyspace = 26, 200k/sec
Largo Tiempo para completar

4

456976

2 segundo

5

1.18814e 07

59 segundos

6

3.08916e 08

25 minutos

7

8.03181e 09

11 horas

8

2.08827e 11

12 días

9

5.4295e 12

314 días

10

1.41167e 14

2 décadas

11

3.67034e 15

58 décadas

12

9.5429e + 16

15 milenios

13

2.48115e 18

393 milenios

14

6.451e 19

102.278 milenios

15

1.67726e 21

265.927 milenios

16

4.36087e 22

6914120 milenios

Las cifras de cada fila de la tabla son independientes de las otras filas

Hey, ahora estamos cocinando! A menos que la contraseña es 9 o más caracteres, tenemos alguna esperanza de descifrarlo. Y puesto que la mayoría de los dispositivos Android son los teléfonos inteligentes, los usuarios probablemente no crean contraseñas ultra-largas porque quieren un acceso rápido a sus dispositivos.

Esta modificación de la secuencia de comandos CCL podría ser suficiente para la mayoría de los ataques. Y, podemos mejorar el guión, haciendo diferentes keyspaces seleccionables a través de opciones, tales como-l para minúsculas,-u para mayúsculas,-d para los dígitos, y-s para caracteres especiales (signos de puntuación, etc.) De hecho, fui a los esfuerzos para hacer precisamente eso, pero antes de que te emociones y me piden que envíe la herramienta modificada para usted, por favor siga leyendo.

Obviamente, un espacio de claves de sólo letras en minúscula no podrá descifrar una contraseña que incluye todos los caracteres no incluidos que keyspace, y usted no sabrá definitivamente si lo hace o no lo hace de 6.9 mil millones años! Tenemos que hacer algo más que reducir el espacio de claves, tenemos que aumentar la tasa de cálculo, también!


Incrementar el Cálculo Cambio

enfoque al keyspace puede mejorar significativamente sus tiempos de búsqueda … hasta cierto punto. Pero si vamos a lograr un progreso real en la obtención ilegal de contraseña, vamos a tener que agradecer CCL Forensics poderosamente por su contribución, pero cortésmente pasar a otras herramientas. Python simplemente no es la mejor plataforma para este tipo de proceso.

Por otra parte, OCL es aparentemente un lenguaje excelente para este tipo de tratamiento, y la Unidad especializada de procesamiento gráfico es más adepto y este tipo de cálculo de la CPU de manera más general capaz. Y da la casualidad de que la herramienta hashcat utiliza ambos.

CPU Version

Tabla 4. el tiempo para completar, keyspace = 26, 25m/sec Largo

<ª align = "center" width = "33%" valign = "top"> Número de Posibilidades Tiempo para completar

4

456976

0 segundo

5

1.18814e 07

0 segundos

6

3.08916e 08

12 segundos

7

8.03181e 09

5 minutos

8

2.08827e 11

2 horas

9

5.4295e 12

2 días

10

1.41167e 14

65 días

11

3.67034e 15

4 años

12

9.5429e + 16

12 décadas

13

2.48115e 18

3 milenios

14

6.451e 19

81 milenios

15

1.67726e 21

2127 milenios

16

4.36087e 22

55.312 milenios

Deja un comentario

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