Fallo al capturar paquetes de la App de Binance con Charles: Explicación del Certificate Pinning
- ¿Qué es el Certificate Pinning?
- ¿Por qué las Apps financieras implementan Pinning?
- Cómo funcionan Charles / mitmproxy
- Síntomas específicos del fallo de captura
- Métodos para eludir el Pinning
- ¿Por qué los usuarios comunes podrían encontrar este problema?
- Mecanismo de actualización del Pinning
- Diferentes implementaciones según el cliente
- Alternativas a la captura de paquetes
- Consejos de seguridad
- Preguntas Frecuentes (FAQ)
- Lecturas recomendadas
Cuando investigadores técnicos o auditores de seguridad intentan capturar el tráfico HTTPS de la App de Binance utilizando herramientas como Charles o mitmproxy, descubren que la aplicación rechaza directamente la conexión o arroja un error SSL. Esto sucede porque Binance implementa Certificate Pinning (Fijación de Certificados). Esta nota explica dicho mecanismo desde un punto de vista técnico. Para descargar la aplicación, abre el Sitio Oficial de Binance o ve a la App Oficial de Binance; para instalarla en iPhone revisa el Tutorial de instalación de iOS.
¿Qué es el Certificate Pinning?
El proceso normal de validación HTTPS es el siguiente:
- La App inicia la conexión.
- El servidor devuelve un certificado.
- La App comprueba si el certificado ha sido emitido por una Autoridad de Certificación (CA) en la que confía el sistema.
- Si está firmado por cualquier CA de confianza, se acepta.
El Certificate Pinning es una comprobación mucho más estricta:
- La App lleva incorporada una "huella digital del certificado esperado".
- Cuando el servidor devuelve el certificado, la App no solo verifica la CA, sino que también comprueba si coincide con la huella digital interna.
- Si no coincide → se rechaza la conexión.
¿Por qué las Apps financieras implementan Pinning?
Para prevenir ataques de intermediario (Man-in-the-Middle o MITM):
- Un atacante podría engañar al usuario para que instale su certificado raíz.
- Luego, usar su propio certificado para secuestrar el tráfico.
- Una validación HTTPS normal pasaría (porque el certificado raíz ha sido añadido a la lista blanca del sistema).
- Pero el Pinning lo rechazará (porque la huella digital no coincidirá).
Aplicaciones financieras como Binance, bancos o PayPal suelen implementar Pinning de forma generalizada.
Cómo funcionan Charles / mitmproxy
Pasos para capturar paquetes HTTPS con Charles:
- Se instala y se confía en el certificado raíz de Charles en el dispositivo.
- Se configura el proxy para que apunte a Charles.
- La App envía una solicitud → Charles usa su propio certificado para hacerse pasar por el destino.
- La App verifica: la CA es de confianza (porque se instaló el certificado de Charles).
- Una App normal lo acepta → La captura de paquetes es exitosa.
Sin embargo, la App de Binance realiza una comprobación adicional en el paso 4:
5'. Comprueba la huella digital del certificado → No coincide → Rechaza.
Por eso la captura de paquetes fracasa.
Síntomas específicos del fallo de captura
| Síntoma | Causa |
|---|---|
| Círculo de carga tras abrir la App | Intercambio (Handshake) TLS rechazado |
| Gráfico de mercado en blanco | Conexión WebSocket rechazada |
| La API devuelve error de conexión | Fallo en la validación del certificado |
| Charles muestra "SSL Handshake Error" | Igual que arriba |
| La App se cierra de golpe (raro) | Excepción no manejada adecuadamente |
Métodos para eludir el Pinning
Los investigadores suelen utilizar:
- Scripts de Frida: Para reemplazar dinámicamente la lógica de validación de certificados dentro de la App.
- Módulos LSPosed / Magisk: Para inyectar código modificado.
- Descompilar el APK, modificar el código dex y volver a empaquetarlo.
- Usar modificadores PIN-SSL.
Todos estos métodos requieren un dispositivo rooteado y violan el acuerdo de usuario de la App. Además, los mecanismos de seguridad de la App de Binance podrían detectar estas herramientas.
¿Por qué los usuarios comunes podrían encontrar este problema?
La inmensa mayoría de los usuarios nunca captura paquetes, pero hay algunos escenarios accidentales:
Escenario 1 · La red de la empresa intercepta el SSL Algunas empresas descifran el tráfico HTTPS a nivel de router para su monitorización:
- Instalan un certificado raíz de la empresa en todos los dispositivos de los empleados.
- El tráfico es descifrado.
- La App de Binance rechaza la conexión (la huella digital es incorrecta).
Para confirmarlo: comprueba si otras Apps que requieren HTTPS, como las bancarias, también fallan.
Escenario 2 · Inspección HTTPS del antivirus Antivirus como Kaspersky, Avast, etc., escanean el tráfico HTTPS:
- Utilizan un enfoque similar al del intermediario (MITM).
- La App de Binance podría rechazar la conexión.
Solución: desactiva temporalmente la inspección HTTPS de tu software antivirus.
Escenario 3 · Uso de un "Acelerador de red" Algunos "aceleradores" actúan en realidad como proxies de tráfico:
- El usuario instala un certificado raíz sin ser plenamente consciente.
- Capturan los paquetes para "acelerar".
- Binance rechaza la conexión.
Solución: desinstala aceleradores de origen dudoso.
Mecanismo de actualización del Pinning
La huella digital del Certificate Pinning cambiará (cuando Binance renueve su certificado):
- Normalmente, la App incorpora múltiples huellas digitales.
- Si una caduca, no afecta a la conexión (se usa otra válida).
- Al actualizar la App, las huellas se actualizan simultáneamente.
Si no actualizas la App durante mucho tiempo, podría llegar el día en que tanto las huellas del Pinning como el certificado del servidor hayan cambiado, impidiendo la conexión.
Diferentes implementaciones según el cliente
Nivel de exigencia del Pinning en las distintas plataformas de Binance:
| Cliente | Nivel de Pinning |
|---|---|
| App Android | Estricto |
| App iOS | Estricto |
| Cliente de Escritorio | Estricto |
| Navegador | No implementado (depende de la confianza del SO) |
Los navegadores no tienen Pinning (por eso un navegador puede ser víctima de un ataque MITM y la App no).
Alternativas a la captura de paquetes
Alternativas para la investigación técnica:
- Utilizar la documentación oficial de la API de Binance (que es pública).
- Utilizar las interfaces proporcionadas por los SDKs.
- Capturar el tráfico en la versión web (usando las herramientas de desarrollo del navegador).
- Captura de paquetes a nivel de red (con Wireshark, aunque solo se verá texto cifrado).
Ninguno de estos métodos requiere romper los mecanismos de seguridad de la App.
Consejos de seguridad
- No instales certificados raíz de origen desconocido.
- Sé precavido al usar la App de Binance en redes de empresas o Wi-Fi públicos.
- Si tu antivirus escanea el tráfico HTTPS, añade a Binance a la lista blanca.
- No hagas root en el dispositivo que utilizas habitualmente para operar.
Preguntas Frecuentes (FAQ)
P: ¿Puede Charles capturar paquetes de la versión web de Binance? R: Sí (los navegadores no tienen Pinning), pero solo verás el tráfico web, no el de la App.
P: ¿Puede mitmproxy hacer que la App de Binance ignore el Pinning? R: Por sí solo, no. Debe usarse en combinación con herramientas como Frida.
P: ¿Se bloqueará Binance tras instalar un certificado raíz corporativo en iOS? R: Es posible. Depende de si el certificado específico se ha inyectado en la cadena de confianza que la App verifica.
P: ¿Se pueden capturar paquetes en un Android con root? R: Teóricamente es posible utilizando herramientas como Frida, pero viola los términos de servicio de la App.