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
49596495 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...)
Scarica lo strumento
  • 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