Conocemos
el
Virus de la Policía que afecta a los ordenadores bloqueando la pantalla y
pidiendo dinero para desbloquear el sistema, el comportamiento típico de cualquier
"ransomware". Recientemente se
ha descubierto una versión para
Android. Vamos a mostrar las técnicas usadas por el atacante para forzar que
el malware permanezca en primer plano y persista al reinicio del dispositivo. Por último, ofreceremos una forma para eliminarlo del
dispositivo.
Si ejecutamos el
Virus de la Policía
en el emulador de Android, vemos una página web en la que nos pide dinero para
desinstalar la aplicación. Al igual que ocurre con la versión de escritorio, sin
pagar, es imposible de salir de la aplicación porque siempre vuelve al primer
plano y no nos deja suficiente tiempo para desinstalarla a partir del menú "Ajustes" de Android.
Hemos usado "jd-gui" para decompilar la aplicación. Sin embargo, con la
ofuscación y las técnicas de anti-decompilación, el decompilador no puede
decompilar todas las partes del programa por lo que tenemos que usar Eclipse para depurar la aplicación. Es
importante observar que las partes de código mostradas en esta entrada han sido
convenientemente tratadas.
Para empezar, analizamos
el archivo de configuración de la aplicación "AndroidManifest.xml", que contiene actividades, servicios,
permisos usados, identificador de la aplicación (package name), etc. Vemos que
el malware tiene el nombre de paquete "com.android". Con el filtro
"MAIN",
podemos comprobar que la actividad "MainActivity" es la
primera que se ejecuta cuando el usuario ejecuta la aplicación. Después, se
definen dos receptores "ScheduleLockReceiver" y "ScheduleUnlockReceiver" para ejecutarse en procesos diferentes
por la etiqueta ":remote"
(se explicarán más detalladamente). Por último el "BootstrapReceiver" es un clase que va a registrarse al
evento "BOOT_COMPLETED" del móvil y que se llama durante la inicialización del móvil con
la prioridad mas alta "999".
De esta forma permite la persistencia al
reinicio del móvil. Al tener la prioridad más alta, será una de las
primeras clases llamadas durante la inicialización del móvil.
Mirando el código
decompilado de la clase "MainActivity", vemos que lanza la actividad "LockActivity" llamando a la función "startActivity". En la actividad lanzada hemos
encontrado la función "dispatchKeyEvent" que permite al atacante monitorizar y anular los botones del
dispositivo (como HOME, BACK, y MENU) y así evitar que el usuario salga de la
aplicación fácilmente.
Esa misma clase va a lanzar en segundo plano el servicio "LockService", que va a programar dos tareas "ScheduleLockReceiver" y "ScheduleUnlockReceiver" a través del "AlarmManager". La primera tarea se ejecuta cada 2 segundos mientras que la segunda tarea se lanza cada 600 segundos. Como la segunda tarea no está implicada directamente en el bloqueo de la pantalla, nos concentramos en la primera tarea.
Cada vez que la
tarea se ejecuta, se
ejecuta la función "onReceive" y lanza el servicio "LockService" pasando el parámetro "start.event.type" a 2.
Llamando al servicio, se llama a la función "dispatchEvent". Con el tipo de evento 2, fuerza la actividad a lanzarse de nuevo. Y así no permite a otra aplicación pasar al primer plano.
Como no tenemos
acceso a la pantalla, no podemos desinstalar manualmente la aplicación desde el
menú "Ajustes/Aplicaciones".
Sin embargo, Google
proporciona una herramienta llamada "adb"
usada por desarrolladores de aplicaciones Android para instalar y desinstalar
aplicaciones, grabar logs, etc. Antes de desinstalar una aplicación,
necesitamos conocer el nombre del paquete que la identifica. Esta información
se encuentra en el archivo de configuración "AndroidManifest.xml". Podemos ver que en este caso el nombre de paquete
del ransomware es "com.android".
La utilidad "adb" se encuentra incluida dentro
del Android SDK disponible para descarga desde:
Una vez instalado (descomprimirlo)
será necesario conectar el dispositivo infectado al ordenador, localizar la
herramienta "adb" en la
carpeta "/sdk/platform-tools/" y ejecutar el comando:
adb uninstall com.android
con lo que conseguiremos desinstalar el
malware.
Más información:
El
virus de la policía "evoluciona" e impide el acceso en modo seguro
Nuevas variantes del
“virus de la policía”. Ahora para Android
Police Locker land on Android Devices
Java decompiler
http://jd.benow.ca/,
2014
Depurar malware Android con
Eclipse
Hash del ransomware:
2e1ca3a9f46748e0e4aebdea1afe84f1015e3e7ce667a91e4cfabd0db8557cbf
una-al-dia (21/06/2011) Vídeo:
Troyano secuestra el ordenador en nombre de la policía nacional acusando al
usuario de terrorista zoofílico
una-al-dia (28/02/2012) Vuelve el
troyano que se hace pasar por la policía: Cómo protegerse (de verdad)
una-al-dia (02/03/2012) El virus
de la policía "evoluciona" e impide el acceso en modo seguro
una-al-dia (06/03/2012) Más
información sobre el virus de la policía
una-al-dia (09/03/2012) El
malware de la policía aprovecha un exploit de Java "in-the-wild" y el
secreto su "éxito"
una-al-dia (18/03/2012)
WhitePaper: Estudio técnico del troyano de la policía
una-al-dia (24/05/2012) Nuevas
versiones del malware de la policía y cómo eludirlas
Laurent Delosières
¡Muy interesante el artículo! :)
ResponderEliminarLo único comentar que para poder desinstalarlo por ADB el usuario tendría que tener previamente habilitadas las opciones de desarrollo y, entre ellas, la depuración USB, ¿no es así?
Si es así, ¿hay alguna otra forma de desinstalarlo?
Supongo que siempre cabe la posibilidad de entrar al menú recovery y ejecutar un wipe :S
EliminarPara mi es mejor evitar estos tipos de virus gracias por su asesoría es muy importante al saber este tipo de informacion gracias
ResponderEliminarGracias por los comentarios. Sí, tiene razón Luis. El usuario necesita de activar el modo desarrollador antes de poder usar la herramienta adb. En cuanto al menu recovery, no esta activado por defecto en cada movil (lo es generalmente en móviles con jailbreak). Tambien, se puede reportar a security@android.com.
ResponderEliminarhay una nueva version que impide el acceso por adb
ResponderEliminarMe siento un dios, gracias a que usaba link2sd y tenia el modo de enlace automático podía entrar y usar el móvil si quitaba la se, además al ponerla podía usarla sin necesidad de ejecutar las apps, fui a donde link2sd me guarda los archivos(/data/exsd2) y busque la apk con el logo de la que me metió el virus, luego fui a aplicaciones del móvil y desinstale el paquete con ese nombre y aquí estoy, compartiendo mi experiencia traumática de 2 horas de forma de agradecimiento a este post que de tanto probar cosas saque la idea de este, muchas gracias ^.^
ResponderEliminarPor cierto he de añadir que tras encender el móvil en modo avión y coger practica di llegado a administradores de dispositivos y por mucho que pulsase unas 20 veces por segundo este no se desactivo y se ejecuto igualmente(aunque no fueran 20puls/seg si k le di al menos 10 veces y comprobé con otros administradores y en eso si k funcionaba la táctica por lo que realmente creo que bloquea la desactivación tras su activación)
ResponderEliminarY en mi anterior comentario quería decir si quitaba la sd