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

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

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

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

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

Категории

Все категории
Loading categories
ets5-password-recovery — ETS5 Password Recovery Tool - это PoC для CVE-2021-36799 | Kitploit
Инструменты/GitHubGitHub/robertguetzkow/ets5-password-recovery
Взлом паролейИнструменты шифрования/дешифрованияАнализ уязвимостейЭксплуатацияОбратная инженерияКриптографияArchived
GitHubrobertguetzkow/ets5-password-recovery

ets5-password-recovery

Популярное

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

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

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

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

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

ETS5 Password Recovery Tool - это PoC для CVE-2021-36799

Репозиторий
33484 лет назадЕщё не проверено

ETS5 Password Recovery Tool

Table of Contents

  • Introduction
  • Installation
  • Requirements
  • How does the password recovery work?
  • How was the design flaw discovered?
  • How can the risk be mitigated?
  • Coordinated Vulnerability Disclosure
  • License
  • Change log

Introduction

Вы забыли пароль от одного из ваших проектов ETS5 и не можете получить доступ к конфигурации KNX установки? Инструмент восстановления паролей ETS5 позволяет вам извлечь пароль проекта и другие секреты, сохранённые в хранилище проектов ETS5. Это возможно из-за существенного недостатка в проектировании ETS5: он использует жёстко заданные пароль и соль для шифрования информации проекта (CVE-2021-36799).

Command prompt

Хранение криптографических секретов в исходном коде не рекомендуется, поскольку их можно восстановить с помощью реверс-инжиниринга программного обеспечения, что обеспечивает лишь немногим большую защиту, чем хранение информации в открытом виде. Это может представлять угрозу безопасности KNX установок. Если злоумышленник получит доступ к файлам в хранилище проектов, он сможет их расшифровать, даже не зная пароля проекта. Содержащаяся в них информация позволяет подслушивать, имитировать и перенастраивать KNX устройства. Это особенно проблематично, потому что ETS5 создаёт у пользователей впечатление, будто пароль проекта используется для шифрования информации проекта, а не только для экспортированных проектов. Следовательно, многие пользователи и системные интеграторы, вероятно, не предприняли дополнительных шагов для обеспечения конфиденциальности хранилища проектов. Если бы ETS5 правильно реализовал шифрование и был выбран надёжный пароль проекта, это создало бы для злоумышленника гораздо более сложную задачу, даже если бы он получил удалённый доступ к компьютеру.

Следующая конфиденциальная информация неправильно зашифрована:

  • Пароли проектов
  • FDSK
  • Backbone keys
  • Коды аутентификации устройств и производные ключи
  • Пароли управления устройствами и производные ключи
  • Пароли пользователей/туннелирования и производные ключи
  • Tool keys

Инструмент восстановления паролей ETS5 — это proof of concept, демонстрирующий проблему путём расшифровки и отображения чувствительной информации. Он был разработан в рамках координированного раскрытия уязвимости и опубликован с разрешения KNX Association. Публикация инструмента служит следующим целям:

  1. Публично документирует проблему безопасности, позволяя пользователям принять меры предосторожности для снижения рисков.
  2. KNX Association не планирует исправлять проблему в текущих или будущих версиях ETS. Повышение осведомлённости о недостатке проектирования может изменить их мнение. (см. раздел coordinated vulnerability disclosure для обновления)
  3. Раскрытие недостатка проектирования, надеюсь, побудит KNX Association и всех, кто читает этот документ, внедрить более качественные практики разработки программного обеспечения.
  4. Инструмент восстановления паролей ETS5 может быть полезен, если кто-то забыл пароль от собственного проекта.

ПРЕДУПРЕЖДЕНИЕ: Используйте этот инструмент только в том случае, если у вас есть законное разрешение на просмотр информации проекта. Обход мер безопасности, даже неэффективных, для получения доступа к информации, к которой вам запрещено обращаться, может являться уголовным преступлением в вашей юрисдикции.

Installation

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

Кроме того, если вы не хотите запускать непроверенный бинарник на своей системе, вы можете расшифровать отдельные атрибуты из XML-файлов проекта на сайте CyberChef.

Requirements

Программное обеспечение зависит от .NET Framework версии 4.6 или новее. Windows 10 уже включает подходящую версию .NET по умолчанию. Пользователям более ранних версий Windows потребуется установить текущую версию .NET Framework для запуска программы.

How does the password recovery work?

Вопреки тому, что предполагает пользовательский интерфейс, ETS5 не шифрует ваши локально хранящиеся файлы проектов в C:\ProgramData\KNX\ETS5\ProjectStore с помощью пароля проекта. Вместо этого он использует жёстко заданный пароль ETS5Password и соль Ivan Medvedev для обфускации определённых атрибутов в XML-файлах проекта. Жёстко заданные криптографические секреты противоречат лучшим практикам, как объяснено в CWE-798 и CWE-321.

Процесс деобфускации:

  1. Обфусцированный атрибут закодирован в Base64 и его необходимо декодировать, см. RFC 4648.
  2. Получите байтовое представление Ivan Medvedev как строку ASCII или UTF-8.
  3. Используйте функцию деривации ключа, реализованную PasswordDeriveBytes в .NET Framework. Она основана на PBKDF1, но добавляет счётчик в алгоритм деривации ключа. В ETS5 она используется с SHA-1 в качестве хеш-функции, 100 итераций, ETS5Password как пароль и байтовое представление Ivan Medvedev как соль. Первые 32 байта вывода деривации ключа будут использоваться как ключ, а следующие 16 байт как IV.
  4. Расшифруйте декодированный атрибут с помощью AES-256 в режиме CBC, используя ключ и IV из шага 3.
  5. Удалите PKCS#7 padding, и результатом будет исходное значение атрибута.

Реализацию деобфускации можно найти в файле Deobfuscator.cs. Поскольку пароль и соль постоянны, можно было бы предварительно вычислить ключ и IV, чтобы пропустить деривацию ключа. В реализации данного программного обеспечения это не сделано, так как оно призвано показать все шаги деобфускации. Однако если вам нужны ключ и IV, они приведены ниже.

HexBase64
Key22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E=
IV8E977BB3FEFADD88E6AE6CBEAE3E7CAFjpd7s/763Yjmrmy+rj58rw==

Экспортированные файлы проектов (.knxproj) не затронуты этим недостатком проектирования, и поэтому этот инструмент не может использоваться для восстановления пароля проекта для них. Файл .knxproj — это ZIP-архив, содержащий другой ZIP-архив с чувствительной информацией. Последний использует сжатие Deflate, шифрование ZipCrypto / PKWARE и пароль проекта для деривации ключа шифрования.

How was the design flaw discovered?

Во время подготовки к моей диссертации "Security Analysis of the KNXnet/IP Secure Protocol" я исследовал, как ETS5 хранит информацию проектов. Поскольку ETS генерирует и хранит криптографические ключи и пароли, которые используются KNX IP Secure устройствами для взаимной аутентификации, обеспечения конфиденциальности многоадресной связи и защиты конфигурации устройств, важно сохранять эту информацию в секрете. Если злоумышленник получит доступ к информации проектов, хранящейся в ETS, это полностью скомпрометирует безопасность KNX установки.

По этой причине хранилище проектов ETS5 было проверено на предмет того, хранятся ли данные способом, обеспечивающим конфиденциальность. Файлы проектов в C:\ProgramData\KNX\ETS5\ProjectStore доступны для чтения каждой учётной записи пользователя, права администратора не требуются. Были найдены следующие признаки, вызвавшие подозрение, что данные неправильно зашифрованы:

  1. XML-файлы конфигурации не зашифрованы целиком. Были изменены только чувствительные атрибуты, такие как коды аутентификации устройств, пароли управления устройствами, FDSK и tool keys, чтобы не содержать их значения в открытом виде.
  2. В одном из XML-файлов хранится атрибут пароля проекта. Это казалось несколько странным, поскольку при правильной реализации шифрования ключ выводился бы из пароля проекта, и его хранение не было бы строго необходимым. Однако, гипотетически, это могло бы использоваться для проверки правильности введённого пароля перед попыткой расшифровки других атрибутов.
  3. Два проекта с разными паролями проектов, но одинаковыми устройствами имели одинаковые значения для некоторых атрибутов, специфичных для устройств, таких как FDSK.

Последний пункт чётко указывал, что пароль проекта не использовался в алгоритме, изменяющем значения атрибутов. Пример можно увидеть ниже, где коды аутентификации устройств в двух проектах P-02FB и P-0117 были установлены в одинаковые значения. Обфусцированные выходные данные также одинаковы, несмотря на использование разных паролей проектов. Поскольку при открытии проекта в ETS5 не запрашивается ничего, кроме пароля проекта, это означало, что ключ либо должен где-то храниться, либо это простые алгоритмы обфускации, не требующие ключа. Было вероятно, что решение не является идеальным для обеспечения конфиденциальности и потенциально может поставить под угрозу KNX установки.

The configuration files are not encrypted in their entirety.```xml

``` #### Разный пароль проекта не меняет вывод, если исходные значения атрибутов идентичны```xml ``` Поскольку наблюдения явно указывали на использование небезопасного подхода, возможно, из-за жёстко закодированного криптографического ключа, необходимо было выяснить, как изменяются значения атрибутов. Цель заключалась в выявлении потенциальной уязвимости, которую затем можно было бы сообщить поставщику и устранить, повысив безопасность для всех пользователей. Оценка того, обеспечивает ли реализация достаточную конфиденциальность, означала, что ETS5 необходимо было подвергнуть обратному проектированию.

Поскольку ETS5 основан на .NET-фреймворке, что сразу стало очевидным из используемых DLL, декомпиляцию можно было легко выполнить с помощью ILSpy. Бинарный файл был обфусцирован с помощью Dotfuscator, предположительно для усложнения обратного проектирования. Однако имена классов и функций, как ни странно, остались в основном нетронутыми. Поэтому выбранный подход заключался в поиске классов и функций, которые, казалось, были связаны с обработкой XML-файлов, шифрованием, дешифрованием, обфускацией, деобфускацией, ключами или паролями. Это привело к обнаружению Knx.Ets.ObjectModel.Import.PasswordDescrambler.Scramble и Knx.Ets.ObjectModel.Import.Encryption.EncryptString, которые вызываются для обфусцированных значений атрибутов, хранящихся в XML-файлах. Никакой ключевой материал не передавался в функции, использовались только константные значения для получения ключа, который затем использовался для шифрования/дешифрования атрибутов с помощью AES-256 в режиме CBC. Стало очевидно, что для получения ключа использовались жёстко закодированные учётные данные. Dotfuscator изменил поток управления и вставил избыточные операции, но вызовы функций .NET-фреймворка не могли быть скрыты. Таким образом, на этом этапе стало возможным написать спецификацию (де-)обфускации для получистого подхода. Единственной отсутствующей частью была строка, используемая в выводе ключа, которая была скрыта Dotfuscator. Для деобфускации строк был выбран De4dot, который раскрыл пароль ETS5Password. IV был читаемым ещё до применения De4dot, поскольку был определён как последовательность байтов. Из личного любопытства было обнаружено, что это не случайные байты, а на самом деле ASCII/UTF-8 байтовое представление строки Ivan Medvedev.

Поскольку конструктивный недостаток представляет риск для инсталляций KNX, необходимо было сообщить о проблеме в KNX Association. Для подтверждения проблемы требовалась реализация proof of concept, чтобы при необходимости её можно было продемонстрировать. Во избежание нарушений авторских прав proof of concept был реализован на основе составленной спецификации. Это было сделано, чтобы избежать повторного использования кода из оригинального программного обеспечения. Применение Dotfuscator также гарантировало, что исходный и даже деобфусцированный код в любом случае непригодны для чистой реализации, что исключало даже случайное копирование оригинала.

Подробности о скоординированном раскрытии после разработки proof of concept см. в разделе Coordinated Vulnerability Disclosure.

Как можно снизить риск?

К сожалению, по состоянию на 2021-07-18 исправленной версии ETS не существует. Поэтому для устранения рисков необходимы дополнительные меры за пределами ETS5. В подразделах ниже описаны различные подходы, которые можно применить в зависимости от предполагаемой модели угрозы и защиты.

Полнодисковое шифрование

  • Решение:
    • Зашифровать весь жёсткий диск с помощью Windows BitLocker или стороннего ПО, например VeraCrypt.
  • Преимущества:
    • Все данные на жёстком диске зашифрованы и недоступны для злоумышленников, пока устройство выключено. Предполагается использование сложного пароля.
    • Windows уже предоставляет простое решение с BitLocker в некоторых версиях Windows, также легко доступны решения с открытым исходным кодом.
  • Недостатки:
    • Не обеспечивает конфиденциальности во время работы компьютера. Если злоумышленник получает доступ к одной из учётных записей пользователей / использует RCE, он может получить доступ к информации о проекте в открытом виде.

Шифрование файлов/папок

  • Решение:
    • Зашифровать каталог C:\ProgramData\KNX\ETS5\ProjectStore и все файлы внутри него с помощью шифрованной файловой системы Windows (EFS).
  • Преимущества:
    • Информация о проектах зашифрована и недоступна злоумышленникам, пока устройство выключено.
    • Если EFS настроена учётной записью администратора или выделенной учётной записью для запуска ETS, другие учётные записи не смогут получить доступ к файлам. Это должно обеспечить защиту, если злоумышленник получает доступ к учётной записи на компьютере, но не к той, которая настроила EFS. Требуется надёжный пароль для администратора или учётной записи ETS, так как он используется для защиты ключевого материала.
  • Недостатки:
    • Не всегда обеспечивает конфиденциальность во время работы компьютера. Если злоумышленник получает доступ к учётной записи, настроившей EFS, или может выполнить код в контексте этой учётной записи, он всё равно может получить доступ к информации о проекте в открытом виде.

Зашифрованный том

  • Решение:
    • Создать зашифрованный том с помощью стороннего ПО, например VeraCrypt, и хранить информацию о проекте только там.
  • Преимущества:
    • Информация о проектах зашифрована и недоступна злоумышленникам, пока том не смонтирован. Предполагается использование сложного пароля или аппаратного токена для шифрования тома.
    • Обеспечивает ограниченную защиту даже в случае получения злоумышленником прав администратора. Пока том не смонтирован во время доступа злоумышленника к системе, данные в зашифрованном томе должны оставаться конфиденциальными.
  • Недостатки:
    • Исходные файлы проекта необходимо переместить в зашифрованный том, а затем безопасно удалить, чтобы исходные незашифрованные файлы нельзя было восстановить.
    • Необходимо создать символическую ссылку, чтобы смонтированный том отображался как C:\ProgramData\KNX\ETS5\ProjectStore.
    • В целом настройка более сложная.

Скоординированное раскрытие уязвимости

  • 2021-06-26 — проблема сообщена в KNX Association
  • 2021-07-09 — KNX Association подтвердил проблему
  • 2021-07-12 — KNX Association разрешил немедленное раскрытие
  • 2021-07-18 — публичное раскрытие
  • 2021-07-19 — присвоен CVE-2021-36799

По словам Йоста Демарста (Joost Demarest), технического и финансового директора KNX Association, ETS5 не получит исправлений, поскольку разработка этой версии уже завершена. Он разрешил немедленную публикацию проблемы 2021-07-12, отказавшись от предлагаемой 90-дневной задержки раскрытия.

Обновление от 2021-11-08

Из-за недопонимания в README ранее утверждалось, что KNX Association планирует решить проблему в ETS6. Это не так. KNX Association разъяснил 2021-10-25, что не планирует исправлять эту проблему, поскольку не считает обязанностью ETS безопасно хранить криптографический ключевой материал, когда он не экспортируется.

Обновление от 2021-11-10

KNX Association связался со мной и объяснил, что пересмотрел свои планы. Теперь они намерены задокументировать недостатки текущей версии ETS и надлежащим образом зашифровать хранилище проектов в будущей версии ETS6.

Лицензия

Проект распространяется под лицензией MIT.

Журнал изменений

1.0.0 – 2021-07-18

Хэш коммита:

  • c6a3750cefa74d84c5886097cdd0f30dc1bd0dd1

Скачать:

  • Исходный код
  • Исполняемый файл

Изменения:

  • Начальная версия
Скачать инструмент