O Kinsing evolui | Blog da Akamai

Introdução
Uma botnet de criptomineração grande e persistente está infectando sistemas em escala na Internet.
A campanha foi vista pela primeira vez pela SIRT da Akamai em 16 de fevereiro de 2021 e parece ter como alvo os sistemas Windows e Linux. A botnet despertou nosso interesse porque se mostrou altamente ativa em um conjunto diversificado de regiões geográficas, incluindo as Américas, Europa e Ásia. A botnet tem operado usando o mesmo endereço IP de distribuição (194.38.20.199), sem precisar mudar há mais de seis meses. Anteriormente, a campanha visava apenas máquinas Linux, mas foi expandida recentemente também para sistemas Windows.
Infecção de sistemas Windows
Para infectar máquinas Windows, a botnet utiliza o CVE-2020-14883, uma vulnerabilidade que afeta as versões 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0 e 14.1.1.0.0 do Oracle WebLogic Server. Quando explorada, permite que um invasor faça a execução remota de código (RCE), o que pode resultar em uma apropriação indevida do Oracle WebLogic Server.
A infeção começa fazendo com que a máquina vítima faça download e execute um arquivo XML chamado wbw.xml. Em máquinas Windows, o arquivo XML é executado por meio da classe ClassPathXmlApplicationContext

O arquivo wbw.xml obtido contém um comando incorporado do PowerShell, que é executado na máquina da vítima. O comando é:

Ele tenta baixar um script do PowerShell chamado “ 1.ps1" na máquina da vítima usando o método System.Net.WebClient.DownloadString . Ele também utiliza o sinalizador de desvio Set-ExecutionPolicy para garantir que nada seja bloqueado e que nenhum prompt ou aviso seja gerado durante a execução.

O script 1.ps1 baixa um criptominerador executável chamado xmrig.exe, bem como um arquivo config.json , que contém informações de configuração para o minerador consumir, como endereços de criptocarteiras, pontos de extremidade de criptopools e configurações adicionais. Além disso, o script 1.ps1 também contém uma variável $miner_name que armazena o novo nome para o qual o criptominerador executável, xmrig.exe, será renomeado. Nesse caso, xmrig.exe será renomeado para “sysupdate” e, em seguida, executado.


O script 1.ps1 estabelece persistência na máquina da vítima para atualizar o arquivo config.json e o minerador. Isso é feito utilizando SchTasks.exe, que permite a criação, exclusão e execução de tarefas programadas em uma máquina local ou remota no PowerShell. Mais informações sobre SchTasks.exe podem ser encontradas aqui. A tarefa programada é denominada “Serviço de atualização para o Serviço do Windows" e novamente utiliza osinalizador de desvio -ExecutionPolicy para evitar o surgimento de avisos ou prompts durante a execução, bem como o sinalizador oculto -windowstyle para permanecer oculto.

Infecção de sistemas Linux
A campanha está utilizando vários CVEs para atingir a RCE a fim de infectar sistemas Linux. Junto com o malware Kinsing, que contém um criptominerador, as cargas do Linux também têm um cavalo de troia de acesso remoto (RAT). Os serviços-alvo incluem o Oracle WebLogic Server, Redis, Apache Solr, PHPUnit e Supervisor XML-RPC.
O CVE-2020-14883 do Oracle WebLogic Server também é utilizado por esta campanha em sistemas Linux. No entanto, diferentemente da versão Windows dessa vulnerabilidade, em que a RCE acontece por meio da classe ClassPathXmlApplicationContext , no Linux, isso acontece por meio da classe FileSystemXmlApplicationContext . O arquivo XML mal-intencionado é chamado de wb.xml, que baixa um script bash, em vez do wbw.xml anterior para Windows, que baixa um script do PowerShell.


Em sistemas Linux, a infecção começa atingindo a RCE com qualquer um dos CVEs fornecidos na tabela a seguir para baixar um arquivo de script bash na máquina da vítima.



Embora o nome do arquivo de script bash varie entre s.sh , p.sh, sup.sh, d.sh, ex.sh, r.sh, spr.sh, tf.sh ou wb.sh , todos fazem praticamente a mesma coisa.
O script bash elimina todos os mineradores concorrentes que podem existir no sistema e desativa os recursos de segurança e registro. Em seguida, ele faz o download do malware Kinsing (escrito em Golang), estabelece a persistência usando o crontab e, em seguida, inicia a criptomineração.

Uma vez executado na máquina da vítima, o malware Kinsing cria um segundo processo chamado kdevtmpfsi no diretório /tmp, que é o criptominerador xmrig, e o executa. O malware Kinsing monitora constantemente o processo kdevtmpfsi para garantir que esteja em execução.
Decodificação do endereço IP de comando & controle
A maneira como o malware se comunica com o servidor C2 é decodificando o endereço IP C2 no tempo de execução usando uma função chamada getActiveC2CUrl. A função getActiveC2CUrl usa uma cifra de fluxo RC4 para dados hexadecimais de texto sem formatação XOR com uma chave de texto sem formatação que são armazenadas no binário.
Devido à natureza de como as strings são armazenadas em um binário Golang, em que todas as strings estáticas ficam basicamente concatenadas umas com as outras, resultando em um grande blob de string, a chave de texto sem formatação e os dados hexadecimais podem ser facilmente ocultados dentro dessa enorme string. Depois de certa reversão na função getActiveC2CUrl , o local na memória e o comprimento da chave e dos dados hexadecimais podem ser encontrados.


A função getActiveC2CUrl decodifica os dados hexagonais C2 e, em seguida, juntamente com a chave, eles são passados para uma segunda função chamada RC4. A função personalizada RC4 usa a função func (c *Cipher) XORKeyStream(dst, src []byte) internamente a partir do pacote golang rc4 para gerar o endereço IP C2.
Quando os dados hexagonais C2 e a chave são obtidos, a função getActiveC2CUrl pode sofrer engenharia reversa e ser reescrita posteriormente em Golang para calcular o endereço IP C2 ativo.


Recursos de RAT
O malware Kinsing tem recursos de cavalo de troia de acesso remoto (RAT) que podem ser encontrados em uma função chamada doTask() dentro do binário. A função doTask contém algumas chamadas de função interessantes que executa com base em uma determinada entrada
runTaskWithScan()
updateTask()
startCmd()
execTaskOut()
masscan()
socks()
backconnect()
runTaskWithHttp()
downloadAndExecute()
Uma dessas funções interessantes é startCmd() , que permite que um comando arbitrário seja executado na máquina da vítima.

Comunicação de comando & controle
O malware se comunica com o C2,185.154.53.140, via HTTP. Ele envia as solicitações HTTP C2 regularmente, recebe instruções a serem executadas e fornece verificações de integridade simples.
A máquina infectada envia as informações C2 a cada solicitação HTTP sobre seu status atual e recursos do sistema, como número de núcleos, memória, sistema operacional, se os privilégios raiz foram obtidos ou não e muito mais. Todos esses parâmetros são fornecidos ao servidor C2 usando cabeçalhos HTTP personalizados.

Um ponto de extremidade que a máquina infectada solicita constantemente para receber instruções é /get. Quando uma máquina infectada faz uma solicitação GET ao ponto de extremidade /get do C2, o malware tenta imediatamente baixar novos scripts de shell mal-intencionados adicionais do IP de distribuição original 194.38.20.199.

Os scripts bash que são então baixados do IP de distribuição original 194.38.20.199 como resultado do acesso ao ponto de extremidade /get do C2 são chamados de ph.sh e spre.sh. Esses dois arquivos são diferentes do script bash de infecção inicial que vimos anteriormente. Cada um deles tem uma finalidade diferente e contém vetores de infecção adicionais.
Primeiro, vamos examinar o script ph.sh , que faz download de um rootkit chamado libsystem.so do ponto de extremidade 194.38.20.199/libsystem.so , além do malware Kinsing existente na máquina da vítima. Em seguida, o script ph.sh pré-carrega esse rootkit em /etc/ld.so.preload

O script ph.sh também estabelece um segundo mecanismo de persistência, além das tarefas cron já existentes que foram injetadas anteriormente pelo script inicial. Ele faz isso registrando um serviço de sistema que periodicamente reinfectará o host.

Se quiser saber mais sobre o rootkit libsystem.so que o script ph.sh instala e seu funcionamento interno, a Trend Micro escreveu um blog fantástico sobre esse rootkit específico que pode ser encontrado aqui
O segundo arquivo de script bash interessante que é obtido devido a uma resposta /get do ponto de extremidade C2 é spre.sh. Seu objetivo é espalhar a infecção para outros hosts encontrando credenciais ssh de qualquer host ao qual a vítima tenha acesso e examinando ~/.ssh/config , ~/.bash_history e .ssh/known_hosts. O script spre.sh então fará tentativas no ssh dos hosts descobertos usando as credenciais obtidas que foram encontradas e os infectam também.

Outro ponto de extremidade C2 interessante do qual a máquina infectada solicita instruções é o ponto de extremidade /mg . Quando a máquina infectada faz uma solicitação GET ao ponto de extremidade /mg , o C2 responde com alguns caracteres, e a máquina infectada começa imediatamente a se comunicar com um terceiro endereço IP, 95.181.179.88, que parece ser responsável por fornecer comandos de mineração para a máquina infectada na forma de uma carga JSON-RPC por HTTP.

O que fazer
Para mitigar essas ameaças, a SIRT da Akamai aconselha o monitoramento dos processos em seus sistemas quanto a um consumo de recursos anormalmente alto e atividade de rede suspeita. Um alto uso anormal de um determinado processo pela CPU pode ser um indicador de atividade de criptomineração.
A SIRT da Akamai também recomenda que você verifique com frequência as tarefas cron registradas nas crontabs de seus sistemas para garantir que as tarefas cron não estejam se comunicando com nenhum endereço IP desconhecido, que é uma técnica comum para o malware Linux estabelecer persistência, e a campanha discutida não é exceção.
Em sistemas Windows, o mesmo deve ser feito com o PowerShell usando SchTasks.exe /Query para exibir todas as tarefas agendadas que possam ter sido criadas por essa campanha. Verifique também os processos em execução nos seus sistemas Linux e certifique-se de que os processos com o nome kinsing ou kdevtmpfsi não estejam em execução e que um processo chamado sysupdate não esteja em execução em seus sistemas Windows.
Adicione autenticação forte a seus sistemas sempre que possível. Senhas fracas podem sofrer facilmente ataques de força bruta. Além disso, certifique-se de que os serviços que são alvos da campanha discutida, que incluem Oracle WebLogic Server, Redis, Apache Solr, PHPUnit e Supervisor XML-RPC, não estejam conectados à Internet se não precisarem estar, o que reduz muito o risco de esses serviços serem infectados. Por exemplo, se uma instância do Redis for usada apenas por sistemas internos, ela não precisará estar conectada à Internet.
A SIRT da Akamai também recomenda verificar seus sistemas em relação às indicações de comprometimento (IOC) fornecidas na seção de IoCs abaixo para garantir que seus sistemas não estejam infectados. Além disso, aplique patches em seus sistemas regularmente e siga as práticas recomendadas.
Indicações de comprometimento (IOC)
IPs
IP |
Descrição |
185.154.53.140 |
Comando & controle |
194.38.20.199 |
Distribuição de malware |
95.181.179.88 |
Gerencia operações de criptomineração |
195.3.146.118 |
Distribuição de malware de backup |
Arquivos
SHA-256 |
Nome |
Descrição |
8ca0229fb64e3f1819375cf1daf32104c37c0d0923bdc35cb6bea655ecd1a6a4 |
s.sh |
194.38.20.199/s.sh, script bash que baixa malware Kinsing |
ede8fdb68d777efcc0538b465d640cbb2c061bd49461f76d65f68c135ff8bbb6 |
p.sh |
194.38.20.199/p.sh, script bash que baixa malware Kinsing |
0e79ec7b00c14a4c576803a1fd2e8dd3ea077e4e98dafa77d26c0f9d6f27f0c9 |
d.sh |
194.38.20.199/d.sh, script bash que baixa malware Kinsing |
6e35b5670953b6ab15e3eb062b8a594d58936dd93ca382bbb3ebdbf076a1f83b |
spr.sh |
194.38.20.199/spr.sh, script bash que baixa malware Kinsing |
818179ac928027a5c26c9b13d3d830b7331c3e4c46ba1e305867e3d4accaf3ef |
r.sh |
194.38.20.199/r.sh, script bash que baixa malware Kinsing |
56ac2321e481708ea72e2bf7710e66c3455afa729b24f6a6ba9065ae0cca8fb3 |
ex.sh |
194.38.20.199/ex.sh, script bash que baixa malware Kinsing |
05e5ad89443b58805ae2eb2628d3eef1d6cbcc338bced23f422abe5ce60ff82d |
tf.sh |
194.38.20.199/tf.sh, script bash que baixa malware Kinsing |
274b11542fcb30065c4cc0976ce33252ba2812756f7e22f6d80fae1acadf5c4c |
wb.sh |
194.38.20.199/wb.sh, script bash que baixa malware Kinsing |
6e25ad03103a1a972b78c642bac09060fa79c460011dc5748cbb433cc459938b |
kinsing |
194.38.20.199/kinsing, o binário do malware Kinsing |
7d31843ce5231c95ce07a609cb4473fe53b95a8d0685df9d666de348d17c69ff |
arquivo config.json |
194.38.20.199/config.json, configuração json para minerador XMRIG |
c38c21120d8c17688f9aeb2af5bdafb6b75e1d2673b025b720e50232f888808a |
libsystem.so |
194.38.20.199/libsystem.so, um binário de rootkit |
5e5b5171a95955ecb0fa8f9f1ba66f313165044cc1978a447673c0ac17859170 |
xmrig.exe |
194.38.20.199/xmrig.exe, minerador XMRIG para Windows |
49ff0329b9ad42c7fb17e6a2d80b316ed6b759ab5dfd04a5aba42b97225494cf |
wbw.xml |
194.38.20.199/wbw.xml, arquivo xml que baixa um script do powershell para infectar sistemas Windows |
25b545dc3423d5c3c0181f559486643a7097b5fd87b32f0347ed667cbf3fb38e |
wb.xml |
194.38.20.199/wb.xml, arquivo xml que baixa um script bash para infectar sistemas Linux |
6b9e23cb675be370a18a0c4482dc566be28920d4f1cd8ba6b4527f80acf978d3 |
curl-amd64 |
194.38.20.199/curl-amd64 , binário curl |
fecd30cd7802f8ac4137a2d0659b3052411a99d809a5aefb48f8b821905100f3 |
al.sh |
194.38.20.199/al.sh, script bash que interrompe o serviço aegis |
cb2ca16246a687b34fa1ba76015cb4aa3b50b4ecca4550478eb580c4725ab48f |
cron.sh |
194.38.20.199/cron.sh, script bash que atualiza a crontab |
d7cda9e427d0848352a1158c68a2577c1600965fb9dbb32bc1e10af1a442d284 |
ph.sh |
194.38.20.199/ph.sh, script bash que baixa o malware Kinsing e o rootkit libsystem.so |
f4c319e43296ab323615ac4bd4b7601991218ecb6d6043b1c040a96f1a33f14f |
spre.sh |
194.38.20.199/spre.sh, script bash que espalha a infecção para outros hosts via ssh |
dd603db3e2c0800d5eaa262b6b8553c68deaa486b545d4965df5dc43217cc839 |
kdevtmpfsi |
O processo do criptominerador Kinsing |