Analizador de APK para Linux

Esto puede parecerse bastante a esta pregunta , pero mis requisitos son un poco diferentes. Dado un .apkarchivo (aplicación de Android, por ejemplo, descargada de una fuente de terceros como F-Droid ), este analizador

  • debe enumerar qué bibliotecas utiliza
  • debe indicar si la aplicación utiliza algunos módulos de anuncios
  • señalar posibles componentes peligrosos (palabra clave: malware) sería genial
  • debe ejecutarse en Linux (no necesariamente nativo: PHP, Python o Java también estarían bien, pero algo que requiera, por ejemplo, Wine no es una opción).
  • no debe requerir que se instale todo el SDK de Android (o un gran marco similar) (requiere partes de él, como el aaptbinario, está bien)
  • la consulta de recursos en línea es aceptable dentro de ciertos límites (pero, por ejemplo, no "llamar a casa para obtener estadísticas"), pero se prefiere la operación fuera de línea

No se necesita un análisis de código en profundidad, descompilación, análisis de código de bytes, etc., solo enumerar bibliotecas y módulos está bien (si además puede proporcionar una URL para obtener más detalles, eso cuenta como una bonificación). No se requiere una GUI (pero no duele); sin embargo, una interfaz de línea de comandos es imprescindible.

Los resultados deben estar estructurados para el posprocesamiento automático (preferiblemente JSON o XML). El caso de mis sueños sería algo que simplemente descomprimo en un directorio, luego llamo desde allí ./apkanalyzer com.foobar, y escupe algo de JSON/XML a STDOUT.

Soy consciente de que una herramienta de este tipo podría no ser capaz de detectar todas y cada una de las bibliotecas/módulos de anuncios que existen (especialmente porque puede haber nuevos todos los días), pero cuanto más sepa, mejor. Si informa "bibliotecas/módulos desconocidos" como tales y da la posibilidad de darlos a conocer (por ejemplo, a través de un archivo de configuración), eso sería una ventaja.

El programa debe ser gratuito (como en "cerveza gratis"), preferiblemente también debe ser gratuito (como en "libertad de expresión") y debe ser gratuito (como en "configuración sin complicaciones" ;).

Solo como nota al margen: por supuesto, primero probé mi Google-Fu. Un buen recurso que encontré es android-security-awesome con una larga lista de servicios y herramientas disponibles. Pero eso no sustituye a una buena recomendación :)
Acabo de encontrar LibRadar, que parece acercarse bastante (pero no parece detectar correctamente algunos módulos de anuncios: por ejemplo, AdMob se muestra como Google Play Store). Habrá que comprobarlo un poco más de cerca. Pregunta relacionada sobre SO (preguntando la parte "cómo puedo"): Identificar bibliotecas/módulos incluidos de Manifest

Respuestas (2)

LibRadar parece coincidir con mis requisitos:

  • enumerar bibliotecas: Sí. Y los categoriza incluso.
  • lista de módulos de anuncios: Sí, entre las bibliotecas, utilizando su propia categoría.
  • señalando posibles componentes peligrosos: o no tenía ninguno (todavía), o no los marca explícitamente. Sin embargo, por lo general da una URL de fondo.
  • debe ejecutarse en Linux: lo hace. Escrito en Python, se puede usar multiplataforma.
  • no debe requerir todo el SDK de Android: obviamente no, ya que para mí funcionó de inmediato (descargado de su repositorio de Git). Parece enviar los componentes necesarios a lo largo (por ejemplo, apktool)
  • Los resultados deben estar estructurados para el posprocesamiento automático: escupe JSON a STDOUT, así que sí.

Puede que no reconozca las últimas novedades, pero parece mostrar incluso bibliotecas desconocidas para él. Usando las identificaciones de esas bibliotecas, uno puede buscar detalles sobre ellas y "superponer" esa información, lo que encuentro bastante útil. Una gran ventaja es que incluso enumera los permisos que una biblioteca está agregando al conjunto. Un ejemplo simplificado (convertido a mi propia estructura de matriz para que sea más fácil de ver):

[3] => Array
    (
        [name] => Parse.com
        [pkgname] => com/parse/
        [type] => Mobile Analytics
        [perms] => Array
            (
                [0] => android.permission.ACCESS_NETWORK_STATE
                [1] => android.permission.WAKE_LOCK
                [2] => android.permission.INTERNET
            )

        [url] => https://parse.com/docs/cn/android/guide
    )

Así que LibRadar será lo que usaré por ahora. Se ajusta bastante bien a mis requisitos, e incluso agrega algunas bonificaciones en la lista superior de los permisos utilizados por el marco dado.

Otro candidato adecuado sería εxodus independiente :

  • enumera las bibliotecas: solo delincuentes de la privacidad, también conocidos como ATS (Servicios de seguimiento y anuncios), también conocidos como rastreadores, pero en mi caso, esos son los más relevantes
  • lista de módulos de anuncios: sí.
  • señalar los componentes potencialmente peligrosos: sólo para ATS.
  • debe ejecutarse en Linux: sí. Como LibRadar, esto está escrito en Python.
  • no debe requerir todo el SDK de Android: no, solo necesita dexdump, que se puede instalar fácilmente usando sudo apt-get install dexdump.
  • Los resultados deben estar estructurados para el posprocesamiento automático: Sí, ofrece salida JSON.

Esto es parte del proyecto Exodus Privacy , que utiliza el mismo motor que su escáner web , por lo que se mantiene actualizado. Si el objetivo es solo atrapar esos rastreadores, este es un buen candidato. Se pueden encontrar instrucciones de instalación y salida de ejemplo detrás del primer enlace (en negrita) de esta respuesta. Al igual que LibRadar, es gratuito y de código abierto, por lo que también cumple con ese requisito.