· Droidwatch Security Research team · 9 min de lectura · Static Analysis Deep-Dives nombre-de-paquete-android triaje-apk malware-android
🌐 Read in English →

Cómo identificar un paquete Android desconocido

Un nombre de paquete visto en Ajustes, en una alerta de MDM o en un informe no prueba nada por sí solo. Cinco comprobaciones para saber qué es.

Cómo identificar un paquete Android desconocido

Aparece un nombre de paquete en un ticket de soporte. Un inventario de MDM señala algo que nadie reconoce. Un cliente dicta una cadena que ha leído en Ajustes después de una llamada de la que ahora desconfía. En los tres casos la evidencia de partida es la misma: una cadena en DNS inverso como com.system.service, y nada más.

La cadena la elige quien construyó la aplicación, así que por sí sola no prueba nada. Aun así basta para empezar, y cinco comprobaciones suelen resolver la pregunta sin necesidad de tener el dispositivo delante.

Qué es un nombre de paquete

Android identifica cada aplicación instalada por un nombre de paquete escrito en DNS inverso: com.ejemplo.miapp. Tiene que ser único en el dispositivo y, para lo que se distribuye por Google Play, único en todo Play.

Tres propiedades importan para identificar:

Comprobación 1 — ¿Es realmente un paquete del sistema?

Aquí es donde falla la mayoría de identificaciones, y donde funciona el patrón de nomenclatura habitual del spyware.

Los componentes propios de Android viven bajo dos prefijos:

Cualquier otra cosa no forma parte de Android, suene como suene. Un paquete llamado com.system.service, com.android.system.core o com.systemui.service no es un paquete del sistema Android. El nombre está construido para sobrevivir exactamente al vistazo que casi todo el mundo le da: el usuario recorre su lista de aplicaciones, lee la palabra «system» y sigue.

Paquetes de sistema auténticos que la gente confunde con sospechosos: com.android.vending (la tienda de Play), com.google.android.gms (Servicios de Play) y com.android.providers.media (el almacén multimedia). Son esperables en cualquier dispositivo con servicios de Google.

Nombre Lectura
com.android.vending Auténtico — Google Play Store
com.google.android.gms Auténtico — Servicios de Google Play
com.system.service No es del sistema. Nada bajo com.system.* forma parte de Android
com.android.securityservice No es del sistema. Imita el prefijo de AOSP sin pertenecer a él
com.whatsapp Tercero auténtico, verificable en Play
com.qazwsx.plmokn Cadena aleatoria: sin información y sin convención legítima de desarrollo

Un nombre que imita a un componente del sistema y no aparece en Play es motivo para seguir, no para concluir.

Comprobación 2 — ¿Existe en Google Play?

Play expone un paquete directamente por identificador:

https://play.google.com/store/apps/details?id=<nombre-del-paquete>

Tres resultados posibles:

La página carga y coincide con lo que describe el usuario. Pasa a la tercera comprobación, que es la que decide.

La página devuelve no encontrado. El paquete no se distribuye por Play, al menos no en la región desde la que se consulta. Eso es normal en aplicaciones corporativas, distribución regional y builds de desarrollo. También es normal en malware. La ausencia es una pregunta, no una respuesta.

La página carga pero describe algo completamente distinto. O el nombre se ha reutilizado, o el usuario lo leyó mal. Confirma la cadena carácter a carácter antes de seguir: rn y m son indistinguibles en muchas interfaces, y esa sustitución se usa a propósito.

Comprobación 3 — ¿Coincide la copia instalada con la de Play?

Ésta es la comprobación que resuelve el caso, y la que normalmente se salta.

Un nombre de paquete en Play y el mismo nombre en un dispositivo sólo son la misma aplicación si llevan el mismo certificado de firma. El certificado lo emite el desarrollador, no Google, y un reempaquetador no lo puede falsificar: una build modificada lleva necesariamente otra firma.

Así que la pregunta decisiva no es «¿existe este paquete en Play?» sino «¿tiene la copia de este dispositivo el certificado que Play distribuye para él?».

Un desajuste significa que la aplicación instalada es una build reempaquetada que lleva el nombre de una aplicación legítima. En una aplicación bancaria eso es un incidente de fraude y no una curiosidad de malware, y corresponde el mismo día a protección de marca, porque el canal de distribución suele seguir activo.

Droidwatch hace esta comparación automáticamente en cada análisis de Android: identidad del paquete contra Play, más la cadena completa del certificado de firma —sujeto, emisor, ventana de validez, esquema de firma y huellas—.

Comprobación 4 — ¿Qué permisos pide?

El manifiesto declara lo que la aplicación es capaz de hacer. A efectos de identificación, el conjunto de permisos suele ser concluyente por sí mismo, porque hay combinaciones que no tienen ninguna categoría de aplicación legítima.

Las declaraciones que se leen primero:

Permiso Por qué importa
BIND_ACCESSIBILITY_SERVICE Lee el contenido de pantalla e inyecta entrada
SYSTEM_ALERT_WINDOW Dibuja sobre otras aplicaciones
QUERY_ALL_PACKAGES Enumera todo lo instalado
RECEIVE_SMS / READ_SMS Lee los mensajes entrantes, incluidos los códigos de un solo uso
BIND_NOTIFICATION_LISTENER_SERVICE Lee el contenido de las notificaciones
REQUEST_INSTALL_PACKAGES Instala otras aplicaciones
BIND_DEVICE_ADMIN Resiste la desinstalación

Cualquiera de ellos tiene usuarios legítimos. Los tres primeros juntos, en un paquete que no está en Play y que imita un nombre del sistema, describen el conjunto de capacidades de un ataque por superposición. La cadena completa de capacidades explica cómo se combinan y qué aporta cada una.

Comprobación 5 — ¿De dónde salió?

Android registra qué aplicación realizó cada instalación, y ese registro responde a una pregunta que el usuario con frecuencia no puede.

Con la depuración por USB activada y el dispositivo conectado:

adb shell pm list packages -3        # sólo paquetes de terceros
adb shell pm list packages -i        # cada paquete con su instalador
adb shell pm path <nombre-del-paquete>   # ruta del APK en el dispositivo
adb shell dumpsys package <nombre-del-paquete>

dumpsys package informa de installerPackageName. Los valores que hay que reconocer:

Un paquete instalado lateralmente, que imita un nombre del sistema y pide accesibilidad, no es un hallazgo ambiguo.

adb shell pm path devuelve la ubicación del APK, de modo que el fichero se puede extraer con adb pull y analizar directamente, que es la única forma de responder a la pregunta de manera definitiva.

Lo que nada de esto establece

Las cinco comprobaciones establecen identidad y capacidad. No establecen comportamiento.

Una aplicación capaz de leer SMS puede no hacerlo nunca, o hacerlo sólo cuando se lo indique su servidor de mando y control. El análisis estático del paquete muestra lo que puede hacer; determinar lo que hizo exige instrumentación en ejecución o análisis forense del dispositivo.

Para la mayoría de preguntas de identificación esa distancia no bloquea la decisión. Un paquete instalado lateralmente, que imita un nombre del sistema, ausente de Play y que pide accesibilidad y superposición, es accionable sin confirmación en ejecución.

Resolverlo del todo

Las comprobaciones anteriores se pueden hacer a mano y conviene entenderlas, porque son lo que cualquier herramienta está haciendo por debajo. Ejecutarlas como un solo análisis es más rápido y produce algo que se puede adjuntar a un ticket.

Enviar el APK devuelve la identidad del paquete y la comparación con Play, la cadena completa del certificado, el análisis de permisos y componentes, el mapeo MITRE ATT&CK Mobile, los indicadores de red extraídos y una puntuación de riesgo de 0 a 100 donde más alto es peor, con bandas fijas: 65 o más Malicious, de 40 a 64 High Risk, de 20 a 39 Suspicious, por debajo de 20 Benign. Un paquete de 50 MB se completa en dos a cinco minutos.

Hay tres análisis al día sin cuenta y cinco con cuenta gratuita.

Si no se dispone del APK —habitual cuando el aviso llega de un cliente y no de un dispositivo en mano—, el threat feed público se puede consultar por hash sin cuenta, y se publica bajo licencia CC BY 4.0. Eso sólo ayuda si la muestra se ha visto antes, y por eso las cinco comprobaciones siguen siendo el recurso de partida.

El razonamiento posterior a una identificación positiva está en el flujo de triaje, y el recorrido del informe explica dónde aparece cada pieza de evidencia.

Preguntas frecuentes

¿Es único un nombre de paquete? Único en el dispositivo y único dentro de Google Play. No único en el mundo: nada impide que una aplicación distribuida fuera de Play use un nombre de paquete que pertenece a una publicada. En eso consiste el reempaquetado.

¿Puede una aplicación cambiar su nombre de paquete? No después de instalarse. La etiqueta y el icono sí cambian en ejecución; el nombre de paquete no. Por eso es el identificador fiable cuando el nombre visible engaña.

¿Un paquete ausente de Google Play es necesariamente malicioso? No. La distribución corporativa, la disponibilidad regional, los canales beta y las herramientas internas producen paquetes que no están en Play. La ausencia plantea la pregunta que responden las comprobaciones tres, cuatro y cinco.

¿Qué significa com.system.service? Por sí mismo, nada — pero no es un paquete del sistema Android. Los componentes de Android usan com.android.* y com.google.android.*. Un nombre bajo com.system.* lo eligió un desarrollador, y elegir un nombre que se lee como un componente del sistema es una decisión que merece examinarse.

¿Qué se hace con el APK una vez recuperado? Tratarlo como malware vivo: analizarlo en un entorno aislado, registrar el SHA-256 antes que nada y no redistribuir el binario. Se comparten hashes e indicadores; las muestras no.


Para identificar un paquete a partir de su APK, envíalo a análisis. No se requiere método de pago.

Threat Research

Droidwatch's research team analyzes Android & iOS malware — banking trojans, spyware, droppers and overlay kits — and writes up the static and dynamic signals that give them away. Every post is grounded in real platform output.

Analyze your first app free — drag an APK or iOS .ipa onto the homepage for a full static report in about a minute. Get started free