
ETS5 Password Recovery Tool - это PoC для CVE-2021-36799
Вы забыли пароль от одного из ваших проектов ETS5 и не можете получить доступ к конфигурации KNX установки? Инструмент восстановления паролей ETS5 позволяет вам извлечь пароль проекта и другие секреты, сохранённые в хранилище проектов ETS5. Это возможно из-за существенного недостатка в проектировании ETS5: он использует жёстко заданные пароль и соль для шифрования информации проекта (CVE-2021-36799).
Хранение криптографических секретов в исходном коде не рекомендуется, поскольку их можно восстановить с помощью реверс-инжиниринга программного обеспечения, что обеспечивает лишь немногим большую защиту, чем хранение информации в открытом виде. Это может представлять угрозу безопасности KNX установок. Если злоумышленник получит доступ к файлам в хранилище проектов, он сможет их расшифровать, даже не зная пароля проекта. Содержащаяся в них информация позволяет подслушивать, имитировать и перенастраивать KNX устройства. Это особенно проблематично, потому что ETS5 создаёт у пользователей впечатление, будто пароль проекта используется для шифрования информации проекта, а не только для экспортированных проектов. Следовательно, многие пользователи и системные интеграторы, вероятно, не предприняли дополнительных шагов для обеспечения конфиденциальности хранилища проектов. Если бы ETS5 правильно реализовал шифрование и был выбран надёжный пароль проекта, это создало бы для злоумышленника гораздо более сложную задачу, даже если бы он получил удалённый доступ к компьютеру.
Следующая конфиденциальная информация неправильно зашифрована:
Инструмент восстановления паролей ETS5 — это proof of concept, демонстрирующий проблему путём расшифровки и отображения чувствительной информации. Он был разработан в рамках координированного раскрытия уязвимости и опубликован с разрешения KNX Association. Публикация инструмента служит следующим целям:
ПРЕДУПРЕЖДЕНИЕ: Используйте этот инструмент только в том случае, если у вас есть законное разрешение на просмотр информации проекта. Обход мер безопасности, даже неэффективных, для получения доступа к информации, к которой вам запрещено обращаться, может являться уголовным преступлением в вашей юрисдикции.
Исполняемый файл можно загрузить из раздела релизов. Он не требует установки и может быть помещён в любой каталог по вашему выбору.
Кроме того, если вы не хотите запускать непроверенный бинарник на своей системе, вы можете расшифровать отдельные атрибуты из XML-файлов проекта на сайте CyberChef.
Программное обеспечение зависит от .NET Framework версии 4.6 или новее. Windows 10 уже включает подходящую версию .NET по умолчанию. Пользователям более ранних версий Windows потребуется установить текущую версию .NET Framework для запуска программы.
Вопреки тому, что предполагает пользовательский интерфейс, ETS5 не шифрует ваши локально хранящиеся файлы проектов в C:\ProgramData\KNX\ETS5\ProjectStore с помощью пароля проекта. Вместо этого он использует жёстко заданный пароль ETS5Password и соль Ivan Medvedev для обфускации определённых атрибутов в XML-файлах проекта. Жёстко заданные криптографические секреты противоречат лучшим практикам, как объяснено в CWE-798 и CWE-321.
Процесс деобфускации:
Ivan Medvedev как строку ASCII или UTF-8.ETS5Password как пароль и байтовое представление Ivan Medvedev как соль. Первые 32 байта вывода деривации ключа будут использоваться как ключ, а следующие 16 байт как IV.Реализацию деобфускации можно найти в файле Deobfuscator.cs. Поскольку пароль и соль постоянны, можно было бы предварительно вычислить ключ и IV, чтобы пропустить деривацию ключа. В реализации данного программного обеспечения это не сделано, так как оно призвано показать все шаги деобфускации. Однако если вам нужны ключ и IV, они приведены ниже.
| Hex | Base64 | |
|---|---|---|
| Key | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |
Экспортированные файлы проектов (.knxproj) не затронуты этим недостатком проектирования, и поэтому этот инструмент не может использоваться для восстановления пароля проекта для них. Файл .knxproj — это ZIP-архив, содержащий другой ZIP-архив с чувствительной информацией. Последний использует сжатие Deflate, шифрование ZipCrypto / PKWARE и пароль проекта для деривации ключа шифрования.