Pesquisadores da ESET analisaram um malware que tem está direcionado a clusters de computação de alto desempenho (HPC), entre outros alvos de alto perfil. Fizemos engenharia reversa desse malware que é portátil para muitos sistemas operacionais, incluindo Linux, BSD, Solaris e, possivelmente, AIX e Windows. Chamamos esse malware de Kobalos por seu pequeno tamanho de código e muitos truques; na mitologia grega, um Kobalos é uma criatura pequena e travessa. Confira um artigo intitulado “A wild Kobalos appears: Tricksy Linux malware goes after HPCs”, no qual descrevemos o funcionamento interno dessa ameaça.

Talvez sem qualquer relação com o Kobalos, ocorreram vários incidentes de segurança envolvendo clusters de HPC no ano passado. Alguns deles chegaram à imprensa e os detalhes foram divulgados em um comunicado do CSIRT da European Grid Infrastructure (EGI) sobre casos em que houve a implantação de mineradores de criptomoedas. O comunicado destaca que, para a realização desses ataques, foram utilizados servidores comprometidos na Polônia, Canadá e China. Algumas notícias veiculadas pela imprensa também mencionam o Archer, um supercomputador com sede no Reino Unido que foi atacado com o propósito de roubar credenciais SSH. No entanto, até o momento, não se sabe qual malware pode ter sido utilizado ou até mesmo se houve a utilização de alguma ameaça.

Trabalhamos em conjunto com a equipe de segurança computacional do CERN e outras organizações envolvidas na mitigação de ataques a redes de pesquisa científica. Segundo eles, o uso do malware Kobalos é anterior aos demais incidentes. Embora saibamos que o Kobalos comprometeu grandes clusters de HPC, ninguém conseguiu vincular os incidentes provocados pelo Kobalos ao uso de malware de criptomoedas. O malware e as técnicas descritas nesses outros ataques são diferentes. Também sabemos que o Kobalos não está exclusivamente direcionado aos HPCs: descobrimos que um grande ISP asiático, um fornecedor de soluções de segurança de endpoint dos Estados Unidos (não é a ESET), bem como alguns servidores pessoais, também foram comprometidos por essa ameaça.

Código pequeno, grandes alvos

Uma análise completa do Kobalos revelou que às vezes é possível determinar remotamente se um sistema está comprometido ao se conectar ao servidor SSH usando uma porta de origem TCP específica. Tendo em conta esse aspecto, os pesquisadores da ESET varreram a Internet para encontrar vítimas em potencial. Conseguimos identificar vários alvos do Kobalos, incluindo sistemas HPC.

Figura 1. Indústria e região na qual estão as organizações atacadas.

Notificamos todas as vítimas identificadas e trabalhamos com elas para remediar o ataque.

O backdoor

O Kobalos é um backdoor genérico no sentido de que contém comandos amplos que não revelam a intenção dos atacantes. Resumindo, o Kobalos concede acesso remoto ao sistema de arquivos, disponibiliza a capacidade de gerar sessões de terminal e permite conexões proxy para outros servidores infectados pelo Kobalos.

Figura 2. Visão geral dos recursos do Kobalos e maneiras de acessá-los.

Existem várias maneiras de os operadores chegarem a uma máquina infectada através do Kobalos. O método que mais vimos é no qual o Kobalos está embutido em um executável do servidor OpenSSH (sshd) e aciona o código do backdoor se a conexão vier de uma porta de origem TCP específica. Existem outras variantes independentes que não são incorporadas ao sshd. Essas variantes se conectam a um servidor C&C que atua como intermediário ou aguardam por uma conexão de entrada em uma determinada porta TCP.

Algo que torna o Kobalos único é o fato de o código para rodar um servidor C&C estar no próprio Kobalos. Os operadores da ameaça podem transformar qualquer servidor comprometido pelo Kabalos em um servidor de C&C através do envio de um único comando. Como os endereços IP e portas do servidor C&C são codificados no executável, os operadores podem gerar novas amostras do Kobalos que usam esse novo servidor C&C.

O ajudante

Na maioria dos sistemas atacados pelo Kobalos, o cliente SSH é comprometido para roubar credenciais. Esse ladrão de credenciais é diferente de qualquer um dos clientes OpenSSH maliciosos que vimos anteriormente, e observamos dezenas deles nos últimos oito anos. A sofisticação desse componente não é a mesma do próprio Kobalos: não houve qualquer esforço para ofuscar as primeiras variantes do ladrão de credenciais. Por exemplo, as strings foram deixadas sem criptografia e nomes de usuário e senhas roubados são simplesmente gravados em um arquivo no disco. No entanto, encontramos variantes mais recentes que contêm alguma ofuscação e a capacidade de exfiltrar credenciais através da rede.

A presença desse ladrão de credenciais pode responder parcialmente como o Kobalos se propaga. Qualquer pessoa que usar o cliente SSH de uma máquina comprometida terá suas credenciais capturadas. Essas credenciais podem então ser usadas pelos atacantes para instalar o Kobalos em novos servidores.

Como se esconde

Analisar o Kobalos não é tão trivial quanto a maioria dos malwares direcionados ao Linux porque todo o seu código é mantido em uma única função que se chama a si próprio recursivamente para realizar subtarefas.

Figura 3. Gráfico de controle de fluxo do Kobalos.

Isso torna a análise mais difícil. Além disso, todas as strings são criptografadas, por isso é mais difícil encontrar o código malicioso do que olhar as amostras de maneira estática.

O uso do backdoor requer uma chave RSA privada de 512 bits e uma senha de 32 bytes. Depois de autenticadas, as chaves RC4 são trocadas e o restante da comunicação é criptografada com elas.

Resumimos o protocolo de rede no seguinte diagrama de sequência.

Figura 4. Diagrama de sequência que resume os protocolos de rede do Kobalos.

Remediação

Os produtos ESET detectam o malware Kobalos como Linux/Kobalos ou Linux/Agent.IV. O ladrão de credenciais SSH é detectado como Linux/SSHDoor.EV, Linux/SSHDoor.FB ou Linux/SSHDoor.FC. Uma regra YARA também está disponível no repositório de ioc de malware da ESET no GitHub.

De uma perspectiva de rede, é possível detectar o Kobalos procurando por tráfego que não seja SSH na porta atribuída a um servidor SSH. Quando o backdoor Kobalos se comunica com um operador, não se troca qualquer banner SSH (SSH-2.0‑…), nem do cliente, nem do servidor.

Previamente, sugerimos a configuração da autenticação em dois fatores (2FA) antes de iniciar uma conexão com servidores SSH. O Kobalos é outro caso em que a 2FA poderia ter mitigado a ameaça, uma vez que o uso de credenciais roubadas parece ser uma das formas de se propagar para diferentes sistemas.

Conclusão

Não conseguimos determinar as intenções dos operadores do Kobalos. Com exceção do ladrão de credenciais SSH, os administradores de sistema das máquinas comprometidas não encontraram nenhum outro malware. Também não tivemos acesso às capturas de tráfego de rede das operadoras em ação.

A forma como o Kobalos está contido em uma única função e o uso de uma porta aberta existente para chegar ao Kobalos torna essa ameaça mais difícil de encontrar. Esperamos que os detalhes que revelamos hoje em nossa nova publicação ajudem a aumentar a conscientização sobre essa ameaça e a colocar sua atividade sob o microscópio. Esse nível de sofisticação raramente é visto em um malware direcionado ao Linux. Dado que é mais avançado do que a média e que comprometeu organizações bastante grandes, provavelmente o Kabalos se torna uma ameaça que continuará circulando por um bom tempo.

Uma lista abrangente de Indicadores de Compromisso (IoCs) pode ser encontrada em nosso repositório do GitHub.

Para qualquer dúvida ou caso queira enviar amostras relacionadas ao assunto, entre em contato conosco através do e-mail threatintel@eset.com.

Gostaríamos de agradecer o trabalho de Maciej Kotowicz da MalwareLab.pl, que também analisou o Kobalos de forma independente e com quem compartilhamos resultados mutuamente. Ele apresentou o Kabalos na edição 2020 da conferência Oh My H@ck.

Técnicas de MITRE ATT&CK

A tabela a seguir foi construída usando a versão 8 do framework ATT&CK.

Tactic ID Name Description
Persistence T1554 Compromise Client Software Binary Kobalos may embed its malicious payload in the OpenSSH server and replace the legitimate file (sshd).
Kobalos replaces the SSH client on compromised systems to steal credentials.
T1205 Traffic Signaling Kobalos may be triggered by an incoming TCP connection to a legitimate service from a specific source port.
Defense Evasion T1070.003 Clear Command History No command history related to the attack was found on Kobalos-infected machines.
T1070.006 Timestomp When files are replaced by Kobalos operators, timestamps are forged.
T1027.002 Software Packing Kobalos’s code is flattened into a single function using a custom packer and its strings are encrypted.
Command and Control T1573.001 Encrypted Channel: Symmetric Cryptography Kobalos’s post-authentication communication channel is encrypted with RC4.
T1573.002 Encrypted Channel: Asymmetric Cryptography Kobalos’s authentication and key exchange is performed using RSA-512.
T1090.003 Proxy: Multi-hop Proxy Kobalos can serve as a proxy to other Kobalos-compromised systems.