Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
IconJector — Injetar DLLs no processo do explorer usando ícones | Kitploit
Ferramentas/GitHubGitHub/d419h/iconjector
ExploraçãoPós-ExploraçãoEngenharia SocialRed TeamingDesenvolvimento de PayloadsAtaque Adversário
GitHubd419h/iconjector

IconJector

Injetar DLLs no processo do explorer usando ícones

Ver Repositório
4154913há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

IconJector

Esta é uma técnica de injeção de DLL no Windows Explorer que utiliza a caixa de diálogo de alteração de ícone no Windows.

Ela pode enganar os usuários para que carreguem uma DLL maliciosa no processo do explorer:

https://github.com/0xda568/IconJector/assets/61665703/06428402-764c-4279-b762-1d01082552c8

Além disso, pode ser usada para injetar uma DLL de outro processo no explorer:

https://github.com/0xda568/IconJector/assets/61665703/bbf53775-ad8d-422b-b186-663ff5074976

Como funciona?

Além de conter código, DLLs também são usadas para armazenar recursos como ícones. Na demonstração, você pode ver que os ícones padrão estão armazenados em shell32.dll:

image

Na verdade, nas versões modernas do Windows, eles estão armazenados em shell32.dll.mui, mas ainda são exibidos como shell32.dll

Para que o processo do explorer consiga exibir todos os ícones armazenados na DLL na caixa de diálogo, ele precisa carregar a DLL na memória para que ela possa ser analisada.

Além disso, DLLs no Windows têm a capacidade de definir uma função opcional DllMain, que é chamada quando a DLL é carregada ou descarregada usando as funções LoadLibrary e FreeLibrary.

BOOL WINAPI DllMain(
    HINSTANCE hinstDLL,  // handle to DLL module
    DWORD fdwReason,     // reason for calling function
    LPVOID lpvReserved )  // reserved
{
    // Perform actions based on the reason for calling.
    switch( fdwReason ) 
    { 
        case DLL_PROCESS_ATTACH:
         // Initialize once for each new process.
         // Return FALSE to fail DLL load.
            break;

        case DLL_THREAD_ATTACH:
         // Do thread-specific initialization.
            break;

        case DLL_THREAD_DETACH:
         // Do thread-specific cleanup.
            break;

        case DLL_PROCESS_DETACH:
        
            if (lpvReserved != nullptr)
            {
                break; // do not do cleanup if process termination scenario
            }
            
         // Perform any necessary cleanup.
            break;
    }
    return TRUE;  // Successful DLL_PROCESS_ATTACH.
}

Isso significa que, se uma DLL com uma função DllMain for carregada pelo explorer, o código definido na função DllMain será executado na memória do explorer.

E é exatamente isso que está sendo feito aqui. Além disso, a DLL está sendo disfarçada como um ícone:

O ícone

O "ícone" é, na verdade, um simples arquivo DLL com extensão .ico que abre o aplicativo da calculadora com um recurso de ícone adicionado usando o Resource Hacker. (O ícone também pode ser adicionado no Visual Studio)

Existem algumas anomalias em relação à aparência do ícone na visualização de pastas. Testei isso em duas versões diferentes do Windows 10 (a mais recente e uma mais antiga) e no Windows 11.

Windows 10

Em ambas as versões do Windows 10, o ícone armazenado dentro da DLL não era exibido quando a extensão era alterada para .ico

win10 dll

Na versão mais recente do Windows 10, no entanto, funcionou até que eu tentasse abrir o "ícone" dentro do aplicativo de fotos. Desde então, não consegui recriar isso.

new win10 icon

Windows 11

No Windows 11, a DLL disfarçada era exibida como um ícone normal na visualização do Explorer. Quando aberta no aplicativo de fotos, no entanto, um erro é exibido.

https://github.com/0xda568/IconJector/assets/61665703/748c1012-1d2c-47dd-915f-860ffc6d1b05

Injetar uma DLL programaticamente

Além de enganar um usuário para carregar a DLL manualmente, um atacante também tem a opção de usar esta técnica para injetar um arquivo DLL no processo do explorer programaticamente:

Primeiramente, uma pasta é criada no diretório temporário, e as propriedades da pasta são abertas usando SHObjectProperties. Para obter o identificador da janela independentemente do idioma do sistema, EnumWindows é usado com uma função de retorno de chamada que verifica o nome distinto da pasta em cada janela aberta.

callback function

Através da página de propriedades, a caixa de diálogo de alteração de ícone é invocada, cujo identificador também é obtido com EnumWindows. Por fim, o caminho do ícone é alterado para uma DLL (que possui extensão .ico neste caso), o que faz com que o explorer carregue a DLL após o botão OK ser pressionado.

Por quê?

Esta é uma forma muito furtiva de injetar uma DLL no processo do Explorer porque não utiliza a API usual de injeção de DLL. Ela produz dois popups curtos, que, no entanto, não são muito perturbadores. Portanto, pode ser usada como uma técnica de evasão de AV por um ator de ameaças para executar código através do processo legítimo do explorer ou para carregar um rootkit UMD.

Além disso, espalhar DLLs mascaradas como arquivos .ico pode ser um vetor de ataque interessante.

Ferramentas utilizadas

Para obter os identificadores de janela corretos, usei o Spy++, que é uma ferramenta instalada com o Visual Studio.

spy++

Créditos

Muitos agradecimentos a Bill G., da Microsoft, pelo lindo ícone de pasta!

Obrigado, cara aleatório da internet, pelo lindo ícone de injeção!

Baixar ferramenta