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.
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.
Além disso, o dropper grava a configuração do backdoor, dentro do registro do Windows, no formato XML.
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.
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.
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.
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) |