1. 개요
Anti-cheat주로 PC 기반의 온라인 게임에서, 악성 사용자(주로 핵)의 게임 부정행위를 적발하는 기능을 하는 보안 프로그램. 주로 PC 게임에서 사용되며 모바일 버전도 있기는 하지만 모바일 기기는 일반적으로 안드로이드나 iOS의 일반 앱은 모두 샌드박스로 실행되기 때문에 루팅 여부 확인, 커스텀 롬 감지나 악성앱 차단(핵도 포함한다) 등의 제한적인 기능만 수행할 수 있다. 안드로이드는 자체 보안 기능인 SafetyNet를 주로 사용하는 편이다. SafetyNet는 제조사 순정 펌웨어를 사용했는지 검사하는 기능이다. 게임기의 경우 커스텀 펌웨어를 사용하는 등 변조된 기기로는 온라인 서비스 접속이 제한되는 경우가 대부분이기 때문에 따로 만들지 않는다.
어떤 온라인 게임도 핵으로 부터 완전히 자유로울 순 없다. 게임사가 아무리 보안을 철저히 한다고 해도 뚫으려는 시도가 이어지면 언젠가는 뚫리기 마련이기 때문. 그러므로 대부분의 게임 개발사들은 게임 파일 변조 자체를 어렵게 하는 기본적인 보안을 유지함과 동시에, 이미 핵을 사용한 악성 유저를 찾아내 제재하는 안티 치트 프로그램을 같이 도입하고 있다. 따라서 안티 치트는 기술적으로 아예 핵을 사용하지 못하게 막기보다는 '핵 사용자를 적발하고 차단하는' 쪽으로 발달해 있다.
컴퓨터에 저장된 개인정보를 수집하기도 하는데, 금융권의 방화벽 프로그램과 같이 사용자 동의 없이 컴퓨터 사용 기록을 수집할 수 있다.. 그렇기 때문에 법의 기준에 맞춘 게임 이용 약관을 만들어 개인정보 수집에 대한 동의를 구하고 동의하지 않으면 서비스 이용 자체가 불가능하다. 그러나 일부 안티 치트에서 과도하고 무차별적인 데이터 수집으로 인한 백도어 논란이 발생하기도 한다.
2. 원리
안티 치트는 대개 다음과 같은 원리로 작동한다.-
클라이언트가 보내는 정보를 감시
게임 서버에서 클라이언트가 보내는 정보를 감시해 핵을 사용하는지 적발하는 것이다. 원래 규칙에는 없는 동작, 이를테면 게임 캐릭터가 하늘에 날 수 없는 게임에 날아다니는 등의 정상적으로는 불가능한 위치 정보 변동을 서버에서 감시하는 것이다. 에임핵의 경우, 플레이어의 조준 수준을 감시하는 방식으로만은 에임핵을 적발하진 않는데, 일반인이 보기에는 핵이라고 생각될 수 있는데 정말 에임이 말도 안될정도로 뛰어난 사람도 있기 때문이다. 그래서 보통 게임 회사들은 기술적인 부분에서 다양한 검토를 걸쳐서 핵을 적발하고 밴을 한다. 이런 안티 치트는 서버에서 작동하기 때문에 서버와 연결이 불안정해 갑작스럽게 위치가 변하는 경우를 핵으로 판단할 소지가 있다.
-
게임 클라이언트 무결성 검사
플레이어가 실행 중인 게임에 원래는 없는 부적절한 코드가 포함되어 있는지 패키지 검사를 하는 방식으로도 핵 적발이 이루어진다. 하지만 이런 방식은 프로그램 자체를 조작한 핵에만 해당하며, 조작하지 않고 프로그램 프로세스에 간섭만 하는 별도의 프로그램의 경우까진 적발할 수 없다. 따라서 이 경우엔 아래와 같은 방식이 사용된다.
-
실행 중인 프로세스와 컴퓨터 사용 기록 분석
컴퓨터 시스템의 정보, 실행 중인 모든 앱과 백그라운드 프로세스를 감시해 그 중에서 게임 클라이언트에 부적절한 접근, 간섭을 하는 코드를 실행하는 프로그램을 적발하는 것이다. 가장 강력하고 효과적인 방식이나, 몇 가지 문제가 있다. 일단 프로세스 전부를 실시간으로 모니터링 하다보니 CPU 점유율이 있어서 사양이 낮은 컴퓨터에는 원활한 게임 진행에 방해가 될 수 있으며 너무 지나치게 사용자의 컴퓨터 정보에 접근하는 안티 치트는 개인정보 침해 논란으로도 번질 수 있기 때문이다. 이러한 논란은 EasyAntiCheat 문서에서도 자세히 설명되어 있다. 예를 들어 Valve Anti-Cheat의 경우는 사용자의 DNS 캐시, 즉 인터넷 접속 기록을 밸브 서버에 보낸다는 사실이 밝혀진 뒤 개인정보 침해 논란이 있었는데, 단순히 핵 사이트에 들어간 기록이 있을지만 매칭할 뿐 이고 그 외 사용자가 어떤 페이지에 들어갔는지는 보지 않는다고 해명했다. 물론 그렇다고 개인정보 침해를 없던 일로 할 수는 없다. 핵 사이트에 들어간 기록도 엄연한 개인정보의 일부이다.
-
커널 모드
디바이스 드라이버
안티 치트는 게임의 메모리 조작을 방지하고 컴퓨터의 모든 프로세스를 원활하게 검사하고 자가 보호[1]를 위해 커널 모드 드라이버를 사용한다. 게임을 실행할 때 관리자 권한을 요구하는 이유는 안티 치트의 커널 드라이버를 실행하기 위해서다. 다만 커널의 Ring0보다 낮은 단계인 인텔 관리 엔진의 보안 취약점에는 무력화된다. 실제로 인텔 CPU에서만 사용할 수 있는 핵도 있었는데, 인텔 관리 엔진의 취약점을 사용했기 때문이다.
3. 문제점
안티 치트에는 심각한 문제점이 몇 가지 있다. 우선 핵 프로그램 적발을 위해서는 사용자의 컴퓨터를 모니터링 하는 것이 필수적이고, 이에 따라 개인정보 유출 문제가 있을 수 있다. 특히 오늘날 대부분의 안티 치트 프로그램은 커널 모드 권한으로 사용자 정보를 수집해 서버에 전달하는데 그 자체로 스파이웨어와 크게 다를 바가 없다.예를 들면 Valve Anti-Cheat는 핵 프로그램 관련 사이트 접속 대조를 위해 사용자의 DNS를 밸브 본사로 보내 대조하는데, 이로인해 백도어 의혹을 받은적이 있었으며, 블리자드 배틀넷의 워든 역시 스파이웨어 수준의 영역이라고 비판받기도 했다. 특히나 개인정보의 유출을 매우 심각하게 따지는 북미권으로써는 한 번쯤 개인정보 유출 우려로 인한 홍역을 겪게된다.
안티 치트의 기능이 너무 침습적이거나 게임 실행에 지나치게 관여할 경우 정상적인 게임 플레이가 힘들 정도로 오류를 뿜어대며 기껏 들어온 신규유저들이 너무 심한 버그와 튕김 현상 때문에 게임을 이탈해 결국 게임을 망하게 하는 결과를 낳기도 한다. 비슷한 사례로는 게임 초기의 발로란트의 뱅가드가 있다. 최근에는 시리즈 최초로 게임기와 PC의 크로스 플레이를 도입한 피파 23에서 이러한 문제가 나타나고 있다.
개요에서도 선술했듯이 안티 치트는 핵 프로그램 방지 목적으로는 효과를 보기 어렵고 핵 유저 적발이 목적으로 더 많이 사용되기 때문에, 무료 멀티플레이 게임들에서 효과가 적다는 단점이 있다.
그 밖에도 안티 치트 프로그램으로 인해 게임 요구 사양이 올라가는 문제라든지, 안티 치트 프로그램을 유지하는데 비용이 많이 들어 게임 회사에서 수익 구조 안정을 위해 과도한 과금 유도를 하는 등의 문제점도 있다.
4. 안티 치트 목록
- 가드캣
- 게임가드
- 배틀아이
- 워든
- 펑크버스터
- AhnLab HackShield
- CodeStage
- Denuvo
- EA anticheat
- Fairfight
- RICOCHET
- Valve Anti-Cheat
- XIGNCODE
- X-TRAP
- Xenuine
- EasyAntiCheat
- CheatBlocker
- Nexon Game Security
- VANGUARD
- Microsoft Anti-Cheat[2]