Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
roca — ROCA : Vulnérabilité de la clé RSA d'Infineon | Kitploit
Outils/GitHubGitHub/crocs-muni/roca
Analyse StatiqueAnalyse des VulnérabilitésCryptographie
GitHubcrocs-muni/roca

roca

ROCA : Vulnérabilité de la clé RSA d'Infineon

Voir le dépôtSite web
49596il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Outil de détection ROCA

Build Status

Cet outil est lié à l'article de conférence ACM CCS 2017 #124 Return of the Coppersmith's Attack : Practical Factorization of Widely Used RSA Moduli.

Il vous permet de tester la présence de la vulnérabilité décrite dans les clés RSA publiques.

Mise à jour 04/11/2017 : Python 2.7, 3.4+ supportés.

Mise à jour 30/10/2017 : Le papier de l'attaque est déjà en ligne, version ACM.

Mise à jour 30/10/2017 : Le détecteur de logarithme discret est maintenant implémenté en Python et utilisé par défaut. Il détecte la structure dans les nombres premiers exploitée par l'algorithme de factorisation.

Actuellement, l'outil prend en charge les formats de clés suivants :

  • Certificat X509, encodé DER, un par fichier, *.der, *.crt
  • Certificat X509, encodé PEM, plusieurs par fichier, *.pem
  • Demande de signature de certificat X509, encodée PEM, plusieurs par fichier, *.pem
  • Clé privée RSA encodée PEM, clé publique, plusieurs par fichier, *.pem (doit avoir l'en-tête correct -----BEGIN RSA...)
  • Clé publique SSH, *.pub, commençant par "ssh-rsa", une par ligne
  • Clé PGP encodée ASC, *.pgp, *.asc. Plusieurs par fichier, doit avoir l'en-tête correct -----BEGIN PGP...
  • Application Android APK, *.apk
  • fichier texte avec un modulo par ligne *.txt, le modulo peut être a) un nombre encodé en base64, b) un nombre codé en hexadécimal, c) un nombre codé en décimal
  • fichier JSON avec modulos, un enregistrement par ligne, l'enregistrement avec le modulo a la clé "mod" (support des encodages int, base64, hex, dec) le(s) certificat(s) avec la clé "cert" / tableau de certificats avec la clé "certs" sont supportés, DER encodé en base64.
  • Fichier LDIFF - vidage de base de données LDAP. Tout champ se terminant par ;binary:: est tenté d'être décodé en certificat X509
  • Fichier Java Key Store (JKS). Essaie le mot de passe vide et quelques mots de passe courants, spécifiez-en plus avec --jks-pass-file
  • Signature PKCS7 avec certificat utilisateur

L'outil de détection est intentionnellement implémenté en un seul fichier pour une intégration / manipulation facile.

Faux positif

Taux de faux positifs :

  • Détecteur de modulos : 2^-27
  • Détecteur de logarithme discret : 2^-154

Le détecteur de logarithme discret est implémenté uniquement dans le code Python, utilisé comme méthode de détection par défaut.

Les ports en Java et C# ne sont plus maintenus depuis la publication originale et nous ne prévoyons pas de mettre à jour ces détecteurs vers la méthode plus précise. Cependant, les PR sont les bienvenus !

Vérificateur en ligne

https://keychest.net/roca

Le vérificateur en ligne utilise l'algorithme du détecteur de logarithme discret.

Installation avec pip

Installez la bibliothèque de détection + l'outil avec pip (installe toutes les dépendances) :

root@kitploit:~
pip install roca-detect

Installation locale

Exécutez dans le dossier racine du paquet :

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

Dépendances

Il peut être nécessaire d'installer des dépendances supplémentaires pour que pip puisse installer, par exemple, le paquet 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

Utilisation

Pour afficher l'utilisation de base :

root@kitploit:~
# Si installé avec pip / manuellement
roca-detect --help

# Sans installation (peut manquer des dépendances)
python roca/detect.py

L'outil de test accepte plusieurs noms de fichiers / répertoires comme argument d'entrée. Il renvoie le rapport indiquant combien de fichiers ont été empreints (et lesquels).

Exemple (aucune vulnérabilité trouvée) :

Exécution récursive sur toutes mes clés SSH et 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 ################################

Exemple (vulnérabilités trouvées) :

Exécution récursive sur toutes mes clés SSH et 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 ################################

Clé PGP

Pour tester votre clé PGP, vous pouvez l'exporter depuis votre client de messagerie ou la télécharger depuis un serveur de clés PGP tel que https://pgp.mit.edu/

Vous pouvez également utiliser l'utilitaire en ligne de commande gpg pour exporter votre clé publique :

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

Cas d'utilisation avancé

L'outil de détection extrait des informations sur la clé qui peuvent être affichées :

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

Détection TLS/SSL

Le roca-detect-tls détecte les certificats depuis des ports TLS/SSL distants. Fournissez un fichier avec une liste d'entrées address:port séparées par des sauts de ligne et utilisez ce fichier comme entrée.

Exemple de fichier : tls_list.txt

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

Ensuite exécutez :

roca-detect-tls tls_list.txt

Faux modulos

Il est possible de générer des modulos qui réussissent le test d'empreinte des modulos mais qui ne contiennent pas réellement la structure utilisée par l'algorithme de factorisation. Le test de modulos Dlog ne les marque pas comme positifs.

Méthodes d'installation avancées

Environnement virtuel

Il est généralement recommandé de créer un nouvel environnement virtuel Python pour le projet :

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

Python 2.7.13 séparé

Nous avons testé l'outil avec Python 2.7.13 et il fonctionne (voir Travis pour plus d'infos). Nous avons des rapports indiquant que les versions inférieures (<=2.6) ne fonctionnent pas correctement, nous recommandons donc vivement d'utiliser Python 2.7 à jour.

Utilisez pyenv pour installer une nouvelle version de Python localement si vous ne pouvez pas / ne voulez pas mettre à jour le Python système.

Il télécharge en interne les sources Python et les installe dans ~/.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

L'outil de détection fonctionne également avec Python 3.4+

Conteneur Docker

Exécutez via un conteneur Docker pour éviter les incohérences d'environnement. La source du Dockerfile peut être audité sur https://hub.docker.com/r/unnawut/roca-detect/.

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

Assurez-vous d'utiliser les drapeaux --rm et --network none pour désactiver la connexion réseau du conteneur et supprimer le conteneur après exécution.

Licence

Le code est sous licence MIT permissive.

Comme il y a eu des demandes de double licence sous licence Apache 2.0 (en raison de certains doutes sur la compatibilité), nous concédons également le code sous licence Apache 2.0.

Choisissez la licence qui vous convient le mieux, soit MIT, soit Apache 2.0.

Ports linguistiques

Cette section contient des liens vers différents dépôts GIT avec des ports linguistiques

  • Go
Télécharger l’outil