Un spyware para Android que interactúa con un servidor remoto de C&C para extraer datos del teléfono. Funciona con el último SDK (29). Lea el artículo completo aquí.
El objetivo de este proyecto es el despliegue de una aplicación Android que interactúe con un servidor remoto de Comando y Control (C&C) como spyware. SMS Xombie también cuenta con un Raspberry Pi equipado con una antena del Sistema Global para Móviles (GSM) con el único propósito de recibir comandos de un teléfono móvil controlador. En resumen, el paquete de aplicaciones -considerado como un dispositivo “zombi” único- se comunica con el servidor utilizando el Protocolo de Transferencia de Hipertexto (HTTP) GET para obtener comandos a través de la Notación de Objetos de JavaScript (JSON) y el HTTP POST para enviar datos sensibles como los registros de SMS, la agenda de contactos o la ubicación geográfica de vuelta al servidor -que se analiza a partir de un script de Preprocesador de Hipertexto (PHP).
Implementación
Aplicación Android
La aplicación en sí contiene los siguientes dos (2) módulos:
- Fetcher Service – realiza operaciones clave en segundo plano y no requiere la interacción del usuario;
- Autostart Receiver – un componente activado por el evento de finalización de arranque para invocar el servicio anterior.
Cuando la aplicación se instale y se abra, registrará el receptor que se invocará durante el tiempo de arranque de Android RECEIVE_BOOT_COMPLETED
(después de que los servicios del sistema se carguen completamente, es decir). La función principal de este BroadcastReceiver
es programar un AlarmManager
para que inicie el servicio Fetcher periódicamente, haciéndolo así persistente en el dispositivo.
Dentro del servicio Fetcher, hay varias partes de código que empiezan con onStartCommand()
que:
- Comprueba o almacena permanentemente unUniversal Unique Identifier (UUID) generado al azar para identificar de forma exclusiva el dispositivo;
- Valida la conexión de red del dispositivo y la accesibilidad del servidor remoto.
Inicialmente, se genera un GUID del dispositivo para identificar de forma única a un “zombi”. Este ID se utiliza más tarde como un parámetro de consulta en sus peticiones GET regulares a un punto final de la API (PHP) que responde a los datos codificados JSON, por lo tanto, JsonObject()
se utiliza a lo largo de HttpURLConnection
para interactuar con la API. La respuesta es manejada por la función onPostExecute()
si la conexión fue exitosa y hay una conectividad de red según el método booleano isConnected()
.
Si todo es correcto, el móvil responderá a la tarea en consecuencia; mientras que para enviar los datos de vuelta, utilicé la librería Volley HTTP que facilita el trabajo en red en las aplicaciones para Android.
Plataforma Xombie
La aplicación en sí es parte de un sistema más grande, la Plataforma Xombie, que vamos a elaborar a continuación. La idea es simple, usando un simple mensaje SMS a través de la red GSM, somos capaces de controlar múltiples dispositivos que ejecutan el APK a través del servidor C&C. La implementación, sin embargo, es compleja debido al siguiente proceso:
- Implementación de un dispositivo Rasberry Pi con un GSM shield conectado para obtener mensajes SMS de un teléfono móvil controlador a través de la red GSM;
- Construcción de un mecanismo de interconexión entre el API y el dispositivo físico;
- La capacidad de procesar de forma distintiva el tráfico entrante de los otros dispositivos móviles y responder con el contenido apropiado de ese dispositivo.
Para una visión más amplia, el procedimiento anterior se ilustra en el siguiente esquema:
Inicialmente, el dispositivo controlador envía un comando a través de un mensaje SMS para recuperar la ubicación geográfica de todos los teléfonos móviles (palabra clave getGeoLocation
). El GSM shield, que puede operar en las bandas de frecuencia Quad 850/900/1800/1900 MHz, utiliza una tarjeta SIM local para recibir el mensaje, reenviar el contenido del SMS a la API smsXlib, que luego pone la tarea en la cola del servidor de alojamiento. Teniendo en cuenta que los dispositivos móviles envían periódicamente solicitudes HTTP para comprobar si hay algo que hacer, en este caso, enviarían inmediatamente los valores de latitud y longitud pertinentes como una solicitud POST (dado que el usuario ha dado permiso al servicio de localización de la aplicación).
Capacidades
Esta aplicación tiene las siguientes capacidades:
- SMS dump (
smsdump
) – Vuelca todo el historial de mensajes; - Contacts dump (
contactsDump
) – Vuelca toda la lista de contactos; - Call Logs Dump (
callsDump
) – Vuelca las entradas de llamadas; - Geographical Location Fetch (
getGeoLocation
) – Recupera los valores actuales de latitud y longitud del dispositivo; - Application List Dump (
appsDump
) – Muestra las aplicaciones instaladas por el usuario; - Device Information Retrieval (
deviceInfo
) – Recuperación de información del dispositivo; - Calendar Entries Dump (
calendarsDump
) – Vuelca las entradas de calendario existentes; - Service Termination (
kill
) – Termina el servicio en curso hasta el próximo arranque.
Uso
El programa está pensado básicamente para conectar y usar; sólo tienes que modificar el valor del URL de C&C en el archivo de resource res/values/strings.xml
:
El script PHP de servicio debe ser configurado como se indica a continuación:
Descargo de Responsabilidad
SMS-Xombie (este enlace se abre en una nueva ventana) por artikrh (este enlace se abre en una nueva ventana)
An Android spyware which interacts with a remote C&C server to exfiltrate phone data