
Me compre un proyector Magcubic HY300 Pro por 18 EUR en el 11.11, basicamente para trastear: un Android barato con el que experimentar y ver hasta donde se puede llegar. Lo que no esperaba es que, a los pocos minutos de darle red, una app del sistema se actualizara sola, viene con malware de fabrica, de la familia BADBOX 2.0: un dropper preinstalado y un backdoor con permisos de root. En este articulo vamos a ver como lo detectamos, como lo limpiamos y como lo dejamos usable sin depender del fabricante.
El SoC es un Allwinner H726 (board p2) con Android 14. Un detalle curioso de entrada: el aparato miente sobre su propia identidad. ro.product.model dice rk3566_rgo (un Rockchip), pero el chip real es Allwinner, se ve en ro.hardware=sun50iw15p1 y en /proc/device-tree/compatible. Esto es habitual en estos firmwares clonados.
Que trae dentro
Antes de tocar nada, lo primero es ver con que estamos lidiando. Conectamos por ADB y hacemos inventario. En nuestra unidad el malware vive en:
com.hy.storeos(/product/app/HY_StoreOs_QZ/): un instalador silencioso que corre como system con permisos para instalar y borrar paquetes. Se autoactualizo solo en los minutos que tuvo internet, sin que se lo pidieramos.com.hy.hyotaupdate: el OTA del fabricante, que puede reinstalar el malware.com.android.vending: no es Play Store, es un APK renombrado (Tubesky.apk) de procedencia dudosa./system/xbin/hotacksu: el plato fuerte. Es elsude Android renombrado, con setuid root y sin pedir ninguna autorizacion. Cualquier proceso que lo ejecute se hace root. Un backdoor de libro.
Como guinda, el eMMC entero es escribible por cualquier app (/dev/block/mmcblk0 con permisos 0666) y SELinux viene en Permissive. El aparato es un coladero.
(Aviso importante: hay varias variantes de este firmware. Otras guias describen paquetes com.hotack.*; la nuestra es la variante com.hy.*. Conviene hacer el inventario y no ejecutar nada a ciegas.)
Nivel 1: limpieza sin root
Esto lo puede hacer cualquiera, solo con ADB y sin rootear. Lo primero: no conectar el proyector a internet hasta terminar. En el asistente de primer arranque, saltamos la Wi-Fi (recordemos que storeos se autoactualiza en cuanto tiene red).
Para activar ADB: Ajustes - Informacion del sistema - "Modelo del equipo", pulsamos varias veces hasta activar el modo desarrollador, y luego Ajustes - Otras configuraciones - Modo desarrollador - "ADB debug".
Un apunte: el ADB por Wi-Fi en este modelo exige emparejamiento TLS (el puerto 5555 responde con STLS) y en nuestra unidad no conseguimos completarlo, asi que tiramos de cable USB-A a USB-A.
Con el inventario hecho, la limpieza son unos pocos comandos. El de storeos tiene truco:
# storeos: quitarlo Y borrar la actualizacion que se bajo de internet
adb shell pm uninstall --user 0 com.hy.storeos
adb shell pm uninstall-system-updates com.hy.storeos
Ojo con esto: pm uninstall --user 0 por si solo NO vuelve a la version de fabrica, deja la actualizacion en /data/app. Hay que rematarlo con uninstall-system-updates para que revierta a la de /product (en nuestra unidad, de la v2609042030 a la v2606150950). El resto se desactiva, que es reversible:
adb shell pm disable-user --user 0 com.hy.hyotaupdate
adb shell pm disable-user --user 0 com.android.vending
adb reboot
Lo que NO tocamos: com.htc.magcubicos (es el launcher y ademas los ajustes de Wi-Fi y Bluetooth), ni el soporte de hardware (enfoque, mando, HDMI). Todos los comandos, con sus verificaciones, estan en el repo.
El Nivel 1 deja el aparato mucho mejor, pero no arregla el backdoor hotacksu: esta en una particion de solo lectura. Para eso necesitamos root.
Nivel 2: root y sistema usable
Aqui es donde se pone interesante. Este firmware viene con el bootloader desbloqueado (verifiedbootstate=orange), SELinux en Permissive y el eMMC escribible. Eso, que es un desastre de seguridad, es justo lo que nos permite rootear sin necesidad de FEL ni PhoenixSuit: parcheamos init_boot con Magisk y lo escribimos directamente por ADB.
Antes de nada, un backup completo del eMMC (es nuestra unica red de seguridad real: este aparato no tiene slot A de sistema, asi que si algo rompe super, el backup es lo unico que lo recupera). El volcado incluye private.img, que lleva el numero de serie y las MAC, asi que ese fichero no se publica ni se comparte.
El paso de riesgo es escribir init_boot. Lo hacemos con dos comprobaciones de hash que abortan antes de escribir si algo no cuadra: una verifica que el fichero es el parcheado, otra que el destino contiene exactamente el init_boot original. Es la unica proteccion contra un error de offset. Con el bootloader desbloqueado arranca con el aviso naranja y no hace falta tocar vbmeta.
Una vez tenemos root, en lugar de borrar el malware a lo bruto escribiendo en super, usamos un modulo de Magisk (hy300-clean) que oculta el backdoor y los APK maliciosos de forma systemless, con whiteouts. No escribe nada en super y es reversible borrando el modulo. Tras instalarlo y reiniciar, hotacksu desaparece y ya no aparece como binario setuid del sistema.
Para dejarlo usable montamos FLauncher de launcher (ligero, open source) y las apps por ADB desde sus fuentes oficiales: Jellyfin, SmartTube, VLC, Kodi, mas Obtainium y F-Droid para mantenerlas al dia sin depender de Play Store ni de una cuenta de Google. Todo en variante armeabi-v7a, que el userspace es de 32 bits.
Un detalle del launcher: al arrancar sigue saliendo magcubicos porque esta marcado para arranque directo y FLauncher no. No podemos desactivar magcubicos entero (es tambien la pantalla de ajustes de Wi-Fi y Bluetooth), asi que desactivamos solo su actividad de launcher:
adb shell "su -c 'pm disable --user 0 com.htc.magcubicos/.activity.MainActivity'"
Para la entrada HDMI, el tile AwSource de FLauncher abre el selector de fuentes (HDMI1/2/3).
Lo que queda despues:
Aqui viene la parte honesta. Con el proyector ya en una VLAN aislada y pasando por AdGuard Home, miramos que resuelve filtrando por su IP. La buena noticia: ni rastro del BADBOX. No hay dominios de SOAX, ni los puertos 12341/12342, ni storeos llamando a casa. El dropper esta neutralizado.
Pero el aparato no se queda mudo. Sigue haciendo telemetria del fabricante (relay.luminago.app) y de Google, Baidu y Firebase (app-measurement.com, hmma.baidu.com, firebase-settings.crashlytics.com). Las listas DNS bloquean la mayor parte, pero no todo.
O sea: quitar el BADBOX no convierte este aparato en un dispositivo de confianza. La recomendacion final no cambia: en VLAN aislada con DNS filtrado, y nunca en la red principal.
Conclusion
Por 18 EUR tenemos un proyector Android limpio del malware mas agresivo, rooteado, con un launcher decente y apps que mantenemos nosotros, no el fabricante. No es un dispositivo en el que confiar a ciegas (ningun Android chino de marca blanca lo es), pero si uno que podemos tener controlado y aislado para lo que queramos trastear.
Todos los comandos, scripts y el modulo de Magisk, en el repo: cmos486/magcubic-hy300-pro-h726-debloat.
Un aviso para quien quiera replicarlo: esto esta probado en una unidad concreta (variante com.hy.*, board p2). Tu firmware, tus rutas y tus offsets pueden ser distintos. Comprueba tu board antes de tocar particiones: flashear la de la board equivocada brickea el aparato.