Se você usa o Kodi, talvez tenha notado que um repositório holandês popular de complementos, o XvBMC, foi encerrado recentemente por causa de avisos de violação de direitos autorais. Após deixar de funcionar, descobrimos que esse repositório - provavelmente sem saber - fazia parte de uma campanha de criptomineração que remonta a dezembro de 2017. É o segundo caso conhecido de distribuição de malware em grande escala por meio de complementos para o Kodi e o primeiro conhecido publicamente, sendo também a primeira campanha de criptomineração lançada através da plataforma Kodi. Curiosamente, essa campanha apresenta binários específicos do Linux e/ou do Windows nos sistemas operacionais dos usuários do Kodi.
Para aqueles que não estão familiarizados com a plataforma Kodi, o popular software de reprodução multimídia não fornece nenhum conteúdo, mas os usuários podem estender a funcionalidade do software instalando vários add-ons, encontrados no repositório oficial do Kodi e em outros repositórios. Alguns add-ons permitem que os usuários acessem conteúdo pirateado, provocando controvérsia em torno do Kodi.
Ultimamente, os add-ons acusados de violação de direitos autorais também foram acusados de expor os usuários a malware. Mas, além de um incidente no qual um módulo DDoS foi adicionado a um popular add-ons do Kodi de outra parte, nenhuma evidência de malware distribuído através de add-ons de Kodi foi apresentada até agora.
A campanha maliciosa através do Kodi
De acordo com nossa pesquisa, o malware que encontramos no repositório XvMBC foi adicionado pela primeira vez ao popular repositório de terceiros Bubbles e Gaia em dezembro de 2017 e janeiro de 2018, respectivamente. A partir dessas duas fontes, e por meio de rotinas de atualização de proprietários de repositórios desprevenidos de outros add-ons e builds do Kodi pré-montados, o malware se propagou através do ecossistema do Kodi.
O malware tem uma arquitetura multi-stage e emprega medidas para garantir que o payload - o criptominerador - não possa ser facilmente rastreada até o add-on malicioso. O criptominerador é executado no Windows e no Linux e minera a criptomoeda Monero (XMR). Até o momento, não vimos uma versão ativa direcionada aos dispositivos Android ou macOS.
As vítimas desta campanha acabam executando o criptominerador de três formas:
- Adicionando a URL de um repositório malicioso ao instalador do Kodi para baixar alguns add-on. O add-on malicioso é então instalado sempre que atualizam os add-on do Kodi.
- Instalando builds do Kodi prontos para incluir a URL de um repositório malicioso. O add-on malicioso é então instalado sempre que atualizam os add-on do Kodi.
- Instalando builds do Kodi prontos que contém um add-on malicioso, mas sem qualquer link para um repositório de atualizações. Eles são inicialmente comprometidos, embora não recebam mais atualizações para o add-on malicioso. No entanto, se o criptominerador for instalado, ele persistirá e receberá atualizações.
Os cinco principais países afetados por essa ameaça, de acordo com a telemetria da ESET, são os Estados Unidos, Israel, Grécia, Reino Unido e Holanda, o que não surpreende, pois todos esses países estão na lista dos “principais países de tráfego”, de acordo com as estatísticas da Comunidade Unofficial Kodi Addon.
A partir dessa pesquisa, os repositórios a partir dos quais o malware começou a se propagar deixaram de existir (no caso do Bubbles) ou não estão mais propagando o código malicioso (Gaia). No entanto, as vítimas que conseguiram instalar o criptominerador em seus dispositivos ainda estão sendo afetadas. Além disso, o malware ainda persiste em alguns builds do Kodi, provavelmente sem o conhecimento de seus criadores.
Análise técnica: Como funciona a campanha maliciosa no Kodi
Depois que as vítimas adicionam o repositório malicioso à sua instalação do Kodi, o repositório malicioso inclui um add-on chamado script.module.simplejson - um nome que corresponde a um add-on legítimo usado por muitos outros add-ons. No entanto, enquanto outros repositórios possuem apenas contam com o script.module.simplejson add-on na versão 3.4.0, o repositório malicioso inclui esse add-on com o número de versão 3.4.1.
Como o Kodi se baseia no número das versões para atualizar as detecções, todos os usuários com o recurso de Auto Update ativado (que é uma configuração padrão comum) receberão automaticamente o script.module.simplejson na versão 3.4.1 do repositório malicioso.
A única parte do script.module.simplejson na versão 3.4.1 que apresenta modificações em relação à versão 3.4.0 são seus metadados - o arquivo addon.xml contém uma linha adicional <requires>:
Isso diz ao Kodi para baixar e instalar um complemento chamado script.module.python.requests, na versão 2.16.0 ou superior. O add-on script.module.python.requests é servido apenas pelo repositório malicioso. É uma modificação do add-on legítimo script.module.requests, que contém adicionalmente umas linhas de código em Python.
O código em Python baixa e executa conforme seja apropriado, um binário do Windows ou Linux. Este executável é um downloader que chama e executa o payload final: um criptominerador executável. Se a instalação do criptominerador for bem-sucedida, o código malicioso em Python será movido para um estágio de auto-eliminação e será excluído.
Código malicioso em Python
Na amostra analisada aqui, o código malicioso ofuscado está localizado nas linhas 846-862 do arquivo script.module.python.requests\lib\requests\packages\urllib3\connectionpool.py.
Quando desofuscado e comentado, o código se torna muito mais legível, como podemos ver na Figura 5.
É claro que o código é escrito por alguém com um bom conhecimento do Kodi e sua arquitetura add-on. O script detecta em qual sistema operacional está sendo executado (somente o Windows e o Linux são suportados), o conecta ao seu servidor C&C e faz o download e executa um módulo downloader binário apropriado para o sistema operacional.
O binário do Windows é gravado em: C:\Users\[username]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\TrustedInstaller.exe, enquanto o binário do Linux é gravado em /tmp/systems/systemd.
Depois de recuperar e executar o módulo de downloader binário, o script em Python - connectionpool.py - executa sua rotina de exclusão. Olhando para trás na Figura 4, vemos que o código malicioso está entre os marcadores especiais #-+- y #-_-#. O código executado após a execução bem-sucedida do downloader binário abre o arquivo Python, localiza esses marcadores especiais e os exclui, assim como também tudo o que está no meio de ambos. O arquivo limpo em Python é salvo. Como resultado, a instalação do criptominerador não pode ser facilmente rastreada até o add-on para Kodi.
Criptominerador executável
O módulo downloader (arquivo 64 bits EXE para Windows, 64 bits ELF para Linux) recuperado pelo código Python contém uma configuração do criptominerador criptografado e links de download para o payload do segundo estágio – os atuais binários do criptominerador.
O downloader binário entrega o payload de segundo estágio apropriado, de acordo com o sistema operacional (binários criptominerador para diferentes GPUs e um módulo lançador/ atualizador malicioso) arquivos ZIP protegidos por senha. Estes binários são compilados tanto para Windows de 64 bits como para Linux 64 bits e se baseiam no software para criptomineração de código aberto XMRStak.
A configuração para o criptominerador é a seguinte:
{“monero”:{“default”:{“wallet”:”49WAk6TaCMX3HXN22nWPQAfBjP4J3ReUKg9tu3FoiPugcJs3fsnAvyGdrC41HZ4N6jcHEiwEGvH7z4Sn41PoZtLABFAVjm3″,”password”:””,”name”:””,”email”:””,”weight”:1,”format”:{“rig”:””,”address”:”%w%.%n%/%e%”,”password”:”%p%”}},”pools”:[{“host”:”xmr-us-east1.nanopool.org:14444″},{“host”:”xmr-eu1.nanopool.org:14444″},{“host”:”xmr-asia1.nanopool.org:14444″}]}}
Meu dispositivo foi comprometido? Como faço para limpá-lo?
Se você usa o Kodi em um dispositivo com Windows ou Linux e instalou add-ons de outros repositórios ou um build do Kodi pronto, há uma chance de ter sido afetado por essa campanha de criptomineração.
Para saber se o seu dispositivo foi comprometido, verifique-o com uma solução de segurança confiável. Os produtos da ESET detectam e bloqueiam essas ameaças como Win64/CoinMiner.II y Win64/CoinMiner.MK no Windows e como Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK, e Linux/CoinMiner.CU no Linux. No Windows, você pode usar o teste gratuito da ESET e, no Linux, a versão de avaliação gratuita do ESET NOD32 Antivírus para Linux Desktop, para verificar se há ameaças no computador e remover qualquer coisa detectada. Os clientes da ESET são protegidos automaticamente.
Conclusão
Embora os principais repositórios de add-on que inicialmente introduziam esse malware no ecossistema do Kodi agora estejam fechados ou limpos, isso não muda o fato de que muitos dispositivos já executaram os add-ons maliciosos. Como pode ser visto na Figura 7, muitos dispositivos ainda estão minerando o Monero para os cibercriminosos por trás dessa campanha.
De acordo com estas estatísticas da carteira Monero dos autores do malware, fornecida pela Nanopool, pelo menos 4.774 vítimas estão sendo afetadas atualmente pelo código malicioso e geraram 62,57 XMR (cerca de 5.700 euros ou 6700 dólares) até a presente data.
Além de ser o segundo malware e o primeiro criptominerador, distribuído pela popular plataforma Kodi, essa campanha de malware empregava uma interessante técnica de comprometimento. Ao utilizar a complexa funcionalidade de código dos complementos do Kodi, que funcionam nos sistemas operacionais suportados pelo Kodi - Android, Linux, macOS e Windows. Os cibercriminosos por trás dessa campanha se dirigiram facilmente ao Kodi no Linux e no Windows.
Provavelmente, os responsáveis por essa campanha conseguiram atacar dispositivos em mais sistemas operacionais. Quer através da construção de versões nativas dos seus criptomineradores para estes outros sistemas operacionais ou criando payloads alternativos mais ajustados para a plataforma (por exemplo, payloads menos intensas em termos de energia para dispositivos alimentados através de uma bateria) que poderiam comprometer mais sistemas operacionais que suporta o Kodi.
Na medida em que as disposições de segurança dos sistemas operacionais continuam sendo ajustadas, buscando oportunidades em aplicativos do tipo add-on e/ou de funcionalidades que são baseadas em código, como foram aqueles que foram exploradas aqui, parece que isso se tornará algo cada vez mais recorrente por parte dos cibercriminosos. Com as macros do Visual Basic em aplicativos para o Microsoft Office, vimos isso no passado e também recentemente. Os add-ons de Jodi podem não ser "os próximos VBA", mas os passos que foram vistos aqui podem ser um indicador do que está por vir.
Indicadores de comprometimento (IoCs)
Add-ons maliciosos do Kodi
Desde repositórios originalmente contendo add-ons maliciosos (Bubbles e Gaia) foram removidos ou limpos, nós estamos fornecendo exemplos de links para repositórios semelhantes que ainda contêm código malicioso, e também exemplos de links para alguns builds do Kodi maliciosos escolhidos forma aleatória.
É importante ter em conta que é muito provável que os proprietários dessas fontes secundárias de arquivos maliciosos listados abaixo estejam propagando essas ameaças sem nem mesmo saberem disso.
Example mirror of Bubbles |
---|
github[.]com/yooperman17/trailerpark/blob/master/repository/repository.bubbles.3/repository.bubbles.3-4.2.0[.]zip |
github[.]com/yooperman17/trailerpark/blob/master/repository/common/script.module.urllib.3/script.module.urllib.3-1.22.3[.]zip |
Example mirror of Gaia |
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.python.requests/script.module.python.requests-2.16.1[.]zip |
github[.]com/josephlreyes/gaiaorigin/blob/master/common/script.module.simplejson/script.module.simplejson-3.4.1[.]zip |
Malicious files previously available on XvBMC repository |
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module[.]simplejson |
github[.]com/XvBMC/repository.xvbmc/tree/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/script.module.python[.]requests |
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.python.requests/script.module.python.requests-2.16.3[.]zip |
github[.]com/XvBMC/repository.xvbmc/blob/b8f5dd59961f2e452d0ff3fca38b26c526c1aecb/Dependencies/zips/script.module.simplejson/script.module.simplejson-3.4.1[.]zip |
Sampling of malicious Kodi builds |
archive[.]org/download/retrogamesworld7_gmail_Kodi_20180418/kodi[.]zip |
archive[.]org/download/DuggzProBuildWithSlyPVRguideV0.3/DuggzProBuildWithSlyPVRguideV0.3[.]zip |
ukodi1[.]xyz/ukodi1/builds/Testosterone%20build%2017[.]zip |
C&C URLs |
---|
openserver[.]eu/ax.php |
kodinet.atspace[.]tv/ax.php |
kodiupdate.hostkda[.]com/ax.php |
kodihost[.]rf.gd/ax.php |
updatecenter[.]net/ax.php |
stearti.atspace[.]eu/ax.php |
mastercloud.atspace[.]cc/ax.php |
globalregistry.atspace.co[.]uk/ax.php |
meliova.atwebpages[.]com/ax.php |
krystry.onlinewebshop[.]net/ax.php |
Downloader module (Windows) |
---|
openserver[.]eu/wib |
kodinet.atspace[.]tv/wib |
kodiupdate.hostkda[.]com/wib |
kodihost.rf[.]gd/wib |
updatecenter[.]net/wib |
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/wib |
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/wib |
www.dropbox[.]com/s/51fgb0ec9lgmi0u/wib?dl=1&raw=1 |
Downloader module (Linux) |
---|
openserver[.]eu/lib |
kodinet.atspace[.]tv/lib |
kodiupdate.hostkda[.]com/lib |
kodihost.rf[.]gd/lib |
updatecenter[.]net/lib |
bitbucket[.]org/kodiserver/plugin.video.youtube/raw/HEAD/resources/lib/lib |
gitlab[.]com/kodiupdate/plugin.video.youtube/raw/master/resources/lib/lib |
www.dropbox[.]com/s/e36u2wxmq1jcjjr/lib?dl=1&raw=1 |
Cryptominer binaries (Windows) |
---|
updatecenter[.]net/wub |
openserver[.]eu/wub |
glocato.atspace[.]eu/wub |
oraceur.hostkda[.]com/wub |
dilarti.1free-host[.]com/wub |
utudict.vastserve[.]com/wub |
encelan.atspace[.]cc/wub |
Cryptominer binaries (Linux) |
---|
updatecenter[.]net/lub |
openserver[.]eu/lub |
glocato.atspace[.]eu/lub |
oraceur.hostkda[.]com/lub |
dilarti.1free-host[.]com/lub |
utudict.vastserve[.]com/lub |
encelan.atspace[.]cc/lub |
Hashes of malicious add-ons |
---|
B8FD019D4DAB8B895009B957A7FEBAEFCEBAFDD1 |
BA50EAA31441D5E2C0224B9A8048DAF4015735E7 |
717C02A1B040187FF54425A64CB9CC001265C0C6 |
F187E0B6872B096D67C2E261BE41910DAF057761 |
4E2F1E9E066D7D21CED9D690EF6119E59CF49176 |
53E7154C2B68EDBCCF37FB73EEB3E042A1DC7108 |
FF9E491E8E7831967361EDE1BD26FCF1CD640050 |
3CC8B10BDD5B98BEA94E97C44FFDFB1746F0C472 |
389CB81D91D640BA4543E178B13AFE53B0E680B5 |
6DA595FB63F632EE55F36DE4C6E1EB4A2A833862 |
9458F3D601D30858BBA1AFE1C281A1A99BF30542 |
B4894B6E1949088350872BDC9219649D50EE0ACA |
79BCC4F2D19A394DD2DB2B601208E1D1EA57565B |
AAAEDE03F6C014CEE8EC0D9C0EA4FC7B0E67DB59 |
C66B5ADF3BDFA87B0731512DD2654F4341EBAE5B |
F0196D821381248EB8717F47C70D8C235E83A12E |
7CFD561C215DC04B702FE40A199F0B60CA706660 |
A ESET detecta o código malicioso do Python como Python/CoinMiner.W.
Hashes of cryptominers and downloader modules (Windows) |
---|
08406EB5A8E75F53CFB53DB6BDA7738C296556D6 |
2000E2949368621E218529E242A8F00DC8EC91ED |
5B1F384227F462240178263E8F2F30D3436F10F5 |
B001DD66780935FCA865A45AEC97C85F2D22A7E2 |
C6A4F67D279478C18BE67BEB6856F3D334F4AC42 |
EE83D96C7F1E3510A0D7D17BBF32D5D82AB54EF3 |
A ESET detecta tanto o criptominerador quanto o módulo de download como Win64/CoinMiner.II e/ou Win64/CoinMiner.M. Nossa telemetria mostra mais de 100 hashes diferentes para os nomes de detecção.
Hashes of cryptominers and downloader modules (Linux) |
---|
38E6B46F34D82BD23DEACD23F3ADD3BE52F1C0B6 |
90F39643381E2D8DFFF6BA5AB2358C4FB85F03FC |
B9173A2FE1E8398CD978832339BE86445ED342C7 |
D5E00FB7AEA4E572D6C7C5F8D8570DAB5E1DD156 |
D717FEC7E7C697D2D25080385CBD5C122584CA7C |
DF5433DC7EB272B7B837E8932E4540B216A056D8 |
A ESET detecta as versões do criptominerador e módulo downloader para Linux como Linux/CoinMiner.BC, Linux/CoinMiner.BJ, Linux/CoinMiner.BK e Linux/CoinMiner.CU.