
PoC original para CVE-2023-30367
O Multi-Remote Next Generation Connection Manager (mRemoteNG) é um software gratuito que permite aos usuários armazenar e gerenciar configurações de conexão multiprotocolo para se conectar remotamente a sistemas.
Os arquivos de configuração do mRemoteNG podem ser armazenados criptografados no disco. As versões do mRemoteNG <= v1.76.20 e <= 1.77.3-dev carregam os arquivos de configuração em texto puro na memória (após descriptografá-los, se necessário) na inicialização, mesmo que nenhuma conexão tenha sido estabelecida ainda. Isso permite que atacantes acessem o conteúdo dos arquivos de configuração em texto puro através de um despejo de memória e, assim, comprometam as credenciais do usuário quando nenhuma chave de criptografia de senha personalizada foi definida. Isso também contorna a configuração de criptografia do arquivo de conexão ao despejar configurações já descriptografadas da memória.
Esta vulnerabilidade foi atribuída a CVE-2023-30367.
Testada com mRemoteNG 1.77.3.1784-NB e mRemoteNG 1.76.20 no Windows 11 (Alemão).
A descoberta foi confirmada por Dimitrij Gorodeckij, um dos desenvolvedores do mRemoteNG, aqui. Uma correção ainda está em desenvolvimento. Agradecemos novamente a Dimitrij Gorodeckij por sua rápida resposta e cooperação! Esperamos que seja corrigido em breve!
1. Use senhas/chaves de criptografia de senha de configuração fortes (longas):
Em caso de despejo de memória, um atacante teria acesso aos arquivos de configuração em texto puro, mas ainda teria que força bruta na chave de criptografia das senhas.
Infelizmente, enabling the Connection file encryption option doesn't help in preventing this attack já que os arquivos de configuração de conexão do mRemoteNG são descriptografados em tempo de execução.
2. Atualize para uma versão do mRemoteNG maior que v1.77.3.1784-NB quando uma correção for lançada.
3. Para evitar a execução maliciosa de, por exemplo, mRemoteNGDumper.exe, a lista de permissões de aplicativos deve ser aplicada.
Por favor, esteja ciente de que a criptografia de senha de configuração e a criptografia do arquivo de conexão são configurações diferentes. A criptografia de senha de configuração é usada para criptografar a senha dentro do arquivo de configuração, enquanto a criptografia do arquivo de conexão é usada para criptografar o próprio arquivo de configuração completo.
Este exploit contorna a criptografia do arquivo de conexão ao despejar configurações já descriptografadas da memória. Estas ainda contêm senhas criptografadas que podem ser descriptografadas com a chave padrão mR3m. Se uma chave/senha de criptografia de senha de configuração personalizada foi definida, um atacante ainda teria que adivinhar a chave personalizada. (Veja a seção mremoteng-decrypt.py)
git clone https://github.com/S1lkys/CVE-2023-30367-mRemoteNG-password-dumper.git ou baixe-o do GitHubmRemoteNG-password-dumperA maneira mais fácil de testar isso manualmente no Windows é criar um despejo de processo usando o gerenciador de tarefas do Windows, clicando com o botão direito no processo mRemoteNG e selecionando "Criar arquivo de despejo". O despejo pode ser aberto no VisualStudio Code. Pesquise então pelos valores de conexão que você configurou.
O mRemoteNG Password Dumper é uma ferramenta simples de prova de conceito usada para despejar arquivos de configuração da memória do mRemoteNG. Nenhuma execução de código no sistema alvo é necessária, apenas um despejo de memória. É um POC rápido, portanto provavelmente não é muito confiável e robusto. Por favor, crie um pull request se encontrar um problema e corrigi-lo.
Os arquivos de configuração atualmente estão codificados assim: (\<Node)(.*)(?=\/>)\/>
mremoteng_decrypt.py (Veja a seção mremoteng-decrypt.py)Adicionei uma funcionalidade de força bruta ao mremoteng-decrypt (Veja os agradecimentos).
Isso pode ser usado para forçar a descoberta de chaves de criptografia de senha/configuração personalizadas do mRemoteNG. Se nenhuma chave personalizada foi configurada, o script descriptografará a configuração com a chave padrão mR3m. Este script também pode ser usado para descriptografar arquivos de configuração com senhas de criptografia personalizadas. Veja também a Demonstração.

Descriptografar arquivo de configuração com senha de criptografia personalizada 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
Descriptografar string de senha com senha de criptografia personalizada 123: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -p 123
Descriptografar string de senha sem senha de criptografia personalizada: python3 mremoteng_decrypt.py -s "yW0Ypq/cTcwfHwYxIiHgczcsIKU+jWlfnZBcTdKQImsMbBnP3SLv2h75Z7IAbkFOsD2YzBo2wGk2fhDLpRFH2y8="
Uso de força bruta: python3 mremoteng_decrypt.py -s "[extracted encrypted configuration password]" -b y -w [caminho para wordlist]
Exemplo de força bruta: python3 mremoteng_decrypt.py -s "QHrcb7I0KHi6YLFXxv93jenrUmNj5qO30zTM9qXqRUd7ImVm5/ROU7CLQ5u7+7+iOiFrY2BtZSpJ8RrR3jV6LoE=" -b y -w .\wordli.txt
Depende do seu modelo de ameaça. Se o seu computador já estiver infectado por malware que está sendo executado em segundo plano com os privilégios do seu usuário, essa descoberta não piora muito sua situação. No entanto, pode ser mais fácil para o malware ser furtivo e evadir o antivírus, já que, ao contrário do KeeTheft ou KeeFarce, nenhuma injeção de processo ou outro tipo de execução de código é necessária.
Se você tem uma suspeita razoável de que alguém poderia obter acesso ao seu computador e realizar uma análise forense, isso pode ser ruim.
Se você usa criptografia de arquivo de configuração com uma senha forte e seu sistema está limpo, você deve estar seguro. Ninguém pode roubar suas senhas remotamente pela internet apenas com essa descoberta.
