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
roca — ROCA: Vulnerabilidad de clave RSA de Infineon | Kitploit
Herramientas/GitHubGitHub/crocs-muni/roca
Análisis EstáticoAnálisis de VulnerabilidadesCriptografía
GitHubcrocs-muni/roca

roca

ROCA: Vulnerabilidad de clave RSA de Infineon

Ver RepositorioSitio web
4959649hace 5 añosRevisado por Kitploit

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

Herramienta de detección ROCA

Build Status

Esta herramienta está relacionada con el artículo de la conferencia ACM CCS 2017 #124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.

Permite probar claves públicas RSA para detectar la presencia de la vulnerabilidad descrita.

Actualización 4.11.2017: Compatible con Python 2.7, 3.4+.

Actualización 30.10.2017: El artículo del ataque ya está disponible en línea, versión ACM.

Actualización 30.10.2017: El detector de logaritmos discretos ahora está implementado en Python y se usa como método predeterminado. Detecta la estructura en los primos explotada por el algoritmo de factorización.

Actualmente la herramienta soporta los siguientes formatos de clave:

  • Certificado X509, codificado en DER, uno por archivo, *.der, *.crt
  • Certificado X509, codificado en PEM, varios por archivo, *.pem
  • Solicitud de firma de certificado (CSR) X509, codificada en PEM, varios por archivo, *.pem
  • Clave privada RSA codificada en PEM, clave pública, varios por archivo, *.pem (debe tener el encabezado correcto )
Descargar herramienta
-----BEGIN RSA...
  • Clave pública SSH, *.pub, comenzando con "ssh-rsa", una por línea
  • Clave PGP codificada en ASC, *.pgp, *.asc. Varios por archivo, debe tener el encabezado correcto -----BEGIN PGP...
  • Aplicación Android APK, *.apk
  • Archivo de texto con un módulo por línea *.txt, el módulo puede ser a) número codificado en base64, b) número codificado en hexadecimal, c) número codificado en decimal
  • Archivo JSON con módulos, un registro por línea, el registro con módulo tiene clave "mod" (int, codificación base64, hex, decimal soportada) certificado(s) con clave "cert" / arreglo de certificados con clave "certs" soportados, codificados en DER base64.
  • Archivo LDIFF - volcado de base de datos LDAP. Cualquier campo que termine en ;binary:: se intenta decodificar como certificado X509
  • Archivo Java Key Store (JKS). Intenta contraseña vacía y algunas comunes, especifique más con --jks-pass-file
  • Firma PKCS7 con certificado de usuario
  • La herramienta de detección es intencionalmente una implementación de un solo archivo para facilitar la integración/manipulación.

    Falso positivo

    Tasas de detección de falsos positivos:

    • Detector de módulos: 2^-27
    • Detector de logaritmos discretos: 2^-154

    El detector de logaritmos discretos está implementado solo en el código Python y se usa como método de detección predeterminado.

    Las versiones en Java y C# no se mantienen desde la publicación original y no planeamos actualizar estos detectores al método más preciso. Sin embargo, ¡se aceptan pull requests!

    Verificador en línea

    https://keychest.net/roca

    El verificador en línea utiliza el algoritmo del detector de logaritmos discretos.

    Instalar con pip

    Instale la biblioteca del detector + herramienta con pip (instala todas las dependencias):

    root@kitploit:~
    pip install roca-detect
    

    Instalación local

    Ejecute en la carpeta raíz del paquete:

    root@kitploit:~
    pip install --upgrade --find-links=. .
    

    Dependencias

    Puede ser necesario instalar dependencias adicionales para que pip pueda instalar, por ejemplo, el paquete cryptography.

    CentOS / RHEL:

    root@kitploit:~
    sudo yum install python-devel python-pip gcc gcc-c++ make automake autoreconf libtool openssl-devel libffi-devel dialog
    

    Ubuntu:

    root@kitploit:~
    sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev swig
    

    Uso

    Para imprimir el uso básico:

    root@kitploit:~
    # Si se instaló con pip / manualmente
    roca-detect --help
    
    # Sin instalación (pueden faltar dependencias)
    python roca/detect.py
    

    La herramienta de prueba acepta múltiples nombres de archivo / directorios como argumento de entrada. Devuelve el informe mostrando cuántos archivos han sido identificados (y cuáles son).

    Ejemplo (no se encontraron vulnerabilidades):

    Ejecutando recursivamente en todas mis claves SSH y known_hosts:

    root@kitploit:~
    $> roca-detect ~/.ssh
    2017-10-16 13:39:21 [51272] INFO ### RESUMEN ####################
    2017-10-16 13:39:21 [51272] INFO Registros probados: 92
    2017-10-16 13:39:21 [51272] INFO .. Certificados PEM: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados DER: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Archivos de clave RSA: . 16
    2017-10-16 13:39:21 [51272] INFO .. Claves maestras PGP: 0
    2017-10-16 13:39:21 [51272] INFO .. Total claves PGP:  0
    2017-10-16 13:39:21 [51272] INFO .. Claves SSH:  . . . 76
    2017-10-16 13:39:21 [51272] INFO .. Claves APK:  . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Claves JSON: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados LDIFF: . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados JKS: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
    2017-10-16 13:39:21 [51272] INFO No se encontraron claves identificadas (OK)
    2017-10-16 13:39:21 [51272] INFO ################################
    

    Ejemplo (se encontraron vulnerabilidades):

    Ejecutando recursivamente en todas mis claves SSH y known_hosts:

    root@kitploit:~
    $> roca-detect ~/.ssh
    <b>2017-10-16 13:39:21 [51272] ADVERTENCIA Huella digital encontrada en el Certificado</b>
    ...
    2017-10-16 13:39:21 [51272] INFO ### RESUMEN ####################
    2017-10-16 13:39:21 [51272] INFO Registros probados: 92
    2017-10-16 13:39:21 [51272] INFO .. Certificados PEM: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados DER: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Archivos de clave RSA: . 16
    2017-10-16 13:39:21 [51272] INFO .. Claves maestras PGP: 0
    2017-10-16 13:39:21 [51272] INFO .. Total claves PGP:  0
    2017-10-16 13:39:21 [51272] INFO .. Claves SSH:  . . . 76
    2017-10-16 13:39:21 [51272] INFO .. Claves APK:  . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Claves JSON: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados LDIFF: . . 0
    2017-10-16 13:39:21 [51272] INFO .. Certificados JKS: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
    2017-10-16 13:39:21 [51272] INFO Claves identificadas encontradas: 1
    2017-10-16 13:39:21 [51272] INFO ADVERTENCIA: Vulnerabilidad potencial
    2017-10-16 13:39:21 [51272] INFO ################################
    

    Clave PGP

    Para probar su clave PGP puede exportarla desde su cliente de correo o descargarla de un servidor de claves PGP como https://pgp.mit.edu/

    También puede usar la utilidad de línea de comandos gpg para exportar su clave pública:

    root@kitploit:~
    gpg --armor --export [email protected] > mikey.asc
    

    Caso de uso avanzado

    La herramienta de detección extrae información sobre la clave que puede ser mostrada:

    root@kitploit:~
    roca-detect.py --dump --flatten --indent  ~/.ssh/
    

    Detección TLS/SSL

    roca-detect-tls detecta certificados desde puertos TLS/SSL remotos. Proporcione un archivo con una lista de entradas dirección:puerto delimitadas por nueva línea y use ese archivo como entrada.

    Archivo de ejemplo: tls_list.txt

    root@kitploit:~
    github.com:443
    google.com:443
    internal.example.com:8080
    

    Luego ejecute:

    roca-detect-tls tls_list.txt

    Módulos falsos

    Es posible generar módulos que pasen la prueba de huella digital de módulos pero que en realidad no contengan la estructura que utiliza el algoritmo de factorización. La prueba de módulos Dlog no los marca como positivos.

    Métodos de instalación avanzados

    Entorno virtual

    Generalmente se recomienda crear un nuevo entorno virtual de Python para el proyecto:

    root@kitploit:~
    virtualenv ~/pyenv
    source ~/pyenv/bin/activate
    pip install --upgrade pip
    pip install --upgrade --find-links=. .
    

    Python 2.7.13 separado

    Probamos la herramienta con Python 2.7.13 y funciona (consulte Travis para más información). Tenemos informes que indican que versiones inferiores (<=2.6) no funcionan correctamente, por lo que recomendamos encarecidamente usar Python 2.7 actualizado.

    Use pyenv para instalar una nueva versión de Python localmente si no puede / no desea actualizar el Python del sistema.

    Internamente descarga las fuentes de Python y las instala en ~/.pyenv.

    root@kitploit:~
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    exec $SHELL
    pyenv install 2.7.13
    pyenv local 2.7.13
    

    Python 3

    Las herramientas de detección también funcionan con Python 3.4+

    Contenedor Docker

    Ejecute mediante un contenedor Docker para evitar inconsistencias de entorno. El código fuente de Dockerfile se puede auditar en https://hub.docker.com/r/unnawut/roca-detect/.

    root@kitploit:~
    docker run --rm -v /ruta/a/sus/claves:/keys --network none unnawut/roca-detect
    

    Asegúrese de usar las banderas --rm y --network none para deshabilitar la conexión de red del contenedor y eliminar el contenedor después de la ejecución.

    Licencia

    El código está licenciado bajo la licencia MIT permisiva.

    Como hubo solicitudes de doble licencia bajo la licencia Apache 2.0 (debido a algunas dudas sobre la compatibilidad), licenciamos el código también bajo la licencia Apache 2.0.

    Elija la licencia que mejor se adapte a sus necesidades, ya sea MIT o Apache 2.0.

    Versiones en otros lenguajes

    Esta sección contiene enlaces a diferentes repositorios GIT con versiones en otros lenguajes

    • Go