Date post: | 21-Jan-2018 |
Category: |
Technology |
Upload: | csa-argentina |
View: | 125 times |
Download: | 3 times |
Mobile Security Testing Guide (MSTG)Mobile Application Security Verification Standard (MASVS)OWASP Mobile Top Ten 2016/2014
3
URL EXTERNA POR UNA PLICACIÓN DE TERCERO POR MEDIO DE DISPOSITIVO CON ROOT
¿De qué manera podemos obtener una aplicación?
1. Análisis estático2. Análisis de transferencia de información3. Información almacenada en el dispositivo
6
Podríamos definir tres enfoques de análisis
Enfoque pasivo/activo.Principalmente MITM a la aplicación (CA, Bypass Certificate Pinning, etc).
9
Análisis de transferencia de información
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
Almacenamiento Externo.
Almacenamiento Interno.SQLiteShared Preferences
11
Información almacenada en el dispositivo
CASO 1: Archivos assets
13
URL’s almacenadas en xml IP’s publicas y privadas Puertos y servicios Direccionamiento interno, etc.
SSH, FTP, SFTP, HTTP/HTTPS en puertos fuerade lo común, etc.
14
CASO 2: Servicios y puertos expuestos
20
Algunas Protecciones Binarias
Lexical ObfuscationAnti-TamperingAnti-DebuggingAnti-EmulationRoot Check
SQLite & Shared Preferences encryptedCA Validation & Certificate Pinning
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
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
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
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
Anti-Debugging
android.os.Debug.isDebuggerConnected() nativa de Android, si el modo debug es True, termina la ejecución de la aplicación.
if (android.os.Debug.isDebuggerConnected()){android.os.Process.killProcess(android.os.Process.myPid());}
25
Anti-Emulation
Validar la identificación del dispositivo
IMEI
Phone number
Voice mail number
SIM serial numberSubscriber IDBrandDeviceModel
26
Anti-Emulation
public boolean checkEmulation()
return (Build.PRODUCT.contains(“sdk”) || Build.MODEL.contains(“sdk”));}
public boolean checkEmulation() {
Context context = getApplicationContext();
if ("goldfish".equals(getProperty(context,"ro.hardware"))
|| "generic".equals(getProperty (context,"ro.product.device"))
|| "1".equals(getProperty (context,"ro.kernel.qemu")) ) {
return true; }
return false; }27
Anti-Emulation
public boolean checkEmulation() {
TelephonyManager mng = (TelephonyManager) getApplicationContext().getSystemService("phone");
if (mng.getSimOperatorName().equals("Android") || mng.getNetworkOperatorName().equals("Android")) {
return true;
}
return false;
28
SQLite & Shared Preferences
encrypted
SQLite:
SQLCipher https://www.zetetic.net/sqlcipher/
Shared Preferences:
https://github.com/scottyab/secure-preferences
https://github.com/sveinungkb/encrypted-userprefs 31