Aproveitando-se de uma vulnerabilidade, o malware P2PInfect se espalha usando o recurso de replicação do Redis.
Os agentes de ameaças estão mirando ativamente em instâncias expostas do armazenamento de dados de código aberto SSH e Redis Redis com um worm autorreplicante ponto a ponto com versões para Windows e Linux que os autores do malware chamaram de P2Pinfect.
P2PInfect se espalha usando o recurso de replicação do Redis
Escrito em Rust, o malware conta com pelo menos dois métodos para se estabelecer: uma vulnerabilidade crítica divulgada e corrigida no ano passado e um recurso que permite replicar o banco de dados principal para alta disponibilidade e combater cenários de failover.
O P2PInfect foi inicialmente documentado por pesquisadores da Unit 42 da Palo Alto Networks, que descobriram que ele explorou a vulnerabilidade de gravidade máxima rastreada como CVE-2022-0543.
O problema de segurança é uma vulnerabilidade de escape de sandbox LUA específica do Debian devido a um problema de empacotamento que permite a execução remota de código, com uma pontuação de gravidade crítica de 10 em 10.
Depois de comprometer uma instância vulnerável do Redis com uma carga inicial, o P2PInfect baixa novos scripts específicos do sistema operacional e binários maliciosos e adiciona o servidor à sua lista de sistemas infectados.
O malware então adiciona o servidor infectado à sua rede ponto a ponto para que futuros servidores Redis comprometidos possam acessar o pacote de cargas maliciosas.
Pesquisadores da empresa forense de nuvem e resposta a incidentes Cado Security também encontraram em seu honeypot uma amostra P2PInfect, que incluía binários Portable Executable (PE) e ELF, o que indica compatibilidade entre plataformas entre Windows e Linux.
A amostra que eles analisaram também usou uma rota de acesso inicial diferente, explorando o recurso de replicação Redis que permite a criação de réplicas exatas da instância principal/líder do Redis.
“Um padrão de ataque comum contra o Redis em ambientes de nuvem é explorar esse recurso usando uma instância maliciosa para permitir a replicação” – Cado Security
Um ator de ameaça pode conseguir isso conectando-se a uma instância exposta do Redis e emitindo um comando específico e documentado; o método data desde 2018 e tem sido usado em várias campanhas.
De acordo com a Cado Security, a carga primária é um binário ELF “escrito em uma combinação de C e Rust” que, em última análise, executa o componente Rust da carga útil.
Após a execução, o binário atualiza a configuração SSH do host e modifica a configuração do servidor OpenSSH “para um estado quase padrão” que permite ao invasor conectar-se ao servidor por meio do protocolo Secure Shell (SSH) e habilita a autenticação por senha.
A Cado Security diz que o agente da ameaça reinicia o serviço SSH e adiciona uma chave SSH à lista de chaves autorizadas para o usuário atual.
Na próxima etapa, o invasor usa um script bash para modificar os nomes dos binários wget e curl, verifica a presença de utilitários específicos e os instala, caso não estejam disponíveis.
A lista abaixo mostra algumas das ações resultantes da execução do script:
- Renomeia os binários wget e curl para wgbtx e clbtx, respectivamente. Provavelmente, isso é uma tentativa de impedir que qualquer respondente de incidente os use para baixar as ferramentas forenses, além de impedir que as soluções de EDR detectem o uso do comando. Este é um TTP comum para agentes de ameaças na nuvem.
- Verifica o comando iptables e o instala se não for encontrado. Ele possui vários comandos específicos para gerenciadores de pacotes individuais, portanto, pode ser instalado independentemente da distribuição Linux em uso.
- Verifica o comando awk e o instala se não for encontrado. Como o comando anterior, ele tentará usar vários gerenciadores de pacotes.
- Verifica o comando netstat e o instala se não for encontrado. Como os comandos anteriores, ele tentará usar vários gerenciadores de pacotes.
- Usa netstat e awk para coletar uma lista de todos os IPs que estão atualmente conectados ao servidor Redis em execução no host de destino.
- Adiciona uma regra de iptables para permitir o tráfego de cada um desses IPs para o servidor Redis.
- Adiciona uma regra iptables para negar todo o outro tráfego para o servidor Redis.
- Adiciona uma regra de iptables para permitir todo o tráfego para uma porta escolhida aleatoriamente na qual a carga principal escuta para comunicações de botnet.
Os pesquisadores explicam que o uso do iptables pode ser para impedir que outros invasores comprometam o servidor Redis vulnerável. Eles acrescentam que o malware também estabelece persistência no host comprometido.
Seguindo esta etapa, o servidor infectado recebe pelo menos um binário que pode escanear através de /proc e abrir a estatística de cada processo ali. Ele também pode monitorar o diretório /proc em busca de alterações.
Além disso, o binário pode atualizar o binário principal do malware e executá-lo se sua assinatura não corresponder à extraída do botnet.
Os pesquisadores dizem que o P2PInfect trata cada comprometimento