Las apps móviles son cada vez más la principal superficie de ataque para brechas de datos y fraude. El IBM Cost of a Data Breach Report 2023 encontró que el costo promedio de una brecha relacionada con móviles es de $4.45 millones, un aumento del 15% en tres años. El OWASP Mobile Security Testing Guide (MSTG) identifica vulnerabilidades críticas en apps iOS y Android, con almacenamiento inseguro de datos y autenticación incorrecta encabezando consistentemente los problemas de seguridad móvil. El informe NowSecure 2023 encontró que el 83% de las apps móviles probadas tenían al menos una vulnerabilidad de seguridad. Esta guía cubre análisis estático (MobSF), dinámico (Frida, Burp Suite) y técnicas de pentesting para plataformas móviles.
TL;DR: El testing de seguridad móvil sigue el framework OWASP MSTG: prueba almacenamiento inseguro de datos, autenticación incorrecta, comunicación de red insegura (bypass de SSL pinning, MITM), vulnerabilidades de código y problemas específicos de la plataforma.
Fundamentos Testing Seguridad Móvil
Testing seguridad apps móviles valida protección datos, comunicación segura, autenticación y resistencia a ingeniería inversa.
OWASP Mobile Top 10
- Improper Platform Usage
- Insecure Data Storage
- Insecure Communication
- Insecure Authentication
- Insufficient Cryptography
“Mobile security testing is the discipline where you think like an attacker, not a tester. The question isn’t whether your app follows the happy path — it’s whether it survives someone actively trying to break it.” — Yuri Kan, Senior QA Lead
Testing Seguridad iOS
Almacenamiento Inseguro Datos (iOS)
// INSEGURO: UserDefaults (texto plano)
UserDefaults.standard.set("token", forKey: "auth_token")
// SEGURO: Keychain
func saveToKeychain(key: String, value: String) {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecValueData as String: value.data(using: .utf8)!
]
SecItemAdd(query as CFDictionary, nil)
}
Certificate Pinning (iOS)
func urlSession(
_ session: URLSession,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
) {
let pinnedHash = "sha256_hash"
let serverHash = serverCertificateData.sha256()
if serverHash == pinnedHash {
completionHandler(.useCredential, URLCredential(trust: serverTrust))
}
}
Testing Seguridad Android
Almacenamiento Inseguro (Android)
// INSEGURO: SharedPreferences
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
prefs.edit().putString("token", "sensitive").apply()
// SEGURO: EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val encryptedPrefs = EncryptedSharedPreferences.create(
context, "secure_prefs", masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
Testing con Frida
# Instalar Frida
pip install frida-tools
# Listar apps
frida-ps -U
# Bypass detección root
frida -U -l bypass-root.js -f com.example.app
Análisis Estático
# Decompile APK
apktool d app.apk
# Buscar secretos hardcoded
grep -r "api_key" decompiled/
Conclusión
Testing seguridad apps móviles requiere conocimiento específico de plataforma y herramientas especializadas. Combinar análisis estático, testing dinámico y manipulación runtime permite identificar vulnerabilidades antes de que atacantes las exploten.
Ver También
- Mobile Testing 2025: iOS, Android y Más Allá - Guía completa del ecosistema mobile testing moderno
- API Security Testing - Técnicas de seguridad para APIs REST y GraphQL
- OAuth y JWT en Mobile Testing - Validación de flujos de autenticación
- Mobile Payment Testing - Testing de pagos móviles y wallets digitales
- Appium 2 Architecture y Cloud - Automatización móvil en la nube
Recursos Oficiales
FAQ
¿Qué es el OWASP Mobile Top 10?
El OWASP Mobile Top 10 incluye: M1 Uso incorrecto de credenciales, M2 Seguridad inadecuada de cadena de suministro, M3 Autenticación/autorización insegura, M4 Validación insuficiente, M5 Comunicación insegura, M6 Controles de privacidad inadecuados, M7 Protecciones binarias insuficientes, M8 Configuración incorrecta de seguridad, M9 Almacenamiento inseguro de datos, M10 Criptografía insuficiente.
¿Cómo pruebo el almacenamiento inseguro de datos?
Verifica bases de datos SQLite, logs de la app (adb logcat en Android), archivos SharedPreferences y almacenamiento local en apps WebView. Usa MobSF para análisis estático automatizado. En iOS, verifica el sistema de archivos en un dispositivo con jailbreak buscando exposición de datos sensibles.
¿Cómo pruebo el SSL certificate pinning?
Intenta ataques MITM usando Burp Suite con un certificado proxy instalado en el dispositivo. Si el SSL pinning funciona, las solicitudes fallarán con errores de validación de certificado. Usa Frida para bypass del pinning: scripts como ‘ssl-kill-switch2’ pueden deshabilitar el pinning en dispositivos con jailbreak/root.
¿Qué herramientas son esenciales para el testing de seguridad móvil?
Kit esencial: MobSF (análisis estático y dinámico), Frida (instrumentación dinámica), Burp Suite (interceptación de tráfico), adb (Android Debug Bridge), Drozer (seguridad entre apps de Android) y Objection (exploración en tiempo de ejecución sin jailbreak).
See Also
- API Security Testing: Guía Completa OAuth, JWT y API Keys
- Security Headers Testing: Protección de Aplicaciones Web - Validación de headers de seguridad web: CSP, HSTS, X-Frame-Options,…
- Testing seguridad APIs: flujos OAuth, validación JWT, gestión API…
- Burp Suite para Ingenieros QA: Guía Completa Testing Seguridad - Testing seguridad con Burp: configuración proxy, scanner,…
- Load Testing con JMeter: Guía Completa - Dominio de Apache JMeter: thread groups, samplers, listeners,…
- Grafana y Prometheus: Stack Completo de Monitoreo de Rendimiento - Stack de monitoreo: recolección de métricas con Prometheus,…
