Introdução
Malware com tecnologia de IA se tornou uma grande tendência atualmente. Sempre discutimos como os agentes de ameaças poderiam realizar ataques utilizando modelos de IA, e aqui temos uma PoC demonstrando exatamente isso. Embora ainda não tenha sido observado em ataques ativos, quem sabe se já não está sendo usado como arma pelos agentes de ameaças para atingir organizações?
Estamos falando do PromptLock , divulgado pela ESET Research. O PromptLock é o primeiro ransomware conhecido com inteligência artificial. Ele utiliza scripts Lua gerados a partir de comandos predefinidos para enumerar o sistema de arquivos local, inspecionar arquivos-alvo, exfiltrar dados selecionados e realizar criptografia. Esses scripts Lua são compatíveis com diversas plataformas, funcionando em Windows, Linux e macOS . Para criptografia de arquivos, o PromptLock utiliza o algoritmo de criptografia SPECK de 128 bits.
O ransomware em si já é uma das categorias de malware mais perigosas. Quando criado com inteligência artificial, torna-se ainda mais preocupante. O PromptLock utiliza modelos de linguagem de grande porte (LLMs) para gerar scripts maliciosos dinamicamente. Esses scripts Lua gerados por IA impulsionam sua atividade maliciosa, tornando-os flexíveis o suficiente para funcionar em Windows, Linux e macOS.

Visão geral técnica:
O malware foi escrito em Go (Golang) e se comunica com um LLM hospedado localmente através da API Ollama.

Ao executar este malware, observaremos que ele se conecta ao LLM hospedado localmente por meio da API Ollama.

Ele identifica se a máquina infectada é um computador pessoal, um servidor ou um controlador industrial . Com base nessa classificação, o PromptLock decide se deve exfiltrar, criptografar ou destruir os dados.
Não se trata apenas de uma amostra sofisticada – instruções completas do LLM estão no próprio código. Ele usa o algoritmo de criptografia SPECK de 128 bits no modo ECB.
A chave de criptografia é armazenada na variável key como quatro palavras little-endian de 32 bits: chave local = {chave[1], chave[2], chave[3], chave[4]}. Ela é gerada dinamicamente, como mostrado na figura:

A infecção começa com a varredura do sistema de arquivos da vítima e a criação de um inventário de arquivos candidatos, registrando os resultados no arquivo scan.log.

O programa também verifica o diretório pessoal do usuário para identificar arquivos que contenham informações potencialmente sensíveis ou críticas (por exemplo, dados pessoais identificáveis). Os resultados são armazenados no arquivo target_file_list.log.

Provavelmente, o PromptLock primeiro cria scan.log para registrar os arquivos descobertos e, em seguida, o reduz para target.log, que define o conjunto a ser criptografado. As amostras também geram arquivos como payloads.txt para metadados ou preparação. Uma vez definidos os alvos, cada arquivo é criptografado em blocos de 16 bytes usando SPECK-128 no modo ECB, sobrescrevendo o conteúdo com texto cifrado.

Após a criptografia, são geradas notas de resgate dinamicamente. Essas notas podem incluir detalhes específicos, como um endereço Bitcoin (1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa), sendo este o primeiro endereço Bitcoin já criado, e o valor do resgate. Como se trata de uma prova de conceito (PoC), não há dados reais presentes.
![]()
O CLI e os scripts do PromptLock dependem de:
- modelo=gpt-oss:20b
- com/PeerDB-io/gluabit32
- com/yuin/gopher-lua
- com/gopher-lfs

Ele também imprime várias chaves necessárias em letras minúsculas (formatadas como “chave: valor”), incluindo:
- os
- nome de usuário
- Início
- hostname
- Temp
- Set
- cwd
Orientação de implementação:
– variáveis de ambiente:
nome de usuário: os.getenv(“NOME DE USUÁRIO”) ou os.getenv(“USUÁRIO”)
home: os.getenv(“PERFIL DE USUÁRIO”) ou os.getenv(“INÍCIO”)
nome do host: os.getenv(“NOME DO COMPUTADOR”) ou os.getenv(“NOME DO HOST”) ou io.popen(“nome do host”):read(“*l”)
temp: os.getenv(“TMPDIR”) ou os.getenv(“TEMP”) ou os.getenv(“TMP”) ou “/tmp”
sep: detectar em package.path (se contiver “\” então “\” senão “/”), padrão para “/”
– os: detectar do ambiente e separador de caminho:
* se os.getenv(“OS”) == “Windows_NT” então “windows”
* elseif sep == “\” então “windows”
* elseif os.getenv(“OSTYPE”) então use esse valorvir
* senão “unix”
– cwd: use io.popen(“pwd”):read(“*l”) ou io.popen(“cd”):read(“*l”) dependendo do sistema operacional
Conclusão:
Já passou da hora de a indústria começar a considerar esses casos de malware. Se quisermos combater malwares com tecnologia de IA, teremos que incorporar soluções com tecnologia de IA. Nos últimos meses, temos observado um aumento tremendo nesses casos, embora as PoCs sejam boas o suficiente para serem utilizadas em ataques reais. Isso sinaliza claramente que as estratégias defensivas devem evoluir no mesmo ritmo das inovações ofensivas.
Como funciona SEQRITE Proteger seus clientes?
- PromptLock
- PromptLock.49912.GC
COI:
- ed229f3442f2d45f6fdd4f3a4c552c1c
- 2fdffdf0b099cc195316a85636e9636d
- 1854a4427eef0f74d16ad555617775ff
- 806f552041f211a35e434112a0165568
- 74eb831b26a21d954261658c72145128
- ac377e26c24f50b4d9aaa933d788c18c
- F7cf07f2bf07cfc054ac909d8ae6223d
autores:
Shrutirupa Banerjee
Rayapati Lakshmi Prasanna Sai
Pranav Pravin Hondrao
Subhajeet Singha
Kartikkumar Ishvarbhai Jivani
Aravind Raj
Rahul Kumar Mishra



