Correção do CVE-2017-0199
Remove a capacidade do CVE-2017-0199 de executar código alterando o manipulador padrão para arquivos .hta. O manipulador padrão para arquivos invocados via OLE2 (Objetos COM) é armazenado separadamente do aplicativo padrão do sistema local e só pode ser alterado por meio do registro.
Lógica Básica do Exploit
Este é um exemplo prático deste exploit, explicado conforme o meu entendimento. Nem todas as ocorrências seguem este padrão e minha avaliação pode estar incorreta. A correção apresentada na próxima seção, no entanto, funciona nas situações em que a testei.
- O documento RTF hospedado no servidor web tem a carga maliciosa de aplicativo de hipertexto (HTA) anexada ao final dele.
- O servidor de hospedagem responde às solicitações GET do arquivo com um cabeçalho informando que o conteúdo é um arquivo HTA.
- O Microsoft Word executa um objeto OLE2 para buscar o documento RTF do servidor web.
- O Microsoft Word é forçado a validar o tipo de arquivo, pois a extensão .rtf não corresponde ao tipo de conteúdo HTA.
- O Microsoft Word verifica a partir do final do arquivo por estruturas de dados reconhecíveis e corresponde as estruturas de dados HTA ao tipo de conteúdo HTA.
- O Microsoft Word corrige automaticamente o tipo de arquivo e o passa para o manipulador COM de arquivos HTA (mshta.exe).
- O Mshta.exe executa o código malicioso do aplicativo de hipertexto a partir do final do arquivo.
Os manipuladores COM são armazenados separadamente dos manipuladores do sistema no registro para evitar erros no processo de validação de tipo de arquivo.
Correção Básica
- No RegEdit.exe, navegue até HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon
- Abra as permissões avançadas de DefaultIcon
- Altere o proprietário para Administrators (grupo)
- Adicione sua conta de usuário atual à lista de principais de segurança e atribua a ela "Controle Total"
- Edite a chave (Default) para C:\Windows\System32\notepad.exe,1
- Nas Permissões Avançadas de DefaultIcon, remova seu usuário e reatribua SYSTEM como proprietário
- Repita as etapas 1 a 6 para HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32, alterando o valor da chave (Default) para C:\Windows\System32\notepad.exe
Isto remove a capacidade do CVE-2017-0199 de executar código ao alterar o manipulador padrão para objetos .hta invocados via OLE2 para o notepad. Isso se aplicará a todas as instâncias de OLE2 que invocarem arquivos .hta. Isso fará o notepad abrir e exibirá erros, mas o código não será executado.
CHAVES DE REGISTRO ORIGINAIS
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon\(Default)
C:\Windows\SysWOW64\mshta.exe,1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32\(Default)
C:\Windows\SysWOW64\mshta.exe
CHAVES DE REGISTRO EDITADAS
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\DefaultIcon\(Default)
C:\Windows\System32\notepad.exe,1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{3050f4d8-98B5-11CF-BB82-00AA00BDCE0B}\LocalServer32\(Default)
C:\Windows\System32\notepad.exe
AMBIENTE
- 1 Servidor Ubuntu 16.04.2 LTS com pilha LAMP e Servidor SSH
- 1 Cliente Windows 10 com Office 365 (2016)
REFERÊNCIAS
LIÇÕES
- Não edite o HKCR diretamente. Edite as chaves associadas em HKCU ou HKLM.
- Você pode devolver a propriedade de uma chave de registro ao SYSTEM ou a outros após assumi-la.
- Não mexa no registro. Deixe-o como encontrou depois de fazer suas alterações.
- O Process Monitor possui poderosos filtros de clique com o botão direito para reduzir o ruído.
- O recurso de localização do Process Monitor pesquisa uma string em todos os campos.
- pscp.exe (Putty) é uma ferramenta de transferência de arquivos SSH por linha de comando.
- O Linux ainda é uma grande dor de cabeça.
Observação Final
Não me responsabilizo por quaisquer danos ou problemas causados por esta mitigação ou pela confusão do usuário resultante do notepad e de vários erros. Esta é uma correção improvisada e não sei se causará problemas maiores em um ambiente de produção. Como sempre, avalie as mitigações considerando seu ambiente e necessidades específicos.
Adicionarei capturas de tela mais tarde para mostrar os efeitos antes e depois desta mitigação. Além disso, isso pode ser feito como um script, mas estou tendo dificuldades com a alteração de permissões na chave de registro, então tratarei disso mais tarde.