Índice / Módulo 2 — Hardening del Operador

2.5 OPSEC en dispositivos móviles

El teléfono móvil es el dispositivo de vigilancia más sofisticado que la mayoría de personas lleva encima voluntariamente. Emite señal de radio constantemente, registra ubicación por triangulación celular incluso sin GPS, y ejecuta docenas de aplicaciones con acceso a micrófono, cámara, contactos y localización. Hardening del móvil no es opcional para un operador serio.

2.5.1 GrapheneOS y CalyxOS: por qué y cómo instalarlos

Android stock — tanto el de Google como las versiones de fabricantes como Samsung, Xiaomi o Huawei — envía datos de telemetría a múltiples servidores continuamente, incluso sin SIM, incluso con WiFi desactivado si hay red disponible. Los servicios de Google implementados en el firmware tienen acceso privilegiado que las aplicaciones normales no pueden revocar.

Los ROMs alternativos como GrapheneOS y CalyxOS eliminan o compartimentalizan esa capa, dejando un Android funcional sin el componente de vigilancia corporativa.

GrapheneOS: máxima seguridad y privacidad

GrapheneOS es un sistema operativo Android enfocado en seguridad que elimina completamente los servicios de Google del sistema operativo base. No es un fork de Android — es una reimplementación endurecida del AOSP (Android Open Source Project) con mejoras de seguridad significativas que Android stock no tiene:

  • Sandboxed Google Play: si necesitas apps de Google Play, puedes instalarlas en un sandbox aislado sin privilegios del sistema. Las apps de Google no pueden acceder a las APIs privilegiadas que tienen en Android stock.
  • Hardened allocator: implementación propia del allocator de memoria con protecciones adicionales contra exploits de heap.
  • Permisos de red y sensores: GrapheneOS añade permisos que Android stock no tiene — puedes bloquear el acceso a la red de cada app individualmente, o denegar el acceso a los sensores.
  • Verified Boot con claves propias: el bootloader puede relockarse con tus propias claves, manteniendo la cadena de verificación de arranque.
  • Solo Pixel: GrapheneOS solo soporta dispositivos Google Pixel, porque son los únicos con soporte de Verified Boot relockable por el usuario.

CalyxOS: equilibrio entre privacidad y usabilidad

CalyxOS incluye microG — una reimplementación de código abierto de los servicios de Google — que permite usar aplicaciones que requieren Google Play Services sin instalar los servicios reales. Es más compatible con el ecosistema Android habitual pero menos endurecida que GrapheneOS. Soporta Pixel y algunos dispositivos Fairphone y Motorola.

Característica GrapheneOS CalyxOS
Servicios Google Sandboxed (opcional, sin privilegios) microG (reimplementación open source)
Seguridad del kernel Endurecida, mejoras propias AOSP estándar
Verified Boot Relockable con claves propias Relockable (en dispositivos compatibles)
Compatibilidad de apps Alta con Sandboxed Play; sin él, limitada Alta gracias a microG
Dispositivos Solo Pixel (6 en adelante recomendado) Pixel, Fairphone, algunos Motorola
Caso de uso ideal Máxima seguridad, toleras fricción Buena privacidad, mayor compatibilidad

Instalación de GrapheneOS

GrapheneOS tiene un instalador web oficial que automatiza el proceso usando WebUSB. Es el método recomendado. El proceso manual con fastboot es necesario si el instalador web no funciona en tu entorno.

bash — instalación manual de GrapheneOS con fastboot
# Requisitos: Pixel desbloqueado, fastboot instalado, OEM Unlock activado
# Activar: Ajustes → Acerca del teléfono → Número de compilación (x7)
# Luego: Opciones desarrollador → Desbloqueo OEM → activar

# 1. Instalar fastboot
sudo apt install -y android-tools-fastboot

# 2. Descargar la imagen de GrapheneOS para tu modelo
# https://grapheneos.org/releases — elegir tu modelo Pixel
wget https://releases.grapheneos.org/MODELO-factory-VERSION.zip
wget https://releases.grapheneos.org/MODELO-factory-VERSION.zip.sig

# 3. Verificar la firma (imprescindible)
gpg --keyserver hkps://keys.openpgp.org --recv-keys 65EEFE022108E2B708CBFCF7F9E712E59AF5F22A
gpg --verify MODELO-factory-VERSION.zip.sig MODELO-factory-VERSION.zip

# 4. Extraer la imagen
unzip MODELO-factory-VERSION.zip

# 5. Arrancar el Pixel en modo fastboot
# Apagar → mantener Vol- + Encendido hasta ver "Fastboot Mode"

# 6. Verificar que el PC detecta el dispositivo
fastboot devices

# 7. Desbloquear el bootloader (borra todos los datos)
fastboot flashing unlock

# 8. Flashear GrapheneOS
cd MODELO-factory-VERSION
./flash-all.sh   # en Linux/macOS
# flash-all.bat en Windows

# 9. IMPORTANTE: volver a bloquear el bootloader después
# Esto restaura Verified Boot y protege contra modificaciones
fastboot flashing lock
⚠️
Instalar desde el instalador web oficial es más seguro: El método manual descrito arriba requiere que verifiques manualmente la cadena de confianza. El instalador web de GrapheneOS (install.grapheneos.org) automatiza la verificación y el proceso completo. Úsalo si tu navegador soporta WebUSB (Chrome o Edge en Linux/Windows/macOS).

2.5.2 Desactivación de telemetría en Android estándar

Si no puedes o no quieres instalar un ROM alternativo, hay medidas que reducen significativamente la telemetría en Android estándar. No eliminan el problema — las capas más profundas del firmware siguen activas — pero limitan la superficie de exposición de las apps y los servicios de usuario.

Desactivar servicios mediante ADB

ADB (Android Debug Bridge) permite gestionar paquetes de sistema que no aparecen en la interfaz de usuario normal. Muchas apps de telemetría y tracking están instaladas como paquetes del sistema que no se pueden desinstalar desde la UI, pero sí desactivar desde ADB.

bash — desactivar telemetría con ADB
# Activar depuración USB: Ajustes → Opciones desarrollador → Depuración USB

# Conectar el teléfono y verificar que ADB lo detecta
adb devices

# Ver todos los paquetes instalados (incluyendo sistema)
adb shell pm list packages -f

# Desactivar paquetes de telemetría de Google (sin desinstalar)
# pm disable-user: desactiva solo para el usuario actual, reversible

# Google Analytics / Firebase
adb shell pm disable-user --user 0 com.google.android.gms.feedback

# Google One (telemetría y backup automático)
adb shell pm disable-user --user 0 com.google.android.apps.subscriptions.red

# Diagnóstico de dispositivos Google
adb shell pm disable-user --user 0 com.google.android.projection.gearhead

# En Samsung: desactivar servicios específicos del fabricante
adb shell pm disable-user --user 0 com.samsung.android.honeyboard
adb shell pm disable-user --user 0 com.samsung.clipboardsaveservice

# Ver todos los paquetes desactivados
adb shell pm list packages -d

# Reactivar un paquete si algo se rompe
adb shell pm enable com.google.android.gms.feedback

Configuración sin ADB

Ajustes que puedes hacer desde la interfaz del sistema sin herramientas adicionales, válidos en cualquier Android:

texto — ajustes de privacidad en Android estándar
## PRIVACIDAD
Ajustes → Privacidad → Diagnósticos                    → desactivar
Ajustes → Privacidad → Personalización de anuncios     → desactivar
Ajustes → Privacidad → Historial de ubicaciones Google → desactivar y borrar
Ajustes → Privacidad → Actividad web y de aplicaciones → desactivar
Ajustes → Privacidad → Personalización de búsqueda     → desactivar

## UBICACIÓN
Ajustes → Ubicación → Precisión de ubicación de Google → desactivar
Ajustes → Ubicación → Historial de ubicaciones         → desactivar
Ajustes → Ubicación → Compartir ubicación              → verificar que está vacío

## CUENTAS GOOGLE
Ajustes → Google → Anuncios → Restablecer ID publicidad → hacerlo periódicamente
Ajustes → Google → Autocompletado con Google            → desactivar
Ajustes → Google → Copias de seguridad                  → desactivar si no necesitas

## SINCRONIZACIÓN
Ajustes → Cuentas → [cuenta Google] → Sincronización de cuenta
→ Desactivar todos los tipos que no uses explícitamente

## APPS
Ajustes → Aplicaciones → [cada app] → Permisos
→ Revocar micrófono, cámara, ubicación para apps que no los necesiten
→ Cambiar "Siempre" a "Solo mientras se usa" en ubicación

DNS privado en Android

texto — configurar DNS privado (DoT) en Android 9+
# Android 9+ soporta DNS-over-TLS nativo
Ajustes → Red e Internet → DNS privado
→ Seleccionar "Nombre de host del proveedor de DNS privado"
→ Introducir el hostname del resolver (no la IP)

# Opciones respetuosas con la privacidad:
dns.quad9.net         # Quad9: sin logs, con filtrado de malware
security.cloudflare-dns.com  # Cloudflare: sin logs (auditado)
# Si tienes tu propio resolver con DoT:
resolver.tudominio.com  # tu propia instancia de Unbound con TLS

# Con DNS privado activo, Android usará DoT para TODAS las apps
# independientemente de la red a la que esté conectado

2.5.3 Gestión de SIMs, IMEI y riesgos de la señal celular

La señal celular es el vector de vigilancia más difícil de mitigar en un teléfono. Mientras el móvil tenga SIM activa y cobertura, la operadora sabe en qué celda está en todo momento con una precisión de decenas a cientos de metros en zonas urbanas. Esto es independiente del GPS, del WiFi y de cualquier aplicación instalada — es el protocolo de telefonía móvil en sí.

IMEI: el identificador permanente del hardware

El IMEI (International Mobile Equipment Identity) es un número de 15 dígitos único por dispositivo que se transmite a la operadora cada vez que el teléfono se registra en una red celular. No se puede cambiar sin modificar el hardware o el firmware del modem — y en muchas jurisdicciones hacerlo es ilegal.

Las implicaciones para OPSEC son directas:

  • El IMEI se asocia a la SIM: cuando introduces una SIM en un teléfono, la operadora registra qué IMEI usó esa SIM. Si cambias la SIM pero no el teléfono, o viceversa, la operadora puede correlacionar ambas identidades.
  • Historial de IMEIs: si un IMEI estuvo asociado a tu nombre en algún momento y después lo usas con otra SIM anónima, la operadora puede vincular ambas identidades.
  • Listas negras de IMEI: los IMEIs de teléfonos robados se incluyen en listas negras internacionales. Un teléfono comprado en efectivo puede tener el IMEI en una lista negra y bloquearse al insertarle una SIM.
texto — ver y gestionar el IMEI
# Ver el IMEI desde el teléfono
*#06#   # marcar este código en el teclado del teléfono

# Ver el IMEI desde ADB
adb shell service call iphonesubinfo 1 | awk -F"'" '{print $2}' | tr -d '.'

# Verificar que un IMEI no está en lista negra antes de comprar
# Servicios como imei.info o swappa.com permiten verificarlo

# La única forma de separar identidades con certeza:
# Dispositivo físico diferente para cada identidad
# SIM nunca compartida entre dispositivos

SIMs prepago y anonimato

El nivel de anonimato que ofrece una SIM prepago varía enormemente por país. En España, desde 2013 es obligatorio registrar la identidad para cualquier SIM. En otros países europeos el registro también es obligatorio. Una SIM "anónima" comprada en un kiosco en España tiene en realidad tus datos registrados.

Para operaciones que requieren anonimato en señal celular, las opciones reales son limitadas:

  • Países sin registro obligatorio: algunos países (EE.UU. para ciertos planes prepago, algunos países latinoamericanos) permiten SIMs sin registro. Comprando en efectivo y activando sin conectar a internet, la SIM no tiene datos vinculados.
  • eSIM con criptomonedas: algunos proveedores de eSIM (Silent.Link, JuiceySIM) aceptan pago en Monero y no requieren identificación. La eSIM se descarga sin asociarla a una identidad real.
  • Números virtuales: para verificación de cuentas sin exponer un número real, servicios como SMS-activate o sim5.ru ofrecen números temporales, aunque con implicaciones propias de confianza en el proveedor.

IMSI catchers (Stingrays): vigilancia activa

Un IMSI catcher (también llamado Stingray por el nombre del modelo más conocido) simula ser una torre celular legítima. Los teléfonos cercanos se conectan a él en lugar de a la red real, revelando el IMSI (identificador de la SIM) y el IMEI. Los gobiernos y cuerpos policiales de numerosos países los usan activamente en manifestaciones, fronteras y zonas de interés.

  • Forzado a 2G: los IMSI catchers clásicos fuerzan a los teléfonos a bajar a 2G, que tiene menos protecciones criptográficas. La solución: desactivar 2G en los ajustes de red del teléfono si tu operadora tiene buena cobertura 4G/5G.
  • Detección: aplicaciones como AIMSICD (Android IMSI Catcher Detector) analizan anomalías en las señales celulares. No son infalibles pero pueden detectar algunos catchers menos sofisticados.
  • La única contramedida real: no llevar SIM activa en situaciones de riesgo, o poner el teléfono en modo avión.
texto — desactivar 2G en Android (contramedida básica contra Stingrays)
# Ajustes → Red e Internet → Tarjetas SIM → [tu SIM]
# Tipo de red preferida → LTE/4G solamente (o 5G si disponible)
# Esto impide que el teléfono se conecte a redes 2G/3G

# En GrapheneOS hay una opción adicional:
# Ajustes → Red e Internet → Tarjetas SIM → Permitir solo 2G → desactivar
# GrapheneOS muestra explícitamente esta opción de seguridad

# Verificar que estás en 4G/5G desde el panel de notificaciones
# o con: Ajustes → Acerca del teléfono → Estado → Tipo de red

2.5.4 Aplicaciones de riesgo y permisos: análisis antes de instalar

Una aplicación maliciosa instalada en el teléfono puede anular todo el trabajo de hardening del sistema operativo. El análisis de permisos y el comportamiento de una app antes de instalarla es parte del flujo de trabajo de un operador que toma en serio la seguridad del dispositivo.

Permisos de alto riesgo

Permiso Riesgo Cuándo es legítimo
ACCESS_FINE_LOCATION GPS preciso en tiempo real Mapas, apps de transporte, apps de campo
RECORD_AUDIO Acceso al micrófono Llamadas, grabadoras de voz, apps de música
CAMERA Acceso a la cámara Cámara, videoconferencias, escáner de QR
READ_CONTACTS Toda tu agenda de contactos Apps de comunicación, dialer
READ_CALL_LOG Historial de llamadas completo Gestores de llamadas, algunas apps de backup
PROCESS_OUTGOING_CALLS Interceptar y redirigir llamadas salientes Raramente legítimo fuera de dialers
READ_SMS Leer todos los SMS, incluyendo 2FA Apps de mensajería SMS nativas
BIND_ACCESSIBILITY_SERVICE Control total de la UI, captura de pantalla, keylogging Lectores de pantalla, apps de accesibilidad
INSTALL_PACKAGES Instalar otras aplicaciones sin intervención F-Droid, stores alternativas

Análisis estático con Exodus Privacy

Exodus Privacy analiza los APKs en busca de rastreadores conocidos embebidos en las aplicaciones. Una app puede no pedir permisos sospechosos pero incluir SDKs de terceros (Firebase Analytics, Facebook Audience Network, Adjust, AppsFlyer...) que recopilan datos.

bash — analizar una app con Exodus y herramientas locales
# Opción 1: Web de Exodus Privacy (más simple)
# Visitar: https://reports.exodus-privacy.eu.org
# Buscar el nombre del paquete de la app (ej: com.instagram.android)
# Ver cuántos rastreadores tiene y qué permisos solicita

# Opción 2: API de Exodus desde la línea de comandos
curl -s "https://reports.exodus-privacy.eu.org/api/search/com.instagram.android" \
    | python3 -m json.tool | grep "trackers\|name\|version"

# Opción 3: Análisis local del APK con apktool
sudo apt install -y apktool

# Descompilar el APK
apktool d aplicacion.apk -o apk_descompilado/

# Buscar SDKs de rastreadores conocidos en el código
grep -r -i "firebase\|crashlytics\|amplitude\|mixpanel\|adjust\|appsflyer\|facebook\|analytics" \
    apk_descompilado/smali/ | head -30

# Ver los permisos declarados en el AndroidManifest
grep "uses-permission" apk_descompilado/AndroidManifest.xml

# Ver dominios a los que se conecta la app
grep -r "https://" apk_descompilado/res/ | grep -oP "https://[a-zA-Z0-9.\-]+" | sort -u

Fuentes de apps más seguras

  • F-Droid: repositorio de aplicaciones de código abierto. Cada app debe publicar su código fuente. Sin rastreadores, sin analíticas comerciales. Es la fuente más segura para apps en Android.
  • Obtainium: instala apps directamente desde las releases de GitHub y otros repositorios, sin pasar por ninguna store. Para herramientas de seguridad cuyo desarrollo está en GitHub es la mejor opción.
  • Google Play con Sandboxed Play (GrapheneOS): si necesitas una app que solo está en Play, en GrapheneOS el sandbox limita lo que los servicios de Google pueden hacer.
  • APK directo verificado: descargar el APK desde la página oficial del proyecto y verificar su hash o firma antes de instalar.

2.5.5 Faraday bags: cuándo usarlas y sus limitaciones reales

Una jaula de Faraday es un recinto conductor que bloquea los campos electromagnéticos. Una Faraday bag es la versión portable — una bolsa con un tejido conductor (generalmente malla metálica de cobre y acero inoxidable) que aísla cualquier dispositivo en su interior de todas las señales de radio: WiFi, Bluetooth, señal celular, GPS, NFC.

La idea es simple: un dispositivo dentro de la bolsa no puede transmitir ni recibir señales. No puede ser rastreado por señal celular, no puede conectarse a redes, no puede recibir activaciones remotas.

El problema de calidad: no todas funcionan

La diferencia entre una Faraday bag que funciona y una que no la determina la atenuación de señal que consigue, medida en decibelios (dB). Una bolsa que atenúa 60 dB bloquea el 99,9999% de la señal — efectivamente imperceptible. Una que atenúa solo 20 dB deja pasar el 1% de la señal, lo que puede ser suficiente para registrar al dispositivo en la red celular.

El mercado está lleno de bolsas de baja calidad que se venden como "Faraday" pero que no bloquean efectivamente las señales. La única forma de saber si una bolsa funciona es medirlo.

Cómo verificar que tu bolsa funciona

texto — pruebas de verificación de una Faraday bag
## PRUEBA 1: Llamada de teléfono (la más simple)
1. Pon el teléfono dentro de la bolsa, bien cerrada
2. Llama al teléfono desde otro dispositivo
3. Si suena: la bolsa no bloquea la señal celular
4. Si no comunica: la bolsa bloquea correctamente la señal

## PRUEBA 2: WiFi
1. Activa WiFi en el teléfono
2. Mételo en la bolsa
3. Desde otro dispositivo en la misma red, haz ping a la IP del teléfono
4. Si responde: la bolsa no bloquea WiFi
5. Si no responde: bloquea

## PRUEBA 3: GPS (más lenta pero importante)
1. Abre una app de GPS antes de meter el teléfono
2. Mételo en la bolsa 5-10 minutos
3. Saca el teléfono y comprueba si el GPS aún tiene fix reciente
4. El GPS debería haber perdido el fix completamente

## NOTAS IMPORTANTES
- El cierre de la bolsa importa tanto como el tejido
  → Un cierre incompleto o doblez insuficiente deja entrar señal
  → Algunos modelos requieren doblar el cierre 3 veces y sujetarlo con velcro

- La batería del teléfono se agota más rápido dentro de la bolsa
  → El teléfono sube la potencia de transmisión buscando señal
  → Para almacenamiento largo: modo avión primero, luego bolsa

Cuándo usarlas y cuándo no

Situación ¿Faraday bag útil? Alternativa o complemento
Reunión sensible donde no quieres que el teléfono escuche ✓ Sí, efectiva Apagar completamente + dejar en otra sala
Cruzar una frontera con dispositivos que no quieres que sean escaneados ✓ Sí, impide triangulación Cifrado del dispositivo + apagado
Almacenar un teléfono con identidad separada cuando no está en uso ✓ Sí, previene registro en red Extraer la SIM adicionalmente
Evitar que una app activa grabe audio ✗ No necesaria Modo avión es suficiente; revocar permisos
Proteger contra activación remota de malware ✓ Parcialmente Si el malware ya está instalado y activo, puede grabar sin red y exfiltrar después
Transporte de evidencia forense digital ✓ Imprescindible Estándar en procedimientos forenses para preservar el estado del dispositivo

Limitaciones que la mayoría ignora

  • No protege contra malware ya instalado con capacidades de grabación: si el teléfono tiene un implante que graba el micrófono y almacena localmente para exfiltrar cuando tenga señal, la bolsa de Faraday solo retrasa la exfiltración, no la previene.
  • No bloquea la memoria: los datos en el dispositivo no están protegidos por la bolsa. Si el dispositivo es confiscado y sacado de la bolsa, los datos siguen siendo accesibles (de ahí la importancia del cifrado completo del dispositivo).
  • El teléfono sigue operativo internamente: las aplicaciones siguen ejecutándose, los sensores siguen activos (acelerómetro, giroscopio). Solo se bloquea la comunicación por radio.
  • Degradación con el uso: las bolsas de tejido pierden eficacia si el tejido conductor se daña, se dobla repetidamente o si el cierre falla. Prueba periódicamente que sigue funcionando.
💡
Extraer la SIM es más simple que una bolsa para muchos casos: Si el objetivo es únicamente evitar la triangulación celular, extraer la SIM física del teléfono es más fiable que una bolsa de Faraday. Sin SIM, no hay IMSI, no hay IMEI transmitido a ninguna red celular. La bolsa protege también contra WiFi, Bluetooth y GPS, lo que la hace necesaria cuando esas señales también son un riesgo.