Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
roca — ROCA: уязвимость RSA-ключа Infineon | Kitploit
Инструменты/GitHubGitHub/crocs-muni/roca
Статический анализАнализ уязвимостейКриптография
GitHubcrocs-muni/roca

roca

ROCA: уязвимость RSA-ключа Infineon

РепозиторийСайт
495965 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Инструмент обнаружения ROCA

Build Status

Данный инструмент связан с докладом на конференции ACM CCS 2017 #124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli.

Он позволяет проверить открытые ключи RSA на наличие описанной уязвимости.

Обновление 4.11.2017: Поддерживаются Python 2.7, 3.4+.

Обновление 30.10.2017: Статья об атаке уже опубликована, версия ACM.

Обновление 30.10.2017: Детектор дискретного логарифма теперь реализован на Python и используется по умолчанию. Он обнаруживает структуру в простых числах, используемую алгоритмом факторизации.

В настоящее время инструмент поддерживает следующие форматы ключей:

  • Сертификат X509, кодировка DER, один на файл, *.der, *.crt
  • Сертификат X509, кодировка PEM, несколько на файл, *.pem
  • Запрос на подпись сертификата X509, кодировка PEM, несколько на файл, *.pem
  • Закрытый ключ RSA в кодировке PEM, открытый ключ, несколько на файл, *.pem (должен иметь правильный заголовок -----BEGIN RSA...)
  • Открытый ключ SSH, *.pub, начинается с "ssh-rsa", один на строку
  • Ключ PGP в кодировке ASC, *.pgp, *.asc. Несколько на файл, должен иметь правильный заголовок -----BEGIN PGP...
  • Приложение Android APK, *.apk
  • Текстовый файл с одним модулем на строку *.txt, модуль может быть: a) числом в кодировке base64, b) шестнадцатеричным числом, c) десятичным числом
  • JSON-файл с модулями, одна запись на строку, запись с модулем имеет ключ "mod" (поддерживается кодировка int, base64, hex, dec) поддерживаются сертификат(ы) с ключом "cert" / массив сертификатов с ключом "certs", сертификаты в формате DER с кодировкой base64.
  • Файл 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=. .

Зависимости

Может потребоваться установка дополнительных зависимостей для установки, например, пакета 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 ### 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 ################################

Пример (уязвимости найдены):

Рекурсивный запуск на всех моих SSH-ключах и 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 ################################

Ключ 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.

Используйте pyenv для установки новой версии Python локально, если вы не можете / не хотите обновлять системный 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
Скачать инструмент