
BYOVD: EDR/XDR नेटवर्क कनेक्शन को ब्लॉक करने के लिए 360 WFP ड्राइवर का उपयोग करें।
एक प्रूफ-ऑफ-कॉन्सेप्ट (PoC) जो 360 सिक्योरिटी WFP ड्राइवर (360netmon_x64_wfp.sys) इंटरफ़ेस के संभावित दुरुपयोग को प्रदर्शित करता है, इसका उद्देश्य उस जोखिम को सत्यापित करना है कि कॉलर प्रमाणीकरण के बिना IOCTL इंटरफ़ेस का तीसरे पक्ष के प्रोग्राम द्वारा दुरुपयोग किया जा सकता है।
यह परियोजना केवल सुरक्षा अनुसंधान और भेद्यता विश्लेषण के लिए है। इसका उपयोग किसी भी अवैध उद्देश्य के लिए नहीं किया जाना चाहिए।
360 सिक्योरिटी नेटवर्क मॉनिटरिंग ड्राइवर 360netmon_x64_wfp.sys के रिवर्स इंजीनियरिंग के दौरान निम्नलिखित व्यवहार खोजे गए:
ड्राइवर उपयोगकर्ता मोड के लिए दो डिवाइस ऑब्जेक्ट प्रकट करता है:
\\.\360TdiFilter\\.\360TdiSpeedइन डिवाइस ऑब्जेक्ट तक कोई भी व्यवस्थापक-स्तरीय प्रक्रिया DeviceIoControl के माध्यम से पहुँच सकती है
IrpMjDeviceControl हैंडलर कोई कॉलर पहचान या हस्ताक्षर सत्यापन नहीं करता
कुछ IOCTL फ़ंक्शन सीधे उपयोग किए जा सकते हैं:
यह रिपॉजिटरी एक न्यूनतम PoC प्रदान करती है ताकि प्रदर्शित किया जा सके:
360 सिक्योरिटी स्थापित सिस्टम पर चल रही कोई प्रक्रिया वैध ड्राइवर इंटरफ़ेस का उपयोग करके किसी भी निर्दिष्ट प्रक्रिया की नेटवर्क पहुँच को कैसे ब्लॉक कर सकती है।
ड्राइवर के IrpMjDeviceControl रूटीन के प्रवेश बिंदु पर, केवल डिवाइस ऑब्जेक्ट का सत्यापन किया जाता है:
cmp rdi, g_pDeviceObject_TdiFilter
jz ...
कॉलर विशेषाधिकार सत्यापन या स्रोत प्रमाणीकरण बिल्कुल नहीं किया जाता है।
परिणामस्वरूप, कोई भी व्यवस्थापक-विशेषाधिकार प्रक्रिया यह कर सकती है:
0x220804 को कॉल करना0x220444 को कॉल करनायह 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
从而彻底阻断目标进程的网络通信。