KERNEL LEVEL ANTI-CHEAT BYPASS
â ïž HAFTUNGSAUSSCHLUSS: NUR FĂR BILDUNGSZWECKE
Das Umgehen von Anti-Cheat-Software verstöĂt gegen die Nutzungsbedingungen und kann zu permanenten Bans fĂŒhren. Dieser Guide erklĂ€rt die Konzepte fĂŒr Sicherheitsforschung und das VerstĂ€ndnis moderner Anti-Cheat-Architekturen.
EINFĂHRUNG
Moderne Anti-Cheats wie BattlEye, Easy Anti-Cheat (EAC) und Vanguard operieren auf Ring 0 (Kernel-Modus).
Traditionelle User-Mode-Cheats mit ReadProcessMemory werden
sofort durch Kernel-Mode-Callbacks erkannt.
Um diese Systeme zu umgehen, mĂŒssen Angreifer ihren eigenen unsignierten Treiber in den Kernel laden, um Speicher zu lesen/schreiben ohne Erkennungsmechanismen auszulösen. Dieser Guide erklĂ€rt, wie diese Techniken funktionieren.
Windows Protection Rings Architektur
VORAUSSETZUNGEN
- C/C++ Programmiererfahrung - Fortgeschrittene Kenntnisse erforderlich
- Windows Driver Kit (WDK) - FĂŒr Treiberentwicklung
- VerstÀndnis von Windows Internals - Kernel-Strukturen, Callbacks, etc.
- Ein verwundbarer Treiber - Zum Ausnutzen von Driver Signature Enforcement (DSE)
KERNKONZEPTE
1. Driver Signature Enforcement (DSE)
Windows verlangt, dass alle Kernel-Mode-Treiber von Microsoft digital signiert sind. Da Cheat-Entwickler keine Microsoft-Signaturen bekommen können, mĂŒssen sie DSE umgehen.
HĂ€ufige Bypass-Methoden:
- KDMapper: Nutzt verwundbare Intel/AMD-Treiber (z.B. iqvw64e.sys, gdrv.sys) um unsignierte Treiber manuell in Kernel-Speicher zu mappen
- Bootkits: Hookt den Bootloader um DSE zu deaktivieren, bevor der Windows-Kernel lÀdt
- DSEFix: Patcht das CI.dll-Modul des Kernels um SignaturprĂŒfungen zu deaktivieren
HANDLE hDevice = CreateFileA(
"\\\\.\\VulnerableDriver",
GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL
);
DWORD bytesReturned;
DeviceIoControl(
hDevice, IOCTL_MAP_DRIVER,
driverBuffer, driverSize,
NULL, 0, &bytesReturned, NULL
);
2. Kernel Callbacks & Erkennung
Anti-Cheats registrieren Callbacks fĂŒr Prozess-/Thread-/Image-Load-Events. Jede verdĂ€chtige AktivitĂ€t löst Erkennung aus.
HĂ€ufige Callbacks zu vermeiden:
PsSetCreateProcessNotifyRoutine- Ăberwacht ProzesserstellungPsSetLoadImageNotifyRoutine- Ăberwacht DLL-InjectionObRegisterCallbacks- SchĂŒtzt Prozess-Handles
3. Kommunikationsmethoden
Standard-IOCTL-Kommunikation wird leicht erkannt durch Scannen nach registrierten Device-Objekten.
Stealthigere Alternativen:
Shared Memory (SMAP)
Erstelle eine gemeinsame Speichersektion, die sowohl vom User- als auch vom Kernel-Modus erreichbar ist. Kein Device-Objekt = schwerer zu erkennen.
Data Pointer Hooking
Hijacke einen Pointer in einem legitimen Treiber (z.B. NIC-Treiber) um auf deine Kommunikationsfunktion zu zeigen.
Mouse/Keyboard Filter
HÀnge einen Filter an EingabegerÀte und kodiere Befehle in gefÀlschten Input-Events.
4. Spuren verwischen
Nach dem Laden musst du alle Spuren deines Treibers aus dem Kernel-Speicher entfernen.
PVOID MmUnloadedDrivers = GetProcAddress("MmUnloadedDrivers");
RtlZeroMemory(MmUnloadedDrivers, sizeof(UNLOADED_DRIVERS) * 50);
// Big Pool Allokationen löschen
ExFreePoolWithTag(DriverObject, 'TAG');
// PE-Header löschen
RtlZeroMemory(DriverBase, 0x1000);
5. Speicher lesen ohne Erkennung
Direkte MmCopyVirtualMemory-Aufrufe werden gehookt. Nutze alternative
Methoden:
- Physical Memory: Lesen via
MmMapIoSpacenach Ăbersetzung von virtuellenâphysischen Adressen - MDL Mapping: Erstelle Memory Descriptor Lists um Zielprozess-Seiten zu mappen
- APC Injection: Queue Asynchronous Procedure Calls um im Zielkontext auszufĂŒhren
FAZIT
Kernel-Level Anti-Cheat-Bypass ist ein Katz-und-Maus-Spiel. Sobald ein öffentlicher Mapper oder eine Technik veröffentlicht wird, wird sie innerhalb von Tagen oder Wochen geflaggt.
â ïž Rechtliche & Ethische Erinnerung:
- Cheats in Online-Spielen zu nutzen verstöĂt gegen die Nutzungsbedingungen
- Das Verteilen von Cheat-Software kann gegen Computerbetrug-Gesetze verstoĂen
- Diese Informationen dienen nur der Sicherheitsforschung und dem VerstÀndnis von Verteidigungstechniken
Der einzige Weg, langfristig unerkannt zu bleiben, ist die Entwicklung privater, maĂgeschneiderter Treiber und das Finden eigener verwundbarer Treiber zum Ausnutzen. Ăffentliche Tools werden sofort verbrannt.
FAQ / KONZEPTE
â ïž Defensive Perspektive: Angriffe verstehen, um AbwehrmaĂnahmen zu verbessern
â Was ist DSE und warum verlangt Windows signierte Treiber?
Driver Signature Enforcement stellt sicher, dass nur von Microsoft genehmigter Kernel-Code geladen werden kann. Das stoppt die Mehrheit der Rootkits und Keylogger, ist aber nicht unfehlbar â verwundbare signierte Treiber können ausgenutzt werden, um beliebigen Code nachzuladen.
â Wie erkennen Anti-Cheats manuell gemappte Treiber?
Mehrere Techniken: Scannen auf Hashes bekannter verwundbarer Treiber, Suche nach
nicht-verknĂŒpften Treibern in PsLoadedModuleList, Erkennung von Big-Pool-Allokationen mit
verdÀchtigen Tags, AufzÀhlen von MmUnloadedDrivers und IntegritÀtschecks kritischer
Kernel-Strukturen.
â Ist die Nutzung eines verwundbaren Treibers illegal?
FĂŒr Security-Research und Pentests auf eigenen Systemen: in den meisten RechtsrĂ€umen legal. FĂŒr Anti-Cheat-Evasion in Online-Spielen: verstöĂt gegen die EULA/ToS und kann zu permanenten Banns fĂŒhren. FĂŒr das Laden unsignierter Treiber auf fremden Systemen: Computerbetrug / unbefugter Zugriff in den meisten LĂ€ndern.
â Was ist der Unterschied zwischen BattlEye, EAC und Vanguard?
BattlEye und EAC laden beim Spielstart und entladen beim SchlieĂen (User-Mode + optionaler Kernel-Treiber). Vanguard (Riot Games) lĂ€dt beim Boot und bleibt resident â Neustart zum Deaktivieren nötig. Alle drei nutzen Kernel-Callbacks und IntegritĂ€tschecks.
â Kann HVCI das vollstĂ€ndig blockieren?
HVCI (Hypervisor-Enforced Code Integrity) erhöht die HĂŒrde deutlich, indem Code-IntegritĂ€t in einem VTL-1-Hypervisor erzwungen wird. Es blockiert die meisten Manual-Mapping-Techniken, ist aber auf Consumer-Windows nicht standardmĂ€Ăig aktiviert und kostet ~3-5% Performance.
â Was ist mit Linux / macOS Spielen?
Die meisten AAA-Anti-Cheats zielen nur auf Windows. Easy Anti-Cheat hat Linux-Support (fĂŒr manche Spiele via Proton), aber Kernel-Level-Detection ist weniger ausgereift. macOS nutzt GameIntegrity/Notarisierung, hat aber nicht die reiche Kernel-AngriffsoberflĂ€che von Windows.
đ WeiterfĂŒhrende Literatur (defensive Forschung):