Introducción
El malware basado en IA se ha convertido en tendencia. Siempre hemos debatido cómo los actores de amenazas podrían realizar ataques aprovechando modelos de IA, y aquí tenemos una prueba de concepto que lo demuestra. Aunque aún no se ha observado en ataques activos, ¿quién sabe si ya lo están utilizando como arma para atacar a organizaciones?
Estamos hablando de PromptLock , compartido por ESET Research. PromptLock es el primer ransomware conocido impulsado por IA. Utiliza scripts Lua generados a partir de mensajes predefinidos para enumerar el sistema de archivos local, inspeccionar los archivos objetivo, extraer datos seleccionados y realizar el cifrado. Estos scripts Lua son compatibles con múltiples plataformas, funcionando en Windows, Linux y macOS . Para el cifrado de archivos, PromptLock utiliza el algoritmo de cifrado SPECK de 128 bits.
El ransomware ya es una de las categorías de malware más peligrosas. Cuando se crea con inteligencia artificial, resulta aún más preocupante. PromptLock utiliza grandes modelos de lenguaje (LLM) para generar scripts maliciosos de forma dinámica. Estos scripts Lua generados por IA impulsan su actividad maliciosa, lo que les permite funcionar en Windows, Linux y macOS.

Resumen técnico:
El malware está escrito en Go (Golang) y se comunica con un LLM alojado localmente a través de la API de Ollama.

Al ejecutar este malware, observaremos que se conecta al LLM alojado localmente a través de la API de Ollama.

Identifica si la máquina infectada es un ordenador personal, un servidor o un controlador industrial . En función de esta clasificación, PromptLock decide si extraer, cifrar o destruir los datos.
No se trata solo de una muestra sofisticada: las indicaciones completas del LLM se encuentran en el propio código. Utiliza el algoritmo de cifrado SPECK de 128 bits en modo ECB.
La clave de cifrado se almacena en la variable clave como cuatro palabras little-endian de 32 bits: clave local = {clave[1], clave[2], clave[3], clave[4]}. Esta se genera dinámicamente como se muestra en la figura:

El proceso de infección comienza escaneando el sistema de archivos de la víctima y creando un inventario de archivos candidatos, cuyos resultados se escriben en el archivo scan.log.

También analiza el directorio personal del usuario para identificar archivos que contengan información potencialmente sensible o crítica (por ejemplo, información de identificación personal). Los resultados se almacenan en target_file_list.log.

Probablemente, PromptLock primero crea scan.log para registrar los archivos detectados y luego lo reduce a target.log, que define el conjunto que se va a cifrar. Las muestras también generan archivos como payloads.txt para metadatos o pruebas. Una vez definidos los objetivos, cada archivo se cifra en fragmentos de 16 bytes con SPECK-128 en modo ECB, sobrescribiendo el contenido con texto cifrado.

Tras el cifrado, genera notas de rescate de forma dinámica. Estas notas pueden incluir detalles específicos, como una dirección de Bitcoin (1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa), que es la primera dirección de Bitcoin jamás creada, y el monto del rescate. Al tratarse de una prueba de concepto, no contiene datos reales.
![]()
La CLI y los scripts de PromptLock se basan en:
- modelo=gpt-oss:20b
- com/PeerDB-io/gluabit32
- com/yuin/gopher-lua
- com/gopher-lfs

También imprime varias claves requeridas en minúsculas (formateadas como “clave: valor”), incluidas:
- os
- nombre de usuario
- Inicio
- Hostname
- Trabajador Temporal
- Sep
- cwd
Guía de implementación:
– variables de entorno:
nombre de usuario: os.getenv(“NOMBRE DE USUARIO”) o os.getenv(“USUARIO”)
inicio: os.getenv(“PERFILUSUARIO”) o os.getenv(“INICIO”)
nombre de host: os.getenv(“NOMBRE DEL EQUIPO”) o os.getenv(“NOMBRE DEL HOST”) o io.popen(“nombre de host”):read(“*l”)
temp: os.getenv(“TMPDIR”) o os.getenv(“TEMP”) o os.getenv(“TMP”) o “/tmp”
sep: detectar desde package.path (si contiene “\” entonces “\” de lo contrario “/”), predeterminado a “/”
– os: detectar desde el entorno y el separador de ruta:
* si os.getenv(“SO”) == “Windows_NT” entonces “windows”
* elseif sep == “\” entonces “ventanas”
* elseif os.getenv(“OSTYPE”) entonces usa ese valorvir
* de lo contrario “unix”
– cwd: use io.popen(“pwd”):read(“*l”) o io.popen(“cd”):read(“*l”) según el sistema operativo
Conclusión:
Ya es hora de que la industria empiece a considerar este tipo de casos de malware. Si queremos combatir el malware impulsado por IA, tendremos que incorporar soluciones basadas en IA. En los últimos meses, hemos observado un aumento considerable de estos casos; aunque las pruebas de concepto (PoC) son lo suficientemente buenas como para ser utilizadas para realizar ataques reales. Esto indica claramente que las estrategias defensivas deben evolucionar al mismo ritmo que las innovaciones ofensivas.
Cómo Se Compara SEQRITE ¿Proteger a sus clientes?
- Bloqueo de aviso
- Bloqueo de aviso.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
Raj Aravind
Rahul Kumar Mishra



