Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
roca — ROCA: Vulnerabilidade de chave RSA da Infineon | Kitploit
Ferramentas/GitHubGitHub/crocs-muni/roca
Análise EstáticaAnálise de VulnerabilidadesCriptografia
GitHubcrocs-muni/roca

roca

ROCA: Vulnerabilidade de chave RSA da Infineon

Ver RepositórioSite
4959660há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Ferramenta de detecção ROCA

Build Status

Esta ferramenta está relacionada ao artigo da conferência ACM CCS 2017 #124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.

Permite testar chaves RSA públicas quanto à presença da vulnerabilidade descrita.

Atualização 4.11.2017: Python 2.7, 3.4+ suportados.

Atualização 30.10.2017: O artigo do ataque já está online, versão ACM.

Atualização 30.10.2017: O detector de logaritmo discreto agora está implementado em Python e usado como padrão. Ele detecta a estrutura nos primos explorada pelo algoritmo de fatoração.

Atualmente a ferramenta suporta os seguintes formatos de chave:

  • Certificado X509, codificado em DER, um por arquivo, *.der, *.crt
  • Certificado X509, codificado em PEM, vários por arquivo, *.pem
  • Solicitação de Assinatura de Certificado X509, codificada em PEM, vários por arquivo, *.pem
  • Chave privada RSA codificada em PEM, chave pública, vários por arquivo, *.pem (deve ter o cabeçalho correto -----BEGIN RSA...)
  • Chave pública SSH, *.pub, começando com "ssh-rsa", uma por linha
  • Chave PGP codificada em ASC, *.pgp, *.asc. Vários por arquivo, deve ter o cabeçalho correto -----BEGIN PGP...
  • Aplicativo Android APK, *.apk
  • arquivo de texto com um módulo por linha *.txt, o módulo pode ser a) número codificado em base64, b) número codificado em hexadecimal, c) número codificado em decimal
  • Arquivo JSON com módulos, um registro por linha, registro com módulo tem chave "mod" (suporta codificação int, base64, hex, dec) certificado(s) com chave "cert" / array de certificados com chave "certs" são suportados, DER codificado em base64.
  • Arquivo LDIFF - dump de banco de dados LDAP. Qualquer campo terminando com ;binary:: é tentado decodificar como certificado X509
  • Arquivo Java Key Store (JKS). Tenta senha vazia e algumas comuns, especifique mais com --jks-pass-file
  • Assinatura PKCS7 com certificado do usuário

A ferramenta de detecção é intencionalmente uma implementação de arquivo único para facilitar a integração/manipulação.

Falso positivo

Taxas de detecção de falso positivo:

  • Detector de módulos: 2^-27
  • Detector de logaritmo discreto: 2^-154

O detector de logaritmo discreto está implementado apenas no código Python, usado como método de detecção padrão.

As portas de código Java e C# não são mantidas desde a publicação original e não planejamos atualizar esses detectores para o método mais preciso. No entanto, PRs são bem-vindos!

Verificador online

https://keychest.net/roca

O verificador online está usando o algoritmo do detector de logaritmo discreto.

Instalar com pip

Instale a biblioteca do detector + ferramenta com pip (instala todas as dependências):

pip install roca-detect

Instalação local

Execute na pasta raiz do pacote:

pip install --upgrade --find-links=. .

Dependências

Pode ser necessário instalar dependências adicionais para que o pip possa instalar, por exemplo, o pacote cryptography.

CentOS / RHEL:

sudo yum install python-devel python-pip gcc gcc-c++ make automake autoreconf libtool openssl-devel libffi-devel dialog

Ubuntu:

sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev swig

Uso

Para imprimir o uso básico:

# If installed with pip / manually
roca-detect --help

# Without installation (can miss dependencies)
python roca/detect.py

A ferramenta de teste aceita vários nomes de arquivo/diretórios como argumento de entrada. Ela retorna o relatório mostrando quantos arquivos foram identificados (e quais são eles).

Exemplo (nenhuma vulnerabilidade encontrada):

Executando recursivamente em todas as minhas chaves SSH e known_hosts:

$> 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 ################################

Exemplo (vulnerabilidades encontradas):

Executando recursivamente em todas as minhas chaves SSH e known_hosts:

$> 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 ################################

Chave PGP

Para testar sua chave PGP, você pode exportá-la do seu cliente de email ou baixá-la de um servidor de chaves PGP como https://pgp.mit.edu/

Você também pode usar o utilitário de linha de comando gpg para exportar sua chave pública:

gpg --armor --export [email protected] > mykey.asc

Caso de uso avançado

A ferramenta de detecção extrai informações sobre a chave que podem ser exibidas:

roca-detect.py --dump --flatten --indent  ~/.ssh/

Detecção TLS/SSL

O roca-detect-tls detecta certificados de portas TLS/SSL remotas. Forneça um arquivo com uma lista delimitada por novas linhas de entradas address:port e use esse arquivo como entrada.

Arquivo de exemplo: tls_list.txt

github.com:443
google.com:443
internal.example.com:8080

Em seguida execute:

roca-detect-tls tls_list.txt

Módulos falsos

É possível gerar módulos que passam no teste de identificação de módulos, mas na verdade não contêm a estrutura que o algoritmo de fatoração está usando. O teste de módulos Dlog não marca esses como positivos.

Métodos avançados de instalação

Ambiente virtual

Geralmente é recomendado criar um novo ambiente virtual Python para o projeto:

virtualenv ~/pyenv
source ~/pyenv/bin/activate
pip install --upgrade pip
pip install --upgrade --find-links=. .

Python 2.7.13 separado

Testamos a ferramenta com Python 2.7.13 e funciona (veja Travis para mais informações). Temos relatos dizendo que versões inferiores (<=2.6) não funcionam corretamente, portanto, recomendamos fortemente usar Python 2.7 atualizado.

Use pyenv para instalar uma nova versão do Python localmente se você não puder / não quiser atualizar o Python do sistema.

Ele baixa internamente as fontes do Python e o instala em ~/.pyenv.

Baixar ferramenta