O recente surto de malware semelhante ao Petya obteve muita atenção da mídia. No entanto, devemos notar que não foi um incidente isolado: é o último de uma série de ataques semelhantes na Ucrânia. Este post revela muitos detalhes sobre o Win32/Diskcoder.C, também conhecido como ExPetr, PetrWrap, Petya ou NotPetya, assim como informações sobre ataques que não foram relatados.

TeleBots

Imagem 1: Linha do tempo de ataques na Ucrânia.

TeleBots

Em dezembro de 2016, publicamos dois posts que detalharam os ataques disruptivos realizados pelo grupo que chamamos de TeleBots, especificamente contra instituições financeiras e uma versão Linux do malware KillDisk usado por esse grupo.

Os alvos do TeleBots foram vários sistemas informáticos na Ucrânia, que podemos definir como infraestruturas críticas. Além disso, o grupo tem conexões com o infame grupo BlackEnergy que foi responsável pelas interrupções de energia elétrica na Ucrânia, em dezembro de 2015.

Na fase final de seus ataques, o grupo TeleBots sempre usou o malware KillDisk para substituir arquivos com extensões específicas nos discos das vítimas. A coletar de dinheiro do resgate nunca foi a sua principal prioridade.

Na primeira onda de ataques em dezembro de 2016, em vez de encriptar, KillDisk simplesmente substituía os arquivos alvos. Além disso, não fornecia informações de contato para que a vítima pudesse se comunicar com o atacante, apenas apresentava uma imagem da série Mr. Robot.

TeleBots

Imagem 2: Imagem apresentada pelo malware KillDisk na primeira onda de ataques em dezembro de 2016.

Na segunda onda de ataques, os cibercriminosos adicionaram informações de contato, para que pudesse parecer com um típico ransomware. No entanto, os atacantes pediam um número extraordinário de bitcoins: 222 BTC (cerca de 250.000 dólares naquela época). Isso pode indicar que eles não estavam interessados ​​nos bitcoins, mas seu objetivo real era causar prejuízos às empresas atacadas.

TeleBots

Imagem 3: O pedido de resgate apresentado pelo KillDisk na segunda onda de ataques em dezembro de 2016.

Em 2017, o grupo TeleBots continuou os ataques; na verdade, eles se tornaram mais sofisticados. No período entre janeiro e março de 2017, os integrantes comprometeram uma empresa de software da Ucrânia (não relacionada com a M.E. Doc) e, usando túneis VPN desde aí, obtiveram acesso às redes internas de diversas instituições financeiras.

Durante esse ataque, o grupo aprimorou o seu arsenal com duas peças de ransomware e versões atualizadas das ferramentas que já descrevemos em pesquisas anteriores.

O primeiro backdoor era o Python/TeleBot.A, que foi reescrito a partir da linguagem de programação Rust. A funcionalidade permanece a mesma: é um backdoor padrão que utiliza a API do Telegram Bot para receber comandos e enviar respostas para o operador do malware.

 

TeleBots

Imagen 4: Código desmonatdo do trojan Win32/TeleBot.AB.

O segundo backdoor, que foi escrito em VBS e empacotado usando o programa script2exe, foi bastante ofuscado, mas a funcionalidade permaneceu a mesma dos ataques anteriores.

Imagem 5: Versão ofuscada do backdoor VBS.

Dessa vez, o backdoor VBS usou o servidor C&C em 130.185.250[.]171. Para tornar as conexões menos suspeitas para aqueles que verificam os logs do firewall, os atacantes registraram o domínio transfinance.com[.]ua e o hospedaram nesse endereço IP. Como é evidente a partir da Imagem 6, esse servidor também estava executando o relay do Tor chamado severalwdadwajunior.

Imagem 6: Informações sobre o relay do Tor executado pelo TeleBots.

Além disso, o invasor usou as seguintes ferramentas:

  • CredRaptor (para roubar senhas)
  • Plainpwd (Mimikatz modificado usado para recuperar credenciais do Windows da memória)
  • PsExec do SysInternals (usado para movimento lateral)

Como mencionado acima, na fase final de seus ataques, o grupo TeleBots usou o ransomware valendo-se de credenciais do Windows roubadas e do PsExec do SysInternals. Esse novo ransomware foi detectado pelos produtos da ESET como Win32/Filecoder.NKH. Uma vez executado, esse ransomware encripta todos os arquivos (exceto os localizados no diretório C:\Windows) usando algoritmos AES-128 e RSA-1024. O malware adiciona a extensão .xcrypted aos arquivos já encriptados.

Quando a criptografia é concluída, o malware cria um arquivo de texto chamado “!readme.txt” com o seguinte conteúdo:

Por favor, entre em contato conosco: openy0urm1nd@protonmail.ch

Além do malware do Windows, o grupo TeleBots usava o ransomware para Linux em servidores que não executam o Windows. Esse ransomware é detectado pelos produtos da ESET como Python/Filecoder.R e, previsivelmente, está escrito em Python. Dessa vez, os atacantes executam utilitários de terceiros, como o openssl, para encriptar arquivos. A criptografia é feita usando os algoritmos RSA-2048 e AES-256.

Imagem 7: Código em Python do ransomware para Linux Python/Filecoder.R usado pelo grupo TeleBots.

No código do script em Python, os atacantes deixaram um comentário com o seguinte texto:

Feedback: openy0urm1nd[@]protonmail.ch

Win32/Filecoder.AESNI.C

Em 18 de maio de 2017, percebemos uma nova atividade por parte de outra família de ransomware Win32/Filecoder.AESNI.C (também conhecida como XData).

Esse ransomware se propagou principalmente na Ucrânia, por causa de um interessante vetor inicial. De acordo com a telemétria do nosso sistema LiveGrid®, o malware foi criado logo após a execução do software M.E.Doc que é muito utilizado pelo pessoal de contabilidade na Ucrânia.

O Win32/Filecoder.AESNI.C tinha um mecanismo de propagação que lhe permitia realizar movimentos laterais de forma automática dentro da rede LAN comprometida de uma empresa. Especificamente, o malware tinha um DLL que usava para extrair credenciais de contas do Windows da memória de um PC comprometido. Com essas credenciais, o malware se propagava na rede local usando o utilitário PsExec do SysInternals.

Parece que os atacantes não alcançaram seu objetivo nessa ocasião, ou foi um teste para um ataque posterior mais efetivo. Os atacantes publicaram as chaves mestras de descriptografia no fórum BleepingComputer, e afirmaram que o motivo era que, segundo o autor original, o código fonte tinha sido roubado e usado no incidente da Ucrânia.

A ESET publicou uma ferramenta de descriptografia para o ransomware Win32/Filecoder.AESNI, e este evento não ganhou muita atenção na mídia.

O surto do Diskcoder.C (“semelhante ao Petya”)

O que ganhou muita atenção na mídia foi o surto do malware semelhante ao Petya no último mês, exatamente em 27 de junho de 2017. O motivo foi o comprometimento de muitos sistemas em infraestrutura crítica e outras empresas na Ucrânia e, em seguida, em outros países.

Esse malware tem a capacidade de substituir o Master Boot Record (MBR) com o seu próprio código malicioso, que foi emprestado pelo ransomware Petya. Por isso, outros pesquisadores de malware chamaram essa ameaça como ExPetr, PetrWrap, Petya ou NotPetya.

No entanto, ao contrário do original ransomware Petya, os autores do Diskcoder.C modificaram o código MBR de forma que a recuperação não seja possível. O atacante não pode fornecer uma chave de descriptografia e, de qualquer forma, também não pode ser digitada na tela de resgate, pois a chave gerada contém caracteres não aceitáveis.

Visualmente, essa parte do Diskcoder.C dedicada ao MBR parece uma versão ligeiramente modificada do Petya: primeiro exibe uma mensagem que se faz passar pelo CHKDSK, o utilitário de verificação de disco da Microsoft. Durante a falsa verificação do CHKDISK, o malware encripta as informações.

Imagem 8: Falsa mensagem do CHKDSK que apresentada pelo Diskcoder.C.

Quando a criptografia é concluída, o código MBR exibe a seguinte mensagem com as instruções de pagamento, mas, como observado anteriormente, esta informação é inútil.

Imagem 9: Mensagem do Diskcoder.C com instruções de pagamento.

O restante do código, excluindo a parte do MBR emprestado, foi implementado pelos próprios autores. Isso inclui a criptografia de arquivos que pode ser usada como complemento do MBR que encripta o disco. Para os arquivos, o malware usa os algoritmos AES-128 e RSA-2048.

É interessante notar que os autores cometeram erros que tornam menos possível a descriptografia de arquivos. Especificamente, o malware criptografa apenas o primeiro MB de dados e não escreve nenhum cabeçalho ou estrutura específica, apenas dados criptografados em bruto e não renomeia arquivos criptografados, por isso, é difícil dizer quais arquivos estão ecriptados ou não.

Além disso, os arquivos que são maiores que 1MB após a criptografia não possuem bytes de preenchimento ou separação, portanto, não há como verificar a chave.

Curiosamente, a lista de extensões de arquivos alvo não é idêntica, mas é muito semelhante à lista de extensões de arquivos do malware KillDisk, usado nos ataques de dezembro de 2016.

 

Imagem 10: Lista de extensões do arquivo alvo do Diskcoder.C.

Uma vez que o malware é executado, o mesmo tenta se propagar usando o infame exploit EternalBlue, aproveitando o backdoor do DoublePulsar, que se executa no modo kernel. Exatamente o mesmo método foi usado no ransomware WannaCryptor.D.

O Diskcoder.C também adotou o método do ransomware Win32/Filecoder.AESNI.C (XData): usa uma versão mais leve da Mimikatz para obter credenciais e, em seguida, executa o malware usando o PsExec do SysInternals em outras máquinas da rede de área local. Além disso, os atacantes implementaram um terceiro método de propagação usando um mecanismo WMI.

Todos esses três métodos foram usados ​​para propagar malware dentro de redes LAN. Ao contrário do WannaCryptor, o Diskcoder.C usa o exploit EternalBlue apenas contra computadores dentro do espaço de endereço da rede local.

Por que existem infecções em outros países além da Ucrânia? Nossa pesquisa revelou que as empresas afetadas em outros países tinham conexões VPN com as suas filiais ou com sócios comerciais na Ucrânia.

Vetor de infecção inicial

Tanto o Diskcoder.C como o Win32/Filecoder.AESNI.C  usaram ataques à cadeia de suprimentos como o vetor de infecção inicial. Essas famílias de malware se propagaram usando um software de contabilidade ucraniano chamado M.E.Doc.

Existem várias opções que permitem implementar esse ataque. O M.E.Doc possui um sistema interno de mensagens e troca de documentos que pode ter proporcionado o envio de mensagens de phishing direcionado às vítimas. A interação do usuário é necessária para executar algo malicioso dessa maneira. Portanto, técnicas de engenharia social estavam envolvidas. Uma vez que o Win32/Filecoder.AESNI.C não se propagou tão amplamente, assumimos erroneamente que essas técnicas foram usadas nesse caso.

No entanto, o subsequente surto do Diskcoder.C sugere que os atacantes tiveram acesso ao servidor de atualização do software legítimo. Usando esse acesso, publicaram uma atualização maliciosa que foi aplicada automaticamente sem a interação dos usuários. Foi por isso que tantos sistemas na Ucrânia foram afetados por esse ataque. No entanto, parece que os autores do malware subestimaram as capacidades de propagação do Diskcoder.C.

Os pesquisadores da ESET encontraram evidências que apoiam essa teoria. Especificamente, identificamos um backdoor PHP malicioso que foi implantado em medoc_online.php em um dos diretórios de FTP no servidor de M.E.Doc. Essa backdoor era acessível a partir do HTTP; no entanto, estava criptografado, por isso que o atacante teria que ter a senha para usá-lo.

Imagem 11: Lista do diretório FTP do backdoor PHP.

Devemos dizer que há sinais que sugerem que o Diskcoder.C e o Win32/Filecoder.AESNI.C não foram as únicas famílias de malware que implantadas por meio do uso desse vetor de infecção. Podemos especular que essas atualizações maliciosas foram implantadas de forma sigilosa nas redes de computadores que pertecem aos alvos de alto perfil.

Um desses malwares, que foi implantado através desse possível mecanismo comprometido do servidor de atualização M.E.Doc, foi o backdoor VBS usado pelo grupo TeleBots. Dessa vez, o atacante usou novamente um nome de domínio com temas financeiros: bankstat.kiev[.]ua.

No dia do surto do Diskcoder.C, o registro do tipo A desse domínio foi alterado para 10.0.0.1.

Conclusões

O grupo TeleBots continua evoluindo para realizar ataques disruptivos contra a Ucrânia. Em vez de lançar emails de phishing direcionados com documentos contendo macros maliciosos, usaram um esquema mais sofisticado conhecido como ataque à cadeia de suprimentos.

Antes do surto, o grupo Telebots visava principalmente o setor financeiro. A última onda foi dirigida contra as empresas na Ucrânia, mas, aparentemente, subestimaram as capacidades de propagação do malware. Por isso, a ameaça ficou fora de controle.

Indicadores de sistema comprometido (IoC)

Detecções da ESET:

Win32/TeleBot trojan
VBS/Agent.BB trojan
VBS/Agent.BD trojan
VBS/Agent.BE trojan
Win32/PSW.Agent.ODE trojan
Win64/PSW.Agent.K trojan
Python/Filecoder.R trojan
Win32/Filecoder.AESNI.C trojan
Win32/Filecoder.NKH trojan
Win32/Diskcoder.C trojan
Win64/Riskware.Mimikatz application
Win32/RiskWare.Mimikatz application

 

Servidores de C&C:

transfinance.com[.]ua (IP: 130.185.250.171)
bankstat.kiev[.]ua (IP: 82.221.128.27)
www.capital-investing.com[.]ua (IP: 82.221.131.52)

Servidores legítimos abusados ​​por autores de malware:

api.telegram.org (IP: 149.154.167.200, 149.154.167.197, 149.154.167.198, 149.154.167.199)

 

Backdoor VBS :

1557E59985FAAB8EE3630641378D232541A8F6F9
31098779CE95235FED873FF32BB547FFF02AC2F5
CF7B558726527551CDD94D71F7F21E2757ECD109

 

Mimikatz:

91D955D6AC6264FBD4324DB2202F68D097DEB241
DCF47141069AECF6291746D4CDF10A6482F2EE2B
4CEA7E552C82FA986A8D99F9DF0EA04802C5AB5D
4134AE8F447659B465B294C131842009173A786B
698474A332580464D04162E6A75B89DE030AA768
00141A5F0B269CE182B7C4AC06C10DEA93C91664
271023936A084F52FEC50130755A41CD17D6B3B1
D7FB7927E19E483CD0F58A8AD4277686B2669831
56C03D8E43F50568741704AEE482704A4F5005AD
38E2855E11E353CEDF9A8A4F2F2747F1C5C07FCF
4EAAC7CFBAADE00BB526E6B52C43A45AA13FD82B
F4068E3528D7232CCC016975C89937B3C54AD0D1

Win32/TeleBot:

A4F2FF043693828A46321CCB11C5513F73444E34
5251EDD77D46511100FEF7EBAE10F633C1C5FC53

 

Win32/PSW.Agent.ODE (CredRaptor):

759DCDDDA26CF2CC61628611CF14CFABE4C27423
77C1C31AD4B9EBF5DB77CC8B9FE9782350294D70
EAEDC201D83328AF6A77AF3B1E7C4CAC65C05A88
EE275908790F63AFCD58E6963DC255A54FD7512A
EE9DC32621F52EDC857394E4F509C7D2559DA26B
FC68089D1A7DFB2EB4644576810068F7F451D5AA

 

Win32/Filecoder.NKH:

1C69F2F7DEE471B1369BF2036B94FDC8E4EDA03E

 

Python/Filecoder.R:

AF07AB5950D35424B1ECCC3DD0EEBC05AE7DDB5E

 

Win32/Filecoder.AESNI.C:

BDD2ECF290406B8A09EB01016C7658A283C407C3
9C694094BCBEB6E87CD8DD03B80B48AC1041ADC9
D2C8D76B1B97AE4CB57D0D8BE739586F82043DBD

 

Win32/Diskcoder.C:

34F917AABA5684FBE56D3C57D48EF2A1AA7CF06D

 

Shell PHP:

D297281C2BF03CE2DE2359F0CE68F16317BF0A86