
ETS5 Password Recovery Tool é uma PoC para CVE-2021-36799
Você esqueceu a senha de um dos seus projetos ETS5 e não consegue mais acessar a configuração da instalação KNX? A Ferramenta de Recuperação de Senha do ETS5 permite que você recupere a senha do projeto e outros segredos salvos no armazenamento de projetos do ETS5. Isso é possível porque o ETS5 tem uma falha de design significativa: ele usa uma senha e um sal fixos no código para criptografar as informações do projeto (CVE-2021-36799).
Armazenar segredos criptográficos no código-fonte é desaconselhável porque eles podem ser recuperados por engenharia reversa do software, oferecendo assim pouco mais proteção do que armazenar as informações como texto claro. Isso pode representar uma ameaça à segurança das instalações KNX. Se um invasor conseguir obter acesso aos arquivos no armazenamento de projetos, ele poderá descriptografá-los mesmo sem conhecer a senha do projeto. As informações contidas nesses arquivos permitem espionar, personificar e reconfigurar dispositivos KNX. Isso é particularmente problemático porque o ETS5 dá aos usuários a impressão de que a senha do projeto seria usada para criptografar as informações do projeto, não apenas para projetos exportados. Portanto, é provável que muitos usuários e integradores de sistemas não tenham tomado medidas adicionais para garantir a confidencialidade do armazenamento de projetos. Se o ETS5 implementasse a criptografia corretamente e uma senha de projeto forte fosse escolhida, isso representaria um desafio muito maior para um invasor, mesmo que ele conseguisse obter acesso remoto ao computador.
As seguintes informações confidenciais são criptografadas de forma inadequada:
A Ferramenta de Recuperação de Senha do ETS5 é uma prova de conceito que demonstra o problema descriptografando e exibindo as informações confidenciais. Ela foi desenvolvida como parte da divulgação coordenada de vulnerabilidades e é lançada com permissão da Associação KNX. A publicação da ferramenta serve aos seguintes propósitos:
AVISO: Use esta ferramenta somente se você estiver legalmente autorizado a visualizar as informações do projeto. Contornar medidas de segurança, mesmo as ineficazes, para obter acesso a informações que você não tem permissão para ver, pode ser crime em sua jurisdição.
O executável pode ser baixado da seção de releases. Ele não precisa ser instalado e pode ser colocado em qualquer diretório de sua escolha.
Alternativamente, se você não quiser executar um binário não confiável em seu sistema, pode descriptografar atributos individuais dos arquivos XML do projeto no site CyberChef website.
O software depende do .NET Framework 4.6 ou posterior. O Windows 10 já inclui uma versão adequada do .NET por padrão. Usuários de versões anteriores do Windows terão que instalar uma versão atual do .NET Framework para executar o software.
Ao contrário do que a interface do usuário sugere, o ETS5 não criptografa seus arquivos de projeto armazenados localmente em C:\ProgramData\KNX\ETS5\ProjectStore com a senha do projeto. Em vez disso, ele usa a senha fixa no código ETS5Password e o sal Ivan Medvedev para ofuscar atributos específicos nos arquivos XML do projeto. Segredos criptográficos fixos no código são contra as boas práticas, conforme explicado em CWE-798 e CWE-321.
O processo para a desofuscação é:
Ivan Medvedev como string ASCII ou UTF-8.ETS5Password como senha e a representação em bytes de Ivan Medvedev como sal. Os primeiros 32 bytes da saída da derivação de chave serão usados como chave e os 16 bytes seguintes como IV.Uma implementação da desofuscação pode ser encontrada no arquivo Deobfuscator.cs. Como a senha e o sal são constantes, seria possível pré-calcular a chave e o IV para pular a derivação de chave. Isso não é feito na implementação deste software, pois a intenção é mostrar todas as etapas da desofuscação. No entanto, se você precisar da chave e do IV, eles estão listados abaixo.
| Hex | Base64 | |
|---|---|---|
| Chave | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |