Modo EDL
Al igual que otros dispositivos
de chipset con procesador Qualcomm, algunos celulares con android, también
admite el Modo de descarga de emergencia o el Modo EDL. Este modo será muy útil
cuando su dispositivo se bloquee y no pueda desbloquearse utilizando el ADB.
Todos los créditos son para el equipo miembro del desarrollador de Android para
trabajar en el modo EDL. A continuación, se incluye la guía simple para iniciar
el modo EDL utilizando los métodos de combinación de ADB, fastboot y
combinaciones de hardware.
¿Qué es el modo EDL?
EDL, significa modo de descarga
de emergencia. Este es el modo especial en el que los usuarios pueden realizar
diversas tareas como desbloquear, desbloquear el cargador de arranque e
instalar cualquier ROM personalizada.
La mayoría de los dispositivos
PDA Android basados en Qualcomm, admiten el modo de descarga de emergencia
(EDL), lo que permite desbloquear el dispositivo, desbloquear el cargador de
arranque o modificar los parámetros del dispositivo protegido. Si se puede
acceder a la interfaz ADB, se puede usar "adb reboot edl" para
reiniciar en modo EDL.
Muchas PDA, con bloqueos no pueden
iniciarse con soporte completo de ADB mientras se puede acceder al modo
FastBoot. Pero si el cargador de arranque está bloqueado, no hay forma de
actualizar una partición o iniciar una imagen.
Algunos firmwares admiten el
reinicio a EDL en el módulo aboot del cargador de arranque de Android (el
comando "reboot-edl") pero la utilidad fastboot no reconoce
"reboot-edl" en la línea de comandos y se niega a enviar el comando
al dispositivo.
Dado que el protocolo de comando
FastBoot es simple y está basado en texto, es suficiente enviar un paquete que
contenga el texto "reboot-edl" a través de USB. La forma más sencilla
de hacerlo es parchear el archivo fastboot.exe de Windows, reemplazando el
texto "reboot-bootloader" con "reboot-edl". Como la cadena
"reboot-bootloader" se encuentra en la línea de comandos,
fastboot.exe envía la misma cadena constante al dispositivo. Por lo tanto, si
"reboot-bootloader" se reemplaza por "reboot-edl", puede
especificar "reboot-edl" en la línea de comandos y se enviará el
mismo texto al dispositivo.
En el ejemplo adjunto, la cadena
mencionada se encuentra en el desplazamiento 2685c.
Ocasionalmente bloqueé el
cargador de arranque en mi Xiaomi Redmi Note 3 Pro desbloqueado / rooteado
(Snapdragon) para que pudiera arrancar en los modos FastBoot o Diagnostic 900E.
Intenté cambiar de 900E a 9008 con QPST pero informó un error no especificado.
Al analizar aboot (emmc_appsboot.mbn),
se encontró que es compatible con "reboot-edl", por lo que lo único
que faltaba era encontrar una forma de enviarlo al cargador de arranque.
Con el fastboot.exe adjunto,
reinició con éxito al modo EDL (9008) y volvió a flashear las imágenes de
partición adecuadas.
Por supuesto, la versión
parcheada no admite el comando "reboot-bootloader" porque se ha
reemplazado por "reboot-edl".
Nota: Si no tiene éxito con este método, cargue en algún lugar (o publique la URL en un archivo existente) el archivo de imagen de su partición "aboot" del firmware de FastBoot. Intentaré analizarlos. Para Redmi Note 3 Pro, el archivo de imagen se llama "emmc_appsboot.mbn". Si su firmware de FastBoot contiene un archivo por lotes que llama a fastboot.exe, puede encontrar el nombre de archivo de imagen apropiado allí.
los dispositivos con conjuntos de chips Qualcomm tienen un cargador de arranque primario (PBL) que normalmente inicia el sistema Android, pero también alberga un modo de inicio alternativo conocido como modo EDL. El modo EDL, es el modo de descarga de emergencia de Qualcomm y permite a un fabricante de equipos originales (OEM) forzar el software flash en un dispositivo. Esto no se puede modificar (modo de solo lectura) y tiene control total sobre el almacenamiento del dispositivo. Muchos fabricantes de equipos originales, incluidos OnePlus y Xiaomi, han lanzado herramientas (conocidas como programadores) que utilizan el modo EDL y un protocolo conocido como Firehose para desbloquear un dispositivo, mientras que otras herramientas de empresas como Nokia han filtrado. Firehose, puede utilizar una serie de comandos para flashear dispositivos, junto con la capacidad de examinar los datos dentro de la memoria de un dispositivo. Los investigadores de seguridad Roee Hay (@roeehay) y Noam Hadad de Aleph Research descubrieron vulnerabilidades críticas en los dispositivos al usar este modo, lo que le otorga a un atacante acceso completo a los dispositivos.
Es importante tener en cuenta que esta vulnerabilidad requiere acceso físico al dispositivo, pero aún así es increíblemente peligroso y es probable que no pueda ser reparado. Los atacantes utilizaron el nivel de acceso otorgado al modo EDL para omitir el arranque seguro en un Nokia 6, anulando la cadena de confianza y obteniendo la ejecución completa del código en cada parte de la secuencia de arranque, incluido el sistema operativo Android. Se ha teorizado para funcionar de la misma manera en otros dispositivos, y los investigadores también lograron desbloquear y rootear múltiples dispositivos Xiaomi sin pérdida de datos.
¿Qué dispositivos se ven afectados por este exploit?
En primer lugar, los dispositivos que se ven afectados.
Lista de dispositivos afectados.
Explotando un teléfono con Android.
La secuencia de inicio de un teléfono típico de Android Qualcomm
Es importante comprender primero la secuencia de arranque de un dispositivo Android típico antes de explicar cómo puede ser explotado. El software Bootloader (SBL) es un gestor de arranque con firma digital que se verifica para verificar su autenticidad antes de cargarlo en imem. imem es una memoria rápida en el chip utilizada para la depuración y las transacciones DMA (acceso directo a la memoria) y es propiedad de los conjuntos de chips Qualcomm.

Algunos dispositivos tienen un cargador de arranque extensible (XBL) en lugar de un SBL, pero el proceso de arranque es prácticamente el mismo. El SBL o XBL luego lanza ABOOT, que implementa fastboot. Después de esto, también se carga TrustZone (seguridad basada en hardware). TrustZone comprueba la autenticidad de ABOOT a través de un certificado raíz basado en hardware. La SBL (o XBL, en algunos casos) está diseñada para rechazar un ABOOT incorrectamente firmado (o sin firmar).
Una vez autenticado, ABOOT luego comprueba / boot y / recovery para verificar la autenticidad antes de lanzar el kernel de Linux. Se realizan algunos preparativos del sistema y, a continuación, la ejecución del código se transfiere al kernel. ABOOT se conoce comúnmente como el "Cargador de arranque de Android" y, cuando desbloqueamos el cargador de arranque de un dispositivo, deshabilitamos esta verificación de autenticidad en ABOOT.
Acceso al modo EDL
Mientras que algunos dispositivos tienen una combinación de hardware simple (o, lo que es peor, un simple comando fastboot patentado presente en muchos dispositivos Xiaomi), otros, como los dispositivos Nokia, necesitan pines cortos conocidos como "puntos de prueba" presentes en la placa principal del dispositivo. También era posible, antes del parche de seguridad de diciembre de 2017, ejecutar simplemente "adb reboot edl" en muchos dispositivos (incluido el Nexus 6 y 6P) e ingresar al modo EDL. Esto ha sido arreglado desde entonces.
Otros dispositivos también pueden usar lo que se conoce como un cable de "flash profundo", que es un cable especial con ciertos pines cortocircuitados para indicar al sistema que arranque en modo EDL. Los dispositivos Xiaomi antiguos pueden utilizar este método, junto con el Nokia 5 y el Nokia 6. Otros dispositivos también se iniciarán en el modo EDL cuando no puedan verificar la SBL.

Utilizando el modo EDL para obtener acceso completo en un OnePlus 3 / 3T
El modo EDL se puede utilizar de varias maneras en un dispositivo, principalmente para dispositivos que no tienen restricciones mediante el uso de flash. Como se explicó anteriormente, teóricamente debería ser seguro para cualquier persona acceder a este modo, ya que, en el peor de los casos, ABOOT rechazará el software que no está firmado oficialmente por el fabricante. Si bien esto es cierto, en realidad es posible obtener un control completo sobre un OnePlus 3 o 3T y sus archivos en una prueba de concepto explotada por los investigadores.
Esto se hará a través de dos comandos muy peligrosos que OnePlus dejó accesibles en una versión anterior de ABOOT (el cargador de arranque de Android), para desbloquear el cargador de arranque del dispositivo (sin que se muestre una advertencia al usuario en el arranque) y deshabilitar dm_verity. dm_verity también se conoce como inicio verificado y es parte de una secuencia de inicio segura en un dispositivo Android. Los dos comandos son los siguientes.
fastboot oem disable_dm_verity
fastboot oem 4F500301 / 2
Observe el sencillo proceso de 4 pasos a continuación que utiliza el protocolo Firehose.
Primero, inicie el dispositivo en modo EDL. Esto se puede hacer a través de adb en OxygenOS 5.0 o inferior o usando una combinación simple de teclas de hardware.
Descargue una imagen de sistema anterior de debajo de OxygenOS 4.0.2.
Flashee aboot.bin a través de firehose (recuerde que aboot.bin implementa fastboot, como mencionamos anteriormente)
Ahora podrá deshabilitar el arranque seguro y desbloquear el cargador de arranque sin borrar el dispositivo simplemente usando los dos comandos fastboot anteriores.
Si recuerda, anteriormente se descubrió que OnePlus había dejado dos comandos de fastboot peligrosos hace casi un año, uno que desbloqueaba el cargador de arranque y otro que deshabilitaba el arranque seguro. Si bien es cierto que un atacante no puede instalar software malicioso en el dispositivo, puede degradar el dispositivo para que sea más antiguo y vulnerable al software de ataque. Simplemente ejecutando los comandos de fastboot anteriores, un atacante puede tener acceso completo al dispositivo.
Y eso es todo, el gestor de arranque está desbloqueado, el arranque seguro está desactivado y no hay absolutamente ninguna pérdida de datos. Si un atacante deseara llevar esto un paso más allá, podría lanzar un kernel personalizado malintencionado que habilita el acceso de root al dispositivo que el usuario nunca conocería.
Firehose funciona a través del protocolo de Qualcomm Sahara, que acepta un programador firmado por OEM y es cómo se llevaría a cabo el ataque anterior. Cuando está conectado a un dispositivo, actúa como un SBL a través de USB. La mayoría de los programadores utilizan Firehose para comunicarse con un teléfono en modo EDL, que es lo que los investigadores explotaron para obtener el control total del dispositivo. Los investigadores también utilizaron esto para desbloquear un dispositivo Xiaomi simplemente mediante el flasheo de una imagen modificada que desbloqueó el cargador de arranque. Luego presentaron un kernel personalizado que le dio acceso a la raíz y lanzaron SELinux en forma permisiva y también extrajeron la imagen de datos de usuario cifrada del dispositivo.
Conclusión
Se desconoce por qué los fabricantes de equipos originales liberan a estos programadores de Qualcomm. Los programadores de Nokia, LG, Motorola y Google filtraron en lugar de ser lanzados, sin embargo, los investigadores lograron romper toda la cadena de confianza en el Nokia 6 y obtener acceso completo al dispositivo a través de métodos de explotación similares. Confían en que el ataque se puede portar a cualquier dispositivo que sea compatible con estos programadores. Si es posible, los fabricantes de equipos originales deben utilizar los qFuses de hardware que evitan las reversiones de software, activando cuando el hardware del dispositivo retrocede y puede avisar a un usuario de que se ha producido. Los interesados pueden echar un vistazo al documento de investigación completo a continuación y leer también la explotación completa de Nokia.
Fuente: https://forum.xda-developers.com