Filmes e programas de TV nos ensinaram a associar hackers de computador a tarefas difíceis, tramas detalhadas e esquemas elaborados.
O que o pesquisador de segurança Carlos Fernández e eu descobrimos recentemente em registros de código aberto conta uma história diferente: os malfeitores estão favorecendo a simplicidade, a eficácia e o pensamento centrado no usuário. E para levar seu código malicioso para o próximo nível, eles também estão adicionando novos recursos assistidos pelo ChatGPT.
Assim como o software como serviço ( SaaS ), parte do motivo pelo qual ofertas de malware como serviço (MaaS) como DuckLogs , Redline Stealer e Racoon Stealer se tornaram tão populares em mercados clandestinos é que eles os canais ativos de suporte ao cliente e seus produtos tendem a ser inteligentes e fáceis de usar. Marque essas caixas, preencha este formulário, clique neste botão... Aqui está sua amostra de malware pronta para uso! Desnecessário dizer que esses produtos geralmente são criados por cibercriminosos profissionais.
Nas ofertas MaaS menos populares que encontramos, como o coletor de token Discord Z3US , há uma tentativa de incorporar princípios de design centrados no ser humano, mas o produto falha no suporte ao cliente. Em sua maioria operadas e consumidas por adolescentes, as contas associadas do Telegram estão cheias de reclamações e “mandados” hostis devido a uma promessa quebrada de uma “garantia vitalícia”:
Mesmo antes de ingressar na Sonatype, eu me perguntava como seria a face moderna do cibercrime . E agora que estou acompanhando uma série de campanhas e agentes mal-intencionados de todo o mundo, algo se esclareceu para mim: a maioria dos pacotes maliciosos que a equipe de pesquisa de segurança me chamou a atenção não são o produto de um gênio peculiar em um moletom codificando em um porão escuro cheio de monitores. Graças à natureza simplista do MaaS, qualquer pessoa pode facilmente criar e fazer upload de amostras de malware para registros de código aberto com custo mínimo de configuração e conhecimento técnico.
Os pesquisadores da Avast observaram que, desde o início da pandemia de Covid-19, plataformas como Discord e Telegram se tornaram cada vez mais populares entre a população mais jovem. Em vez de usar a mídia social convencional, esses adolescentes criam comunidades de malware no Discord com o objetivo de jogar, conversar e socializar longe da supervisão dos pais. Essas comunidades geralmente são lideradas pelos membros mais proficientes tecnicamente, que se exibem ao se apropriar de servidores concorrentes ou mesmo ao compartilhar capturas de tela com informações que roubaram de vítimas inocentes. Eles também estão procurando ativamente outros membros com base em suas habilidades de programação ou potencial para contribuir com suas campanhas.
Como consequência não intencional dessas atividades, os registros resilientes de código aberto dos quais dependemos estão enfrentando uma sobrecarga de recursos. Somente no mês passado, nossos pesquisadores de segurança confirmaram como maliciosos 6.933 pacotes carregados nos registros npm e PyPI.
Recentemente , rastreamos a campanha de um grupo de língua espanhola chamado EsqueleSquad, que carregou mais de 5.000 pacotes para o PyPI. A carga nesses pacotes tentou baixar um Trojan do Windows do Dropbox, GitHub e Discord usando um comando do PowerShell.
Posteriormente, investigamos as atividades de outro grupo chamado SylexSquad, possivelmente da Espanha, que criou pacotes contendo malware projetado para exfiltrar informações confidenciais. Além de anunciar seus produtos com vídeos do YouTube e vendê-los em um mercado, eles têm uma pequena comunidade no Discord para recrutar novos membros. E eles parecem ter muito tempo para poluir a cadeia de fornecimento de software de código aberto.
Durante a primeira semana de abril, nosso sistema de IA sinalizou uma série de pacotes carregados no PyPI como suspeitos, posteriormente confirmados como maliciosos por nossos pesquisadores de segurança. Esses pacotes tinham um padrão de nomenclatura que consistia no prefixo “py” seguido por referências a software antivírus: pydefenderultra , pyjunkerpro , pyanalizate e pydefenderpro .
Carlos Fernández percebeu que os pacotes foram creditados ao grupo SylexSquad, sugerindo a continuação de uma campanha que havíamos rastreado anteriormente envolvendo os pacotes reverse_shell e sintaxisoyyo . Depois de fazer essa descoberta, começamos a mapear suas atividades.
Em um jogo de gato e rato, toda vez que confirmávamos que um desses pacotes era malicioso, a equipe do PyPI nos ajudava a derrubá-lo e, algumas horas depois, os malfeitores introduziam um pacote com o mesmo nome.
Para dar a você uma visão completa desta campanha, vamos recapitular nossas descobertas iniciais:
Se os desenvolvedores instalassem o pacote PyPI reverse_shell , setup.py
executaria bypass.py
, um script levemente ofuscado hospedado no GitHub e codificado como uma série de números que correspondem aos códigos ASCII.
Após a desofuscação, ele criaria novos valores de registro no Windows para persistência e, consequentemente, chamaria outro arquivo hospedado no GitHub, WindowsDefender.py
, um ladrão de informações. Dados confidenciais, como informações do navegador (histórico, cookies, senhas…), contas Steam, contas Telegram, cartões de crédito e até mesmo uma captura de tela da área de trabalho da vítima, seriam carregados usando o webhook Discord do invasor.
Avanço rápido para os novos pacotes creditados a este grupo e encontramos um setup.py
completamente diferente que consiste em código fortemente ofuscado (criptografia AES 256) gerado com Pyobfuscate , um serviço que promete “proteção por 4 camadas de algoritmo”. Antes de Carlos arregaçar as mangas para o processo de desofuscação, só conseguimos distinguir duas informações do oceano de código camuflado: a URL do serviço e uma mensagem legível: ' why, are, you, reading, this, thing, huh
' Cada palavra nessa mensagem era uma variável usada para o processo de desofuscação:
Não vou entrar em detalhes de como o Pyobfuscate funciona, mas com paciência e experiência, Carlos conseguiu desofuscar o código com sucesso e revelar sua verdadeira forma. Ele achou intrigante que o conteúdo ofuscado não estivesse presente apenas em setup.py
, mas também no anteriormente legível WindowsDefender.py
que foi obtido inicialmente do GitHub e agora do serviço transfer.sh .
Quando os malfeitores não se movem rápido o suficiente, há uma boa chance de que pesquisadores de segurança como nós – e as regras do GitHub sobre não permitir que a plataforma seja usada como um CDN de malware – arruinem seus planos. Esse é o caso do WindowsDefender.py
, que foi inicialmente hospedado no repositório do GitHub “joeldev27” quando foi usado pelos pacotes PyPI pycracker e pyobfpremium , e tornou-se inativo logo depois.
Como esse nome de arquivo estava sendo usado consistentemente, fiz algumas pesquisas e descobri que WindowsDefender.py
estava hospedado em um repositório do GitHub chamado CosasRandoms480 . Quando compartilhei essa descoberta com Carlos, ele respondeu maravilhado: “Nas próximas horas, um novo pacote aparecerá no PyPI com um setup.py
ofuscado. Após a instalação, ele será baixado desse repositório que você acabou de encontrar, um script fortemente ofuscado chamado WindowsDefender.py
, que estabelecerá um mecanismo de persistência e baixará o ladrão de informações que investigamos anteriormente, também chamado WindowsDefender.py
.”
Sua previsão se tornou realidade quando o pacote pyobfadvance apareceu menos de 30 minutos depois no PyPI, usando efetivamente “CosasRandoms480” como um CDN de malware. Relatamos isso à equipe do PyPI e ele foi retirado logo depois.
Cientistas e filósofos se perguntam se vivemos em uma simulação de computador . Trabalhar como pesquisador de segurança certamente é assim. Você está preso em um loop de pesquisa, descoberta e relatório, e as mesmas ameaças continuam aparecendo repetidamente.
Dois dias depois, um novo pacote creditado ao SylexSquad foi sinalizado em nosso sistema: pydefenderpro. O mesmo setup.py
ofuscado. Mesma URL do mesmo repositório GitHub executando o mesmo WindowsDefender.py
com o mesmo código de mecanismo de persistência e a mesma execução do ladrão de informações em WindowsDefender.py
. Tudo parecia o mesmo, mas o arquivo não estava mais ofuscado e um novo script estava sendo chamado de transfer.sh :
“É um RATO!” Carlos me mandou uma mensagem no Slack . “E também um ladrão de informações—”
“Um RAT Mutante?” Eu respondi, referindo-me a uma tendência que acompanhamos na selva de um tipo de malware que combina trojans de acesso remoto e ladrões de informações.
“Exatamente”, disse Carlos.
A pesquisa OSINT revelou que o novo código RAT não era original, mas uma cópia de uma cópia do DiscordRAT :
Enxágue e repita : um pacote malicioso é relatado à equipe do PyPI, e a equipe do PyPy o remove.
Claro, um novo pacote, pydefenderultra, entrou em cena logo depois. A diferença aqui é que os malfeitores migraram para o serviço pastebin.pl em vez do GitHub para baixar WindowsDefender.py
, provavelmente devido à desativação do repositório “CosasRandoms480”.
Suspeitamos que a versão legível do WindowsDefender.py
facilitou a confirmação de que ele estava quebrando as regras do GitHub . Mas por que os maus atores decidiram desofuscar o roteiro? Foi muito complicado para seu processo simplista?
O RAT continuou mutando. O menu e os comentários foram agora traduzidos para o espanhol e tiveram funcionalidades adicionais.
O ciclo continuou quando eles carregaram outro pacote, pyjunkerpro . Desta vez, as funcionalidades adicionadas incluíram um keylogger, gravador de áudio, exfiltração de dados do sistema operacional e a capacidade de fazer upload de qualquer arquivo da vítima para o canal Discord do invasor. Os comentários sobre o código foram extraordinariamente abundantes, o que normalmente é associado apenas ao código do tutorial e não a um malware.
“Espere”, disse Carlos, pensando em voz alta, “E se eles estiverem usando IA para criar novas funcionalidades?”
Ferramentas como GPTZero e Copyleaks fornecem um bom ponto de partida para detectar texto gerado por IA. No entanto, identificar código gerado por IA ainda é um desafio, pois atualmente não existem ferramentas disponíveis (que eu saiba) capazes de fazer isso com precisão. Felizmente, os humanos ainda são muito bons em reconhecer padrões…
Abri rapidamente uma guia ChatGPT e digitei um prompt em espanhol, que se traduzia em: “Escreva código Python para um bot Discord que carrega áudio de um computador remoto usando PyAudio”. A saída que obtive foi estranhamente semelhante:
Parece que estávamos rastreando script kiddies que copiaram o código de várias fontes e usaram o ChatGPT para adicionar novos recursos. O código exclusivo resultante deu a eles a confiança necessária para anunciá-lo no YouTube ou vendê-lo em seu próprio mercado. E ninguém suspeitaria que não era uma criação original.
Isso levanta uma questão intrigante: como devemos chamar esses maus atores? Crianças com script de IA? Crianças prontas?
Perguntei ao ChatGPT e ele disse: Se um indivíduo está usando o ChatGPT para adicionar novos recursos ao seu malware, ele pode ser considerado um tipo mais avançado de hacker do que um script kiddie tradicional. Pode ser mais preciso referir-se a eles como "hackers" ou "hackers assistidos por IA".
Fascinante.
O ChatGPT está dando a eles mais status.
Por uma questão de experimentação, Carlos queria tentar um prompt para ver se a ferramenta também nos ajudaria a obter mais informações sobre as atividades dos malfeitores.
“Preciso de um código Python que possa usar a API do Discord como um bot (usando um token). O script deve se conectar ao bot e exibir as informações da guilda, membros da guilda, canais da guilda e histórico de mensagens.”
Como esperado, o ChatGPT gerou um código altamente comentado e instruções claras para começar: Para usar este código, substitua "your_bot_token_here" pelo token do seu bot e execute o script Python . Portanto, copiamos o token que os "hackers assistidos por IA" adicionaram em MicrosoftUpdate.py
e o colamos em nosso script Python gerado por IA.
Nós rodamos esse código…
…e nós entramos! Reunimos informações sobre os membros (MEE6, $Demon666, $̷y̷n̷t̷a̷x̷E̷r̷r̷o̷r̷, aitanaxx05 + 4 reps, Esmeralda, SylexNaranjoDomina e AI Image Generator), canais e histórico de mensagens. Acontece que eles já haviam infectado alguns usuários - identificamos um IP de Cuba e outro da Índia. E as informações do sistema operacional estavam sendo filtradas para canais nomeados com o nome de usuário da vítima infectada:
Descobrimos que estávamos conectados a um bot chamado “SylexNaranjoDomina'' que tinha privilégios de administrador. Isso pode permitir que alguém adicione membros, exclua webhooks ou modifique canais existentes.
Alguém poderia facilmente mudar o nome da guilda de “O servidor de Demon666” para “O servidor de um Script Kiddie” – uma descrição adequada para esse tipo de ator ruim, embora eu acredite que o ChatGPT possa desaprovar essa ideia.
A partir dessa investigação, fica claro que a proliferação de MaaS e o uso de código assistido por IA criaram novas oportunidades para pessoas mal-intencionadas com menos proficiência técnica. Com mais usuários aproveitando essas ferramentas e ofertas, há ainda mais oportunidades para pacotes maliciosos infectarem seu ambiente de construção. À medida que o cenário de segurança cibernética continua a evoluir, nossas defesas também devem evoluir. Ao nos mantermos informados, cautelosos e protegidos, podemos estar um passo à frente contra a ameaça em constante mudança do crime cibernético.