Introduction
Les logiciels malveillants basés sur l'IA sont devenus très tendance. Nous avons toujours discuté de la manière dont les acteurs malveillants pourraient mener des attaques en exploitant les modèles d'IA, et nous avons ici une preuve de concept qui le démontre précisément. Bien qu'ils n'aient pas encore été observés dans des attaques actives, qui sait s'ils ne sont pas déjà utilisés par des acteurs malveillants pour cibler des organisations ?
Nous parlons ici de PromptLock , découvert par ESET Research. PromptLock est le premier ransomware connu utilisant l'intelligence artificielle. Il exploite des scripts Lua générés à partir d'invites codées en dur pour parcourir le système de fichiers local, inspecter les fichiers cibles, exfiltrer les données sélectionnées et les chiffrer. Ces scripts Lua sont compatibles avec plusieurs plateformes et fonctionnent sous Windows, Linux et macOS . Pour le chiffrement des fichiers, PromptLock utilise l' algorithme de chiffrement SPECK 128 bits.
Les rançongiciels constituent déjà l'une des catégories de logiciels malveillants les plus dangereuses. Lorsqu'ils sont créés à l'aide de l'IA, ils deviennent encore plus préoccupants. PromptLock exploite de grands modèles de langage (LLM) pour générer dynamiquement des scripts malveillants. Ces scripts Lua générés par l'IA pilotent son activité malveillante, ce qui leur permet de fonctionner sous Windows, Linux et macOS.

Aperçu technique:
Le logiciel malveillant est écrit en Go (Golang) et communique avec un LLM hébergé localement via l' API Ollama.

Lors de l'exécution de ce logiciel malveillant, nous observerons qu'il établit une connexion avec le LLM hébergé localement via l' API Ollama.

Il détermine si la machine infectée est un ordinateur personnel, un serveur ou un contrôleur industriel . En fonction de cette classification, PromptLock décide d' exfiltrer, de chiffrer ou de détruire les données.
Il ne s'agit pas d'un simple exemple sophistiqué : l'intégralité des invites LLM est intégrée au code. Il utilise l'algorithme de chiffrement SPECK 128 bits en mode ECB.
La clé de chiffrement est stockée dans la variable clé sous forme de quatre mots little-endian de 32 bits : clé locale = {clé[1], clé[2], clé[3], clé[4]}. Elle est générée dynamiquement, comme illustré dans la figure :

L'infection débute par l'analyse du système de fichiers de la victime et la création d'un inventaire des fichiers candidats, dont les résultats sont consignés dans le fichier scan.log.

Il analyse également le répertoire personnel de l'utilisateur afin d'identifier les fichiers contenant des informations potentiellement sensibles ou critiques (par exemple, des données personnelles). Les résultats sont enregistrés dans le fichier target_file_list.log.

Il est probable que PromptLock crée d'abord un fichier scan.log pour enregistrer les fichiers découverts, puis le réduit à un fichier target.log, qui définit l'ensemble à chiffrer. Les échantillons génèrent également des fichiers tels que payloads.txt pour les métadonnées ou la mise en scène. Une fois les cibles définies, chaque fichier est chiffré par blocs de 16 octets à l'aide de SPECK-128 en mode ECB, écrasant le contenu par le texte chiffré.

Après chiffrement, le système génère dynamiquement des notes de rançon. Ces notes peuvent inclure des détails spécifiques tels qu'une adresse Bitcoin (1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa), la toute première adresse Bitcoin jamais créée, et le montant de la rançon. S'agissant d'une preuve de concept, aucune donnée réelle n'est présente.
![]()
L'interface de ligne de commande et les scripts de PromptLock s'appuient sur :
- modèle=gpt-oss:20b
- com/PeerDB-io/gluabit32
- com/yuin/gopher-lua
- com/gopher-lfs

Il imprime également plusieurs clés requises en minuscules (formatées comme « clé : valeur »), notamment :
- os
- Nom d'utilisateur
- Accueil
- Hostname
- Temp
- Sep
- CWD
Guide de mise en œuvre :
– variables d’environnement:
nom d'utilisateur : os.getenv(“USERNAME”) ou os.getenv(“USER”)
accueil : os.getenv(“USERPROFILE”) ou os.getenv(“HOME”)
nom d'hôte : os.getenv(“NOM D'ORDINATEUR”) ou os.getenv(“NOM D'HÔTE”) ou io.popen(“nom d'hôte”):read(“*l”)
temp : os.getenv(“TMPDIR”) ou os.getenv(“TEMP”) ou os.getenv(“TMP”) ou “/tmp”
sep : détecter à partir de package.path (si contient « \ » alors « \ » sinon « / »), par défaut « / »
– os : détecter à partir de l’environnement et du séparateur de chemin :
* si os.getenv(“OS”) == “Windows_NT” alors “windows”
* elseif sep == “\" then “windows”
* elseif os.getenv(“OSTYPE”) alors utiliser cette valeurvir
* sinon « unix »
– cwd : utilisez io.popen(“pwd”):read(“*l”) ou io.popen(“cd”):read(“*l”) selon le système d’exploitation
En conclusion :
Il est grand temps que l'industrie commence à s'intéresser à ces cas de malware. Pour vaincre les malwares basés sur l'IA, nous devrons intégrer des solutions basées sur l'IA. Ces derniers mois, nous avons observé une augmentation considérable de ces cas, même si les preuves de concept sont suffisamment fiables pour être exploitées pour mener des attaques réelles. Cela indique clairement que les stratégies défensives doivent évoluer au même rythme que les innovations offensives.
Comment La SEQRITE Protéger ses clients ?
- PromptLock
- PromptLock.49912.GC
CIO:
- ed229f3442f2d45f6fdd4f3a4c552c1c
- 2fdffdf0b099cc195316a85636e9636d
- 1854a4427eef0f74d16ad555617775ff
- 806f552041f211a35e434112a0165568
- 74eb831b26a21d954261658c72145128
- ac377e26c24f50b4d9aaa933d788c18c
- F7cf07f2bf07cfc054ac909d8ae6223d
Auteurs:
Shrutirupa Banerjee
Rayapati Lakshmi Prasanna Sai
Pranav Pravin Hondrao
Subhajeet Singha
Kartikkumar Ishvarbhai Jivani
Aravind Raj
Rahul Kumar Mishra



