miércoles, febrero 05, 2014

Android.Oldboot: Primer Bootkit para Android

Hoy la noticia que más me ha sorprendido ha sido la que parece primera aparición en escena de un bootkit para los terminales Android, lo que abre la puerta a un panorama mucho más peligroso para los terminales con este sistema operativo y el malware, ya que si no se controlan bien en las tiendas de apps, esta moda puede ser más que peligrosamente aprovechada por apps maliciosas del tipo de la linterna molona o el juego de Android que vende tus WhatsApps que quieran generar dinero en la industria del fraude online.

Tras la proliferación del malware instalado a nivel de kernel como drivers, los fabricantes de sistemas operativos decidieron prohibir la instalación de drivers a nivel de kernel que no estuvieran firmados digitalmente por una entidad autorizada.

Figura 1: Error de intento de carga de driver no firmado en un Windows

Eso hizo que los creadores de malware crearan los bootkits, un software que funciona como un sistema operativo reducido a su mínima expresión con la única misión de buscar el kernel del sistema operativo, parchearlo para anular la verificación de la firma digital del los drivers, e instalar el rootkit a nivel de kernel con tranquilidad, antes de arrancar definitivamente el sistema operativo de la víctima - ya infectado -.  Aquí os publiqué un ejemplo en el que Blackngel - autor del libro de Linux Exploiting -hacía algo algo similar con un sistema operativo, pero con el objetivo de hacer un ataque de fuerza bruta.

Para conseguir hacer todo ese proceso, los bootkits necesitan ponerse antes en el proceso de arranque, así que modifican el famoso MBR (Master Boot Record) del disco duro del sistema para conseguir el control total de la máquina de la víctima. Como contramedida a los bootkits, la industria decidió apostar por el firmado digital del Master Boot Record y la comprobación del mismo desde el firmware UEFI del equipo, lo que se llamó SecureBoot y hace que antes de instalar un nuevo sistema operativo en un hardware sea necesario tenerlo firmado digitalmente por el fabricante - como hizo Microsoft con el loader de Linux -.

Ahora Dr. Web ha anunciado que ha descubierto un malware, al que ha denominado Android.Oldboot que se distribuye mayoritariamente en China como un bootkit. Para ello se aprovecha de apps maliciosas que instalan el bootkit, y en el siguiente reinicio se carga el rootkit que toma control total del sistema.

Figura 2: Android.Oldboot publicado por Dr. Web

Esto en Android es especialmente complicado de controlar, ya que la dispersión de hardware hace que sea complicado asegurarse de que todos los terminales con Android tienen la protección contra la manipulación del proceso de arranque.  Además, el proceso de cifrado de disco completo de Android es algo que se hace antes de que el sistema arranque, así que lo que hace el bootkit es cargarse en el inicio, pero después de que se haya descifrado el disco, por lo que no le afecta para nada si el terminal está cifrado o no.

Figura 3: El SecureBoot Activado en un firmware de dispositivo

Controlar el proceso de arranque en terminales Android es algo que se persigue desde hace tiempo, pero muchos terminales vienen con el Secure Boot deshabilitado y otros muchos usuarios lo deshabilitan de forma manual para instalar determinados mods de firmware en sus dispositivos.

Una fiesta para controlar todos que puede dar mucho juego al mundo del e-crime, que podría portar sus famosos ransonwares a un secuestro total del terminal, obligando a pagar a la gente si quiere volver a recuperar el control de su dispositivo, o podría también crear troyanos para espiar Android que sean más difíciles de detectar y tengan más poder dentro de todo el terminal o evolucionar los Rogue AV de Android a sistemas mucho más peligrosos.

Saludos Malignos!

2 comentarios:

Luis dijo...

Mira que leo mucho el blog, pero normalmente no tenia nada que comentar, ya que mis conocimientos son limitados, pero en este caso si que voy a dar mi opinion, ya que me dedico a esto.

Este bootkit esta bien pensando, atacas desde la particion /boot que es bastante estatica, por lo que incluso en un Factory Reset se volveria a infectar. El problema es que la unica forma de infectarse es metiendo una imagen con el bootkit, ni siquiera teniendo root podrias infectarte, ya que la particion boot es de solo lectura. Esto hara que en teoria tendra menos tasa de infectados que una aplicacion subida al Google Play, por ejemplo.

En cuanto al uso de secureboot y otras medidas de seguridad en terminales moviles lo veo mas como una forma para que los fabricantes se laven las manos si el usuario modifica el terminal que como una verdadera medida de seguridad.

La verdadera solucion seria una colaboracion de verdad entre los fabricantes y los cocineros de ROMs. Yo tengo un terminal del modelo X, que tiene una version de android 4.2, por ejemplo. Si yo consigo montar una version 4.3 y tengo una imagen de calidad (todo funcionando, buen rendimiento, etc.) el fabricante tendria que tener algun metodo para comprobar la calidad de mi imagen, firmarla y permitir publicarla. Con esto tendriamos imagenes customizadas, con secureboot totalmente protegidas.

Pero claro, teniendo en cuenta que aun hoy en dia hay fabricantes que ni siquieran comparte el codigo gpl de sus imagenes, lo que he comentado antes se mas una utopia que otra cosa.

Jonathan Novel dijo...

Gracias por la info!
Tela ma ri ne ra...

Entrada destacada

Joinnovation & KeepCoding Connect: 2 Eventos para DOERS en #Madrid

Ayer fue el día de ver los proyectos de EQUINOX , el hackathon de ElevenPaths donde durante 24 horas se lanzan proyectos que normalmente ...

Entradas populares