Analisis Estatico Android
Herramientas
Entre las herramientas más conocidas tenemos:
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.
En el caso de no estar indicado el valor (es decir, si nos encontramos solamente android:debuggable
), el apk NO es depurable.
AllowBackup
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 JADX.
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ón
getWritableDatabase
(devuelve una bdd SQLiteDatabase con permisos de escritura)
Buscar en el código fuente:
función
getReadableDatabase
(devuelve una bdd SQLiteDatabase con permisos de lectura)funciones
getCacheDir
ygetExternalCacheDirs
(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
Was this helpful?