1. 개요
주로 PC 기반의 온라인 게임에서, 악성 사용자(주로 핵)의 게임 부정행위를 적발하는 기능을 하는 보안 프로그램. 주로 PC 게임에서 사용된다.2. 상세
어떤 온라인 게임도 핵으로 부터 완전히 자유로울 순 없다. 게임사가 아무리 보안을 철저히 한다고 해도 뚫으려는 시도가 이어지면 언젠가는 뚫리기 마련이기 때문. 그러므로 대부분의 게임 개발사들은 게임 파일 변조 자체를 어렵게 하는 기본적인 보안을 유지함과 동시에, 이미 핵을 사용한 악성 유저를 찾아내 제재하는 안티 치트 프로그램을 같이 도입하고 있다. 따라서 안티 치트는 기술적으로 아예 핵을 사용하지 못하게 막기보다는 '핵 사용자를 적발하고 차단하는' 쪽으로 발달해 있다.컴퓨터에 저장된 개인정보를 수집하기도 하는데, 금융권의 방화벽 프로그램과 같이 사용자 동의 없이 컴퓨터 사용 기록을 수집할 수 있다.. 그렇기 때문에 법의 기준에 맞춘 게임 이용 약관을 만들어 개인정보 수집에 대한 동의를 구하고 동의하지 않으면 서비스 이용 자체가 불가능하다. 그러나 일부 안티 치트에서 과도하고 무차별적인 데이터 수집으로 인한 백도어 논란이 발생하기도 한다.
모바일 버전도 있기는 하지만 모바일 기기는 일반적으로 안드로이드나 iOS 등 모바일 운영체제의 경우 일반적인 방법으로는 시스템(특히 OS의 root와 커널)에 접근할 수 있는 기능이 없기 때문에[1] 루팅 여부 확인, 커스텀 롬 감지나 악성 앱 차단(해킹 프로그램 포함)이나 사용자 모드에서 게임 파일의 변조나 메모리 변조를 감지하는 등의 제한적인 기능만 수행할 수 있다. 안드로이드는 자체 보안 기능인 SafetyNet를 주로 사용하는 편이다. SafetyNet는 제조사 순정 펌웨어를 사용했는지 검사하는 기능이다. iOS의 경우도 iOS에서 공식적으로 제공하는 보안 기능을 이용하여 구현하는 것 이외에는 딱히 방법이 없다. 하지만 모바일의 경우 시스템 변조가 어렵기 때문에 반대로 핵을 적용하기도 쉽지 않아서 그냥 시스템 변조가 용이한 구형 OS의 지원을 중지하는 것이 더 낫다.
게임기의 경우 커스텀 펌웨어를 사용하는 등 변조된 기기로는 온라인 서비스 접속이 제한되는 경우가 대부분이기 때문에 굳이 따로 만들지 않는다.
3. 원리
안티 치트는 대개 다음과 같은 원리로 작동한다.- 클라이언트가 보내는 정보를 감시
게임 서버에서 클라이언트가 보내는 정보를 감시해 핵을 사용하는지 적발하는 것이다. 원래 규칙에는 없는 동작, 이를테면 게임 캐릭터가 하늘에 날 수 없는 게임에 날아다니는 등의 정상적으로는 불가능한 위치 정보 변동을 서버에서 감시하는 것이다. 에임핵의 경우, 플레이어의 조준 수준을 감시하는 방식으로만은 에임핵을 적발하진 않는데, 일반인이 보기에는 핵이라고 생각될 수 있는데 정말 에임이 말도 안될정도로 뛰어난 사람도 있기 때문이다. 그래서 보통 게임 회사들은 기술적인 부분에서 다양한 검토를 걸쳐서 핵을 적발하고 밴을 한다. 이런 안티 치트는 서버에서 작동하기 때문에 서버와 연결이 불안정해 갑작스럽게 위치가 변하는 경우를 핵으로 판단할 소지가 있다.
- 게임 클라이언트의 무결성 검사
플레이어가 실행 중인 게임에 원래는 없는 부적절한 코드가 포함되어 있는지 패키지 검사를 하는 방식으로도 핵 적발이 이루어진다. 하지만 이런 방식은 프로그램 자체를 조작한 핵에만 해당하며, 조작하지 않고 프로그램 프로세스에 간섭만 하는 별도의 프로그램의 경우까진 적발할 수 없다. 따라서 이 경우엔 아래와 같은 방식이 사용된다.
- 프로그램 난독화 및 메모리 변경 감지
프로그램을 난독화하고 사용자 모드 수준에서 메모리 변경 감지 알고리즘을 넣어 메모리 변조를 막는다.
- PC의 무결성 검사
드라이버 서명, 보안 부팅, TPM 등을 이용하여 PC의 운영체제와 펌웨어가 안전한 상태인지 확인하는 방법으로, 커널 수준 보안 프로그램 없이도 기본적인 시스템 무결성 검사가 가능하기 때문에 개인정보 이슈가 가장 적고 보안적으로는 다른 방법을 시도하기 전 가장 1차적으로 시행해야 하는 방법이다.[2] 커널수준 드라이버를 사용하면 더 심층적으로 무결성 검사가 가능하다. 시큐어 부팅과 TPM 없이 설치 가능한 마지막 윈도우인 윈도우 10 지원 종료 이후에는 안티 치트가 시큐어 부팅과 TPM 강제, IOMMU 활성화, 가상화 보안(VBS) 등을 필수적으로 활성화하도록 요구하게 될 가능성도 높다. 이렇게 되는 경우에는 윈도우 10을 실행하는 구형 PC로는 게임이 불가능해질 것이다.모든 앱에 샌드박스가 적용된 안드로이드나 iOS의 경우 내부적인 난독화나 메모리 변조 탐지 외에는 사실상 이 방법만 사용이 가능하다.
- 실행 중인 프로세스와 컴퓨터 사용 기록 분석
컴퓨터 시스템의 정보, 실행 중인 모든 앱과 백그라운드 프로세스를 감시해 그 중에서 게임 클라이언트에 부적절한 접근, 간섭을 하는 코드를 실행하는 프로그램을 적발하는 것이다. 가장 강력하고 효과적인 방식이나, 몇 가지 문제가 있다. 일단 프로세스 전부를 실시간으로 모니터링 하다보니 CPU 점유율이 있어서 사양이 낮은 컴퓨터에는 원활한 게임 진행에 방해가 될 수 있으며 너무 지나치게 사용자의 컴퓨터 정보에 접근하는 안티 치트는 개인정보 침해 논란으로도 번질 수 있기 때문이다. 이러한 논란은 EasyAntiCheat 문서에서도 자세히 설명되어 있다. 예를 들어 Valve Anti-Cheat의 경우는 사용자의 DNS 캐시, 즉 인터넷 접속 기록을 밸브 서버에 보낸다는 사실이 밝혀진 뒤 개인정보 침해 논란이 있었는데, 단순히 핵 사이트에 들어간 기록이 있을지만 매칭할 뿐 이고 그 외 사용자가 어떤 페이지에 들어갔는지는 보지 않는다고 해명했다. 물론 그렇다고 개인정보 침해를 없던 일로 할 수는 없다. 핵 사이트에 들어간 기록도 엄연한 개인정보의 일부이다.
- 커널 모드 디바이스 드라이버
안티 치트는 게임의 메모리 조작을 방지하고 컴퓨터의 모든 프로세스를 원활하게 검사하고 자가 보호[3]를 위해 커널 모드 드라이버를 사용한다. 게임을 실행할 때 관리자 권한을 요구하는 이유는 안티 치트의 커널 드라이버를 실행하기 위해서다. 다만 커널의 Ring0보다 낮은 단계인 인텔 관리 엔진의 보안 취약점에는 무력화된다. 실제로 인텔 CPU에서만 사용할 수 있는 핵도 있었는데, 인텔 관리 엔진의 취약점을 사용했기 때문이다. UEFI 취약점에도 쉽게 무력화된다. 그 이유는 UEFI는 시스템에서 최초로 실행되는 프로그램이고 커널을 로딩하는 데 사용되기 때문에 이게 변조되는 경우 이후에 실행되는 모든 커널과 프로그램은 신뢰할 수 없는 상태가 되기 때문. 마이크로소프트가 시큐어 부팅을 켜고 펌웨어 업그레이드를 할 것을 권고하는 이유도 이와 같다. 한편 안티 치트에서 사용하는 드라이버는 신뢰 수준이 낮은 드라이버인 경우가 많다. 시작프로그램으로 등록되는 경우는 있지만 시스템 부팅 직후부터 시작되는 중요 장치 드라이버와 안티 바이러스보다는 늦게 실행되는 것이 보통이다.
- 가상머신 감지
대부분의 안티 치트는 가상머신 환경 확인 기능이 들어있다. 가상머신 환경에서는 시스템 변조를 하거나 해커가 안티치트의 동작을 분석하기 용이하기 때문에 가상머신 환경일 경우 게임이 종료된다. 이로 인해 가상머신으로 다중 클라이언트를 돌릴 수 없다. 이는 일부 금융권 ActiveX나 일부 악성코드들도 해당된다.
4. 문제점
안티 치트에는 심각한 문제점이 몇 가지 있다. 우선 핵 프로그램 적발을 위해서는 사용자의 컴퓨터를 모니터링하는 것이 필수적이고, 이에 따라 개인정보 유출 문제가 있을 수 있다. 특히 오늘날 대부분의 안티 치트 프로그램은 커널 모드 권한으로 사용자 정보를 수집해 서버에 전달하기 때문에 그 자체로 스파이웨어와 크게 다를 바가 없다.예를 들면 Valve Anti-Cheat는 핵 프로그램 관련 사이트 접속 대조를 위해 사용자의 DNS 조회 기록을[4] 밸브 본사로 보내 대조하는데, 이로 인해 백도어 의혹을 받은 적이 있었으며, 블리자드 배틀넷의 워든 역시 스파이웨어 수준의 영역이라고 비판받기도 했다. 한국의 경우 금융, 공공사이트에서 설치하는 보안 플러그인으로 인해 이러한 이슈에 다소 둔감한 편이지만, 개인정보의 유출을 매우 심각하게 따지는 북미권에서는 한 번쯤 개인정보 유출 우려로 인한 홍역을 겪게 된다.
안티 치트의 기능이 너무 침습적이거나 게임 실행에 지나치게 관여할 경우 정상적인 게임 플레이가 힘들 정도로 오류를 뿜어대며 기껏 들어온 신규 유저들이 너무 심한 버그와 튕김 현상 때문에 게임을 이탈해 결국 게임을 망하게 하는 결과를 낳기도 한다. 비슷한 사례로는 게임 초기의 발로란트의 뱅가드가 있다. 최근에는 시리즈 최초로 게임기와 PC의 크로스 플레이를 도입한 피파 23에서 이러한 문제가 나타나고 있다.
이러한 것이 심해지면 Windows 보안기능과 충돌하는 경우도 있는데, Windows 11 이후부터는 보안 조치들이 점차 강화되고 있어 Windows 10이 지원 종료된 이후부터는 서서히 문제가 될 여지가 있다. MS에서는 커널 모드 보안 프로그램을 운영체제에서 차단하기 위해 커널 패치 보호 등과 같은 기술적 조치를 취하고 있어서 윈도우 버전이 올라갈 때마다 커널 모드 안티 치트를 구현하기는 어려워질 수도 있다.
윈도우즈 등의 OS 외에도 안티 치트끼리 충돌하는 문제도 있다. 이전부터 충분히 예견되어왔고 소규모로는 발생했을 수도 있으나 메이저 게임사들끼리 발생한 것은 배틀필드 6의 안티 치트가 발로란트의 안티 치트와 충돌한 것이 주요하다.#
충돌 문제 외에도 백그라운드에서 거의 항상 돌아가기 때문에 컴퓨터의 성능을 하락시키는 단점이 있으며, 이는 게임 요구 사양을 올리는 문제로 이어진다. 갈수록 치트가 교묘해지며 안티 치트도 덩달아 무거워지기 때문에 컴퓨터의 전반적 성능이 올라간다고 하여 안티 치트가 사용하는 리소스가 상대적으로 줄어들 것으로 예상되지는 않는다.
그 외에도 개요에서도 선술했듯이 안티 치트는 핵 프로그램 방지 목적으로는 효과를 보기 어렵고 핵 유저 적발이 목적으로 더 많이 사용되기 때문에 무료 멀티플레이 게임들에서 효과가 적다는 단점이 있다. 또한 안티 치트 프로그램을 유지하는데 비용이 적지 않게 들며, 이는 결국 소비자에게 전가되기 마련이라 게임 가격 상승이나 과금 유도에도 영향을 줄 수 있다는 단점도 있다.
5. 안티 치트 목록
- 가드캣
- 게임가드
- 배틀아이
- 워든
- 펑크버스터
- AhnLab HackShield
- CodeStage
- Denuvo Anti-Cheat
- EA Javelin Anticheat(구 EA AntiCheat)
- Fairfight
- RICOCHET
- Valve Anti-Cheat
- XIGNCODE
- X-TRAP
- Xenuine
- Easy Anti-Cheat
- CheatBlocker
- Nexon Game Security
- VANGUARD
- Microsoft Anti-Cheat(TruePlay Anti-Cheat)
- RICOCHET
[1] 그나마 안드로이드는 설치된 앱 목록 조회와 같은 위험성이 낮은 시스템 정보는 접근이 가능하지만 iOS의 경우 그런것 조차 할 수 없다.[2] 시스템 자체가 장악되어 있으면 안티 치트 자체가 보안성을 크게 상실해 사실상 의미가 없어지게 된다. 일부 게임사에서 리눅스에서 게임 지원을 포기한 이유도 리눅스는 드라이버 서명, TPM과 보안 부팅이 강제되며, 가상화 보안(VBS)에 내장 안티바이러스까지도 기본적으로 활성화되는 윈도우와 달리 보안 관련 제한이 거의 없는 플랫폼이기 때문에 게임사에서 이용자에게 보안 설정을 켤 것을 강제하기에도 불리하며 자유로운 리눅스 플랫폼의 특성상 해커도 자유롭게 이용할 수 있어 오히려 일반 PC에서는 리눅스 쪽이 시스템 보안이 침해될 가능성이 높기 때문이다. 일부 유저들은 리눅스의 보안성이 더 강력한데, 리눅스 말고 윈도우만 지원하는 이유는 무었이냐고 반문하기도 하지만, 리눅스의 경우 사용자들이 자유롭게 수정하고 배포할 수 있는 OS라서 핵을 막아야 하는 입장에서는 리눅스는 기본적으로 신뢰할 수 없다. 반면 윈도우의 경우 마이크로소프트가 독점적으로 커널 코드를 관리하고 컴퓨터 제조사들이 마이크로소프트와 협력하여 하드웨어 수준에서 보안을 관리하기 때문에 핵을 막아야 하는 입장에서는 윈도우가 더 유리하다. 제조사에서 모든 신뢰 수준을 관리하고 보안 기능이 강제로 활성화된 상태로 출고하는 크롬OS나 안드로이드 기기들은 기본적으로 매우 강력한 보안 모듈을 탑재하였기에 때문에 리눅스 특유의 권한 관리와 결합되어 말이 많이 달라지지만, 일반 리눅스 배포판에서의 기본 보안정책과 비교하면 윈도우가 더 앞서 있다.[3] 자가 보호 기능이 없다면 핵 프로그램은 프로세스 종료 등의 방법으로 안티 치트를 무력화시킬 수 있다.[4] 즉, 다시 말해 인터넷 방문 기록이며, 단순히 브라우저를 통해서 직접 들어간 것 외에도 각 프로그램들에서 백그라운드 접속 등을 통해서도 DNS 조회가 발생한다. 카카오톡 등 도메인이 아니라 IP가 하드코드되어 통신하는 프로그램의 인터넷 기록은 수집되지 않을 가능성이 높다.