Página Inicial || Próximo || Anterior
No artigo sobre as técnicas de Ofuscação e Empacotamento de Malware, eu demostrei a analise de um arquivo executável onde foi possível identificar as funções importadas pela DLL KERNEL32.DLL
O que é DLL ?
Um arquivo com extensão DLL é uma biblioteca de link dinâmico e contém códigos de funções que são utilizadas por outros programas. Fazendo uma analogia com Python onde com o parametro import é possível utilizar bibliotecas prontas para a execução do seu script/programa. As DLL possuem essa mesma função e permite que o desenvolvimento de um programa seja feito de forma modular.
DLL na Análise de Malware
Durante a análise de um malware é necessário identificar quais são as ações que serão realizadas pelo malware, ou seja, identificar o comportamento para criar métodos de proteção como assinaturas do antivírus ou IPS/IDS. A DLL diz muito sobre a função do programa e na lista abaixo estão algumas DLL e a descrição de cada uma delas.
-
KERNEL32.DLL - muito utilizada por diversos sistemas, essa DLL contém as principais funções para gerenciamento de acesso e manipulação de memória, arquivos e hardware.
-
ADVAPI32.DLL - essa DLL fornece acesso a compomentes avançados do Windows como o Service Manager e Registro.
-
USER32.DLL - todos os componentes de interface com o usuário são controlados por essa DLL como botões, barra de rolagem, e os componentes de controle e resposta às ações do usuário.
-
GDI32.DLL - contém funções para mostrar e manipular gráficos.
-
NTDLL.DLL - essa é a DLL utilizada para acesso ao Kernel do Windows. Geralmente, programas legítimos não utlizam essa DLL diretamente, ou seja, não tem uma “chamada” explícita para esse arquivo. No entanto, a DLL KERNEL32.DLL sempre importa essa DLL indiretamente. Na análise de um arquivo, se essa DLL é explicitamente chamada, isso indica que o programa vai usar funções que são pouco utilizadas e algumas dessas funções pode manipular processos e esconder ações. Caso tenha suspeita que o arquivo é malicioso, uma chamada explícita dessa DLL pode confirmar a suspeita.
-
WSOCK32.DLL / WS2_32.DLL - são DLL para rede e suas funções indicam que o programa vai realizar ações relacionadas com a rede.
-
WININET.DLL - contém funções de rede de alto nível para implementar protocolos como FTP, HTTP e NTP.
DLL e Funções
Quando é realizado uma análise de malware, algumas funções oferecidas pelas DLLs são mais interessantes do que outras. Na lista abaixo, estão algumas funções interessantes que podem ser encontradas nas DLL.
- KERNEL32.DLL
- OpenProcess - abre um processo
- GetCurrentProcess - manipula um processo em execução
- GetProcessHeap - manipula um processo na memória
- ReadFile - le um arquivo
- CreateFile - cria um arquivo
- WriteFile - escreve em um arquivo
- FindFirstFile - procura um arquivo
- FindNextFile - procurar em sequencia por arquivos
- USER32.DLL
- RegisterClassEX - registra uma classe para uso da função CreateWindows
- SetWindowsText - Copia o texto para o buffer
- ShowWindow - mostra o status de uma GUI
- SetWindowsHookEx - muito comum ver essa função em spywares e keyloggers - monitora eventos
- RegisterHotKey - define uma tecla de atalho ou um combinação de teclas
PEView
Uma ferramenta que pode ser utilizada para analisar o cabeçalho de um arquivo executável e mostrar as funções importadas é o PEView
O interessante dessa ferramenta é a visualização completa do programa mostrando a possível ordem em que as funções são chamadas/executadas.
O objetivo desse artigo foi descrever a importância das DLL na análise de malware e como essa análise junto com a ferramenta PEView pode ajudar a entender o funcionamento de um programa malicioso.