paint-brush
Como os mutantes RAT, em Python, roubam dados e evitam a detecçãopor@hernanortiz
3,732 leituras
3,732 leituras

Como os mutantes RAT, em Python, roubam dados e evitam a detecção

por Hernán Ortiz7m2023/02/02
Read on Terminal Reader

Muito longo; Para ler

Embora pacotes Python maliciosos sejam encontrados todos os dias por nossos pesquisadores de segurança, um novo tipo de malware que chamamos de mutantes RAT está chamando nossa atenção. Eles mudaram e se adaptaram ao longo do tempo para serem mais evasivos e perigosos. Aqui está a história de como eles podem roubar suas carteiras de criptomoedas e dados pessoais, controlar remotamente seu mouse e teclado e evoluir para evitar a detecção.
featured image - Como os mutantes RAT, em Python, roubam dados e evitam a detecção
Hernán Ortiz HackerNoon profile picture



"Um ninja sábio não procura um inimigo que ele não entende completamente." - Splinter de Teenage Mutant Ninja Turtles


Como um escritor técnico apaixonado por ficção científica, uma das partes mais emocionantes do meu trabalho na Sonatype é quando tenho a oportunidade de colaborar com a equipe de pesquisa de segurança.


Desde que encontramos  uma série de pacotes Python no mês passado que correspondem ao que chamamos de mutantes RAT - novos malwares que aproveitam os recursos de trojans de acesso remoto e ladrões de informações - nossos pesquisadores de segurança tiveram uma sensação incômoda de déjà vu.


Não é uma ocorrência rara: eles avaliam constantemente centenas de pacotes suspeitos de registros de código aberto para determinar se são realmente maliciosos. Durante esse procedimento, eles identificam padrões familiares entre os pacotes e, às vezes, ao reconhecerem fortes semelhanças, realizam pesquisas adicionais para rastrear o ator/campanha por trás deles.


Entre a última semana de 2022 e o início de 2023, nosso sistema de IA sinalizou pacotes suspeitos carregados no registro PyPI, incluindo pyrologin , easytimestamp , discorder , discord-dev , style.py e pythonstyles . Nossos pesquisadores de segurança olharam para eles e confirmaram que eram realmente maliciosos. E após uma análise mais aprofundada, eles notaram que esses pacotes adicionavam uma série de recursos que não são vistos com frequência no malware Python.


No que se tornou uma estratégia de fato, os agentes mal-intencionados ocultam uma carga útil no arquivo setup[.]py , de modo que os desenvolvedores só precisam usar uma simples instalação de pip para serem infectados. Nesse caso, eles lançariam inadvertidamente um script do PowerShell que baixa um arquivo ZIP para instalar bibliotecas que permitem ao invasor controlar o mouse e o teclado da vítima, fazer capturas de tela e criar conexões remotas ocultas. Além disso, esses pacotes também exfiltram informações confidenciais como senhas, cookies e dados da carteira de criptomoedas e até tentam instalar uma ferramenta para acesso remoto. Nossos achados estiveram de acordo com Relatório técnico do Phylum dos mesmos pacotes.


No entanto, o pesquisador de segurança Carlos Fernandez estava tendo uma sensação assombrosa de déjà vu. Durante a semana após a divulgação dos pacotes, lembranças de ter visto versões anteriores desse malware passaram por sua mente. Um agente de ameaça pode ter desenvolvido seu malware ao longo do tempo, mas precisávamos ter certeza, então coloquei meu chapéu OSINT para ajudá-lo a ver se havia alguma verdade em sua intuição.

a história de origem

Olhando para trás em nosso banco de dados, em 25 de setembro de 2022, um pacote chamado pygradient foi carregado no repositório PyPI. Nossa IA o sinalizou como suspeito e nossos pesquisadores de segurança confirmaram que continha malware e que agrupava as fontes de outro pacote chamado pystyle . Ambas as bibliotecas são de autoria de billythegoat356 , também conhecido como BillyTheGoat, também conhecido como BillyV3 (com contribuições de loTus04 e BlueRed). Este autor da França (pelo menos é o que sugere sua localização no GitHub e o idioma falado em seus canais do Discord) é creditado como a pessoa por trás Hyperion , um obfuscator Python que encontramos frequentemente em malware carregado recentemente, bem como um dos criadores de ladrão de W4SP , um ladrão de informações que está ativo desde julho em um ataque contínuo à cadeia de suprimentos para abrir registros.


O ladrão W4SP possui persistência (ele é reativado toda vez que os usuários reiniciam o PC), ofuscação (o autor promete que é totalmente indetectável) e técnicas de esteganografia para ocultar cargas polimórficas e altamente ofuscadas em um arquivo de imagem. O malware envia todas as contas Discord, cartões de crédito, senhas e carteiras criptográficas da vítima de volta ao invasor por meio de um endereço de webhook Discord codificado. Os malfeitores interessados neste malware o compraram pagando cerca de 20 USD em criptografia.



Depois de decodificar a imagem, um código Python ofuscado base64 oculto é revelado.



Originalmente, o pystyle não tinha uma natureza maliciosa - um pacote inofensivo para estilizar e colorir a saída do console para melhorar a legibilidade e a experiência do usuário. Mas, de acordo com a pesquisa da Phylum, uma vez que se tornou popular (o pacote ainda está ativo no PyPI e acumula mais de 40.000 downloads todos os meses), eles decidiram adicionar o malware W4SP em alguns lançamentos.


Pacotes de código aberto como pystyle podem atuar como agentes adormecidos por meses, apenas para serem ativados posteriormente por seu próprio autor para fins maliciosos. Uma jogada arriscada, já que seu pacote popular pode ser descoberto por pesquisadores de segurança como nós, que o denunciarão como malicioso e o removerão para sempre. É por isso que eles geralmente criam novos pacotes onde incluem o código-fonte de uma biblioteca inócua, adicionam algum tipo de carga maliciosa e a carregam com um novo nome: algo genérico, de aparência benigna e aparência inocente. Um nome como pygradient .


Depois de dar uma olhada mais de perto com Carlos, descobrimos que esse malware proto-RAT mutante carecia de alguns dos recursos das versões de dezembro: embora também lançasse um script do PowerShell e exfiltrasse dados confidenciais, ele não usava cargas codificadas em base64 ou uma lista de permissões txt para evitar a auto-infecção. De certa forma, era uma variante mais suave e menos sofisticada.


Mas então analisamos os pacotes carregados no início de novembro, incluindo paintpy , devicespoof e devicespoofer , e depois de nos aprofundarmos, encontramos a confirmação de nossa suspeita: o malware estava realmente evoluindo.

Um imitador perseguindo malware

Embora BillyTheGoat não esteja ativo no GitHub desde novembro, ainda encontramos malware baseado em suas criações ou roubados diretamente deles, principalmente por um usuário que aparentemente mora em Portugal chamado zeeckt .


Este usuário carregou um pacote recentemente removido no PyPI chamado pystilez , falsamente creditado a BillyTheGoat no que parecia Startjacking — uma técnica para aumentar a reputação de seu novo pacote, vinculando-o a uma biblioteca popular do GitHub, associando-se assim a suas centenas de estrelas e bifurcações.


Checkmarx tem rastreado esse malfeitor depois de encontrar um ataque W4SP em um pacote chamado apicolor (junto com variações com nomes semelhantes) que incluía um link de servidor Discord em seu código malicioso. O perfil do administrador vinculado a uma conta Steam verificada e o nome “zeeckt” apareceu como um dos apelidos do Steam do invasor.


ponto de verificação também relatou que esse agente de ameaça estava criando usuários falsos copiando os perfis de contas populares do GitHub para aumentar a legitimidade. E uma de suas vítimas decidiu criar um vídeo do YouTube alertando as pessoas sobre esse ataque depois de cair em um de seus perfis falsos.


Um pesquisador de segurança postou uma das cargas úteis do zeeckt para fins educacionais e recebeu uma resposta interessante do co-autor do ladrão W4SP:




Que irônico para o seu ladrão ser roubado.


O mesmo autor, aparentemente um desenvolvedor Python de 17 anos, reitera sua frustração em um arquivo README em seu perfil do GitHub:



Não sabemos exatamente qual código malicioso zeeckt roubou de outros criminosos, mas uma coisa é certa: esse nome continua a aparecer em campanhas de malware em registros de código aberto.


Variantes mais sorrateiras consomem sua riqueza criptográfica

Carlos recentemente encontrou mais quatro pacotes por zeeckt : forenitq , forenith , forenity e forenitz . Após uma investigação mais aprofundada, ele os marcou como maliciosos e os denunciou ao PyPI para serem removidos. O caso mais rápido levou cerca de 20 minutos desde a publicação até a exclusão.


Olhando para setup[.]py em forenitq , Carlos encontrou o seguinte payload de primeiro estágio:




O invasor cria três arquivos temporários que baixam e executam binários do Windows a partir de URLs específicos usando o comando "start". Mesmo que os slugs /rat e /clip sejam sugestivos de intenção maliciosa, não poderíamos confirmar essa suposição sem olhar sob o capô.


No momento da redação deste artigo, a página hospedada em hxxp://20[.]226[.]18[.]203 ainda está ativa e mostra apenas um link para um convite do Discord que já expirou ou é privado.


Carlos notou que a embalagem estava se passando por popular colorama pacote, usando seus metadados para uma possível tentativa de StarJacking.


Depois de desofuscar o arquivo RAT, ele encontrou uma linha que carrega um possível sequestrador de área de transferência, mas as especificidades dela foram codificadas em base64:


Após a decodificação, obtemos um código Python projetado para sequestrar a área de transferência da vítima para substituir o endereço pretendido da carteira de criptomoedas pelo endereço do invasor:


Ele procura padrões específicos como bitcoin (bc1), Ethereum (0x), Monero (4) e l itecoin (L ou M ou 3) e, quando um padrão é encontrado, substitui o endereço pretendido pelo endereço da carteira de criptomoeda do invasor .


O código usa o pyperclip biblioteca para copiar e colar dados da área de transferência. Ele instalará a biblioteca se ainda não estiver instalada e copiará o endereço da carteira de criptomoeda para a área de transferência. O código é então definido em um loop contínuo para monitorar a área de transferência em busca de padrões de endereço de carteira.


Além disso, descobrimos mais técnicas que esse mutante RAT usa para evitar a detecção: uma carga útil de primeiro estágio adicionada ao arquivo forenitq/ansi[.]py em vez de setup[.]py e uma carga útil polimórfica de segundo estágio que muda toda vez que você executa o binário.


O atacante também adicionou um novo comando e controle com um menu de ajuda bem completo — e desta vez se fala português:



Como você pode ver, agentes mal-intencionados estão ansiosos para roubar seus fundos criptográficos e credenciais do sistema para penetrar ainda mais em sua infraestrutura. Seu malware RAT continua mudando para ser mais evasivo e prejudicial para os desenvolvedores. Portanto, se você não está protegendo sua cadeia de suprimentos de software hoje, considere agir para fazer isso o mais rápido possível.


IOCs (Indicadores de Compromisso)

hxxp://20[.]226[.]18[.]203/inject/tCxFLYLT6ViY9ZnP

hxxp://20[.]226[.]18[.]203/clip

hxxp://20[.]226[.]18[.]203/rat