Essa não é a primeira vez que atacantes atacam a indústria de jogos, comprometem os desenvolvedores, adicionam backdoors ao ambiente de criação do jogo e distribuem malware sob o disfarce de um legítimo. Em abril de 2013, a Kaspersky Lab 
relatou um incidente semelhante. Esse ataque é atribuído a um grupo cibernético chamado Winnti.
Recentemente, os especialistas da ESET foram atraídos por novos ataques às cadeias de suprimentos. Dois jogos e uma plataforma de jogos foram comprometidos para introduzir um backdoor. Esses ataques visam a Ásia e a indústria de jogos, com o Winnti novamente atrás deles.
Três casos, um backdoor
Apesar das diferentes configurações de malware, os três produtos de software comprometidos incluíam o mesmo código de backdoor e foram lançados usando o mesmo mecanismo. Agora não há backdoors em dois produtos, mas um ainda está distribuído em uma versão trojanizada - ironicamente, esse jogo é chamado Infestation, lançado pela empresa tailandesa Extreme Extreme. Tentamos entrar em contato com o desenvolvedor desde o início de fevereiro, mas até agora sem sucesso.
Analisaremos como a carga maliciosa é introduzida e consideraremos a backdoor em detalhes.
Implementação de carga útil
O código da carga útil é executado durante a execução do executável trojanizado. Imediatamente após o ponto de entrada do PE, a chamada de inicialização do C Runtime padrão ( 
__scrt_common_main_seh na figura abaixo) é interceptada para iniciar a carga maliciosa antes de qualquer outra coisa (Figura 2). Isso pode indicar que os atacantes alteraram a configuração do assembly, e não o próprio código fonte.
 Figura 1. Ponto de entrada líquido no arquivo executável
Figura 1. Ponto de entrada líquido no arquivo executável Figura 2. Ponto de entrada de um executável comprometido
Figura 2. Ponto de entrada de um executável comprometidoO código adicionado ao executável descriptografa e inicia o backdoor na RAM antes de retomar a execução normal do código de inicialização do Runtime C e do código do aplicativo host subsequente. A carga útil interna possui uma estrutura especial, mostrada na figura abaixo, que é interpretada pelo código de descompressão adicionado.
 Figura 3. Estrutura de carga útil incorporada
Figura 3. Estrutura de carga útil incorporadaEle contém a chave RC4 (XOR criptografado com 0x37), usada para descriptografar o nome do arquivo e o arquivo DLL incorporado.
Carga maliciosa
A carga útil maliciosa real contém apenas 17 KB de código e dados.
Configuração
Os dados de configuração mostrados na figura abaixo são uma lista de linhas separadas por espaços.
 Figura 4. Dados de configuração da carga útil
Figura 4. Dados de configuração da carga útilA configuração consiste em quatro campos:
- URL do servidor C & C de gerenciamento.
- A variável (t) usada para determinar o tempo limite em milissegundos antes de continuar. O tempo de espera é selecionado no intervalo de 2/3 a 5/3 t aleatoriamente.
- Linha que identifica a campanha.
- Uma lista de nomes de arquivos executáveis, separados por ponto e vírgula. Se algum deles funcionar, o backdoor interrompe sua execução.
Identificamos cinco versões da carga útil:

Nas três primeiras opções, o código não foi recompilado, mas os dados de configuração foram editados no próprio arquivo DLL. O restante do conteúdo é uma cópia em bytes.
Infraestrutura C&C
Os nomes de domínio são escolhidos de forma a se parecer com os sites dos desenvolvedores de aplicativos comprometidos. O domínio de nível superior está configurado para redirecionar para o site legítimo correspondente usando o serviço Namecheap, enquanto o subdomínio aponta para um servidor C&C mal-intencionado.

No momento da redação deste artigo, nenhum dos domínios estava disponível, os servidores C&C não estavam respondendo.
Relatório do estudo
O ID do bot é gerado a partir do endereço MAC da máquina. O backdoor transmite informações da máquina para o servidor C&C, incluindo nome de usuário, nome do computador, versão do Windows e idioma do sistema, e aguarda um comando. Os dados são criptografados com o XOR usando a chave “ 
*&b0i0rong2Y7un1 ” e codificados com a base64. Os dados recebidos do servidor C&C são criptografados usando a mesma chave.
Equipas
Um backdoor simples suporta apenas quatro equipes que podem ser usadas por atacantes:
- 
DownUrlFile- 
DownRunUrlFile- 
RunUrlBinInMem- 
UnInstallOs nomes das equipes falam por si. Eles permitem que os invasores executem executáveis adicionais a partir de um determinado URL.
Talvez o último comando seja menos óbvio. 
UnInstall não remove o malware do sistema. No final, ele é incorporado em um arquivo executável legítimo que ainda será executado. Em vez de excluir algo, o comando desabilita o código malicioso, definindo o valor como 1 para a chave do Registro:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlagDepois de iniciar a carga, o valor do registro é solicitado e, se especificado, a execução é cancelada. Talvez os invasores estejam tentando reduzir a carga em seus servidores C&C, evitando retornos de chamada de vítimas sem interesse.
Segunda etapa
De acordo com a telemetria, uma das cargas de segundo estágio enviadas às vítimas é o Win64 / Winnti.BN. Até onde sabemos, o conta-gotas desse malware é baixado via HTTPs do 
api.goallbandungtravel[.]com . Vimos que ele foi instalado como um serviço do Windows e como uma DLL em 
C:\Windows\System32 usando os seguintes nomes de arquivo:
- cscsrv.dll
- dwmsvc.dll
- iassrv.dll
- mprsvc.dll
- nlasrv.dll
- powfsvc.dll
- racsvc.dll
- slcsvc.dll
- snmpsvc.dll
- sspisvc.dll
As amostras que analisamos eram grandes o suficiente - cerca de 60 MB. No entanto, isso é apenas visibilidade, pois o tamanho real ou o arquivo PE é de 63 a 72 KB, dependendo da versão. Muitos arquivos limpos são simplesmente adicionados a arquivos maliciosos. É provável que isso seja feito por um componente que redefine e instala um serviço mal-intencionado.
Depois de iniciar o serviço, ele adiciona a extensão 
.mui ao 
.mui DLL e a descriptografa usando o RC5. O arquivo MUI descriptografado contém código independente da posição com deslocamento 0. A tecla RC5 é obtida a partir do número de série do disco rígido e da linha “ 
f@Ukd!rCto R$. " Não foi possível obter os arquivos MUI ou o código que os instala primeiro. Assim, o objetivo exato do serviço malicioso é desconhecido para nós.
Versões recentes de malware incluem um mecanismo de atualização automática usando o servidor C & C 
http://checkin.travelsanignacio[.]com . Este servidor serviu a versão mais recente dos arquivos MUI criptografados com a chave estática RC5. No decorrer de nossa pesquisa, este servidor C&C não respondeu.
Objetivos
Vamos começar com aqueles para os quais a campanha 
não é direcionada especificamente. No início da carga, o malware verifica se o idioma do sistema é russo ou chinês (veja a figura abaixo). Se a resposta for sim, o programa para de funcionar. É impossível contornar essa exceção - os invasores não estão fundamentalmente interessados em computadores com essas configurações de idioma.
 Figura 5. Verificando o idioma antes de ativar a carga útil
Figura 5. Verificando o idioma antes de ativar a carga útilEstatísticas de distribuição
De acordo com a telemetria, a maioria das infecções ocorreu na Ásia, especialmente na Tailândia. Dada a popularidade do aplicativo comprometido, que ainda está sendo distribuído pelo desenvolvedor, não surpreende que o número de vítimas chegue a dezenas e centenas de milhares.

Conclusão
Os ataques da cadeia de suprimentos são difíceis de detectar no lado do usuário. É impossível analisar todo o software em execução, bem como todas as atualizações recomendadas. Por padrão, o usuário confia nos desenvolvedores e assume que seus arquivos não contêm código malicioso. Provavelmente, é por isso que vários grupos cibernéticos têm como alvo ataques a fornecedores de software - o comprometimento permitirá a criação de uma botnet, cujo tamanho é comparável à popularidade do software trojanizado. Essa tática tem uma desvantagem - quando o esquema é revelado, os invasores perdem o controle da botnet e os usuários podem limpar o sistema instalando a próxima atualização.
Atualmente, os motivos do grupo cibernético Winnti são desconhecidos. Talvez os invasores estejam buscando ganhos financeiros ou planejando usar a botnet como parte de uma operação maior.
Os produtos ESET detectam a ameaça como Win32 / HackedApp.Winnti.A, Win32 / HackedApp.Winnti.B, a carga útil como Win32 / Winnti.AG, o segundo estágio como Win64 / Winnti.BN. 
Indicadores de compromisso estão disponíveis aqui .