
BYOVD: Use 360 WFP driver para bloquear a conexão de rede EDR/XDR.
Uma prova de conceito (PoC) demonstrando o potencial abuso da interface do driver WFP do 360 Security (360netmon_x64_wfp.sys), com o objetivo de verificar o risco de que interfaces IOCTL sem autenticação do chamador possam ser mal utilizadas por programas de terceiros.
Este projeto destina-se apenas a pesquisa de segurança e análise de vulnerabilidades. Não deve ser utilizado para fins ilegais.
Durante a engenharia reversa do driver de monitoramento de rede do 360 Security 360netmon_x64_wfp.sys, os seguintes comportamentos foram descobertos:
O driver expõe dois objetos de dispositivo para o modo de usuário:
\\.\360TdiFilter\\.\360TdiSpeedEsses objetos de dispositivo podem ser acessados por qualquer processo com privilégios de administrador via DeviceIoControl
O manipulador IrpMjDeviceControl não realiza nenhuma verificação de identidade ou assinatura do chamador
Certas funções IOCTL podem ser usadas diretamente para:
Este repositório fornece uma PoC mínima para demonstrar:
Como um processo em execução em um sistema com o 360 Security instalado pode bloquear o acesso à rede de qualquer processo especificado usando interfaces de driver legítimas.
No ponto de entrada da rotina IrpMjDeviceControl do driver, apenas o objeto de dispositivo é validado:
cmp rdi, g_pDeviceObject_TdiFilter
jz ...
Nenhuma validação de privilégio do chamador ou autenticação de origem é realizada.
Como resultado, qualquer processo com privilégios de administrador pode:
0x220804 para configurar limitação ou bloqueio de tráfego de rede do processo0x220444 para modificar dinamicamente as regras de filtragem WFPEsta PoC implementa as seguintes operações:
\\.\360TdiFilter0x220804 para colocar um processo alvo no modo "bloquear completamente a rede"Resultado:
Abra o projeto no Visual Studio e compile:
x64 Release
360WFP_Exploit.exe "C:\Windows\System32\notepad.exe"
Após a execução, o processo alvo perderá imediatamente toda a conectividade de rede.
.
├── src/
│ ├── main.c // Lógica principal da PoC
│ ├── driver_io.c // Invólucro de chamada IOCTL
│ └── utils.c // Funções auxiliares (ex.: conversão de caminhos)
├── README.md
└── LICENSE
Estrutura de dados central esperada pelo driver:
typedef struct _PACK {
WCHAR szNtPath[MAX_PATH + 40];
WCHAR szPath[MAX_PATH];
BOOL bCancelFlag;
LONGLONG qwBlockCnnt;
LONGLONG nLimitSend;
LONGLONG nLimitRecv;
DWORD dwZeroCheck;
} PACK, *PPACK;
Quando:
qwBlockCnnt = LLONG_MAX
o driver retorna no WFP Callout:
FWP_ACTION_BLOCK
o que resulta no bloqueio completo da rede para o processo alvo.
一个针对 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
从而彻底阻断目标进程的网络通信。