Problemas de segurança no mRemoteNG que podem deixar sua empresa vulnerável

1. Introdução

Neste artigo, vamos descrever quatro métodos de captura de senhas no programa mRemoteNG, sendo uma delas uma CVE, a 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 multi-protocolo para se conectar remotamente a sistemas. Esse programa, por ser simples e bastante intuitivo, é muito utilizado por analistas para armazenar informações de login e facilitar a conexão entre hosts.

2. Métodos de captura de senha

2.1. Descrição do primeiro método

Para este método de captura de senhas, devemos considerar que a senha master(senha para iniciar o programa) não está habilidada.

O método de criptografia padrão do mRemoteNG ao ser instalado é o AES+GCM, e esse método é facilmente quebrado por meio do script mRemoteNG-Decrypt.

O mRemoteNG oferece suporte a alguns algoritmos de criptografia e modos de operação:

  • Algoritmos de Criptografia: AES, Serpent, TwoFish.
  • Modos de Cifra de Bloco: GCM, CCM, EAX.

O usuário pode personalizar o software escolhendo um algoritmo de criptografia, como o AES, e um modo de operação, como o EAX. Após a escolha do método de criptografia, o programa codifica os arquivos de configuração de acordo com as suas seleções.

No entanto, a falha está no comportamento do programa, ao ser transferido o arquivo de configuração confCons.xml criptografado para outro computador. Ao abrir e fechar o programa, o software altera automaticamente a criptografia anteriormente configurada para AES+GCM, desconsiderando o tipo de criptografia originalmente definido pelo usuário (EAX, neste exemplo). Essa conversão automática só afeta o produto na versão <=v1.76.20. Com isso, ao se utilizar o script de decriptografia, podemos acessar as senhas facilmente. Esta conversão automática tem potencial para ser usada de forma maliciosa. Essa conversão automática foi corrigida a partir da versão preview, mas ainda assim é possível obter as senhas se a senha master não estiver habilitada.

2.2. Descrição do segundo método

O segundo método é bem simples e vai precisar que você tenha acesso a GUI do próprio mRemoteNG. Com a senha master coletada de alguma forma ou sem a senha.

  1. Vá em Tools > External Tool e crie uma New Tool.
  2. Em Display Name coloque o nome que quiser.
  3. Em Filename coloque CMD.
  4. Em Arguments coloque /k echo %password% e salve.
  5. Depois clique em cima do host que você quer ver a senha, clique com o botão direito > Tools > Nome da sua tool. O terminal vai abrir com a senha em texto claro.

2.3. Descrição do terceiro método

O terceiro método de capturar as senhas é por meio do dump de memória. Existe uma CVE para isso: CVE-2023-30367. Na página do github que você pode acessar aqui: CVE-2023-30367-mRemoteNG-password-dumper , você consegue acessar maiores informações a respeito da CVE e acesso ao arquivo de PoC que você pode compilar e executar.

Eu cheguei a compilar o script e executar, mas não obtive êxito no dump. Entrei em contato com o autor da CVE pelo LinkedIn para tirar algumas dúvidas, e ficou subentendido que tudo poderia ser por conta do .Net que eu utilizava, que era o mais recente. Então, criei um script em PowerShell que faz a mesma coisa que o PoC dele, que você pode encontrar aqui: mRemoteNG-Dump.

Você também pode realizar o dump do programa de forma manual utilizando, por exemplo, o ProcDump, Process Explorer, Process Hacker ou até mesmo o próprio Task Manger que já é nativo do Windows e utilizar o comando Get-Content <caminho_do_dump> | Select-String "<node".

Mostro o funcionamento na seção de Prova de Conceito.

2.4. Descrição do quarto método

Outra forma de obter a senha master é por meio de brute force. Utilizando o script mremoteng_decrypt.py dentro da pasta da PoC da CVE-2023-30367, você consegue fazer um brute-force.

Exemplo: python .\mremoteng_decrypt.py -s <string> -b y -w <wordlist>.

5. Impacto da Vulnerabilidade

A falha pode permitir que um atacante, com acesso à máquina-alvo, obtenha o arquivo de configuração criptografado e o transfira para uma máquina executando o programa mRemoteNG, oo substituir o arquivo original, o programa converte automaticamente a criptografia para AES e GCM. Dessa forma, o invasor pode usar um script para quebrar a criptografia, acessar as senhas contidas no arquivo e comprometer a segurança da empresa, possibilitando o roubo de credenciais e a violação de dados sensíveis ao passo que também pode realizar o dump do programa e obter as senhas mesmo assim.

6. Recomendação de Mitigação

Utilizar qualquer outro método criptográfico diferente de AES+GCM e incluir uma senha master forte para iniciar o programa. Os scripts utilizados nestes exemplos foram com base na criptografia AES+GCM, que é padrão do programa, mas isso não impede de, no futuro, alguém desenvolver um script que quebre os outros padrões, se é que já não tem. Mesmo que o dump da memória seja feito, ainda precisará realizar um brute-force da senha inicial. Mostro também no vídeo na seção de Prova de Conceito.

7. Prova de Conceito

Na PoC abaixo, estou usando a versão v1.77.3.1784-NB. Nessa versão a conversão automática não ocorre, mas não significa que não conseguiremos quebrar as senhas. É o que demonstramos na PoC abaixo:

PoC do exemplo mostrado acima.

8. Conclusão

A vulnerabilidade encontrada no Multi-Remote Next Generation Connection Manager representa um risco significativo para a segurança de dados sensíveis. A capacidade de quebrar a criptografia de arquivos de configuração e descobrir senhas comprometeria a privacidade e segurança do sistema como um todo. Diante do exposto, eu não consideraria utilizar o mRemoteNG como uma ferramenta de trabalho corporativo, pelo menos da versão <=v1.77.3.1784-NB, pois é uma versão de 2019 e que ainda não foi atualizada pela gestão atual de desenvolvimento do programa. O uso ou não em seu ambiente corporativo fica por sua própria conta e risco.

9. Referências


Widget is loading comments...
quinta-feira, 26 de dezembro de 2024 terça-feira, 19 de novembro de 2024