Skip to the content.

Página Inicial || Próximo || Anterior

Ofuscação e Empacotamento - Técnicas para esconder malware

A técnica de ofuscação é aplicada na compilação de códigos de malware, e consiste em tornar o código inlegível e desconexo. Isto é, a análise estática do código chamada de engenharia reserva não pode ser usada nesse tipo de malware. Nestes casos, são necessárias ferramentas para análise dinâmica, ou seja, a análise é feita com o malware em execução e requer um ambiente isolado para não infectar toda a rede ou a máquina que hospeda a sandbox virtual.

O empacotamento é o conjunto de códigos ofuscados onde é aplicado compressão para impossibilitar a análise reversa do programa. Quando códigos de malware ofuscados e empacotados são analisados estaticamente com uma ferramenta como Strings o resultado mostra poucas informações indicando que técnicas para esconder as ações do malware foram empregadas. Geralmente, programas legítimos retornam algumas funções importadas porque não tem o intuito de esconder suas ações.

Na figura abaixo é mostrado a diferença entre um programa sem empacotamento e outro onde a técnica de empacotamento e ofuscação foi empregada. Quando analisamos de forma estática um arquivo do tipo PE (Portable Executable), apenas as informações do cabeçalho do arquivo são mostradas.

programas empacotados

EXEInfo

O EXEInfo é uma ferramenta que ajuda a identificar se um arquivo utiliza as técnicas de Ofuscação e Empacotamento. Um dos indicadores de ofuscação do é a identificação UPX - Ultimate Packer Executable

exeinfope

Outro indicador é a pouca quantidade de funções importadas visíveis. No arquivo malicious02.exe são poucas as funções importadas pelas DLL kernel32.dll, advapi32.ddl e wininet.dll

kernel32_poucas_funcoes

advapi32_poucas_funcoes

wininet_poucas_funcoes

Formato PE - Portable Executable

PE - Portable Executable é o formato para arquivos executáveis, DLLs, arquivos OCX, CPS e SYS utilizado pelo Windows e esse formato também é o principal utilizado para criação de malwares. Os arquivos PE incluem um cabeçalho com informações sobre o código, o tipo de aplicação, funções importadas para execução, etc. As funções importadas é a informação mais valiosa disponível no cabeçalho. Funções importadas são bibliotecas compartilhadas por diversos programas e que são “chamadas” quando um programa é executado, essa técnica tem o nome de linking O linking de um programa pode ser do tipo estático, dinâmico ou runtime.

Chamada de Função Dinâmica

A ferramenta Dependency Walker analisa as funções/bibliotecas que são “chamadas” dinamicamente por um programa executável. No exemplo abaixo, eu utilizo o arquivo malicious01.exe na máquina Windows 7 virtualizada no VirtualBox e com a placa de rede desabilitada.

analise_malware01

Logo abaixo do nome do arquivo estão as DLLs importadas KERNEL32.DLL e MSVCRT.DLL e as funções importadas podem ser vistas em destaque na imagem abaixo.

imported_functions

Observando as funções é possível ter uma idéia das ações executadas pelo PE. Por exemplo, a sequencia de funções sugere que o executável vai fazer.

A ordem em que as funções serão executadas pode ser alterada pois não sabemos e não conseguimos ver na integra o código do executável. A descrição e o uso de funções pode ser encontrada na documentação da Microsoft aqui

Ordinal Code

Na ferramenta Dependency Walker podemos ver uma coluna com nome de Ordinal. É comum o uso do código ordinal para chamar a função ao invés do nome da função. Quando o código ordinal da função é utilizado, a análise do malware pode ser difícil. No arquivo de exemplo acima, malicious01.exe as funções são chamadas pelo nome, mas no arquivo malicious.ddl a chamada é feita pelo código ordinal. Neste caso, para identificar as funções importadas pelo DLL é necessário na tabela disponível no Dependency Walker onde as funções são indicadas com um asterisco.

ordinal_dll

O objetivo desse artigo foi descrever o estudo que eu fiz sobre os métodos de ofuscação, empacotamento, formato de arquivos PE e funções. Ainda sobre esse tema, existe mais conteúdo para ser estudado e escrito e serão o assunto de outros artigos deste blog.