Atualização do grupo Sednit: uma análise sobre a família Zebrocy

Atualização do grupo Sednit: uma análise sobre a família de malware Zebrocy

Análise realizada por pesquisadores da ESET sobre variantes que apareceram regularmente a partir de 2017 indicam que Zebrocy está sendo atualizada e melhorada de forma ativa por seu(s) criador(es).

Análise realizada por pesquisadores da ESET sobre variantes que apareceram regularmente a partir de 2017 indicam que Zebrocy está sendo atualizada e melhorada de forma ativa por seu(s) criador(es).

O Sednit, também conhecido como APT28, Fancy Bear, Sofacy ou STRONTIUM ─ é um grupo de cibercriminosos que operam desde 2004, ou inclusive antes, e cujo principal objetivo é roubar informações confidenciais de alvos específicos.

Quase no final de 2015, começamos a observar um novo componente propagado pelo grupo: um downloader para o principal backdoor do Sednit: XAgent. No início de 2017, a Kaspersky mencionou pela primeira vez este componente em seu relatório de tendências APT e recentemente escreveu um artigo onde a ameaça era descrita com o nome de Zebrocy.

Este novo componente é uma família de malware que inclui downloaders e backdoors escritos em Delphi e AutoIt. Esses componentes têm o mesmo papel no ecossistema do Sednit como no do Seduploader – o primeiro estágio do malware.

Vimos que algumas das vítimas que foram alvo do Zebrocy estão localizadas no Azerbaijão, Bósnia e Herzegovina, Egito, Geórgia, Irã, Cazaquistão, Rússia, Arábia Saudita, Sérvia, Suíça, Tajiquistão, Turquia, Turcomenistão, Ucrânia, Uruguai e Zimbábue. Esses alvos incluem embaixadas, ministérios de relações exteriores e diplomatas.

A família Zebrocy é composta por três componentes. De acordo com a ordem de aparição, eles são: um downloader Delphi, um downloader AutoIt e um backdoor Delphi. A imagem 1 mostra a relação entre cada um desses componentes.

Neste artigo, descreveremos essa família e como ela pode coexistir com a antiga ferramenta de reconhecimento Seduploader, assim como no final falaremos sobre certas semelhanças e diferenças do Downdelph.

Imagem 1 – Ecossistema do Sednit

A Imagem 1 mostra o malware ativo e os métodos de ataque usados ​​pelo Sednit, onde o uso de anexos via e-mail é o principal ponto de entrada do ecossistema Sednit. De acordo com um artigo publicado recentemente pela equipe da Palo Alto Networks, DealersChoice continua sendo usado. Tanto o Seduploader como o Zebrocy estão sendo ativamente propagados pelo grupo Sednit através de anexos de e-mail. Finalmente, após uma fase de reconhecimento, Xagent e Xtunnel são implantados em direção a alvos considerados interessantes por aqueles que os operam.

Métodos de ataque

O primeiro componente de um ataque baseado no Zebrocy chega como um e-mail. As vítimas são instigadas a abrir o anexo de um e-mail que pode ser um documento do Microsoft Office ou um arquivo.

Documentos maliciosos

Os documentos maliciosos usados ​​pelo Sednit baixam o payload que é responsável pelo primeiro estágio através do Visual Basic para aplicaciones (VBA), exploits ou até mesmo usando o Dynamic Data Exchange (DDE). No final de 2017, o grupo Sednit lançou duas campanhas em que enviou dois tipos de documentos maliciosos. O primeiro foi chamado Syria – New Russia provocations.doc eo segundo foi chamado Note Letter Mary Christmas Card.doc.

Imagem 2 – Documentos maliciosos do Zebrocy

Ambos os documentos maliciosos contêm uma macro VBA que cria um arquivo nomeado aleatoriamente em % TEMP%. O malware executável é então decodificado e gravado nesse arquivo, que é então executado por meio de um comando do PowerShell ou por meio do Scriptable Shell Objects.

Exemplo do Visual Basic e primeiro estágio chamado Syria – New Russia provocations.doc

Arquivos

Algumas campanhas usaram um arquivo para injetar o primeiro estágio no computador da vítima, em vez de usá-lo através de macros de documentos do Office. Além disso, provavelmente, esses arquivos chegaram ao destino como anexos em um e-mail.

Todo o primeiro estágio da família Zebrocy é composto por executáveis ​​com um ícone e um nome de arquivo semelhante a um documento que tenta enganar a vítima, assim como mostra a Imagem 3.

Imagem 3 – Primera fase de Zebrocy utilizando el ícono de un documento de Word

Downloader Delphi

Um downloader Delphi é o primeiro estágio da família Zebrocy, embora tenhamos visto algumas campanhas do grupo Sednit nas quais eles usam o downloader AutoIt. A maioria desses downloaders binários Delphi usam ícones de documentos do Office ou outros como aqueles na biblioteca do Windows, e às vezes esses exemplos são empacotados com o UPX, um compressor executável gratuito. O objetivo nesta primeira etapa é recuperar o máximo de informações do computador da vítima.

Quando o malware é iniciado, uma janela pop-up aparece com uma falsa mensagem de erro que inclui o nome do arquivo binário que foi droppeado. Por exemplo, se o nome do arquivo for srsiymyw.exe, o nome do arquivo que aparece no pop-up será srsiymyw.doc (Imagem 4). O objetivo desse pop-up é distrair o usuário e fazê-lo acreditar que nada de estranho está acontecendo em seu computador.

Imagem 4 – Pop-up do downloader Delphi

De fato, o downloader está ocupado criando um arquivo em % TEMP% com um nome de arquivo codificado no binário (embora neste estágio o arquivo esteja vazio). A persistência é implementada adicionando uma chave de registro do Windows em HKCU\Software\Microsoft\Windows\CurrentVersion\Run\ com o caminho do nome do arquivo codificado.

Para reunir informações, o malware cria um novo processo que utiliza a função CreateProcess da API do Windows com cmd.exe / c SYSTEMINFO & TASKLIST como argumento lpCommandLine. Depois que as informações são recuperadas, ele envia o resultado por meio de uma solicitação HTTP POST para o servidor C&C especificado no binário. Esta ação é repetida até receber o próximo estágio.

Downloader Delphi HTTP POST request

Depois que a solicitação é enviada, o servidor C&C responde enviando o próximo estágio, desde que o alvo infectado seja considerado de interesse pelo operador. O tempo entre o envio do relatório e o recebimento do payload é de algumas horas. Este próximo estágio é gravado no arquivo criado anteriormente e, em seguida, é executado.

Downloader AutoIt

O downloader AutoIt é outra camada da fase de reconhecimento durante a infecção do computador da vítima. A partir daqui, dois cenários são possíveis: no primeiro cenário possível, o primeiro estágio é o downloader Delphi e o segundo estágio – que é o downloader AutoIt – consiste em um downloader mais leve. No segundo cenário, o downloader AutoIt é o primeiro estágio e tem todas as funcionalidades do downloader Delphi e, inclusive, ainda mais.

Quando o downloader AutoIt é o primeiro dos estágios, ele executa muitas funções de reconhecimento. Inclusive compartilha algumas semelhanças com o downloader Delphi, como o mecanismo de persistência e a janela pop-up, mas adiciona mais detalhes à fase de reconhecimento do que o Downloader Delphi. Em seguida, compartilhamos uma lista (não muito extensa) de seus recursos:

  • Detecta sandbox e ambientes virtuais
  • Obtém uma lista dos programas instalados (via HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
  • Obtém a versão do Windows (32-bit ou 64-bit)
  • Obtém a lista de processos
  • Obtém informações do disco rígido
  • Obtém capturas de tela
  • Obtém informações diversas informações sobre o computador da vítima usando o Windows Management Instrumentation (WMI) Objects, provavelmente inspirados pelo código desse repositório do GitHub.

Dependendo do estágio anterior, o nome do binário AutoIt pode ser diferente. Se o malware for lançado como o primeiro estágio, ele terá um nome de documento. Caso contrário, terá o nome codificado com o downloader Delphi, conforme podemos ver na Tabela 1.

Table 1: AutoIt binary filenames, depending of the first stage

First Stage

AutoIt binary Filenames

Delphi downloader

csrsvc.exe

Email attachment

Protocol List_20160606.exe

O objetivo deste estágio é mais ou menos igual ao do anterior. Muitas versões estão disponíveis, mas todas incluem pelo menos o código para poder:

  • Recuperar el número de serie del disco rígido C:
  • Usar funciones de red de winhttp.dll o winhttp.au3
  • Ejecutar el payload recibido desde el servidor C&C

Da mesma forma que o downloader Delphi tem uma janela pop-up, o AutoIt também tem uma pop-up quando vem a partir do anexo de um e-mail – o AutoIt é o primeiro estágio. A pop-up está relacionada ao programa representado pelo ícone do binário. Por exemplo, um downloader AutoIt com ícone do Adobe Reader exibe uma pop-up informando que o arquivo PDF que a vítima pretende abrir está corrompido. Um binário AutoIt com um ícone do Word exibirá o seguinte po-pup solicitando a senha. Embora a senha não seja considerada neste momento, acreditamos que é simplesmente uma forma de distrair a vítima da atividade realmente maliciosa do código.

Imagem 5 – Popup de Word downloader Delphi

Backdoor Delphi

O backdoor Delphi é a fase final da cadeia de componentes que compõem o Zebrocy. No passado, vimos o Zebrocy baixar o backdoor principal do grupo Sednit, chamado Xagent.

Ao contrário dos componentes anteriores, ele possui um número de versão interno que parece não estar relacionado a uma campanha específica. Este número de versão evoluiu ao longo do tempo, como pode ser visto na Tabela 2:

Table 2: Delphi backdoor internal version history

PE timestampversion
2015-12-282.1
2016-01-062.2
2016-01-252.3
2016-02-032.4
2016-03-142.5
2016-04-083.0
2016-04-263.2
2016-06-014.4
2016-09-085.0
2016-12-155.1
2017-06-017.0
2017-09-268.0
2017-10-128.1
2017-11-128.2
2017-12-268.5
2018-01-098.6
2017-12-1810.1
2018-01-0910.2
2018-01-1610.3
2018-01-1811.0
2018-02-0712.0
2018-03-0513.0
2018-03-0613.1
2018-03-1414.0
2018-03-2814.1

É importante esclarecer que não temos o panorama completo e podemos ter perdido algumas versões do backdoor. Além disso, há alguma sobreposição entre as versões, o que indica que algumas versões mais antigas ainda são usadas ao mesmo tempo que as novas versões.

Nos próximos parágrafos, detalharemos algumas das diferenças que vimos no malware durante sua evolução. O backdoor incorpora um bloco de configuração cujos valores mudam entre as diferentes amostras, embora a lista de itens configuráveis ​​permaneça sempre a mesma. No entanto, a maneira como os dados de configuração são armazenados na amostra do malware evoluiu com o tempo.

A primeira versão do backdoor absorveu os dados de configuração em texto simples, como pode ser visto na imagem 6.

Imagem 6 – dados de configuração em texto simples do backdoor Delphi

Por isso, em versões posteriores, os autores do malware codificaram os dados de configuração em cadeias hexadecimais, como pode ser visto na imagem 7.

Imagem 7 – dados de configuração codificada do backdoor Delphi

Nas versões mais recentes, os dados de configuração são criptografados dentro dos recursos usando o algoritmo AES, enquanto que, nas versões mais antigas, eram armazenados na seção .text

Os dados de configuração contêm:

  • Chaves AES para se comunicar com o servidor C&C
  • Endereços (URLs) com padrões que diferem de uma amostra para outra
  • A versão do malware
  • A chave/valor do registro do Windows que garante a persistência do backdoor
  • O caminho onde os arquivos temporários são armazenados (% APPDATA%)
  • Os nomes dos diretórios escondidos que serão criados para armazenar os arquivos temporários: os nomes dos diretórios são concatenados com a variável de ambiente (% APPDATA%)

Depois que o malware é configurado, ele executa chamadas para outras funções por meio da função SetTimer da API do Windows. Essas chamadas permitem que o operador manipule várias funções e comandos de backdoor.

  • Realiza capturas de tela do desktop da vítima
  • Registra as teclas digitadas
  • Cria uma lista dos recursos dos disco e das redes
  • Lê e escreve no registro do Windows
  • Copia, move ou exclui um objeto do sistema de arquivos (file system)
  • Executa arquivos ou cria tarefas programadas

O número de comandos que o backdoor manipula ─ cerca de 30 ─ difere de uma versão para a outra. Para se comunicar com o servidor C&C, o backdoor armazena o relatório dessas funções em um arquivo temporário. Em seguida, ele lê o conteúdo do arquivo temporário e o envia. Esses arquivos temporários são armazenados em um dos diretórios escondidos criados durante a fase de configuração.

Backdoor Delphi POST request

O conteúdo do tempfilename é a saída de qualquer comando executado. O conteúdo é criptografado usando o algoritmo AES-256-ECB com a primeira chave AES dos dados de configuração e, em seguida, a saída é codificada em formato hexadecimal. O conteúdo enviado ao servidor C&C varia de um comando para outro, mas todos contêm pelo menos o número de série do disco rígido e os primeiros quatro bytes do nome do computador. Por exemplo, HELLO corresponde ao primeiro pacote enviado pelo backdoor para estabelecer contato com o servidor C&C. Como mostrado abaixo, ele contém a data em que a tarefa foi iniciada, o número da versão interna do backdoor Delphi, o número de série do HDD, o nome do computador (primeiros quatro bytes), o comando e a data de quando o backdoor foi executado.

Start: 1/4/2018 1:37:00 PM – [<vx.x>]:42424242ESET-HELLO-[2018-04-04 01-37-00]-315.TXT.

A segunda chave AES nos dados de configuração é usada para descriptografar a resposta do servidor C&C. Como o Seduploader, esse backdoor é usado para implantar o Xagent no computador da vítima, depois de ter sido considerado uma máquina de interesse do operador após a fase de reconhecimento.

Conclusão

Um componente escrito em Delphi não é algo novo para o grupo Sednit, já que anteriormente utilizava esta mesma linguagem para Downdelph. No entanto, mesmo sem este último componente ter algo em comum com o Downdelph “tecnicamente falando”, há alguns pontos que vale a pena mencionar.

  • Os métodos de implementação são os mesmos, pois ambos são entregues como anexos em um e-mail.
  • A última vez que vimos a Downdelph foi em setembro de 2015, e a primeira amostra ativa do Zebrocy foi vista em novembro de 2015.
  • Ambos estão escritos em Delphi

Podemos supor que o grupo Sednit abandonou um componente e começou a desenvolver um novo. No entanto, uma coisa que não mudou para o grupo são os erros cometidos:

  • O nome da tarefa programada: Windiws
  • O nome da função que recupera as informações do sistema no downloader AutoIt é _SOFWARE ()
  • Mary em vez de Merry em Note Letter Mary Christmas Card.doc

A matriz de bytes usada pelo backdoor Delphi como chaves AES-256 tem 38 bytes de comprimento em vez de 32. Não é um erro de ortografia, mas apenas falta de atenção.

Vimos que o Zebrocy tem sido amplamente utilizado pelo grupo Sednit nos últimos dois anos. Nossa análise de várias das novas variantes que apareceram regularmente desde 2017 indica que o Zebrocy permanece ativo e sob constante manutenção por seu(s) autor(es). Portanto, podemos considerá-lo como uma das ferramentas estáveis do arsenal do grupo Sednit – uma ferramenta que merece ser monitorada de perto.

IoCs

Malicious documents

SHA-1ESET Detection nameFilename
4f07d18475601d0492cbf678ee0f0860c729910eVBA/TrojanDropper.Agent.YCNote Letter Mary Christmas Card.doc
f10b2c052afc07e2dec9dbe816031059fdc900baVBA/TrojanDropper.Agent.AAKSyria - New Russia provocations.doc

Delphi downloader

SHA-1ESET Detection name
00b39f2deaf1f1fc29e5acb63f4d1100e04fd701Win32/TrojanDownloader.Delf.CFS
07e44b44c5f1043d16f6011a2cf0d2e7c5a52787Win32/TrojanDownloader.Delf.CFG
0f946f619ae8e2181a5bd76c8af03347742765c6Win32/TrojanDownloader.Delf.CGW
2900ed173a9f5dc99f905942a6be595cc6f03387Win32/TrojanDownloader.Delf.CFG
2b5a7f4e054d0130883c8821b629121e0228bf54Win32/TrojanDownloader.Delf.CIP
36b5e59a01e7f244d4a3bbb539e57aa468115dc8Win32/TrojanDownloader.Delf.CGB
37bd951c483da057337ef8f38d6e48051cbb39d0Win32/TrojanDownloader.Delf.CHC
41686703ce9e9aec64b6ad1c516746751219bc62Win32/TrojanDownloader.Delf.CFS
4e6470f4a245efaa138c8c6eedb046e916706383Win32/TrojanDownloader.Delf.CGW
54b14fc84f152b43c63babc46f2597b053e94627Win32/TrojanDownloader.Delf.CGB
afd5a60b7fff4deea15f7011339ad2cc2987a937Win32/TrojanDownloader.Delf.CGW
d4ab51bc5c26183771e3358d76e348943f9dd2fcWin32/TrojanDownloader.Delf.CGB
d6fdc72792ee736b8d606d40d72cb89d6e8a3e18Win32/TrojanDownloader.Delf.CFU

AutoIt downloader

SHA-1 ESET Detection name
0cd61d367dd0b13000774ab77abf3d4cfb713c8eWin32/TrojanDownloader.Autoit.ODO
185ab7a371b58ff367c155ec0dabe28842d340bdWin32/TrojanDownloader.Autoit.OBG
267abd7105ac26d5cb6ecb96292f83708f64b994Win32/TrojanDownloader.Autoit.OHC
4a6dcbccab5344388b331d543cc2260ca531c7caWin32/Autoit.CT
62dcf2f33ecc6014fa9a10f4e9ac9fd9bb0a6d23Win32/TrojanDownloader.Autoit.OCO
b8b847d3d0139db68dba730b3424b29dcb40b3c7Win32/TrojanDownloader.Autoit.OMA
c0271dbb02636402742c390ffbeee6418f696668Win32/TrojanDownloader.Autoit.OMB
d379b94a3eb4fd9c9a973f64d436d7fc2e9d6762Win32/Spy.Autoit.EI
dabeadf0a9af3a8a0802f8445670806cd7671b1dWin32/TrojanDownloader.Autoit.OCI

Delphi backdoor

SHA-1ESET Detection name
0983d940ba42135106bf7a1e87ed5a1975fc7eadWin32/Delf.BFF
226083c7190f1a939d5b7b352400450690d59f65Win32/Delf.BDW
245868d6805c66181808973e93f23293d6d2f7d1Win32/Delf.BDT
2c01ae417e5de213845b1ed46d4e82d45edd598dWin32/Delf.BBP
4ccbe222bd97dc229b36efaf52520939da9d51c8Win32/Delf.BFC
51ae516792570bcd069a657c27859cd3fdc07d00Win32/Delf.BBP
55179f0c6bce5a37311a44efe3f9845096c09668Win32/Delf.AWE
6fd7ce97061169b835ea77976651b5bf20aca4efWin32/TrojanDownloader.Delf.BRV
7349843e4dac1226ad6ce3e3cda8c389dd599548Win32/TrojanDownloader.Delf.BRV
7b5c223a4968cc2190c1b5444cad47187d27ec50Win32/TrojanDownloader.Delf.BRV
83882e13b369986b513f4aae245c112b82ec2097Win32/Delf.BEB
8aedf7a462024acf72d708c89230e4f02d94bc78Win32/Delf.BDT
8bd56b580974ae195e9f92b3aa525547d33434c1Win32/Delf.BEC
9beacd8e145fa01e16409d44d8b9470af6c7afd8Win32/Delf.BBP
a172fe6e91170f858c8ce5d734c094996bdf83d0Win32/Delf.BDT
ae93b6ec2d56512a1c7e8c053d2a6ce6fdfb7e4cWin32/Delf.BEX
c08d89c7f7be69d5d705d4ac7e24e8f48e22faafWin32/Delf.BDW
c2f3ca699aef3d226a800c2262efdca1470e00dcWin32/Delf.AVP
cdf9c24b86bc9a872035dcf3f53f380c904ed98bWin32/Delf.BEH
f63e29621c8becac47ae6eac7bf9577bd0a37b73Win32/Delf.AVT
fea8752d90d2b4f0fc49ac0d58d62090782d8c5bWin32/Delf.BFN

URLs

http://142[.]0.68.2/test-update-16-8852418/temp727612430/checkUpdate89732468.php
http://142[.]0.68.2/test-update-17-8752417/temp827612480/checkUpdate79832467.php
http://185[.]25.50.93/syshelp/kd8812u/protocol.php
http://185[.]25.50.93/tech99-04/litelib1/setwsdv4.php
http://185[.]25.50.93/techicalBS391-two/supptech18i/suppid.php
http://185[.]25.51.114/get-help-software/get-app-c/error-code-lookup.php
http://185[.]25.51.164/srv_upd_dest_two/destBB/en.php
http://185[.]25.51.198/get-data/searchId/get.php
http://185[.]25.51.198/stream-upd-service-two/definition/event.php
http://185[.]77.129.152/wWpYdSMRulkdp/arpz/MsKZrpUfe.php
http://188[.]241.68.121/update/dB-Release/NewBaseCheck.php
http://194[.]187.249.126/database-update-centre/check-system-version/id=18862.php
http://194[.]187.249.126/security-services-DMHA-group/info-update-version/id77820082.php
http://213[.]103.67.193/ghflYvz/vmwWIdx/realui.php
http://213[.]252.244.219/client-update-info/version-id/version333.php
http://213[.]252.244.219/cumulative-security-update/Summary/details.php
http://213[.]252.245.132/search-release/Search-Version/crmclients.php
http://213[.]252.245.132/setting-the-os-release/Support-OS-release/ApiMap.php
http://220[.]158.216.127/search-sys-update-release/base-sync/db7749sc.php
http://222[.]15.23.121/gft_piyes/ndhfkuryhs09/fdfd_iunb_hhert_ps.php
http://46[.]102.152.127/messageID/get-data/SecurityID.php
http://46[.]183.223.227/services-check-update/security-certificate-11-554/CheckNow864.php
http://80[.]255.6.5/daily-update-certifaicates52735462534234/update-15.dat
http://80[.]255.6.5/LoG-statistic8397420934809/date-update9048353094c/StaticIpUpdateLog23741033.php
http://86[.]105.18.106/apps.update/DetailsID/clientPID-118253.php
http://86[.]105.18.106/data-extract/timermodule/update-client.php
http://86[.]105.18.106/debug-info/pluginId/CLISD1934.php
http://86[.]105.18.106/ram-data/managerId/REM1234.php
http://86[.]105.18.106/versionID/Plugin0899/debug-release01119/debug-19.app
http://86[.]105.18.111/UpdateCertificate33-33725cnm^BB/CheckerNow-saMbA-99-36^11/CheckerSerface^8830-11.php
http://86[.]106.131.177/srvSettings/conf4421i/support.php
http://86[.]106.131.177/SupportA91i/syshelpA774i/viewsupp.php
http://89[.]249.65.166/clientid-and-uniqued-r2/the-differenceU/Events76.php
http://89[.]249.65.166/int-release/check-user/userid.php
http://89[.]249.65.234/guard-service/Servers-ip4/upd-release/mdb4
http://89[.]40.181.126/verification-online/service.911-19/check-verification-88291.php
http://89[.]45.67.153/grenadLibS44-two/fIndToClose12t3/sol41.php
http://89[.]45.67.153/supportfsys/t863321i/func112SerErr.php
http://93[.]113.131.117/KB7735-9927/security-serv/opt.php
http://93[.]113.131.155/Verifica-El-Lanzamiento/Ayuda-Del-Sistema/obtenerId.php
http://93[.]115.38.132/wWpYdSMRulkdp/arpz/MsKZrpUfe.php
http://rammatica[.]com/QqrAzMjp/CmKjzk/EspTkzmH.php
http://rammatica[.]com/QqrAzMjp/CmKjzk/OspRkzmG.php

Discussão