
BYOVD: 360 WFP 드라이버를 사용하여 EDR/XDR 네트워크 연결을 차단합니다.
360 Security WFP 드라이버(360netmon_x64_wfp.sys)의 IOCTL 인터페이스가 호출자 인증 없이 타사 프로그램에 의해 악용될 수 있는 위험을 확인하기 위한 개념 증명(PoC)입니다.
이 프로젝트는 보안 연구 및 취약점 분석 목적으로만 사용되어야 합니다. 불법적인 목적으로 사용해서는 안 됩니다.
360 Security 네트워크 모니터링 드라이버 360netmon_x64_wfp.sys의 리버스 엔지니어링 과정에서 다음 동작들이 발견되었습니다:
드라이버가 사용자 모드에 두 개의 디바이스 객체를 노출합니다:
\\.\360TdiFilter\\.\360TdiSpeed이러한 디바이스 객체는 DeviceIoControl을 통해 모든 관리자 권한 프로세스가 액세스할 수 있습니다.
IrpMjDeviceControl 핸들러는 호출자 신원 또는 서명 검증을 전혀 수행하지 않습니다.
특정 IOCTL 함수는 다음 용도로 직접 사용될 수 있습니다:
이 저장소는 최소한의 PoC를 제공하여 다음을 시연합니다:
360 Security가 설치된 시스템에서 실행 중인 프로세스가 합법적인 드라이버 인터페이스를 사용하여 지정된 프로세스의 네트워크 액세스를 차단할 수 있는 방법.
드라이버의 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
결과적으로 대상 프로세스의 네트워크가 완전히 차단됩니다.
一个针对 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
从而彻底阻断目标进程的网络通信。