Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/crocs-muni/roca
静态分析漏洞分析密码学
GitHubcrocs-muni/roca

roca

ROCA: Infineon RSA 密钥漏洞

查看仓库网站
49596495年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ROCA检测工具

Build Status

该工具与ACM CCS 2017会议论文第124号《Coppersmith攻击归来:广泛使用的RSA模数的实际分解》相关。

它使您能够测试公共RSA密钥是否存在所述的漏洞。

2017年11月4日更新:支持Python 2.7、3.4+。

2017年10月30日更新:攻击的论文已上线,ACM版本。

2017年10月30日更新:离散对数检测器现已在Python中实现并作为默认检测方法。它检测分解算法所利用的素数中的结构。

目前该工具支持以下密钥格式:

  • X509证书,DER编码,每文件一个,*.der,*.crt
  • X509证书,PEM编码,每文件多个,*.pem
  • X509证书签名请求,PEM编码,每文件多个,*.pem
  • RSA PEM编码私钥、公钥,每文件多个,*.pem(必须有正确的头部-----BEGIN RSA...)
  • SSH公钥,*.pub,以"ssh-rsa"开头,每行一个
  • ASC编码的PGP密钥,*.pgp,*.asc。每文件多个,必须有正确的头部-----BEGIN PGP...
  • APK安卓应用程序,*.apk
  • 每个模数一行的文本文件*.txt,模数可以是: a) base64编码数字,b) 十六进制编码数字,c) 十进制编码数字
  • JSON文件,每行一条记录,包含模数的记录具有键"mod"(支持int、base64、十六进制、十进制编码) 支持带键"cert"的证书或带键"certs"的证书数组,证书为base64编码的DER。
  • LDIFF文件 - LDAP数据库转储。以;binary::结尾的任何字段都会尝试解码为X509证书
  • Java密钥库文件(JKS)。尝试空密码及一些常见密码,可使用--jks-pass-file指定更多密码
  • 带有用户证书的PKCS7签名

该检测工具特意设计为单一文件实现,便于集成/操作。

误报

误报检测率:

  • 模数检测器:2^-27
  • 离散对数检测器:2^-154

离散对数检测器仅在Python代码中实现,用作默认检测方法。

Java和C#代码的移植自原始发布以来已停止维护,我们也不计划将这些检测器升级到更精确的方法。但欢迎提交PR!

在线检测

https://keychest.net/roca

在线检测器使用离散对数检测算法。

使用pip安装

使用pip安装检测库+工具(安装所有依赖):

root@kitploit:~
pip install roca-detect

本地安装

在包的根目录下执行:

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

依赖项

可能需要安装额外的依赖项,以便pip能够安装例如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

用法

打印基本用法:

root@kitploit:~
# 如果通过pip/手动安装
roca-detect --help

# 未安装(可能缺少依赖)
python roca/detect.py

测试工具接受多个文件名/目录作为输入参数。它返回报告,显示有多少文件已被指纹识别(以及哪些文件)。

示例(未发现漏洞):

递归运行所有我的SSH密钥和known_hosts:

root@kitploit:~
$> roca-detect ~/.ssh
2017-10-16 13:39:21 [51272] INFO ### 摘要 ####################
2017-10-16 13:39:21 [51272] INFO 测试记录数:92
2017-10-16 13:39:21 [51272] INFO .. PEM证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. DER证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA密钥文件:. 16
2017-10-16 13:39:21 [51272] INFO .. PGP主密钥:0
2017-10-16 13:39:21 [51272] INFO .. PGP总密钥数: 0
2017-10-16 13:39:21 [51272] INFO .. SSH密钥:. . . 76
2017-10-16 13:39:21 [51272] INFO .. APK密钥:. . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON密钥:. . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF证书:. . 0
2017-10-16 13:39:21 [51272] INFO .. JKS证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7:. . . . . 0
2017-10-16 13:39:21 [51272] INFO 未发现指纹密钥(正常)
2017-10-16 13:39:21 [51272] INFO ################################

示例(发现漏洞):

递归运行所有我的SSH密钥和known_hosts:

root@kitploit:~
$> roca-detect ~/.ssh
<b>2017-10-16 13:39:21 [51272] WARNING 在证书中发现指纹</b>
...
2017-10-16 13:39:21 [51272] INFO ### 摘要 ####################
2017-10-16 13:39:21 [51272] INFO 测试记录数:92
2017-10-16 13:39:21 [51272] INFO .. PEM证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. DER证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA密钥文件:. 16
2017-10-16 13:39:21 [51272] INFO .. PGP主密钥:0
2017-10-16 13:39:21 [51272] INFO .. PGP总密钥数: 0
2017-10-16 13:39:21 [51272] INFO .. SSH密钥:. . . 76
2017-10-16 13:39:21 [51272] INFO .. APK密钥:. . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON密钥:. . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF证书:. . 0
2017-10-16 13:39:21 [51272] INFO .. JKS证书:. . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7:. . . . . 0
2017-10-16 13:39:21 [51272] INFO 发现指纹密钥:1
2017-10-16 13:39:21 [51272] INFO 警告:存在潜在漏洞
2017-10-16 13:39:21 [51272] INFO ################################

PGP密钥

为了测试您的PGP密钥,您可以从邮件客户端导出它,或从PGP密钥服务器(如https://pgp.mit.edu/)下载。

您也可以使用gpg命令行工具导出您的公钥:

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

高级使用案例

检测工具可以提取有关密钥的信息并显示出来:

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

TLS/SSL检测

roca-detect-tls用于检测远程TLS/SSL端口上的证书。提供一个以换行符分隔的地址:端口列表文件,并将该文件作为输入。

示例文件:tls_list.txt

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

然后运行:

roca-detect-tls tls_list.txt

伪造模数

可以生成通过模数指纹测试但实际上不包含分解算法所利用结构的模数。Dlog模数测试不会将其标记为阳性。

高级安装方法

虚拟环境

通常建议为项目创建一个新的Python虚拟环境:

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

独立的Python 2.7.13

我们在Python 2.7.13上测试了该工具并且它工作正常(更多信息见Travis)。有报告称较低版本(<=2.6)无法正常工作,因此我们强烈建议使用最新的Python 2.7。

如果您无法/不想更新系统Python,可以使用pyenv在本地安装一个新的Python版本。

它将内部下载Python源码并安装到~/.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

检测工具也适用于Python 3.4+。

Docker容器

通过Docker容器运行,以避免环境不一致。Dockerfile源码可在https://hub.docker.com/r/unnawut/roca-detect/审核。

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

确保使用--rm和--network none标志来禁用容器的网络连接并在运行后删除容器。

许可

代码采用宽松的MIT许可证。

由于存在双重许可(Apache 2.0许可证)的请求(因兼容性疑虑),我们也将代码同时以Apache 2.0许可证许可。

选择更适合您的许可证,MIT或Apache 2.0。

语言移植

本节包含不同语言移植的Git仓库链接

  • Go
下载工具