A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

Com este artigo completamos a série de publicações dedicadas à análise de software malicioso. EM a primeira parte Realizamos uma análise detalhada de um arquivo infectado que uma empresa europeia recebeu por correio e descobriu nele o spyware AgentTesla. Em segunda parte descreveu os resultados de uma análise passo a passo do módulo principal do AgentTesla.

Hoje Ilya Pomerantsev, especialista em análise de malware do CERT Group-IB, falará sobre a primeira etapa da análise de malware - descompactação semiautomática de amostras do AgentTesla usando o exemplo de três minicasos da prática dos especialistas do CERT Group-IB.

Normalmente, o primeiro estágio na análise de malware é a remoção da proteção na forma de compactador, criptografador, protetor ou carregador. Na maioria dos casos, esse problema pode ser resolvido executando o malware e realizando um dump, mas há situações em que esse método não é adequado. Por exemplo, se o malware for um criptografador, se ele proteger suas regiões de memória contra dump, se o código contiver mecanismos de detecção de máquina virtual ou se o malware for reinicializado imediatamente após ser iniciado. Nesses casos, utiliza-se o chamado desempacotamento “semiautomático”, ou seja, o pesquisador tem total controle do processo e pode intervir a qualquer momento. Vamos considerar este procedimento usando três amostras da família AgentTesla como exemplo. Este é um malware relativamente inofensivo se você desabilitar o acesso à rede.

Amostra nº 1

O arquivo de origem é um documento do MS Word que explora a vulnerabilidade CVE-2017-11882.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Como resultado, a carga é baixada e iniciada.

Análise da árvore de processos e marcadores comportamentais mostra injeção no processo RegAsm.exe.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Existem marcadores comportamentais característicos do AgentTesla.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A amostra baixada é a executável . NET-arquivo protegido por um protetor Reator .NET.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Vamos abri-lo no utilitário dnSpy x86 e siga para o ponto de entrada.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Indo para a função Deslocamento de data e hora, encontraremos o código de inicialização para o novo . NET-módulo. Vamos colocar breakpoint na linha que nos interessa e execute o arquivo.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Em um dos buffers retornados você pode ver a assinatura MZ (0x4D 0x5A). Vamos salvá-lo.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Um arquivo executável despejado é uma biblioteca dinâmica que é um carregador, ou seja, extrai a carga útil da seção de recursos e a inicia.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Ao mesmo tempo, os próprios recursos necessários não estão presentes no lixão. Eles estão na amostra pai.

Utilitário dnSpy possui duas funcionalidades extremamente úteis que nos ajudarão a criar rapidamente um “Frankenstein” a partir de dois arquivos relacionados.

  1. O primeiro permite “colar” uma biblioteca dinâmica na amostra pai.

    A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

  2. A segunda é reescrever o código da função no ponto de entrada para chamar o método desejado da biblioteca dinâmica inserida.

    A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

Salvamos nosso “Frankenstein”, conjunto breakpoint na linha que retorna um buffer com recursos descriptografados e produz um dump por analogia com o estágio anterior.

O segundo dump está escrito em VB.NET um arquivo executável protegido por um protetor familiar para nós ConfusorEx.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Depois de remover o protetor, usamos as regras YARA escritas anteriormente e nos certificamos de que o malware descompactado é realmente AgentTesla.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

Amostra nº 2

O arquivo de origem é um documento do MS Excel. Uma macro integrada causa a execução de código malicioso.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Como resultado, o script do PowerShell é iniciado.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
O script descriptografa o código C# e transfere o controle para ele. O código em si é um bootloader, como também pode ser visto no relatório do sandbox.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A carga útil é um executável . NET-arquivo.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Abrindo o arquivo em dnSpy x86, você pode ver que está ofuscado. Removendo ofuscação usando o utilitário de4ponto e retorne à análise.

Ao examinar o código, você poderá encontrar a seguinte função:

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
As linhas codificadas são impressionantes EntryPoint и invocar. Nós colocamos breakpoint para a primeira linha, execute e salve o valor do buffer byte_0.

O dump é novamente um aplicativo em . NET e protegido ConfusorEx.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Removemos o ofuscamento usando de4ponto e carregue para dnSpy. Pela descrição do arquivo entendemos que estamos diante de Carregador CyaX-Sharp.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Este carregador possui ampla funcionalidade anti-análise.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Essa funcionalidade inclui ignorar os sistemas de proteção integrados do Windows, desabilitar o Windows Defender, bem como mecanismos de detecção de sandbox e máquina virtual. É possível carregar a carga da rede ou armazená-la na seção de recursos. O lançamento é realizado por injeção em seu próprio processo, em uma duplicata de seu próprio processo ou em processos MSBuild.exe, vbc.exe и RegSvcs.exe dependendo do parâmetro escolhido pelo invasor.

No entanto, para nós eles são menos significativos do que AntiDump-função que adiciona ConfusorEx. Seu código fonte pode ser encontrado em GitHub.

Para desativar a proteção, aproveitaremos a oportunidade dnSpy, que permite editar IL-código.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Salvar e instalar breakpoint para a linha de chamada da função de descriptografia de carga útil. Está localizado no construtor da classe principal.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Lançamos e despejamos a carga útil. Usando as regras YARA escritas anteriormente, garantimos que este é o AgentTesla.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3

Amostra nº 3

O arquivo fonte é o executável VB Nativo PE32-arquivo.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A análise de entropia mostra a presença de uma grande quantidade de dados criptografados.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Ao analisar o formulário de candidatura em Descompilador VB você pode notar um fundo pixelado estranho.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Gráfico de entropia bmp-image é idêntico ao gráfico de entropia do arquivo original e o tamanho é 85% do tamanho do arquivo.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A aparência geral da imagem indica o uso de esteganografia.

Prestemos atenção na aparência da árvore de processos, bem como na presença de um marcador de injeção.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Isso indica que a descompactação está em andamento. Para carregadores do Visual Basic (também conhecidos como VBKrypt ou VBInjetor) uso típico código shell para inicializar a carga útil, bem como para realizar a injeção em si.

Análise em Descompilador VB mostrou a presença de um evento Ver no formulário FegatassocAirballoon2.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Vamos para IDA profissional para o endereço especificado e estude a função. O código está fortemente ofuscado. O fragmento que nos interessa é apresentado a seguir.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Aqui, o espaço de endereço do processo é verificado em busca de uma assinatura. Esta abordagem é extremamente duvidosa.

Primeiro, o endereço inicial da digitalização 0x400100. Este valor é estático e não é ajustado quando a base é deslocada. Em condições ideais de estufa, indicará o fim PE-o cabeçalho do arquivo executável. Porém, o banco de dados não é estático, seu valor pode mudar e a busca pelo endereço real da assinatura necessária, embora não cause estouro de variável, pode demorar muito.

Em segundo lugar, o significado da assinatura iWGK. Acho óbvio que 4 bytes é muito pequeno para garantir a exclusividade. E se você levar em conta o primeiro ponto, a probabilidade de errar é bastante alta.

Na verdade, o fragmento necessário está anexado ao final do encontrado anteriormente bmp-fotos por deslocamento 0xA1D0D.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Atuação código shell realizado em duas etapas. O primeiro decifra o corpo principal. Neste caso, a chave é determinada pela força bruta.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Despejar o descriptografado código shell e observe as linhas.

Primeiro, agora conhecemos a função para criar um processo filho: CreateProcessInternalW.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Em segundo lugar, tomamos conhecimento do mecanismo de fixação no sistema.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Voltemos ao processo original. Vamos colocar breakpoint em CreateProcessInternalW e continuar a execução. A seguir vemos a conexão NtGetContextThread/NtSetContextThread, que altera o endereço inicial de execução para o endereço ShellCode.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Conectamos ao processo criado com um depurador e ativamos o evento Suspender ao carregar/descarregar a biblioteca, retome o processo e aguarde o carregamento . NET-bibliotecas.

Uso adicional ProcessHacker regiões de despejo contendo descompactado . NET-aplicativo.

Paramos todos os processos e excluímos a cópia do malware que foi incorporada ao sistema.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
O arquivo despejado é protegido por um protetor Reator .NET, que pode ser facilmente removido usando um utilitário de4ponto.

A participação falhou: vamos expor o AgentTesla à água limpa. Parte 3
Usando as regras YARA escritas anteriormente, garantimos que este é o AgentTesla.

para resumir

Assim, demonstramos detalhadamente o processo de descompactação semiautomática de amostras usando três minicasos como exemplo, e também analisamos malware com base em um caso completo, descobrindo que a amostra em estudo é AgentTesla, estabelecendo sua funcionalidade e um lista completa de indicadores de compromisso.

A análise do objeto malicioso que realizamos exige muito tempo e esforço, e esse trabalho deve ser realizado por um funcionário especial da empresa, mas nem todas as empresas estão preparadas para contratar um analista.

Um dos serviços prestados pelo Laboratório de Computação Forense e Análise de Códigos Maliciosos do Grupo-IB é a resposta a incidentes cibernéticos. E para que os clientes não percam tempo aprovando documentos e discutindo-os em meio a um ataque cibernético, o Grupo-IB lançou Retentor de Resposta a Incidentes, um serviço de resposta a incidentes pré-assinatura que também inclui uma etapa de análise de malware. Mais informações sobre isso podem ser encontradas aqui.

Se você quiser estudar mais uma vez como as amostras do AgentTesla são descompactadas e ver como um especialista do CERT Group-IB faz isso, você pode baixar a gravação do webinar sobre este tópico aqui.

Fonte: habr.com

Adicionar um comentário