
badkeys v0.0.20
Herramienta para encontrar vulnerabilidades comunes en claves públicas criptográficas
badkeys
Herramienta y biblioteca para comprobar claves públicas criptográficas en busca de vulnerabilidades conocidas
¿Qué?
badkeys comprueba claves públicas en varios formatos en busca de vulnerabilidades conocidas. Puedes encontrar una versión web en badkeys.info.
instalación
badkeys se puede instalar mediante pip:
pip3 install badkeys
Es posible que quieras usar un entorno virtual. Para más detalles sobre las diferentes opciones de instalación, consulta la documentación oficial de Python. Alternativamente, puedes llamar directamente a ./badkeys-cli desde el repositorio de git.
Puedes encontrar una visión general de los paquetes de badkeys para distribuciones de Linux y otros sistemas operativos en Repology.
uso
Antes de usar badkeys, necesitas descargar los datos de la lista de bloqueo:
badkeys --update-bl
Después de eso, puedes llamar a badkeys y pasarle como parámetro archivos con claves públicas criptográficas:
badkeys test.crt my.key
Intentará detectar automáticamente el formato del archivo. Se admiten claves públicas y privadas en formato PEM (tanto PKCS #1 como PKCS #8), certificados X.509, solicitudes de firma de certificados (CSR) y claves públicas SSH. Puedes encontrar algunas claves de prueba en el directorio tests/data.
De forma predeterminada, badkeys solo muestra información sobre claves vulnerables, lo que significa que no se generará ninguna salida si no se encuentran vulnerabilidades. El parámetro -a genera salida para todas las claves.
La herramienta de línea de comandos devolverá 0 si se escanearon claves, no se produjeron errores y no se detectaron vulnerabilidades. Devuelve 1 para errores de aplicación, 2 si alguna entrada no pudo escanearse (errores de análisis, tipos de clave no compatibles, archivos sin clave) y 4 si se encontró una clave vulnerable. Los códigos de retorno se pueden combinar como una máscara de bits. (Por ejemplo, 2|4=6 indica que algunas claves eran vulnerables y algunas no pudieron escanearse.)
escaneo
badkeys puede escanear hosts SSH y TLS y comprobar automáticamente sus claves públicas. Esto se puede habilitar con los parámetros -s (SSH) y -t (TLS). De forma predeterminada, SSH se escaneará en el puerto 22 y TLS se escaneará en varios puertos para protocolos comunes (https/443, smtps/465, ldaps/636, ftps/990, imaps/993, pop3s/995 y 8443, que se usa comúnmente como puerto https no estándar).
Se pueden configurar puertos alternativos con --tls-ports y --ssh-ports.
El escaneo TLS y SSH se puede combinar:
badkeys -ts example.org
Ten en cuenta que los modos de escaneo tienen limitaciones. A menudo es más recomendable usar otras herramientas para recopilar claves TLS/SSH y escanearlas localmente con badkeys.
El escaneo SSH necesita paramiko como dependencia adicional.
El escaneo TLS no puede detectar múltiples certificados en un mismo host (por ejemplo, ECDSA y RSA). Esto es una limitación de la función ssl.get_server_certificate() de Python.
Módulo de Python y API
badkeys también se puede usar como módulo de Python. Sin embargo, actualmente el software se encuentra en fase beta y la API puede cambiar con regularidad.
Acerca de
badkeys fue escrito por Hanno Böck.
Este trabajo fue financiado inicialmente en 2022 por Industriens Fond a través del proyecto CIDI (Cybersecure IOT in Danish Industry) y el Center for Information Security and Trust (CISAT) de la IT University of Copenhagen, Dinamarca. En 2025/2026, badkeys recibió el apoyo del NGI0 Core Fund de NLnet.