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

РепозиторийСайт
49596495 лет назадПроверено 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
    Скачать инструмент