COVIL HACKER

, ! .


» COVIL HACKER » Delphi / Pascal » Maior uso de um Delphi Packer para evitar a classificação de malware


Maior uso de um Delphi Packer para evitar a classificação de malware

1 2 2

1

Introdução
O conceito de "empacotar" ou "criptografar" um programa malicioso é amplamente popular entre os agentes de ameaças que procuram contornar ou anular a análise por meio de ferramentas de análise estática e dinâmica. Evasão de classificação e detecção é uma corrida armamentista em que novas técnicas são negociadas e usadas na natureza. Por exemplo, observamos muitos serviços de criptografia sendo oferecidos em fóruns clandestinos por atores que afirmam tornar qualquer malware "FUD" ou "totalmente indetectável" por tecnologias antivírus, sandboxes e outras soluções de endpoint. Também vemos um esforço maior para modelar a atividade normal do usuário e baseá-la como uma contramedida eficaz para ambientes de análise de malware de impressão digital.

Código Delphi para o resgate
As amostras que inspecionamos carregavam a assinatura Delphi (Figura 1) e eram consistentes com as construções de código Delphi na análise com IDR (Interactive Delphi Reconstructor).

https://forumupload.ru/uploads/001b/c9/09/2/t475921.png

Figura 1: assinatura Delphi na amostra

A linguagem de programação Delphi pode ser uma maneira fácil de escrever aplicativos e programas que aproveitam as funções da API do Windows. Na verdade, alguns atores incluem deliberadamente as bibliotecas padrão como uma distração para dificultar a análise estática e fazer o aplicativo "parecer legítimo" durante a análise dinâmica. A Figura 2 mostra a postagem no fórum de um ator discutindo essa técnica.

https://forumupload.ru/uploads/001b/c9/09/2/t115224.png

Figura 2: postagem no fórum underground de um ator discutindo técnica

Campanhas de Distribuição
Observamos muitas campanhas de spam com temas diferentes que descartam cargas compactadas usando esse empacotador.

Um exemplo é um spam médio de transferência rápida que carrega um arquivo de documento como anexo (hash: 71cd5df89e3936bb39790010d6d52a2d), que utiliza macros maliciosas para descartar a carga útil. O e-mail de spam é mostrado na Figura 3.

https://forumupload.ru/uploads/001b/c9/09/2/t441026.png

Figura 3: exemplo de spam 1

Outro exemplo é um spam com tema de cotação média que carrega um arquivo de documento de exploração como um anexo (hash: 0543e266012d9a3e33a9688a95fce358), que aproveita uma vulnerabilidade do editor de equação para descartar a carga útil (Figura 4).

https://forumupload.ru/uploads/001b/c9/09/2/t987266.png

Figura 4: exemplo de spam 2

Os documentos nos exemplos obtiveram uma carga de http://5.152.203.115/win32.exe. Isso acabou sendo o malware Lokibot.

Verificações de atividade do usuário
O empacotador faz de tudo para garantir que não esteja sendo executado em um ambiente de análise. A atividade normal do usuário envolve muitas janelas de aplicativos sendo giradas ou alteradas durante um período de tempo. A primeira variante do empacotador usa a API GetForegroundWindow para verificar a atividade do usuário de alterar janelas pelo menos três vezes antes de continuar a ser executada. Se não vê a mudança das janelas, ele se põe em sono infinito. O código é mostrado na Figura 5. Curiosamente, alguns dos sandboxes publicamente disponíveis podem ser detectados por essa técnica simples.

https://forumupload.ru/uploads/001b/c9/09/2/t15200.png

Figura 5: Verificação de mudança de janela

Para confirmar a atividade do usuário, uma segunda variante do empacotador verifica o movimento do cursor do mouse usando as APIs GetCursorPos e Sleep, enquanto uma terceira variante verifica o estado ocioso do sistema usando as APIs GetLastInputInfo e GetTickCount.

Extraindo cargas reais dos recursos de PE
A carga útil original é dividida em vários blobs binários e armazenada em vários locais dentro do diretório de recursos, conforme mostrado na Figura 6.

https://forumupload.ru/uploads/001b/c9/09/2/t90203.png

Figura 6: Recurso bitmap com conteúdo criptografado

Para localizar e montar os bytes de carga real, o código do empacotador primeiro lê diretamente o conteúdo de um ID de recurso codificado dentro da seção de recursos. Os primeiros 16 bytes deste formam uma chave XOR usada para descriptografar o resto dos bytes usando XOR rolante. Os bytes descriptografados representam, na verdade, uma estrutura de dados interna, conforme mostrado na Figura 7, usada pelo empacotador para fazer referência a buffers criptografados e ofuscados em vários IDs de recursos.

https://forumupload.ru/uploads/001b/c9/09/2/t904191.png

Figura 7: Estrutura mostrando as informações do arquivo criptografado

O empacotador então lê os valores dos buffers criptografados, começando de dwStartResourceId até dwStartResourceId+dwNumberOfResources, e os traz para um único local lendo blocos de dwChunkSize. Depois que o buffer de dados final é preparado, ele começa a descriptografá-lo usando o mesmo algoritmo XOR contínuo mencionado anteriormente e a nova chave da estrutura mencionada acima, produzindo o executável de carga útil principal. Este script pode ser usado para extrair a carga real estaticamente .

Classificação das Famílias Reais
Muitos dos binários descompactados que conseguimos extrair do conjunto de amostras foram identificados como pertencentes à família de malware Lokibot. Também conseguimos identificar as famílias de malware Pony, IRStealer, Nanocore, Netwire, Remcos e nJRAT, bem como uma família de malware de mineração de moeda, entre outros. A distribuição das famílias de malware que usam o empacotador é mostrada na Figura 8. Essa diversidade de famílias de malware indica que muitos agentes de ameaças estão usando esse serviço/ferramenta de "criptografia" para suas operações, possivelmente comprando-o do próprio desenvolvedor.

https://forumupload.ru/uploads/001b/c9/09/2/t922858.png

Figura 8: Distribuição de famílias de malware usando empacotador

Conclusão
Os serviços de compactadores e criptografadores fornecem aos agentes de ameaças uma opção fácil e conveniente para terceirizar a carga de trabalho de manter suas cargas reais não detectadas e não classificadas pelo maior tempo possível. Eles estão regularmente encontrando maneiras bacanas de contornar ambientes de sandbox com técnicas de anti-análise; portanto, detonar amostras de malware em um ambiente de sandbox que tenta modelar o comportamento real do usuário é uma aposta segura.

O FireEye MVX Engine detecta e bloqueia essa atividade.

0

2


» COVIL HACKER » Delphi / Pascal » Maior uso de um Delphi Packer para evitar a classificação de malware


|