Entre os incidentes de cibersegurança relacionados com os malwares mais importantes dos últimos anos está o ataque à rede elétrica ucraniana (que levou a apagões sem precedentes por dois anos seguidos) e o devastador surto do ransomware NotPetya. Em seguida, convidamos você a conferir cuidadosamente a relação entre esses dois incidentes.

O primeiro apagão da história provocado por um malware ocorreu em dezembro de 2015 e foi causado pelo pacote de ferramentas maliciosas com recursos do APT conhecido como BlackEnergy. Os pesquisadores da ESET têm acompanhado a atividade do grupo por trás da BlackEnergy antes e depois do evento histórico. Após o blecaute de 2015, o grupo parece ter parado de usar ativamente o BlackEnergy e evoluiu para o que chamamos de TeleBots.

É importante esclarecer que quando nos referimos a "grupos APT" estabelecemos conexões baseadas em indicadores técnicos, como similaridades de código, infraestrutura compartilhada de C&C, cadeias de execução de malware, entre outras características. Em geral, não nos envolvemos diretamente na investigação e identificação de quem desenvolve o malware e/ou quem implementa ou interage com ele. Uma vez que o termo "grupo FFW" costuma estar associado aos indicadores de malware acima mencionados e é frequentemente usado simplesmente para categorizar, nos distanciamos da especulação sobre a atribuição de ataques a países ou governos.

Observamos e documentamos as ligações entre o ataque BlackEnergy (não apenas as realizadas contra a rede elétrica ucraniana, mas contra vários setores e alvos de alto valor) e uma série de campanhas, principalmente contra o setor financeiro ucraniano, pelo grupo TeleBots. Em junho de 2017, quando muitas grandes corporações em todo o mundo foram impactadas pelo ransomware Diskcoder.C (também conhecido como Petya e NotPetya) descobrimos que o surto começou a se espalhar a partir de empresas que haviam sido afetadas com o backdoor TeleBots, como consequência de ter comprometido um popular software financeiro MEDoc.

Então, como é que o Industroyer, o malware sofisticado usado para causar o apagão de dezembro de 2016, tem a ver com tudo isso? Pouco depois de divulgarmos publicamente nossas descobertas, algumas empresas de segurança e meios de comunicação começaram a especular que o Industroyer foi criado pelo grupo BlackEnergy/Telebots. No entanto, nenhuma evidência concreta foi divulgada publicamente até o momento.

Em abril de 2018, descobrimos uma nova atividade do grupo TeleBots: uma tentativa de desenvolver um novo backdoor, detectado pela ESET como Win32/Exaramel. Nossa análise sugere que este backdoor TeleBot é uma versão melhorada do backdoor Industroyer - a primeira evidência que faltava.

Análise do backdoor Win32/Exaramel 

O backdoor Exaramel é inicialmente executado por um dropper. Metadados neste dropper sugerem que o backdoor é compilado usando o Microsoft Visual Studio antes de ser implementado no computador da vítima.

Imagem 1. PE timestamp no dropper do backdoor Win32/Exaramel.

Uma vez executado, o dropper executa o binário do backdoor Exaramel dentro do diretório do Windows system e cria e inicia um serviço do Windows chamado wsmproav com a descrição "Windows Check AV". O nome do arquivo e a descrição do serviço do Windows são hardcodeados no dropper.

Imagem 2. Detalhes da configuração no registro do serviço do Windows criado pelo backdoor Win32/Exaramel.

Além disso, o dropper grava a configuração do backdoor, dentro do registro do Windows, no formato XML.

Imagem 3. Configuração XML do backdoor Win32/Exaramel.

A configuração contém vários blocos:

Interval - tempo usado para a função "sleep", em milissegundos

Servers - lista de servidores de comando e controle (C&C)

Check - site usado para determinar se o host tem uma conexão disponível com a Internet

Proxy - servidor proxy na rede host

Storage - caminho usado para armazenar arquivos programados para serem filtrados

Como você pode ver na primeira linha da configuração, os cibercriminosos estão agrupando seus alvos de ataque de acordo com a solução de segurança que usam. Comportamento semelhante pode ser encontrado no set de ferramentas do Industroyer - especificamente, alguns backdoors do Industroyer mascarados como serviços antivírus (exibidos sob o nome avtask.exe) e usados ​​na mesma forma de agrupamento

Outro fato interessante é que o backdoor usa servidores C&C com nomes de domínio que imitam domínios que pertencem a ESET. Neste sentido, além do esetsmart[.]org na configuração do backdoor, encontramos outro domínio similar: um10eset[.]net, que foi utilizado pela versão recentemente descoberta do Telebots Malware para Linux. É importante mencionar que esses servidores controlados pelos invasores não têm qualquer relação com a infraestrutura de servidores legítimos da ESET. Até agora não vimos Exaramel usar domínios que se passam ​​por outras empresas de segurança.

Uma vez que o backdoor é executado, ele se conecta ao servidor C&C e recebe comandos para serem executados. Veja uma lista de comandos disponíveis:

  • Executar processos
  • Executar processos como um usuário específico do Windows
  • Gravar dados em um arquivo localizado em um caminho específico
  • Copiar arquivos dentro de um subdiretório de armazenamento (Upload file)
  • Executar shell command
  • Executar shell command de um usuário específico do Windows
  • Executar código VBS usando MSScriptControl.ScriptControl.1

O código do loop de comando e a implementação dos seis primeiros comandos são muito semelhantes aos encontrados em um backdoor usado no set de ferramentas do Industroyer.

Imagem 4. Comparação entre o código de descompilação do backdoor Win32/Exaramel (à esquerda) e o do backdoor Win32/Industroyer (à direita).

Ambas as famílias de malware usam um arquivo de relatório para armazenar os resultados de saída dos comandos do shell executados e dos processos iniciados. No caso do backdoor Win32/Industroyer, o arquivo de relatório é armazenado em uma pasta temporária com um nome de arquivo aleatório. No caso do backdoor Win32/Exaramel, o arquivo de relatório é denominado report.txt e seu caminho de armazenamento é definido no arquivo de configuração do backdoor.

Para redirecionar um padrão de saída (stdout) e um padrão de erro (stderr) para o arquivo de relatório, ambos os backdoors definem os parâmetros hStdOutput e hStdError para uma manipulação do arquivo de relatório. Esta é outra semelhança de projeto entre essa família de malware.

Imagem 5. Comparação entre o código descompilado do backdoor Win32/Exaramel (na parte superior) e o backdoor Win32/Industroyer (na parte inferior).

Se os operadores do malware quiserem exfiltrar arquivos do computador da vítima, eles só precisarão copiar esses arquivos para o subdiretório de dados do caminho de armazenamento definido na configuração. Uma vez que o backdoor está prestes a fazer uma nova conexão com o servidor C&C, ele automaticamente comprime e criptografa todos esses arquivos antes de enviá-los.

A principal diferença entre o backdoor usado pelo Industroyer e este novo backdoor do TeleBots, é que este último usa o formato XML para comunicação e configuração em vez de um formato binário personalizado.

Ferramentas maliciosas para roubar senhas

Junto com o backdoor do Exaramel, esse grupo usa algumas de suas ferramentas antigas, incluindo algumas para roubar senhas (conhecidas internamente por invasores como CredRaptor ou PAI) e Mimikatz um pouco modificado.

O CredRaptor, a ferramenta para roubar senhas que é conhecida desde 2016, foi ligeiramente melhorada. Ao contrário das versões anteriores, ela coleta senhas salvas não apenas de navegadores, mas também do Outlook e de vários clientes do FTP. Aqui está uma lista dos recursos:

  • BitKinex FTP
  • BulletProof FTP Client
  • Classic FTP
  • CoffeeCup
  • Core FTP
  • Cryer WebSitePublisher
  • CuteFTP
  • FAR Manager
  • FileZilla
  • FlashFXP
  • Frigate3
  • FTP Commander
  • FTP Explorer
  • FTP Navigator
  • Google Chrome
  • Internet Explorer 7 – 11
  • Mozilla Firefox
  • Opera
  • Outlook 2010, 2013, 2016
  • SmartFTP
  • SoftX FTP Client
  • Total Commander
  • TurboFTP
  • Windows Vault
  • WinSCP
  • WS_FTP Client

Essas melhorias permitem que invasores coletem credenciais de webmasters para sites e credenciais para servidores em infraestruturas internas. Uma vez que eles tenham acesso a esses servidores, os invasores podem instalar backdoors adicionais. Geralmente, esses servidores são operados por sistemas operacionais diferentes do Windows, portanto, os invasores precisam adaptar seus backdoors.

Na verdade, durante nossa resposta a incidentes, descobrimos um backdoor para Linux usado pelo TeleBots, que chamamos de Linux/Exaramel.A.

Análise do backdoor Linux/Exaramel

O backdoor é escrito na linguagem de programação Go e compilado como um binário ELF de 64 bits. Os cibercriminosos podem implantar o backdoor em um diretório escolhido com qualquer nome.

Se o backdoor for executado pelos cibercriminosos com a string "none" como um argumento na linha de comando, tente usar mecanismos de persistência para iniciar automaticamente após a reinicialização. Se o backdoor não for executado com a conta root, ele usará o arquivo crontab. Da mesma forma, se ele for executado como root, suportará diferentes sistemas de init do Linux. Ele determinará qual sistema init é o que está atualmente em uso através da execução do comando:

strings /sbin/init |  awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit; }'

Com base nos resultados desse comando, ele usa os seguintes locais codificados para sua persistência:

Init system Location
sysvinit /etc/init.d/syslogd
upstart /etc/init/syslogd.conf
systemd /etc/systemd/system/syslogd.service

Durante a inicialização, o backdoor tenta abrir um arquivo de configuração armazenado no mesmo diretório que o backdoor com o nome config.json. Se esse arquivo de configuração não existir, um novo arquivo será criado. A configuração é criptografada usando a chave s0m3t3rr0r através do algoritmo RC4.

Imagem 6. Configuração da descriptografia JSON do backdoor Linux/Exaramel.

O backdoor se conecta ao servidor C&C hardcodeado (por padrão é 176.31.225 [.] 204 de acordo com o exemplo que vimos até o momento) ou ao servidor C&C listado nos arquivos de configuração do Hosts. A comunicação é enviada via HTTPS. O backdoor suporta os seguintes comandos:

Command Purpose
App.Update Updates itself to a newer version
App.Delete Deletes itself from the system
App.SetProxy Sets proxy in configuration
App.SetServer Updates C&C server in configuration
App.SetTimeout Sets timeout value (time between connections to C&C server)
IO.WriteFile Downloads a file from a remote server
IO.ReadFile Uploads a file from local disk to C&C server
OS.ShellExecute Executes a shell command

Conclusão

A descoberta do Exaramel mostra que o grupo TeleBots ainda está ativo em 2018 e que os atacantes continuam trabalhando para melhorar suas ferramentas e táticas.

A forte similaridade no nível de código entre Exaramel e o principal backdoor Industroyer é a primeira evidência apresentada publicamente e que liga Industroyer a TeleBots e, portanto, NotPetya a BlackEnergy. Enquanto a possibilidade de um falso aviso (ou a coincidência de que o código é compartilhado com outro ator do cibercrime) deve sempre ser lembrado ao fazer uma atribuição dessa natureza, neste caso, consideramos improvável.

Também é de particular interesse o fato de que os invasores começaram a usar os domínios temáticos da ESET em suas operações. Deve-se ter em conta que esses domínios foram usados ​​por cibercriminosos com o objetivo de ocultar a atividade maliciosa de sua rede de defensores e que não há nenhuma conexão com a infraestrutura de servidores da ESET. A lista de domínios legítimos usados ​​pelos produtos da ESET pode ser visualizada aqui.

Deve-se ter em conta que esses backdoors Exaramel para Windows e Linux foram descobertos em uma organização e não em uma indústria. A ESET compartilhou suas descobertas com autoridades ucranianas de pesquisa e graças a essa cooperação foi possível localizar e prevenir o ataque satisfatoriamente. Da mesma forma, os pesquisadores da ESET continuarão monitorando a atividade desse grupo.

Indicadores de Comprometimento (IoCs)

ESET detection names
Win32/Exaramel trojan
Win32/Agent.TCD trojan
Linux/Agent.EJ trojan
Linux/Exaramel.A trojan
Win32/PSW.Agent.OEP trojan
Win32/RiskWare.Mimikatz.Z application
Win64/Riskware.Mimikatz.AI application

SHA-1 HASHES
TeleBots Win32/Exaramel backdoor
65BC0FF4D4F2E20507874F59127A899C26294BC7
3120C94285D3F86A953685C189BADE7CB575091D
Password Stealer
F4C4123849FDA08D1268D45974C42DEB2AAE3377
970E8ACC97CE5A8140EE5F6304A1E7CB56FA3FB8
DDDF96F25B12143C7292899F9D5F42BB1D27CB20
64319D93B69145398F9866DA6DF55C00ED2F593E
1CF8277EE8BF255BB097D53B338FC18EF0CD0B42
488111E3EB62AF237C68479730B62DD3F52F8614
Mimikatz
458A6917300526CC73E510389770CFF6F51D53FC
CB8912227505EF8B8ECCF870656ED7B8CA1EB475
Linux/Exaramel
F74EA45AD360C8EF8DB13F8E975A5E0D42E58732

C&C servers
um10eset[.]net (IP: 176.31.225.204)
esetsmart[.]org (IP: 5.133.8.46)