Operação TA505, Parte Dois: Aprendendo o Backdoor ServHelper com o NetSupport RAT



No final de julho de 2019, descobrimos uma amostra interessante de malware TA505 . Em 22 de julho de 2019, foi enviado para ANY.RUN para análise dinâmica. Chamamos a atenção para o fato de que, entre as tags expostas, além da usual para o TA505 Servhelper, a tag netsupport também apareceu e, entre os disparos de assinatura da rede, foi identificado o mesmo nome NetSupport RAT.



Fig. 1. Data do download de malware e tags configurados no analisador online ANY.RUN



Fig. 2. Disparo de assinatura de rede no NetSupport RAT na sandbox ANY.RUN

À primeira vista, isso pode parecer estranho: afinal, o backdoor do grupo ServHelper possui uma funcionalidade impressionante para controlar o PC da vítima. É hora de considerar o trabalho do malware em detalhes.

Conta-gotas NSIS e PowerShell


O arquivo PE executável a partir do qual nossa análise começa é um instalador baseado na plataforma Nullsoft Scriptable Install System (NSIS). O script NSIS que executa o processo de instalação extrai e executa o script incorporado do PowerShell:



Fig. 3. Instruções de script NSIS

O script do PowerShell iniciado contém um buffer codificado em Base64 (truncado na figura abaixo para maior clareza), que após a decodificação é descriptografado pelo Triple DES (3DES) no modo CBC:



Fig. 4. Descriptografia de dados em um script do PowerShell

A primeira parte do script é uma função com o nome falante heller e é responsável por aumentar os privilégios no sistema e ignorar a proteção do UAC. Duas técnicas são usadas para isso:

Técnica nº 1: usando a tarefa SilentCleanup no agendador de tarefas:

  • A tarefa pode ser iniciada pelo usuário, mas funciona com privilégios elevados. As propriedades da tarefa contêm o caminho para o arquivo executável usando a variável de ambiente% windir%. Você pode alterar o valor da variável de ambiente (por exemplo, especificar a inicialização de um script do PowerShell) e iniciar a tarefa levará à execução do script do PowerShell com direitos de administrador sem aviso ao UAC.
  • Os invasores usam essa técnica nos sistemas Windows 8 e Windows 10.
  • O código que executa essa técnica é idêntico à implementação do módulo para a estrutura Metasploit.



Fig. 5. Parte do script com a técnica de ignorar a tarefa SilentCleanup

Técnica nº 2: usando o utilitário de sistema sysprep.exe e a técnica DLL de carregamento lateral

  • Primeiro, um script auxiliar é criado para reiniciar o script do PowerShell no diretório C: \ Windows \ Temp. Em seguida, é formado um arquivo CAB , que contém a biblioteca DLL auxiliar CRYPTBASE.dll (o script do PowerShell contém as versões x86 e x64 da biblioteca). Usando o utilitário de sistema wusa.exe, esse arquivo é descompactado no diretório C: \ Windows \ System32 \ Sysprep. Em seguida, é iniciado o utilitário de sistema sysprep.exe, que carrega a biblioteca DLL descompactada anteriormente e, por sua vez, executa o script auxiliar. Como resultado, o script do PowerShell será reiniciado com direitos de administrador sem aviso ao UAC.
  • Os invasores usam essa técnica em um sistema Windows 7.
  • Uma descrição detalhada pode ser encontrada neste artigo e exemplos de implementação, por exemplo, neste projeto no Github.



Fig. 6. Parte do script com a técnica de ignorar o utilitário sysprep.exe

Há muitos comentários no script, uma função Administrador de Teste não utilizada, algumas variáveis ​​são usadas sem inicialização: todos esses são sinais de código de empréstimo sem verificar cuidadosamente a brevidade.

Depois de executar o script com os privilégios necessários, a segunda parte do script é executada. Nesta fase, as cargas úteis de destino são decodificadas:

  • a cadeia é decodificada por Base64,
  • o buffer é expandido usando Deflate ,
  • a cadeia é decodificada por Base64.



Fig. 7. Algoritmo de decodificação de carga útil

  • Como resultado, os seguintes arquivos serão criados no sistema:
  • % systemroot% \ help \ hlp11.dat - versão x86 / x64 da RDP Wrapper Library . É usado para expandir a funcionalidade do serviço RDP, incluindo a possibilidade de várias conexões simultâneas. É importante observar que a biblioteca é modificada: no início da execução, a linha c: \ windows \ help \ hlp12.dat é decodificada pelo XOR linear e, em seguida, a biblioteca DLL é carregada no caminho recebido:



Fig. 8. Descriptografia do caminho para a biblioteca DLL e seu carregamento

  • % systemroot% \ help \ hlp12.dat é a versão x86 / x64 do backdoor ServHelper, que será discutida na próxima seção;
  • % systemroot% \ help \ hlp13.dat - arquivo de configuração da RDP Wrapper Library,
  • % systemroot% \ system32 \ rdpclip.exe - um componente do serviço RDP pela capacidade de trocar dados da área de transferência;
  • % systemroot% \ system32 \ rfxvmt.dll é um componente de serviço RDP para transmitir dados usando as tecnologias RemoteFX .

Após extrair e registrar a carga, o script configura a operação correta de seus componentes:

  • altera o proprietário do componente rfxvmt.dll para NT SERVICE \ TrustedInstaller e concede os direitos necessários;
  • Altera o valor da porta para conexões RDP do padrão 3389 para 7201;
  • Adiciona uma conta de serviços de rede ao grupo de administradores locais
  • registra hlp11.dat como um serviço RDP e reinicia o serviço;
  • exclui os arquivos temporários criados.

Conta-gotas RAT → ServHelper


Um dos resultados dos conta-gotas é a DLL hlp12.dat, que é um malware do ServHelper. As versões x86 e x64 da biblioteca podem ser criadas dependendo do tamanho do bit do sistema operacional (não há diferenças fundamentais entre elas). Ambas as versões são escritas em Delphi, empacotadas com UPX 3.95 (x64) e PeCompact 2.20 (x86). Nossos colegas da Proofpoint e Trend Micro apresentaram anteriormente uma análise da distribuição e operação deste backdoor. O arsenal de recursos de nossa amostra, em muitos aspectos, converge com o que já é conhecido: em particular, o algoritmo para descriptografar as seqüências de caracteres usadas ( cifra Vigenere ) não mudou:



Fig. 9. Pseudocódigo para descriptografar cadeias usando a cifra Vigenere

Curiosamente, a criptografia não é implementada para todas as cadeias: por exemplo, os endereços dos domínios de controle e links da Web com componentes adicionais permanecem abertos:



Fig. 10. Domínios não criptografados e links da web

Ao acessar um desses links (hxxp: //letitbe.icu/2.txt), um arquivo criptografado é baixado (MD5: 0528104f496dd13438dd764e747d0778). Ao analisar o final de um arquivo em um editor hexadecimal, você pode observar repetições frequentes do valor do byte 0x09:



Fig. 11. Repita o byte 0x09 no arquivo baixado

Valores de bytes duplicados são um sinal comum do uso de um XOR de byte único como criptografia. Nesse caso, essa teoria é confirmada pelo código:



Fig. 12. Função de criptografia XOR de byte único



Fig. 13. Passando um valor de byte único para a função XOR como argumento

Como resultado da descriptografia, receberemos um arquivo ZIP com o seguinte conteúdo:



Fig. 14. Conteúdo do arquivo ZIP descriptografado

Todos os arquivos são software legítimo para controle remoto do PC NetSupport Manager, que tem sido usado repetidamente por atacantes de vários grupos.



Fig. 15. Descrição do Software NetSupport Manager

Um dos arquivos (client32.ini) é um arquivo de configuração, que contém o endereço do gateway intermediário através do qual o PC da vítima se conectará aos atacantes:



Fig. 16. Endereço dos invasores como gateway do NetSupport Manager

Essa opção faz sentido se a vítima estiver protegida por um firewall e o acesso à Internet for limitado por porta. Para funcionar corretamente na Internet, você deve abrir o acesso a pelo menos duas portas, 80 (HTTP) e 443 (HTTPS), para aumentar a probabilidade de uma conexão bem-sucedida.

Em setembro de 2019, descobrimos várias amostras semelhantes do ServHelper com uma gama significativamente limitada de opções. Usando um deles como exemplo (MD5: 5b79a0c06aec6126364ce1d5cbfedf66): entre os recursos de um arquivo PE executável, existem dados criptografados com uma característica semelhante na forma de um byte repetido:



Fig. 17. Dados criptografados nos recursos do ServHelper
Este é um arquivo ZIP novamente "entupido" com um byte, que contém os mesmos componentes do NetSupport Manager, embora desta vez com um gateway intermediário diferente: 179 [.] 43.146.90: 443.

Conclusões


Neste artigo, examinamos uma das opções para entrega e uso do backdoor TA505 - ServHelper. Além dos curiosos recursos que precederam a operação do componente principal (por exemplo, ignorar o UAC e aumentar os privilégios), notamos metamorfoses interessantes do backdoor principal: a funcionalidade básica (roubo de dados, espionagem e execução de comandos) foi complementada pela incorporação de outra ferramenta para controle remoto do PC - NetSupport RAT. Além disso, as novas versões do ServHelper não tinham mais os principais recursos que o tornam um backdoor completo: agora ele serve apenas como um conta-gotas intermediário para a instalação do NetSupport RAT. Provavelmente, os invasores acharam essa abordagem mais eficaz, tanto em termos de desenvolvimento quanto em termos de recursos de detecção. No entanto, a lista de ferramentas de grupo de interesse para nós não termina aí.

Postado por Alexey Vishnyakov, Positive Technologies
COI
hxxp: //185.225.17.175/wrkn157.exe - o link da web em que o conta-gotas NSIS foi carregado
d2a062ca772fa3ace7c7edadbd95eaf7 - o conta-gotas NSIS original
0cacea3329f35e88a4f9619190e3746f - conta-gotas do PowerShell shipkat.ps1
fb609b00e29689db74c853ca7d69f440 - CRYPTBASE.dll (x86)
843288a35906aa90b2d1cc6179588a26 - CRYPTBASE.dll (x64)
445cd6df302610bb640baf2d06438704 - hlp11.dat (x86)
083f66cc0e0f626bbcc36c7f143561bd - hlp11.dat (x64)
40bae264ea08b0fa115829c5d74bf3c1 - hlp12.dat (x86)
ac72ab230608f2dca1da1140e70c92ad - hlp12.dat (x64)
07f1dc2a9af208e88cb8d5140b54e35e - hlp13.dat
1690e3004f712c75a2c9ff6bcde49461 - rdpclip.exe
dc39d23e4c0e681fad7a3e1342a2843c - rfxvmt.dll
ServHelper C2:
179 [.] 43.156.32
185 [.] 163.45.124
185 [.] 163.45.175
185 [.] 225.17.150
185 [.] 225.17.169
185 [.] 225.17.175
185 [.] 225.17.98
195 [.] 123.221.66
195 [.] 123.246.192
37 [.] 252.8.63
94 [.] 158.245.123
94 [.] 158.245.154
94 [.] 158.245.232
fdguyt5ggs [.] pw
foxlnklnk [.] xyz
gidjshrvz [.] xyz
letitbe [.] icu
pofasfafha [.] xyz
0528104f496dd13438dd764e747d0778 - arquivo ZIP criptografado com o NetSupport RAT
Componentes do NetSupport Manager:
953896600dfb86750506706f1599d415 - cksini.exe
8d9709ff7d9c83bd376e01912c734f0a - client32.exe
2d3b207c8a48148296156e5725426c7f - HTCTL32.DLL
0e37fbfa79d349d672456923ec5fbbe3 - msvcr100.dll
26e28c01461f7e65c402bdf09923d435 - nskbfltr.inf
88b1dab8f4fd1ae879685995c90bd902 - NSM.ini
7067af414215ee4c50bfcd3ea43c84f0 - NSM.LIC
dcde2248d19c778a41aa165866dd52d0 - pcicapi.dll
a0b9388c5f18e27266a31f8c5765b263 - PCICHEK.DLL
00587238d16012152c2e951a087f2cc9 - PCICL32.DLL
2a77875b08d4d2bb7b654db33a88f16c - remcmdstub.exe
eab603d12705752e3d268d86dff74ed4 - TCCTL32.DLL
185 [.] 225.17.66: 443 - Endereço do NetSupport RAT Gateway
5b79a0c06aec6126364ce1d5cbfedf66 - ServHelper com arquivo NetSupport RAT
179 [.] 43.146.90: 443 - Endereço do NetSupport RAT Gateway

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


All Articles