Esta é uma técnica de injeção de DLL do Windows Explorer que usa a caixa de diálogo de alteração do ícone no Windows.
Primeiramente, uma pasta é criada no diretório temporário e as propriedades da pasta são abertas usando SHObjectProperties. Para recuperar o identificador da janela independentemente do idioma do sistema, EnumWindows é usado com uma função de retorno de chamada que verifica o nome da pasta distinta em cada janela aberta.
Através da página de propriedades, é invocada a caixa de diálogo de alteração do ícone, cujo identificador também é recuperado com EnumWindows. Por último, o caminho do ícone é alterado para uma DLL (que neste caso possui uma extensão .ico), o que faz com que o explorador carregue a DLL após o botão OK ser pressionado.
O "ícone" é na verdade um arquivo DLL simples com extensão .ico que abre o aplicativo de calculadora com um recurso de ícone que foi adicionado usando o Resource Hacker.
Existem algumas anomalias no que diz respeito à aparência do ícone na visualização de pastas. Eu testei isso em duas versões diferentes do Windows 10 (a mais recente e a mais antiga) e no Windows 11.
Em ambas as versões do Widnows 10, o ícone armazenado dentro da DLL não foi exibido quando a extensão foi alterada para .ico
Na versão mais recente do Windows 10, entretanto, funcionou até que tentei abrir o “ícone” dentro do aplicativo de fotos. Desde então, não consegui recriá-lo.
No Windows 11, o ícone era exibido como um ícone normal na visualização do Explorer. Quando ele é aberto no aplicativo de fotos, porém, um erro é exibido.
Esse comportamento é certamente interessante, pois um usuário que deseja simplesmente alterar o ícone de uma pasta pode injetar uma DLL maliciosa em seu explorador. Isso pode ser assim:
Esta é uma maneira muito furtiva de injetar uma DLL no processo do Explorer porque ela não usa a API usual de injeção de DLL. Ele produz dois pop-ups curtos, que não são muito perturbadores. Portanto, pode ser usado como uma técnica de evasão AV por um agente de ameaça para executar código por meio do processo explorador legítimo ou para carregar um rootkit UMD.
Além disso, espalhar DLLs mascaradas como arquivos .ico pode ser um vetor de ataque interessante.
Para obter os identificadores de janela corretos, usei o Spy++, que é uma ferramenta instalada com o Visual Studio.
Muito obrigado a Bill G. da Microsoft pelo lindo ícone da pasta!
Obrigado, cara aleatório da internet, pelo lindo ícone de injeção!