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.
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.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 clavesLa 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: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
<ª align = "center" width = "33%" valign = "top"> Número de Posibilidades
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
|