iOS es una plataforma de código cerrado. El interés en mirar en
núcleo de IOS puede estar justificado por diferentes razones. Por ejemplo, es
posible que desee ver en el proceso de verificación de código de la firma e
investigación de vulnerabilidad.
Este artículo le
mostrará paso a paso cómo obtener, descifrar y extraer una versión binaria de
núcleo de IOS con ayuda del experto de análisis de vulnerabilidades
informáticas.
Santoku es un sistema
operativo de código abierto y libre que se centra en el análisis forense del
dispositivo móvil, análisis de malware móvil, y la seguridad móvil.
¿QUE
NECESITAS?
§ Una instalación
funcionando de Linux Santoku
§ Un dispositivo iOS
§ Algunas herramientas que
encontrarás al leer el artículo
§ IDA Pro y HexRays plugin
El núcleo de IOS se basa
en el núcleo de XNU con algunas modificaciones. Este núcleo es un código
abierto. Una vez que tenga una versión binaria del núcleo, necesitaras utilizar
algunas herramientas de ingeniería inversa para completar tu análisis. En iOS
en lugar de encontrar un núcleo independiente, nos encontraremos con un
“kernelcache”. Según expertos de análisis de vulnerabilidades informáticas de organización de ciberseguridad el
kernelcache es esencialmente un contenedor para el núcleo en sí mismo y todas
las extensiones (kexts para los más familiarizados con OS X), empacadas juntas.
¿CÓMO
HACERLO?
En la primera parte del
artículo, asumiremos que se está ejecutando en una nueva instalación de Santoku
Linux, así podemos continuar juntos.
Para extraer la memoria
caché del núcleo se pueden extraer y descifrar desde su teléfono, o extraer y
descifrar el archivo. Ipsw. Un archivo IPSW es un archivo que contiene el
firmware y actualizaciones para el dispositivo. Con el fin de encontrar dónde
descargar nuestro objetivo IPSW de Internet podemos buscar en internet.
En este ejemplo hemos
elegido para extraer un IPSW de iOS 7.0.2 para el iPhone 4, descargable desde
Internet.
A continuación, en de la
terminal nosotros haremos:
wget
http://appldnld.apple.com/iOS7/091-9871.20130924.7imYu/iPhone3,1_7.0.2_11A501_Restore.ipsw
unzip
iPhone3,1_7.0.2_11A501_Restore.ipsw
Como podemos ver que hay
un archivo kernelcache.release.n90. Nosotros vamos a descifrar este archivo con
algunas herramientas disponibles libremente y analizarlo en IDA Pro. Para ello,
necesitaremos de xpwn y las herramientas de lzssdec.
Primero instalamos
algunas dependencias y herramientas:
sudo
apt-get install git build-essential libz-dev libbz2-dev libusb-dev cmake
libpng12-dev
git
clone <a
href=”https://github.com/planetbeing/xpwn.git”>https://github.com/planetbeing/xpwn.git</a>
cd
xpwn/
ls
LA
CARPETA XPWNTOOL
En la carpeta de BUILD
podemos encontrar las instrucciones para construir la herramienta, o
simplemente seguir esta guía:
mkdir
build
cd
build
cmake
../
make
Ahora encontraras
xpwtool bajo la subcarpeta ipsw-patch:
LA
LOCACIÓN DE XPWNTOOL
Ahora podemos copiar el
xpwntool en nuestro directorio con nuestro kernelcache encriptado. Ahora
necesitas encontrar tu IV y Key para tu tipo particular de dispositivo y
archivo (kernelcache). Ellos no serán incluidos en esta guía, pero puedes descargarlos
desde su dispositivo con jailbreak (que es modelo de dispositivo, archivo, y la
versión específica de IOS) o encontrarlos en línea el archivo kernelcache.
Según expertos de
análisis de vulnerabilidades informáticas de organización de ciberseguridad,
también necesitará la clave AES y IV para el archivo. Estos se almacenan en el
archivo encriptado con la clave de GID en el dispositivo. Esta clave GID está
en el hardware del dispositivo y que es compartido entre los dispositivos que
se tienen el mismo procesador.
./xpwntool
kernelcache.release.n90 kernelcache.decrypted -iv [MY_IV] -k [MY_KEY]
-decrypt
UNA
LISTA DE LOS ARCHIVOS DESCIFRADOS CON KERNELCACHE:
Para obtener un valido
Mach-O ejecutable para analizar en IDA Pro vamos a tener que utilizar otra
herramienta, lzssdec.
wget
<a
href=”http://nah6.com/~itsme/cvs-xdadevtools/iphone/tools/lzssdec.cpp”>http://nah6.com/~itsme/cvs-xdadevtools/iphone/tools/lzssdec.cpp</a>
g++ lzssdec.cpp -o lzssdec</em>
LZSSDEC COMPILADO
Podemos ejecutar lzssdec
sobre la imagen descifrada:
./lzssdec
-o 448 < kernelcache.decrypted > kernelcache.mach.arm
Podemos comprobar el
resultado con:
xdd
kernelcache.mach.arm | head
Y ver que los primeros
bytes son:
0xfeedface
VER
LOS RESULTADOS EN SANTOKU-LINUX
Usando comando de file:
file
kernelcache.mach.arm
Ahora podemos tomar
nuestro kernelcache.mach.arm y ponerlo en IDA Pro. Vamos a utilizar IDA Pro en
Windows con HexRays eventualmente. Abrimos el kernelcache.mach.arm con IDA Pro.
KERNELCACHE.MACH.ARM
EN IDA PRO
Dan Heyes, consultor de
análisis de vulnerabilidades informáticas de organización de ciberseguridad
menciona que la herramienta nos preguntará si queremos dividir el núcleo en las
muchas kexts que se combinan en el interior (en el núcleo IOS y las extensiones
cargables de kext están todos empacados dentro de kernelcache). Elegir sí y
confirmando las otras ventanas para iniciar el análisis.
ÁREAS
INEXPLORADAS EN EL ANÁLISIS IDA PRO
Observe todas las áreas
inexploradas por IDA, veremos que al final del análisis vamos a tener una idea
más clara de lo que está pasando en el archivo binario.
Cuando se termina el
análisis, podemos guardar la base de datos y eventualmente tomar una copia de
seguridad.
ANÁLISIS
TERMINADO EN IDA PRO
Ahora podemos empezar a
ingeniería reversa del núcleo IOS y ajustar el análisis automático inicial
hecho por IDA Pro. Según expertos organización de ciberseguridad, ingeniería
reversa del núcleo IOS ayudaría hacer análisis de vulnerabilidades informáticas
en el núcleo IOS.
0 comments:
Post a Comment