
Оригинальный PoC для CVE-2023-30367
Multi-Remote Next Generation Connection Manager (mRemoteNG) — это бесплатное программное обеспечение, позволяющее пользователям хранить и управлять конфигурациями многопротокольных подключений для удаленного подключения к системам.
Файлы конфигурации mRemoteNG могут храниться на диске в зашифрованном виде. Версии mRemoteNG <= v1.76.20 и <= 1.77.3-dev загружают файлы конфигурации в открытом виде в память (после их расшифровки, если необходимо) при запуске приложения, даже если подключение еще не было установлено. Это позволяет злоумышленникам получить содержимое файлов конфигурации в открытом виде через дамп памяти и, таким образом, скомпрометировать учетные данные пользователя, если не был установлен собственный ключ шифрования паролей. Это также обходит настройку шифрования файлов конфигурации подключения, дампя уже расшифрованные конфигурации из памяти.
Этой уязвимости присвоен CVE-2023-30367.
Протестировано с mRemoteNG 1.77.3.1784-NB и mRemoteNG 1.76.20 на Windows 11 (немецкая версия).
Находка была подтверждена Дмитрием Городецким, одним из разработчиков mRemoteNG, здесь. Исправление еще в разработке. Еще раз спасибо Дмитрию Городецкому за быстрый ответ и сотрудничество! Надеемся, что это будет исправлено в ближайшее время!
1. Используйте надежные (длинные) пароли/ключи шифрования паролей конфигурации:
В случае дампа памяти злоумышленник получит доступ к файлам конфигурации в открытом виде, но ему все равно придется подбирать ключ шифрования паролей перебором.
К сожалению, включение опции шифрования файлов подключения не помогает предотвратить эту атаку, поскольку файлы конфигурации подключения mRemoteNG расшифровываются во время выполнения.
2. Обновите mRemoteNG до версии выше v1.77.3.1784-NB, когда будет выпущено исправление.
3. Для предотвращения вредоносного выполнения, например, mRemoteNGDumper.exe, следует применять белые списки приложений.
Пожалуйста, имейте в виду, что шифрование паролей конфигурации и шифрование файлов подключения — это разные настройки. Шифрование паролей конфигурации используется только для шифрования пароля внутри файла конфигурации, в то время как шифрование файлов подключения используется для шифрования самого файла конфигурации целиком.
Эта эксплойт обходит шифрование файлов подключения, дампя уже расшифрованные конфигурации из памяти. Они по-прежнему содержат зашифрованные пароли, которые можно расшифровать с помощью ключа по умолчанию mR3m. Если был установлен собственный ключ/пароль шифрования паролей конфигурации, злоумышленнику все равно придется угадывать этот ключ. (См. раздел mremoteng-decrypt.py)
git clone https://github.com/S1lkys/CVE-2023-30367-mRemoteNG-password-dumper.git или скачайте его с GitHubmRemoteNG-password-dumperСамый простой способ вручную протестировать это в Windows — создать дамп процесса с помощью диспетчера задач Windows, щелкнув правой кнопкой мыши процесс mRemoteNG и выбрав «Создать файл дампа». Дамп можно открыть в VisualStudio Code. Затем найдите в нем значения ваших настроенных подключений.
mRemoteNG Password Dumper — это простой инструмент для демонстрации концепции, используемый для дампа файлов конфигурации из памяти mRemoteNG. Для его работы не требуется выполнение кода на целевой системе, достаточно только дампа памяти. Это быстрый POC, поэтому, вероятно, не очень надежный и устойчивый. Пожалуйста, создайте pull request, если вы найдете проблему и исправите ее.
Файлы конфигурации в настоящее время жестко закодированы следующим образом: (\<Node)(.*)(?=\/>)\/>
mremoteng_decrypt.py (См. раздел mremoteng-decrypt.py)Я добавил функцию перебора в mremoteng-decrypt (см. благодарности).
Это можно использовать для перебора пользовательских ключей шифрования конфигурации/паролей mRemoteNG. Если пользовательский ключ не был настроен, скрипт расшифрует конфигурацию с ключом по умолчанию mR3m. Этот скрипт также можно использовать для расшифровки файлов конфигурации с пользовательскими паролями шифрования. См. также Демонстрацию.

Расшифровать файл конфигурации с пользовательским паролем шифрования 123: python3 mremoteng_decrypt.py -rf "C:\Users\mbzra\source\repos\mRemoteNG Dumper\dump\extracted_Configfile_mRemoteNG_0_09.07.2023.11.01_confCons.xml" -p 123
Расшифровать строку пароля с пользовательским паролем шифрования 123: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -p 123
Расшифровать строку пароля без пользовательского пароля шифрования: python3 mremoteng_decrypt.py -s "yW0Ypq/cTcwfHwYxIiHgczcsIKU+jWlfnZBcTdKQImsMbBnP3SLv2h75Z7IAbkFOsD2YzBo2wGk2fhDLpRFH2y8="
Использование перебора: python3 mremoteng_decrypt.py -s "[extracted encrypted configuration password]" -b y -w [path to wordlist]
Пример перебора: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -b y -w .\wordli.txt
Зависит от вашей модели угроз. Если ваш компьютер уже заражен вредоносным ПО, работающим в фоновом режиме с правами вашего пользователя, эта находка не сильно ухудшит ваше положение. Однако вредоносному ПО может быть проще оставаться незаметным и обходить антивирус, поскольку, в отличие от KeeTheft или KeeFarce, не требуется внедрение процессов или другой тип выполнения кода.
Если у вас есть обоснованные подозрения, что кто-то может получить доступ к вашему компьютеру и провести криминалистический анализ, это может быть плохо.
Если вы используете шифрование файлов конфигурации с надежным паролем и ваша система чиста, вам не о чем беспокоиться. Никто не сможет украсть ваши пароли удаленно через интернет только с помощью этой находки.
