- Các hệ thống anti-cheat dựa trên nhân hiện đại là một trong những phần mềm bảo mật phức tạp nhất trên Windows, giám sát bộ nhớ và các sự kiện hệ thống ở cấp nhân ngay cả khi trò chơi đang chạy
- Chúng sử dụng trình điều khiển nhân để vượt qua giới hạn của cơ chế bảo vệ ở user mode, đồng thời theo dõi theo thời gian thực việc tạo tiến trình·luồng, tải image và thay đổi registry
- Các hệ thống lớn như BattlEye, EasyAntiCheat, Vanguard, FACEIT AC hoạt động theo cấu trúc 3 lớp gồm trình điều khiển nhân·dịch vụ·DLL của game; trong đó Vanguard được nạp từ lúc khởi động nên có quyền kiểm soát mạnh nhất
- Chúng kết hợp phòng thủ nhiều lớp như quét bộ nhớ, phát hiện hooking, kiểm tra tính toàn vẹn của driver, đối phó tấn công DMA, phát hiện dựa trên hành vi để chặn hành vi gian lận
- Cuối cùng, chứng thực từ xa dựa trên TPM và xác minh độ tin cậy phần cứng đang nổi lên như nền tảng cốt lõi của bảo mật game
1. Giới hạn của bảo vệ user mode và sự dịch chuyển sang nhân
- Tiến trình ở user mode luôn thấp quyền hơn nhân, nên rất dễ bị cheat ở cấp driver nhân hoặc hypervisor vượt qua
- Ví dụ: lệnh gọi
ReadProcessMemory có thể bị giả mạo thông qua kernel hooking
- Cheat ở kernel mode có thể thao túng trực tiếp bộ nhớ của game và né tránh cơ chế phát hiện ở user mode
- Để đối phó, anti-cheat đã chuyển xuống cấp kernel, thực hiện giám sát ở cùng mức đặc quyền
2. “Cuộc chạy đua vũ trang” giữa cheat và anti-cheat
- Cuộc đua leo thang đặc quyền theo chuỗi user mode → kernel → hypervisor → DMA vẫn tiếp diễn
- Anti-cheat đáp trả bằng chặn driver, phát hiện hypervisor, phòng thủ DMA dựa trên IOMMU
- Quá trình này làm tăng chi phí và độ khó phát triển cheat, từ đó ngăn người dùng phổ thông tiếp cận
3. Các hệ thống anti-cheat cấp nhân tiêu biểu
- BattlEye: xoay quanh driver nhân
BEDaisy.sys, đăng ký callback cho tiến trình·luồng·tải image
- EasyAntiCheat (EAC): thuộc sở hữu của Epic Games, có cấu trúc 3 lớp tương tự
- Vanguard: nạp
vgk.sys ngay khi khởi động, dùng mô hình whitelist driver để kiểm soát mạnh mẽ
- FACEIT AC: đạt mức độ tin cậy cao nhờ giám sát ở cấp nhân
- Bài báo ARES 2024 chỉ ra rằng các hệ thống này có cấu trúc kỹ thuật tương tự rootkit, nhưng mục đích là phòng vệ
4. Cấu trúc 3 lớp của anti-cheat cấp nhân
- Driver nhân: thực hiện hook system call, quét bộ nhớ và kiểm soát truy cập
- Dịch vụ user mode: phụ trách liên lạc mạng, quản lý lệnh cấm và gửi telemetry
- DLL của game: xác minh bên trong tiến trình game và giao tiếp IPC với dịch vụ
- Chúng giao tiếp với nhau qua IOCTL, Named Pipe, Shared Memory
5. Khác biệt giữa nạp lúc khởi động và nạp lúc chạy
- BattlEye/EAC: nạp driver khi chạy game và gỡ khi thoát
- Vanguard: được nạp từ lúc khởi động và giám sát mọi driver được nạp sau đó
- Vì vậy cần khởi động lại hệ thống, nhưng đổi lại có thể bảo vệ ngay từ giai đoạn boot
6. Giám sát dựa trên callback của kernel
- ObRegisterCallbacks: kiểm soát truy cập handle tiến trình, chặn truy cập bộ nhớ từ tiến trình bên ngoài
- PsSetCreateProcessNotifyRoutineEx: chặn việc tạo tiến trình cheat
- PsSetCreateThreadNotifyRoutine: phát hiện luồng bất thường trong tiến trình game
- PsSetLoadImageNotifyRoutine: phát hiện việc tải DLL không được cho phép
- CmRegisterCallbackEx: giám sát thay đổi registry
- Mini-filter driver: chặn truy cập tệp cheat ở cấp hệ thống tệp
7. Bảo vệ và quét bộ nhớ
- Chặn đọc/ghi bộ nhớ từ bên ngoài bằng cách hạn chế quyền truy cập handle
- Phát hiện vá mã bằng xác minh hash của code section
- Phát hiện bộ nhớ thực thi được manual map bằng duyệt cây VAD
- Nhận diện theo heuristic các dạng bộ nhớ thực thi ẩn danh, DLL manual map, shellcode
8. Phát hiện tiêm mã
- Phát hiện nhiều kỹ thuật tiêm khác nhau như CreateRemoteThread, APC, NtMapViewOfSection, Reflective DLL
- Kiểm tra việc thực thi mã bất thường bằng phân tích stack frame (
RtlWalkFrameChain)
9. Phát hiện hooking
- IAT hooking: phát hiện sửa đổi Import Address Table
- Inline hooking: kiểm tra việc vá bằng cách so sánh lệnh JMP ở phần đầu hàm
- Ngăn hooking cấp kernel bằng kiểm tra tính toàn vẹn của SSDT, IDT, GDT
- Chặn nỗ lực né
ntdll bằng phát hiện việc dùng syscall trực tiếp
10. Bảo vệ ở cấp driver
- Phát hiện driver không ký số và chế độ test signing
- Duy trì blocklist để chặn tấn công BYOVD (lợi dụng driver dễ bị tổn thương)
- Giám sát các cấu trúc nội bộ của kernel như PiDDBCacheTable, MmUnloadedDrivers, BigPool để phát hiện driver manual map
11. Chống debug và ngăn phân tích
- Kiểm tra sự tồn tại của debugger bằng NtQueryInformationProcess
- Phát hiện kernel debugger bằng biến
KdDebuggerEnabled
- Phát hiện luồng ẩn bằng cờ
ThreadHideFromDebugger
- Chặn môi trường phân tích bằng kiểm tra thời gian dựa trên RDTSC, hardware breakpoint và sự hiện diện của hypervisor
12. Cheat dựa trên DMA và cách đối phó
- Thiết bị DMA qua PCIe có thể đọc bộ nhớ mà không cần CPU can thiệp
- IOMMU giới hạn truy cập DMA, nhưng có thể bị vô hiệu hóa hoặc mất tác dụng nếu cấu hình sai
- Thiết bị FPGA ngụy trang thành thiết bị hợp pháp khiến việc phát hiện trở nên khó khăn
- Có thể giảm nhẹ phần nào bằng Secure Boot, TPM 2.0 để xác minh tính toàn vẹn khi khởi động
13. Phát hiện dựa trên hành vi và machine learning
- Phân tích đầu vào chuột để phân biệt chuyển động của con người và auto-aim
- Phát hiện triggerbot·aimbot bằng mô hình CNN·Transformer
- Dùng graph neural network để phát hiện gian lận theo nhóm (wallhack·thông đồng)
- Pipeline telemetry: ghi nhận đầu vào ở kernel → truyền mã hóa → máy chủ phân tích ML → quyết định cấm
14. Né tránh môi trường ảo và phân tích
- Phát hiện VM bằng bit hypervisor trong CPUID và chuỗi vendor
- Kiểm tra dấu vết registry·thiết bị của VMware, VirtualBox, Hyper-V
- Môi trường ảo hóa lồng nhau có thể bị nhận diện qua độ trễ thực thi lệnh
15. Nhận diện phần cứng và thực thi lệnh cấm
- Tạo HWID từ SMBIOS, ổ đĩa, GPU, MAC, MachineGuid
- HWID spoofing có thể được thử qua registry·driver·can thiệp vật lý, nhưng
vẫn có thể bị phát hiện qua sự không khớp định danh hoặc định dạng bất thường
16. Xu hướng tương lai và chuyển dịch công nghệ
- Bước tiếp theo sau DMA là cheat dựa trên firmware, khiến việc phát hiện trở nên cực kỳ khó
- Aimbot phần cứng dựa trên AI rất khó phân biệt với đầu vào của con người
- Chứng thực từ xa dựa trên TPM và cloud gaming đang nổi lên như phương án dài hạn
- Anti-cheat cấp nhân vẫn là tuyến đầu thực tế hiện nay, nhưng
xác minh độ tin cậy phần cứng và xác minh phía máy chủ được xem là hướng đi cuối cùng
1 bình luận
Ý kiến trên Hacker News
Tóm lại, cheat hiện đại dùng hypervisor, vá BIOS, thiết bị DMA... để vượt qua anti-cheat
Việc bảo vệ ở mức phần cứng càng được tăng cường thì những người làm cheat cũng tiến hóa tương ứng
Nhưng khi phân tích lối chơi dựa trên AI xuất hiện, cách phát hiện trực tiếp kẻ gian lận đang cho thấy hiệu quả
Cuối cùng, tương lai nằm ở anti-cheat chế độ người dùng chứ không phải chế độ kernel, cùng với phân tích gameplay
Ngược lại, điều đó dường như là bằng chứng cho thấy anti-cheat đang hoạt động tốt
Trước đây chỉ cần tải một chương trình là có thể cheat ngay, còn bây giờ rào cản gia nhập đã cao đến mức nhiều người còn không thử nữa
Tuy vậy, ở phần đầu bài viết lại nói các biện pháp phòng thủ như vậy có thể bị vô hiệu hóa, nên cũng khiến người ta tự hỏi liệu chúng có thật sự đáng tin không
Tôi cũng từng bị khóa hai tài khoản nhưng đã được gỡ nhờ hỗ trợ khách hàng
Tuy nhiên có vẻ AI đang được dùng trong khâu hỗ trợ, nên chắc sẽ có nhiều vụ cấm oan
Loại hệ thống cấm dựa trên hành vi này có nguy cơ trừng phạt nhầm cả những người chơi tận tâm, nên khó mà tin tưởng
Tức là không còn ai cũng có thể làm cheat được nữa, nên anti-cheat ở một mức nào đó vẫn đang thành công
Tuy nhiên, phân tích gameplay có lẽ chỉ bắt được những kẻ cheat lộ liễu, còn các kiểu ESP đơn giản thì dễ bị bỏ sót
Chính kiểu cheat này mới nguy hiểm hơn vì nó từ từ phá hỏng cộng đồng
Đụng tới kernel là hành vi phớt lờ toàn bộ mô hình bảo mật của hệ điều hành
Trên thực tế đã có trường hợp anti-cheat có lỗi bị chiếm quyền root
Điều đúng đắn là tận dụng chức năng sandbox của OS và chuỗi tin cậy ở giai đoạn khởi động
Vì vậy khó có thể chỉ dựa vào chức năng của OS, còn attestation cũng có phạm vi áp dụng thực tế khá hẹp
Dù không hoàn hảo, nếu có thể giảm số lượng cheater về mặt thống kê thì vẫn có ý nghĩa
Tôi muốn thấy một game có hệ thống ghép trận anti-cheat tùy chọn
Những người bật anti-cheat chỉ ghép với nhau, còn người tắt thì vận hành bằng cơ chế cộng đồng tự điều tiết
Có lẽ chỉ công ty cỡ Valve mới đủ khả năng làm một thử nghiệm như vậy
Nhưng việc cộng đồng tự điều tiết sẽ không bao giờ hiệu quả ở quy mô lớn
Cá nhân tôi nghĩ nếu gặp cheater thì cứ tắt game rồi ra ngoài hít thở chút không khí còn hơn
Thà chơi trên console còn hơn cài anti-cheat cấp kernel kiểu ‘giống malware’
Về bản chất, cheater sẽ thể hiện mẫu hành vi bất thường, nên nếu ghi lại mọi đầu vào trên server rồi áp dụng phát hiện bất thường bằng machine learning thì có thể bắt được
Ngoài ra còn có cách tạo các đối tượng ‘honeypot’ để chỉ cheater mới phản ứng
Giống như p-hacking, ta có thể nhầm biến động ngẫu nhiên là tín hiệu có ý nghĩa
Thực tế, Dota 2 từng cấm tất cả các tài khoản đọc vùng dữ liệu bất thường bên trong client
Thông báo vá liên quan
Đây không phải vấn đề có thể giải quyết chỉ bằng cách ném ML vào là xong
Phân tích hành vi khó mà theo kịp tốc độ thay đổi của cộng đồng
Cheater thường phản ứng nhanh hơn tuyển thủ chuyên nghiệp khoảng 100 ms
Tôi không phải game thủ, nhưng thấy vấn đề chống cheat trong game online là một bài toán cực khó và rất thú vị về mặt kỹ thuật
Lời khuyên kiểu “cứ xử lý mọi thứ trên server” đơn giản là không thực tế
Game giống giải phong trào hơn là Thế vận hội, nên vui vẻ quan trọng hơn công bằng tuyệt đối
Nếu để cheater ghép với nhau thì ảnh hưởng tới người dùng bình thường sẽ giảm đi
Nhưng các hãng game lớn không duy trì đội ngũ như vậy
Anti-cheat chỉ có vai trò nâng cao rào cản gia nhập
Cần có bầu không khí xem người cheat game online là ‘kẻ thảm hại’
Anti-cheat cấp kernel là cách khóa client chặt nhất có thể, nhưng cheater vẫn tồn tại
Rốt cuộc điều đó có nghĩa là server không thể hoàn toàn tin tưởng client
Ngay cả network code cũng không thể giải quyết triệt để
Văn hóa game cạnh tranh ngày nay là cấu trúc nơi doanh nghiệp khiến người dùng cạnh tranh với người lạ thay vì bạn bè
Nhưng cũng có người tự hỏi liệu có nhất thiết phải đến mức đó không
So tài kỹ năng như thể thao hay cờ vua là một nhu cầu rất bản năng của con người
Cách diễn đạt rằng anti-cheat kernel là “phần mềm tinh vi nhất” nghe có vẻ phóng đại
Chặn system call không phải kỹ thuật gì đặc biệt
Có vẻ nhiều người ở đây chưa từng chơi game cạnh tranh
Kernel-level anti-cheat (KLAC) thực sự có hiệu quả
So với nền tảng VAC/VACNet, các giải pháp kernel như FACEIT hay Vanguard có tỷ lệ cheat thấp hơn nhiều
Tất nhiên không hoàn hảo, nhưng nó làm tăng rào cản gia nhập rất mạnh
Chỉ riêng thiết bị DMA đã tốn tới hàng trăm USD, còn cheat cao cấp thì đắt vì bán theo thuê bao
Chơi game là lựa chọn, nên nếu không thích KLAC thì đừng chơi
Nhưng nếu từ chối nó, bạn phải chấp nhận một môi trường đầy rẫy cheater
Tôi từng nghe rằng có thể xác thực từ xa bằng đo đạc khởi động dựa trên TPM và UEFI Secure Boot, nên khá bất ngờ khi biết kẻ tấn công vẫn có thể thao túng chúng
Chúng ta phải có quyền tự do không bị phân biệt đối xử trong khi vẫn được bảo đảm đầy đủ quyền sở hữu thiết bị