Analisis Estatico Android

Herramientas

Entre las herramientas más conocidas tenemos:

circle-info

IMPORTANTE! ES NECESARIO TENER EN CUENTA QUE CUALQUIER HERRAMIENTA AUTOMATICA PUEDE GENERAR FALSOS POSITIVOS, POR LO QUE SE DEBEN ANALIZAR LOS RESULTADOS OBTENIDOS MANUALMENTE PARA DESCARTARLOS.

Analizar

Permisos de AndroidManifest.xml

  • Debuggable

Este atributo permite depurar la aplicación.

android:debuggable="true"|"false"

En el caso de no estar indicado el valor (es decir, si nos encontramos solamente android:debuggable), el apk NO es depurable.

  • AllowBackup

android:allowBackup="true"|"false"

En el caso de estar como "true", permite realizar backups de los datos que contiene a través de ADB.

  • WAKE_LOCK

Permite que el dispositivo permanezca activo y evita que entre en estado de suspensión.

  • GET_TASKS

Permite a la aplicación acceder a los procesos que se encuentran activos/corriendo en el dispositivo.

  • WRITE_EXTERNAL_STORAGE

Permite a la aplicación acceso de escritura al contenido de la tarjeta SD.

Directorios y ficheros

Para analizar el código fuente de la aplicación, podemos usar JADXarrow-up-right.

circle-info

En los WebView, debemos tener en cuenta myWebView.settings.javaScriptEnabled = true ya que puede facilitar la ejecución de XSS.

Almacenamiento y Base de datos

Buscar palabras clave y llamadas a APIs usadas para almacenar información. Algunas de las clases y funciones son:

  • clase SharedPreferences ( almacena parejas de clave-valor)

  • clase FileOutPutStream (usa almacenamiento interno o externo)

  • funciones getExternal* (usa almacenamiento externo)

  • funcióngetWritableDatabase (devuelve una bdd SQLiteDatabase con permisos de escritura)

circle-info

Buscar en el código fuente:

  • función getReadableDatabase (devuelve una bdd SQLiteDatabase con permisos de lectura)

  • funciones getCacheDir y getExternalCacheDirs (usan ficheros cacheados)

Ubicación común de claves/API keys/contraseñas:

  • res/values/strings.xml

  • build configs (local.properties o gradle.properties)

  • /data/data/<package-name>/shared_prefs

  • /data/data/<package-name>/files/

Base de datos

La ruta donde se almacenan las bdd de las aplicaciones es

/data/data/<package-name>/databases/

Copiar la base datos de la aplicación al entorno de pruebas con

y posteriormente abrir SQLite e importar la base de datos.

Last updated