
BYOVD: Verwende den 360 WFP driver, um EDR/XDR Netzwerkverbindungen zu blockieren.
Ein Proof-of-Concept (PoC) zur Demonstration des potenziellen Missbrauchs der 360 Security WFP-Treiberschnittstelle (360netmon\_x64\_wfp.sys). Es dient der Überprüfung des Risikos, dass IOCTL-Schnittstellen ohne Aufruferauthentifizierung von Drittanbieterprogrammen missbraucht werden können.
Dieses Projekt ist ausschließlich für Sicherheitsforschung und Schwachstellenanalyse bestimmt. Es darf nicht für illegale Zwecke verwendet werden.
Bei der Reverse‑Engineering des 360 Security Netzwerküberwachungstreibers 360netmon_x64_wfp.sys wurden folgende Verhaltensweisen entdeckt:
Der Treiber stellt zwei Geräteobjekte für den Benutzermodus bereit:
\\.\360TdiFilter\\.\360TdiSpeedDiese Geräteobjekte können von jedem Prozess mit Administratorrechten über DeviceIoControl angesprochen werden.
Der IrpMjDeviceControl-Handler führt keine Überprüfung der Aufruferidentität oder Signatur durch.
Bestimmte IOCTL-Funktionen können direkt verwendet werden, um:
Dieses Repository stellt einen minimalen PoC bereit, der demonstriert:
Wie ein Prozess, der auf einem System mit installiertem 360 Security läuft, den Netzwerkzugriff eines beliebigen angegebenen Prozesses über legitime Treiberschnittstellen blockieren kann.
Am Einstiegspunkt der IrpMjDeviceControl-Routine des Treibers wird lediglich das Geräteobjekt validiert:
cmp rdi, g_pDeviceObject_TdiFilter
jz ...
Es wird überhaupt keine Berechtigungsprüfung oder Quellauthentifizierung des Aufrufers durchgeführt.
Infolgedessen kann jeder Prozess mit Administratorrechten:
0x220804 aufrufen, um die Netzwerkdrosselung oder Blockierung eines Prozesses zu konfigurieren0x220444 aufrufen, um WFP-Filterregeln dynamisch zu ändernDieser PoC implementiert die folgenden Operationen:
\\.\360TdiFilter0x220804, um einen Zielprozess in den Modus „Netzwerk vollständig blockieren“ zu versetzenErgebnis:
Öffnen Sie das Projekt in Visual Studio und kompilieren Sie:
x64 Release
360WFP_Exploit.exe "C:\Windows\System32\notepad.exe"
Nach der Ausführung verliert der Zielprozess sofort die gesamte Netzwerkkonnektivität.
.
├── src/
│ ├── main.c // PoC-Hauptlogik
│ ├── driver_io.c // IOCTL-Aufruf-Wrapper
│ └── utils.c // Hilfsfunktionen (z. B. Pfadkonvertierung)
├── README.md
└── LICENSE
Vom Treiber erwartete Kern-Datenstruktur:
typedef struct _PACK {
WCHAR szNtPath[MAX_PATH + 40];
WCHAR szPath[MAX_PATH];
BOOL bCancelFlag;
LONGLONG qwBlockCnnt;
LONGLONG nLimitSend;
LONGLONG nLimitRecv;
DWORD dwZeroCheck;
} PACK, *PPACK;
Wenn:
qwBlockCnnt = LLONG_MAX
gibt der Treiber im WFP-Callout zurück:
FWP_ACTION_BLOCK
was zu einer vollständigen Netzwerkblockierung des Zielprozesses führt.