Operação TA505: como analisamos as novas ferramentas dos criadores do Trojan Dridex, Locky ransomware e botnet Neutrino



A geografia dos ataques do grupo TA505 para 2019

Nossa equipe de analistas de Inteligência contra Ameaças do PT Expert Security Center acompanha há seis meses as atividades de cibercriminosos do TA505. A área de interesse dos atacantes é financeira e as metas estão localizadas em dezenas de países em diferentes continentes.

Qual grupo TA505 é conhecido?


Esse grupo de atacantes tem uma história rica : desde 2014, eles listam o Trojan Dridex bancário, a botnet Neutrino, além de toda uma série de criptógrafos - Locky, Jaff, GlobeImposter, etc.

A atividade do grupo foi registrada em todo o mundo - da América do Norte à Ásia Central. Nota: registramos casos isolados de agrupamentos maliciosos de TA505 na Rússia, mas há todos os motivos para acreditar que os atacantes não tinham alvos em nosso país e as correspondências eram de natureza aleatória.

Apesar da motivação predominantemente financeira do grupo, entre seus objetivos nos últimos seis meses, houve institutos de pesquisa, organizações do setor de energia, saúde, empresas de aviação e até o setor público.



Distribuição dos ataques do TA505 por setor em 2019

Abaixo está um exemplo de um email de phishing contendo software malicioso desenvolvido pelo grupo e direcionado, a julgar pelo endereço de email, ao Ministério das Relações Exteriores do Reino Unido.



Desde a primavera de 2018, o grupo usa a Ferramenta de Acesso Remoto FlawedAmmyy e, desde o final do ano, utiliza o novo backdoor ServHelper. TA505 - um dos poucos que podem se orgulhar de atividade vigorosa por um longo tempo. Além disso, a cada nova onda de ataques, eles trazem mudanças interessantes em suas ferramentas.



Dinâmica de descoberta do grupo TA505 por meses em 2019

Obviamente, uma atividade tão barulhenta não passa despercebida: existem muitas publicações de nossos colegas da Proofpoint , Trend Micro , Yoroi e não apenas sobre técnicas maliciosas e malware. No entanto, muitos detalhes interessantes são ignorados:

  • identificador de grupo PE packer;
  • uma variação do backdoor ServHelper, em que a ênfase não está em sua própria funcionalidade, mas na implementação pronta e conhecida do NetsupportManager;
  • infraestrutura de rede: registradores característicos, hosters, incluindo interseções com a infraestrutura do grupo Buhtrap;
  • outros grupos de VPO não descritos anteriormente.

Este artigo é o primeiro de uma série de postagens sobre o TA505.

Parte I Conheça por pacote


Em meados de junho de 2019, observamos que os próximos downloaders de malware do FlawedAmmy são significativamente diferentes das versões anteriores: por exemplo, a representação visual do código do programa no editor hexadecimal mudou e até se tornou algo característico de várias amostras:



Representação ASCII do código do programa

Uma análise rápida do código mostrou que temos diante de nós um empacotador desconhecido de arquivos executáveis. Mais tarde, verificou-se que esse empacotador abrangeu não apenas os carregadores mencionados acima, mas também outras amostras do grupo HPE, incluindo a carga útil. Decidimos estudar em detalhes a lógica de descompressão para extrair automaticamente o objeto de destino.

Camada 1. XOR Torcido


A parte principal do desembalador é precedida por uma abundância de instruções inúteis. Os criadores de vírus geralmente recorrem a essa técnica para confundir emuladores de produtos antivírus. Todas as coisas interessantes começam com a alocação de memória para um buffer de tamanho 0xD20 usando a função WinAPI VirtualAllocEx. A memória é alocada com permissões PAGE_EXECUTE_READWRITE, que permitem escrever e executar código.



Início do conteúdo do desempacotador

A seção de dados do arquivo em estudo contém uma matriz de dados que passa pelo procedimento de descriptografia e o resultado é gravado na memória alocada. Algoritmo de descriptografia:

  • interpretar 4 bytes como um número inteiro,
  • subtrair o número de série
  • executar uma operação XOR com uma constante constante,
  • execute um deslocamento cíclico bit a bit para a esquerda em 7 unidades,
  • execute a operação XOR novamente com a constante fornecida.



Decodificando a primeira camada
Denotamos esse algoritmo pela abreviatura SUB-XOR-ROL7-XOR para consultá-lo posteriormente.
Após o procedimento de descriptografia, as variáveis ​​são inicializadas sequencialmente. Isso pode ser representado como preenchimento de uma estrutura em C no seguinte formato:

struct ZOZ { HMODULE hkernel32; void *aEncodedBlob; unsigned int nEncodedBlobSize; unsigned int nBlobMagic; unsigned int nBlobSize; }; 

onde:

  • hkernel32 - descritor da biblioteca kernel32.dll;
  • aEncodedBlob - ponteiro para o bloco de dados codificados, o mencionamos quando nos referimos à similaridade visual das amostras acima;



Bloco de dados codificados

  • nEncodedBlobSize - tamanho de 4 bytes do bloco de dados codificados;
  • nBlobMagic - constante de 4 bytes na frente do bloco de dados, para o qual retornaremos mais tarde;
  • nBlobSize - tamanho de 4 bytes do bloco de dados decodificado;

Chamamos a estrutura ZOZ (isso é "505" no leetspeak ).



Estrutura ZOZ de preenchimento

Como resultado das ações descritas, a execução do código será redirecionada para o buffer descriptografado (agora não há dúvida de que os dados descriptografados são código executável) e o ponteiro para a estrutura preenchida será passado como um parâmetro de função:



Chamar o código descriptografado com a estrutura " ZOZ " passado como argumento



Parte desmontada do código descriptografado

Camada 2. Quanto menor, melhor


Após transferir o controle para o trecho de código descriptografado, a primeira etapa é determinar os endereços das funções WinAPI GetProcAddress, VirtualQuery, VirtualAllery, VirtualAlloc, VirtualProtect, VirtualFree e LoadLibraryA. Essa lista geralmente é encontrada no trabalho de códigos de shell: afinal, eles precisam preparar e preencher corretamente a memória para o lançamento subsequente da carga útil.

Após a conclusão dos procedimentos preliminares, o bloco de dados codificados transmitidos é truncado: de cada cinco bytes, os dois primeiros são descartados e os três restantes são salvos:



Redução de bloco de dados codificados

Em seguida, é executado o procedimento de descriptografia, que denominamos SUB-XOR-ROL7-XOR . Nesse caso, como uma constante para a operação XOR, outro valor nBlobMagic é usado, que foi passado na estrutura ZOZ .



Reutilizando SUB-XOR-ROL7-XOR

Depois disso, a matriz resultante é transferida para uma função na qual ocorre uma série de transformações mais complexas. Pelos valores característicos das constantes, é fácil estabelecer que essa é a implementação do popular FSG wrapper PE (Fast Small Good). É curioso que a versão original do FSG packer comprima o PE em seções, e a implementação do algoritmo em nosso caso funcione com o PE como um todo.



Implementação do FSG Packer

Nesse estágio, o arquivo de destino do PE descompactado está pronto para análises adicionais. O restante do código do shell substituirá o PE original no espaço de endereço pela versão descompactada e a executará corretamente. É interessante notar que, no processo de ajuste do ponto de entrada de um módulo carregado, as estruturas são manipuladas no PEB. Por que os invasores decidiram encaminhar o descritor do kernel32 da lógica da primeira camada, em vez de obtê-lo usando as mesmas estruturas de PEB, é desconhecido.



Substituindo o valor do ponto de entrada do módulo carregado no PEB

Conclusão


Portanto, o algoritmo de desempacotamento da carga útil:

  • decodificação de código de shell usando SUB-XOR-ROL7-XOR,
  • preenchendo a estrutura ZOZ e chamando o shellcode,
  • redução de cinco a três cargas úteis,
  • decodificação de carga útil usando SUB-XOR-ROL7-XOR,
  • empacotador de descompressão FSG.

Durante a evolução do malware, a lógica mudou: por exemplo, o número de mudanças cíclicas do algoritmo SUB-XOR-ROL7-XOR (sete no caso considerado) foi alterado por cinco, nove, a versão do empacotador para a plataforma x64 foi lançada etc. O empacotador de agrupamento cibercriminoso exclusivo é excelente epígrafe para futuras narrações sobre as ferramentas e recursos do TA505.

Nos artigos a seguir, falaremos sobre como as ferramentas TA505 se desenvolveram e mudaram no curso dos ataques mais recentes, sobre a interação dos participantes com outros grupos cibernéticos e estudaremos os modelos de malware anteriormente não considerados.

Autores : Alexey Vishnyakov e Stanislav Rakovsky, Positive Technologies

COI


b635c11efdf4dc2119fa002f73a9df7b - Carregador empacotado b635c11efdf4dc2119fa002f73a9df7b
71b183a44f755ca170fc2e29b05b64d5 - 71b183a44f755ca170fc2e29b05b64d5 inicialização descompactado 71b183a44f755ca170fc2e29b05b64d5

Source: https://habr.com/ru/post/pt469813/


All Articles