Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-0073-Android-client-TLS-auth-bypass — traduciendo exploit original de python a C | Kitploit
Herramientas/GitHubGitHub/m00ddy/cve-2026-0073-android-client-tls-auth-bypass
Seguridad AndroidAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónDesarrollo de PayloadsExplotación de Binarios
GitHubm00ddy/cve-2026-0073-android-client-tls-auth-bypass

CVE-2026-0073-Android-client-TLS-auth-bypass

traduciendo exploit original de python a C

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver Repositorio
2hace 2 mesesAún no revisado

CVE‑2026‑0073 es un error lógico en el demonio ADB de Android (adbd) que permite a un atacante eludir la autenticación mutua TLS y abrir un shell remoto en un dispositivo que tenga la depuración inalámbrica habilitada y que se haya emparejado con cualquier ordenador al menos una vez. La causa raíz es una única API mal utilizada: el valor de retorno de EVP_PKEY_cmp() de OpenSSL se trata como un booleano en lugar de un resultado de tres valores.

Flujo de autenticación normal con la depuración inalámbrica de ADB

cuando habilitamos la depuración inalámbrica desde los ajustes de desarrollador de Android, el dispositivo inicia una instancia de adbd que escucha en un puerto TCP aleatorio. Nota: esta función se introdujo a partir de Android 11.

el protocolo tiene dos fases:

  1. Negociación en claro: el host se conecta mediante TCP e intercambia un handshake CNXN/STLS para acordar la actualización a TLS.
  2. Autenticación mutua TLS 1.3:
    • el servidor adbd exige que el cliente presente un certificado
    • adbd extrae la clave pública de ese certificado
    • a continuación compara la clave con todas las claves RSA autorizadas almacenadas en su /data/misc/adb/adb_keys. las claves se colocan allí durante emparejamientos anteriores (el exploit requiere que haya al menos una clave aquí)
    • si las claves coinciden, el handshake tiene éxito y el host puede enviar comandos de shell como el usuario shell la comparación de claves se realiza con EVP_PKEY_cmp(key1, key2) de OPENSSL, que devuelve
  • 1 --> las claves son iguales
  • 0 --> las claves no son iguales
  • -1 --> los tipos de clave difieren, o se produjo un error

El error

en el archivo daemon/auth.cpp la función vulnerable adb_tls_verify_cert() tiene un aspecto similar a este:

root@kitploit:~
int cmp = EVP_PKEY_cmp(stored_rsa_key, peer_key);
if (cmp) {     
    authorised = true;
}

dado que if(cmp) devuelve true mientras cmp sea distinto de cero, un valor de retorno de -1 de EVP_PKEY_cmp() conduce a la autorización. esto significa que, como la clave almacenada es RSA, cuando el cliente presenta un certificado EC o ed25519, la función devuelve -1 y el atacante obtiene acceso autorizado.

Secuencia del ataque

  1. objetivo: un dispositivo Android con la depuración inalámbrica habilitada y al menos una clave RSA en su almacén de claves (se ha emparejado una vez, por cualquier persona).

  2. handshake en claro: el atacante se conecta al puerto TCP de adbd e intercambia CNXN/STLS.

  3. handshake TLS con certificado EC: el atacante genera una clave efímera EC P‑256 y un certificado autofirmado. esta clave no es RSA deliberadamente.

  4. comparación defectuosa: EVP_PKEY_cmp(RSA, EC) devuelve ‑1 → if (cmp) es true → adbd marca el transporte como autorizado.

  5. post‑TLS: el atacante evita enviar un CNXN de host (que restablecería el transporte) y abre directamente un flujo shell: con una ventana delayed_ack grande.

Resultado: shell remoto como el usuario shell, sin interacción del usuario, sin notificación y sin necesidad de poseer ninguna clave privada legítima.

¿Por qué traducirlo a C?

El script de Python requiere un intérprete de python 3 y la biblioteca cryptography instalados en la máquina del atacante. Una implementación en C compila a un binario independiente sin dependencias externas más allá del OpenSSL/libssl del sistema, que está presente en prácticamente todos los sistemas linux por defecto. Esto reduce drásticamente la barrera para su despliegue. Además, un programa en C puede compilarse de forma cruzada para cualquier arquitectura de destino (x86_64, ARM, MIPS). Esto significa que el exploit podría compilarse y ejecutarse directamente en dispositivos integrados como routers, Raspberry Pis, o incluso otro dispositivo Android que actúe como atacante, sin necesidad de entorno python. Y un binario C compilado puede ser despojado de símbolos, empaquetado (UPX), y es opaco sin un desensamblador, lo que lo hace más sigiloso que un script de python.

Demo

ejecutando el exploit: proporciona la IP y el PUERTO de la interfaz de depuración inalámbrica y tendrás un shell en el dispositivo.

root@kitploit:~
docker build -t adb_bypass .
docker run -it --network host adb_bypass <IP> <PORT>

abriendo una calculadora

root@kitploit:~
am start -n com.sec.android.app.popupcalculator/com.sec.android.app.popupcalculator.Calculator

Nota sobre el uso de LLM

Se utilizó un LLM para traducir el exploit de python a C, el exploit original está aquí. la traducción no fue correcta 1:1 y nos enfrentamos a muchos problemas, por lo que fue necesario un bucle de análisis de código y charlas de ida y vuelta para corregir errores en la traducción y llegar a un exploit completo en funcionamiento.

Descargar herramienta