6. 1. Análisis estático
2. Análisis de transferencia de información
3. Información almacenada en el dispositivo
6
Podríamos definir tres enfoques de
análisis
10. Bypassing SSL Pinning
Cydia Substrate y Android-SSL-TrustKiller - Dos
APK que se instalan en el dispositivo para evadir
Certificate Pinning (solo en Kitkat v4.4)
Xposed Framework y JustTrustMe – Igual que las
anteriores, pero mas fáciles implementar y corren
en Lollipop+.
10
21. 21
package artificialDriving {public class Navigator{}}
package connectionHandler {public class BluetoothHandler{}}
package userInterface {public class {}}
package a {
public class a{
public void a(){}
public void(int a){}}
public class b{
public void a(){}
public void a(int a){}}
Lexical Obfuscation
22. public final class CcoCIcI{
private static final byte[] COcocOlo;
private static boolean CcoCIcI;
private static BluetoothAdapter IoOoOIOI;
…
}
package 你{
public class 音{
public void 你() {}
public void 你(int ){}
}
}
22
Random/Non-alpha Identifier name
23. Anti-Tampering
Validación por medio de “hashes”
Analizar archivos modificados en base a una
validación de time stamp.
Bloques de código, clases o sobre toda la
aplicación.
23
24. Anti-Tampering
Re-empaquetar y firmar la aplicación con una
firma distinta la válida.
Correr la aplicación con la firma original y la
modificada en paralelo.
Controlar si solo la versión modificada
(“resigned”) arroja un error de integridad.
24
Enfoque blackbox
METODO URL EXTERNA
METODO APLICACIÓN DE TERCERO
METODO ROOT
Recordar que el enfoque es BLACKBOX de un cybercriminal.
Que se va a descargar y obtener la aplicación de dos formas distintas.
Que busca obtener cuanta información disponible pueda.
Una vez que tenemos la aplicación
Si tenemos que partir de un enfoque inicial, o punto de partida este puede ser uno de estos.
Acá en particular se busca obtener el codigo de la aplicación en forma clara y transparente.
En donde en particular se pasa de .dex a .java utilizando
En particular vamos a usar jadx y cfr
Basicamente comparamos para ver el output de las diverasas herramientas.
En ocasiones cuando las versions son distintas(descargadas url) se encuentra información adicional
Arm tcpdump – Permite el análisis pasivo dentro del dispositivo.
Burp Suite – Plataforma integrada para realizar test sobre aplicaciones (PROXY).
Configuración del Proxy:
https://support.portswigger.net/customer/portal/articles/1841101-configuring-an-android-device-to-work-with-burp
Instalando la CA dentro del device:
https://support.portswigger.net/customer/portal/articles/1841102-Mobile%20Set-up_Android%20Device%20-%20Installing%20CA%20Certificate.html
Si tenemos que partir de un enfoque inicial, o punto de partida este puede ser uno de estos.
Como se puede analizar una vez que se ven los dos casos anteriores la información que se va generando.
Dentro de /data/data/app
Se puede ver que se generan archivos, files, shared_prefs, databases(clasicos) y NO clasicos, creados por los developers
Experiencias personales, sobre aplicaciones que evidencian información sensible.
Por eso el nombre-> Stealing company data via Android apps
Assets
Regex IP/http/https/ftp/ssh/ PUERTOS
Passwords hardcodeados
Token’s de API’s
Codigo comentado con información sensible
Para que sirve? Que se obtiene?
Imagenes, css, pero fundamentalmente archivos .xml que tienen información sensible:
Config.xml
Routes_config.xml
Almacenamiento de información –> puedo mencionar el ejemplo del
Transferencia de información
Por medio de la aplicación mobile, se obtiene acceso a las db’s de la organización.
La aplicación expone información sensible.
Exposición de redes y segmentos internos.
Exposicion de comentarios de los desarrolladores.
Informacion hardcodeada
Usuarios de ssh/ftp etc
El daño de imagen o la posibilidad de fraude por medio de la app lícita.
Implementar protecciones binarias
RECOMENDACION
Realizar una validación por medio de valores de hash “hash values” (md5sum, sha1sum, sha256sum, etc).
android.os.Debug.isDebuggerConnected() nativa de Android, si el modo debug es True y corta la ejecución de la aplicación. Como se puede ver más abajo la implementación:
Frenear la ejecución cuando se encuentra un emulador en ejecución.
.A través de las propiedades en la clase android.os.SystemProperties que puede ser accedida por reflexión:
Si un atacante descubre que la propiedad ro.hardware guarda la cadena goldfish,
Sí ro.product.device es generic,
o que ro.kernel.qemu tiene el valor 1, entonces sabrá que se encuentra en un entorno emulado
Existen diversas implementaciones, básicamente se realiza un “which su” sobre los paths
/system/bin/su
/system/xbin/su
/sbin/su
/system/su
/system/bin/.ext/.su
Existen diversas implementaciones, básicamente se realiza un “which su” sobre los paths
/system/bin/su
/system/xbin/su
/sbin/su
/system/su
/system/bin/.ext/.su
SQLCipher sobre la tabla/campo provides transparent 256-bit AES encryption of database files.