Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
roca — ROCA: Infineon RSA-Schlüsselschwachstelle | Kitploit
Tools/GitHubGitHub/crocs-muni/roca
Statische AnalyseSchwachstellenanalyseKryptographie
GitHubcrocs-muni/roca

roca

ROCA: Infineon RSA-Schlüsselschwachstelle

Repository anzeigenWebseite
4959649vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ROCA-Erkennungstool

Build Status

Dieses Tool bezieht sich auf ACM CCS 2017 Konferenzpapier #124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.

Es ermöglicht Ihnen, öffentliche RSA-Schlüssel auf das Vorhandensein der beschriebenen Schwachstelle zu testen.

Update 4.11.2017: Python 2.7, 3.4+ unterstützt.

Update 30.10.2017: Das Papier des Angriffs ist bereits online, ACM-Version.

Update 30.10.2017: Der diskrete Logarithmus-Detektor ist jetzt in Python implementiert und wird standardmäßig verwendet. Er erkennt die Struktur in den Primzahlen, die der Faktorisierungsalgorithmus ausnutzt.

Derzeit unterstützt das Tool die folgenden Schlüsselformate:

  • X509-Zertifikat, DER-kodiert, eine Datei, *.der, *.crt
  • X509-Zertifikat, PEM-kodiert, mehrere pro Datei, *.pem
  • X509-Zertifikatsignieranforderung, PEM-kodiert, mehrere pro Datei, *.pem (muss den korrekten Header -----BEGIN... haben)
  • RSA PEM-kodierter privater Schlüssel, öffentlicher Schlüssel, mehrere pro Datei, *.pem (muss den korrekten Header haben)
Tool herunterladen
-----BEGIN RSA...
  • SSH-öffentlicher Schlüssel, *.pub, beginnt mit „ssh-rsa“, eine pro Zeile
  • ASC-kodierter PGP-Schlüssel, *.pgp, *.asc. Mehrere pro Datei, muss den korrekten Header -----BEGIN PGP... haben
  • APK-Android-Anwendung, *.apk
  • ein Modulus pro Zeile Textdatei *.txt, Modulus kann a) base64-kodierte Zahl, b) hex-kodierte Zahl, c) dezimal-kodierte Zahl sein
  • JSON-Datei mit Moduli, ein Datensatz pro Zeile, Datensatz mit Modulus hat Schlüssel „mod“ (int, base64, hex, dec Kodierung unterstützt) Zertifikat(e) mit Schlüssel „cert“ / Array von Zertifikaten mit Schlüssel „certs“ werden unterstützt, base64-kodiertes DER.
  • LDIFF-Datei - LDAP-Datenbank-Dump. Jedes Feld, das mit ;binary:: endet, wird versucht als X509-Zertifikat zu dekodieren.
  • Java Key Store-Datei (JKS). Versucht leeres Passwort & einige übliche, geben Sie weitere mit --jks-pass-file an.
  • PKCS7-Signatur mit Benutzerzertifikat
  • Das Erkennungstool ist bewusst als Ein-Datei-Implementierung für einfache Integration / Handhabung konzipiert.

    Fehlalarme

    Fehlalarm-Erkennungsraten:

    • Moduli detector: 2^-27
    • Discrete logarithm detector: 2^-154

    Der diskrete Logarithmus-Detektor ist nur im Python-Code implementiert und wird als standardmäßige Erkennungsmethode verwendet.

    Die Java- und C#-Code-Ports werden seit der ursprünglichen Veröffentlichung nicht mehr gewartet und wir planen nicht, diese Detektoren auf die genauere Methode zu aktualisieren. Pull-Requests sind jedoch willkommen!

    Online-Prüfer

    https://keychest.net/roca

    Der Online-Prüfer verwendet den Algorithmus des diskreten Logarithmus-Detektors.

    Installation mit pip

    Installieren Sie die Detector-Bibliothek + Tool mit pip (installiert alle Abhängigkeiten):

    root@kitploit:~
    pip install roca-detect
    

    Lokale Installation

    Führen Sie im Hauptverzeichnis des Pakets aus:

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

    Abhängigkeiten

    Es kann erforderlich sein, zusätzliche Abhängigkeiten zu installieren, damit pip z.B. das Paket cryptography installieren kann.

    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
    

    Verwendung

    Um die grundlegende Verwendung anzuzeigen:

    root@kitploit:~
    # If installed with pip / manually
    roca-detect --help
    
    # Without installation (can miss dependencies)
    python roca/detect.py
    

    Das Testtool akzeptiert mehrere Dateinamen / Verzeichnisse als Eingabeargument. Es gibt einen Bericht zurück, der zeigt, wie viele Dateien gefingerprintet wurden (und welche das sind).

    Beispiel (keine Schwachstellen gefunden):

    Rekursiv ausgeführt auf allen meinen SSH-Schlüsseln und known_hosts:

    root@kitploit:~
    $> roca-detect ~/.ssh
    2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
    2017-10-16 13:39:21 [51272] INFO Records tested: 92
    2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
    2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
    2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
    2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
    2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
    2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
    2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
    2017-10-16 13:39:21 [51272] INFO No fingerprinted keys found (OK)
    2017-10-16 13:39:21 [51272] INFO ################################
    

    Beispiel (Schwachstellen gefunden):

    Rekursiv ausgeführt auf allen meinen SSH-Schlüsseln und known_hosts:

    root@kitploit:~
    $> roca-detect ~/.ssh
    <b>2017-10-16 13:39:21 [51272] WARNING Fingerprint found in the Certificate</b>
    ...
    2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
    2017-10-16 13:39:21 [51272] INFO Records tested: 92
    2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
    2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
    2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
    2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
    2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
    2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
    2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
    2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
    2017-10-16 13:39:21 [51272] INFO Fingerprinted keys found: 1
    2017-10-16 13:39:21 [51272] INFO WARNING: Potential vulnerability
    2017-10-16 13:39:21 [51272] INFO ################################
    

    PGP-Schlüssel

    Um Ihren PGP-Schlüssel zu testen, können Sie ihn aus Ihrem E-Mail-Client exportieren oder von einem PGP-Schlüsselserver wie https://pgp.mit.edu/ herunterladen.

    Sie können auch das Befehlszeilentool gpg verwenden, um Ihren öffentlichen Schlüssel zu exportieren:

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

    Fortgeschrittener Anwendungsfall

    Das Erkennungstool extrahiert Informationen über den Schlüssel, die angezeigt werden können:

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

    TLS/SSL-Erkennung

    Das roca-detect-tls erkennt Zertifikate von entfernten TLS/SSL-Ports. Geben Sie eine Datei mit einer durch Zeilenumbrüche getrennten Liste von Adresse:Port-Einträgen an und verwenden Sie diese Datei als Eingabe.

    Beispieldatei: tls_list.txt

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

    Dann führen Sie aus:

    roca-detect-tls tls_list.txt

    Gefälschte Moduli

    Es ist möglich, Moduli zu generieren, die den Moduli-Fingerprinting-Test bestehen, aber tatsächlich keine Struktur enthalten, die der Faktorisierungsalgorithmus verwendet. Der Dlog-Moduli-Test markiert diese nicht als positiv.

    Fortgeschrittene Installationsmethoden

    Virtuelle Umgebung

    Es wird normalerweise empfohlen, eine neue Python-Virtual-Umgebung für das Projekt zu erstellen:

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

    Separates Python 2.7.13

    Wir haben das Tool mit Python 2.7.13 getestet und es funktioniert (siehe Travis für weitere Informationen). Wir haben Berichte erhalten, dass niedrigere Versionen (<=2.6) nicht richtig funktionieren, daher empfehlen wir dringend ein aktuelles Python 2.7 zu verwenden.

    Verwenden Sie pyenv, um lokal eine neue Python-Version zu installieren, wenn Sie das systemweite Python nicht aktualisieren können / möchten.

    Es lädt intern die Python-Quellen herunter und installiert sie in ~/.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

    Die Erkennungstools funktionieren auch mit Python 3.4+

    Docker-Container

    Führen Sie es über einen Docker-Container aus, um Umgebungsinkonsistenzen zu vermeiden. Die Dockerfile-Quelle kann unter https://hub.docker.com/r/unnawut/roca-detect/ überprüft werden.

    root@kitploit:~
    docker run --rm -v /path/to/your/keys:/keys --network none unnawut/roca-detect
    

    Stellen Sie sicher, dass Sie die Flags --rm und --network none verwenden, um die Netzwerkverbindung des Containers zu deaktivieren und den Container nach dem Ausführen zu löschen.

    Lizenzierung

    Der Code ist unter der großzügigen MIT-Lizenz lizenziert.

    Da es Anfragen zur doppelten Lizenzierung unter der Apache 2.0-Lizenz gab (aufgrund einiger Zweifel an der Kompatibilität), lizenzieren wir den Code auch unter der Apache 2.0-Lizenz.

    Wählen Sie die Lizenz, die Ihnen besser gefällt, entweder MIT oder Apache 2.0.

    Sprach-Ports

    Dieser Abschnitt enthält Links zu verschiedenen GIT-Repositorys mit Sprach-Ports

    • Go