Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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
49596há 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):

root@kitploit:~
pip install roca-detect

Instalação local

Execute na pasta raiz do pacote:

root@kitploit:~
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:

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

Uso

Para imprimir o uso básico:

root@kitploit:~
# 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:

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

Exemplo (vulnerabilidades encontradas):

Executando recursivamente em todas as minhas chaves 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 ################################

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:

root@kitploit:~
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:

root@kitploit:~
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

root@kitploit:~
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:

root@kitploit:~
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.

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

As ferramentas de detecção também funcionam com Python 3.4+

Contêiner Docker

Execute via contêiner Docker para evitar inconsistência de ambiente. A origem do Dockerfile pode ser auditada em https://hub.docker.com/r/unnawut/roca-detect/.

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

Certifique-se de usar as flags --rm e --network none para desabilitar a conexão de rede do contêiner e excluí-lo após a execução.

Licenciamento

O código é licenciado sob a licença MIT permissiva.

Como houve solicitações de licenciamento duplo sob a licença Apache 2.0 (devido a algumas dúvidas sobre compatibilidade), estamos licenciando o código também sob a licença Apache 2.0.

Escolha a licença que melhor se adequa a você, MIT ou Apache 2.0.

Portas de linguagem

Esta seção contém links para diferentes repositórios GIT com portas de linguagem

  • Go
Baixar ferramenta