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.
- Vá em
Tools > External Tool
e crie umaNew Tool
. - Em
Display Name
coloque o nome que quiser. - Em
Filename
coloqueCMD
. - Em
Arguments
coloque/k echo %password%
e salve. - 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:
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
- mRemoteNG-Dump
- mRemoteNG: Just Loaded with “Features”
- mRemoteNG <= v1.77.3.1784-NB Password Dumper (CVE-2023-30367)
- mRemoteNG-Decrypt
- CVE-2023-30367 Detail
- secuvera-SA-2023-01: Cleartext Storage of Sensitive Information in Memory of mRemoteNG Processes
- Public Disclosure of issue 726
- CWE-316: Cleartext Storage of Sensitive Information in Memory
Vou ficar muito contente em receber um feedback seu.