Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
roca — ROCA: vulnerabilità della chiave RSA di Infineon | Kitploit
Strumenti/GitHubGitHub/crocs-muni/roca
Analisi StaticaAnalisi delle VulnerabilitàCrittografia
GitHubcrocs-muni/roca

roca

ROCA: vulnerabilità della chiave RSA di Infineon

Vedi RepositorySito web
495965 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Strumento di rilevamento ROCA

Build Status

Questo strumento è correlato all'articolo della conferenza ACM CCS 2017 n.124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.

Permette di testare le chiavi RSA pubbliche per la presenza della vulnerabilità descritta.

Aggiornamento 4.11.2017: supporto Python 2.7, 3.4+.

Aggiornamento 30.10.2017: L'articolo dell'attacco è già online, versione ACM.

Aggiornamento 30.10.2017: Il rilevatore di logaritmo discreto è ora implementato in Python e utilizzato come predefinito. Rileva la struttura nei primi sfruttata dall'algoritmo di fattorizzazione.

Attualmente lo strumento supporta i seguenti formati di chiave:

  • Certificato X509, codifica DER, uno per file, *.der, *.crt
  • Certificato X509, codifica PEM, più per file, *.pem
  • Richiesta di firma certificato X509, codifica PEM, più per file, *.pem
  • Chiave privata RSA PEM, chiave pubblica, più per file, *.pem (deve avere l'intestazione corretta -----BEGIN RSA...)
  • Chiave pubblica SSH, *.pub, che inizia con "ssh-rsa", una per riga
  • Chiave PGP codificata ASC, *.pgp, *.asc. Più per file, deve avere l'intestazione corretta -----BEGIN PGP...
  • Applicazione Android APK, *.apk
  • file di testo con un modulo per riga *.txt, il modulo può essere a) numero codificato in base64, b) numero codificato in hex, c) numero codificato in decimale
  • file JSON con moduli, un record per riga, il record con il modulo ha chiave "mod" (supportata codifica int, base64, hex, dec) certificato/i con chiave "cert" / array di certificati con chiave "certs" supportati, DER codificato in base64.
  • file LDIFF - dump di database LDAP. Qualsiasi campo che termina con ;binary:: viene tentato di decodificare come certificato X509
  • file Java Key Store (JKS). Prova password vuota e alcune comuni, specificane altre con --jks-pass-file
  • firma PKCS7 con certificato utente

Lo strumento di rilevamento è volutamente implementato in un unico file per una facile integrazione/manipolazione.

Falsi positivi

Tassi di rilevamento falsi positivi:

  • Rilevatore di moduli: 2^-27
  • Rilevatore di logaritmo discreto: 2^-154

Il rilevatore di logaritmo discreto è implementato solo nel codice Python, utilizzato come metodo di rilevamento predefinito.

I porting in Java e C# non sono più mantenuti dalla pubblicazione originale e non prevediamo di aggiornare questi rilevatori al metodo più preciso. Tuttavia, le pull request sono benvenute!

Controllo online

https://keychest.net/roca

Il controllo online utilizza l'algoritmo del rilevatore di logaritmo discreto.

Installazione con pip

Installa la libreria di rilevamento + strumento con pip (installa tutte le dipendenze):

root@kitploit:~
pip install roca-detect

Installazione locale

Esegui nella cartella principale del pacchetto:

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

Dipendenze

Potrebbe essere necessario installare dipendenze aggiuntive affinché pip possa installare ad esempio il pacchetto 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

Utilizzo

Per stampare l'utilizzo di base:

root@kitploit:~
# Se installato con pip / manualmente
roca-detect --help

# Senza installazione (potrebbero mancare dipendenze)
python roca/detect.py

Lo strumento di test accetta più nomi di file / directory come argomento di input. Restituisce il report che mostra quanti file sono stati identificati (e quali sono).

Esempio (nessuna vulnerabilità trovata):

Esecuzione ricorsiva su tutte le mie chiavi SSH e 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 ################################

Esempio (vulnerabilità trovate):

Esecuzione ricorsiva su tutte le mie chiavi SSH e 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 ################################

Chiave PGP

Per testare la tua chiave PGP puoi esportarla dal tuo client di posta o scaricarla da un server di chiavi PGP come https://pgp.mit.edu/

Puoi anche usare l'utilità a riga di comando gpg per esportare la tua chiave pubblica:

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

Caso d'uso avanzato

Lo strumento di rilevamento estrae informazioni sulla chiave che possono essere visualizzate:

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

Rilevamento TLS/SSL

roca-detect-tls rileva certificati da porte TLS/SSL remote. Fornisci un file con un elenco di voci indirizzo:porta delimitate da newline e usa quel file come input.

File di esempio: tls_list.txt

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

Quindi esegui:

roca-detect-tls tls_list.txt

Moduli falsi

È possibile generare moduli che superano il test di rilevamento dei moduli ma in realtà non contengono la struttura utilizzata dall'algoritmo di fattorizzazione. Il test dei moduli dlog non li segna come positivi.

Metodi di installazione avanzati

Ambiente virtuale

Di solito si consiglia di creare un nuovo ambiente virtuale Python per il progetto:

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

Python 2.7.13 separato

Abbiamo testato lo strumento con Python 2.7.13 e funziona (vedi Travis per maggiori informazioni). Abbiamo segnalazioni che versioni inferiori (<=2.6) non funzionano correttamente, quindi raccomandiamo vivamente di utilizzare un Python 2.7 aggiornato.

Usa pyenv per installare una nuova versione di Python localmente se non puoi / non vuoi aggiornare il Python di sistema.

Scarica internamente i sorgenti Python e li installa 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

Gli strumenti di rilevamento funzionano anche con Python 3.4+

Container Docker

Esegui tramite container Docker per evitare inconsistenze di ambiente. Il sorgente del Dockerfile può essere controllato su https://hub.docker.com/r/unnawut/roca-detect/.

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

Assicurati di usare i flag --rm e --network none per disabilitare la connessione di rete del container ed eliminarlo dopo l'esecuzione.

Licenza

Il codice è concesso in licenza sotto la licenza MIT permissiva.

Poiché ci sono state richieste di doppia licenza sotto licenza Apache 2.0 (a causa di alcuni dubbi sulla compatibilità), concediamo il codice anche sotto licenza Apache 2.0.

Scegli la licenza che preferisci, MIT o Apache 2.0.

Porting linguistici

Questa sezione contiene link a diversi repository GIT con porting linguistici

  • Go
Scarica lo strumento