[소고] 게임 보안: 광클릭 개론

@codemaru · March 12, 2012 · 17 min read

광클릭이란 말 그대로 빛 광자에 클릭을 붙인 말로 빛처럼 빠르게 클릭을 한다는 의미입니다. 그렇다면 게임에서 빛처럼 빠르게 클릭해서 어떤 이득이 있는 것일까요? 이득이 있으니까 그런 일들을 하는 거겠죠. 바로 FPS 게임에서 이득을 볼 수 있습니다. 모든 FPS 게임에 통용되는 것은 아니지만 일부 FPS 게임의 경우 클릭 속도가 일정 간격 아래로 떨어질 경우 총기 반동이 왜곡되는 구간이 생깁니다. 동일한 지점에 클릭을 두 번 할 때에는 첫 번째 샷과 두 번째 샷이 총기 반동으로 인해서 다른 곳에 각각 발사됩니다. 하지만 광클릭을 사용해서 굉장히 빠르게 같은 지점에 두 번 클릭을 하게되면 두 샷 모두 동일한 지점에 발사되는 놀라운 현상을 경험할 수 있죠. 이말은 즉, 헤드샷이 아니더라도 한 방에 보내는 것이 가능해 진다는 겁니다. 속도 조절에 따라서 한 지점에 세 방, 네 방 등등을 한 큐에 발사할 수 있습니다. 굉장하죠? 조준이 아예 되지 않는 초보 게이머의 경우에는 별 효과가 없지만 중수 정도만 되더라도 광클릭을 사용하면 굉장한 실력 상승의 효과를 볼 수 있습니다.

다음으론 이 광클릭의 진화 역사를 좀 살펴보겠습니다. 초창기 광클릭은 대부분 소프트웨어 매크로 형태였습니다. 매크로를 이용해서 특정 키나 마우스의 특정 버튼에 더블 클릭 내지는 특수한 빠른 입력의 매크로를 작성해서 사용하는 형태였죠. 하지만 아시겠지만 이런 소프트웨어 매크로 방식의 경우에는 한계가 있습니다. 탐지하기 쉽고 무력화 되기는 더 쉽죠. 이후 등장한 광클릭은 마우스 자체를 개조한 형태였습니다. 기계적으로 사용자들이 개조한 것도 있고 중국 등지에서 만든 개조 마우스가 유행했죠. 기계적인 방식의 경우에는 만들어진 형태를 소프트웨어 적으로 가공하는 것이 불가능한 경우가 대부분입니다. 하지만 소프트웨어 방식이 아니라 이 시기부터 사실상 광클릭 탐지가 불가능해지기 시작했습니다. 이후에 거대한 변화가 닥쳐옵니다. 게이밍 마우스라는 이름으로 메이저 벤더들에서 매크로 기능이 탑재된 마우스를 내놓기 시작한 것이죠. 로지텍이 대표적입니다. 로지텍도 초창기 게이밍 마우스의 경우 소프트웨어 방식으로 에뮬레이션하는 형태였으나 최근에 나오는 시리즈 상위 버전의 경우 놀라운 기능이 탑재됩니다. 바로 마우스 하드웨어 내부에 별도 메모리를 두고 해당 메모리에 매크로를 입력했다가 사용하는 기능이죠. 로지텍 소프트웨어를 사용해서 매크로를 마우스 내부 메모리에 입력 시킨 다음에 다른 컴퓨터에 들고가도 바로 사용이 가능하다는 이야깁니다. 추가적인 드라이버나 소프트웨어 설치 없이 말이죠. 기계식 개조의 조악함을 넘어섬과 동시에 소프트웨어 방식의 손쉬운 탐지를 회피한 것이죠. 이 때 부터 게이머들 사이에서는 이러한 마우스의 사용이 우후죽순 늘어납니다.

이 문제가 심각한 사실은 분명한 부정행위 임에도 메이저 벤더들이 게이밍 마우스라는 이름으로 제품을 출시하고 해당 제품들이 게임에서 차단되지 않기 때문에 해킹이라는 사실을 별로 인식하지 않는 문제가 발생했다는 점 입니다. 일부 사용자의 경우 매크로 게이밍 마우스를 사용해서 게임 대회에 참가하는 것 또한 문제될 것이 없다고 생각한다는 점에서 이러한 상황의 심각성을 엿볼 수 있습니다. 더 안타까운 사실은 게이머들 사이에서 실력으로 게임을 하는 시대는 지나갔다. 이제는 돈으로 게임을 하는 시대라는 인식이 퍼지고 있다는 사실입니다(로지텍 게이밍 마우스 상위 기종은 상당히 고가입니다). 뭔가 현실 세계의 불균형이 온라인 세계로까지 이어지는 것 같지 않습니까? 이러한 공정하지 못한 현실을 바로잡기 위해서 최근 몇 달 동안 저희 XIGNCODE(라고 쓰고 싸인코드라고 읽습니다) 개발팀에서는 광클릭에 대한 연구를 진행했습니다. 그 결과 이 이슈가 제기되었던 게임 내에서 상당 수의 광클릭 유저를 몰아냄과 동시에 광클릭 사용이 부정행위라는 인식을 심어주고 있습니다. 물론 아직 끝은 아니죠. 이 이슈를 발본색원하기 위해서 지금도 새로운 아이디어, 알고리즘, 그리고 대안을 연구하고 있습니다. 이어지는 내용은 그간 저희가 겪은 시행 착오와 생각들을 정리해본 내용입니다.

#0

우리의 초기 접근은 하드웨어에 대한 탐지였습니다. 사용자들이 주로 사용하는 메이저 벤더의 게이밍 마우스가 한정적이기 때문에 해당 벤더의 마우스 내부에 탑재된 메모리의 내용물을 읽어서 차단할 수 있지 않을까란 생각이었죠. 참 재기 발랄한 생각이 아닐 수 없습니다. 그래서 저희는 불철주야 게이밍 마우스를 분석했습니다. 당연히 로지텍 마우스가 일순위였죠. 그런데 안타까운 사실이 벌어졌습니다. 저희 예상과는 달리 로지텍 마우스 소프트웨어 자체에서도 게이밍 마우스에 담겨진 매크로 내용을 읽어오는 부분이 없었기 때문이었죠. 로지텍 전용 소프트웨어 조차도 마우스에 쓰는 기능은 있어도 읽는 기능은 없다는 이야기입니다.

어쨌든 그래도 아쉬운대로 저희는 해당 소프트웨어의 기록하는 부분만 리버싱을 한 다음 샘플 프로그램을 만들어서 똑같이 기록해 봤습니다. 그랬더니 놀라운 일이 발생했습니다. 해당 로지텍 마우스는 영원히 매크로를 기록할 수 없는 불능 상태가 돼버렸지요. ㅋㅋ 개발팀에서는 이 세상 모든 게이밍 마우스를 매크로 불능으로 만드는 것도 나쁘지 않겠다고 생각했지만 광클릭 외의 목적으로 그 비싼 마우스를 구매하신 분들에게는 큰일날 소리라는 생각과 함께 이 방식에 대한 연구를 중단했습니다.

#1

이후 저희는 속도에 집착했습니다. 광클릭이란 말에서도 알 수 있듯이 이 문제의 핵심 쟁점은 속도에 있다고 생각한 것이죠. 당연히 매크로 마우스의 클릭 속도는 인간이 범접할 수 없는 영역의 속도로 설정할 것이란 생각이었습니다. 사람이 할 수 있는 속도라면 그 속도로 설정하진 않을 것이란 생각이었죠. 하지만 이런 생각을 토대로 속도를 측정하는 것 또한 쉽지는 않습니다. 매크로 설정을 통한 자동 입력되는 마우스 클릭도 있지만 거기에 더불어 사용자가 해당 매크로나 일반 버튼을 통해서 입력 시키는 이벤트도 존재하기 때문입니다. 즉, 우리가 구하려고 하는 매크로 입력의 속도만 차용할 수는 없다는 점이죠. 노이즈가 섞여 있다는 이야기 입니다. 더불어 이 문제를 좀 더 어렵게 만드는 또 한 가지 요인은 FPS 게임의 경우에 항상 클릭 이벤트를 강요하지는 않는다는 점입니다. 대부분의 시간을 적을 찾는데에 보내고 실제로 전투 중 발발하는 클릭 이벤트는 그렇게 많지 않습니다. 이렇게 적을 서치하는 시간 또한 같이 계산해버리면 엄청난 노이즈가 됩니다.

이렇게나 복잡하고 어려운 문제를 똑똑한 XIGNCODE 개발 팀에서 아주 심플하게 모델링 해서 놀랍게도 노이즈를 상당수 줄이는데 성공했습니다. 그리곤 그 결과를 측정해 보았죠. 참고로 XIGNCODE 개발팀에는 정말 똑똑한 사람들이 많습니다. 진짜로요 ㅋㅋ~~

             md 0
이 그래프는 사용자들의 평균 입력 속도를 나타냅니다. 앞에서 설명한 것처럼 복잡한 연산 후에 노이즈를 제거하고 뭔가 의미있는 값들로 구한 평균입니다. 가로축은 속도를 ms단위로 세로는 해당 구간에 포함된 사용자 숫자를 의미합니다. 알흠답게도 200ms를 기점으로 정규 분포를 보여주고 있습니다. 저희 내부 테스트에 의하면 보통 사람이 생각없이 더블 클릭을 하면 100-200ms 정도가 나오는 것으로 나타났습니다. 저희는 이 데이터 구간에서 100ms 아래에 있는 사용자들이 광클릭을 사용하고 있는 것이 아닌가라는 추론을 하기 시작했습니다.

             md 1
평균만으론 뭔가 심심해서 표준 편차를 구해봤습니다. 매크로 입력을 사용한다면 당연히 표준 편차가 낮을 거라는 생각이었죠. 이 그래프도 앞선 그래프와 마찬가지로 x축은 속도를 y축은 사용자 숫자를 나타냅니다. 저희는 앞쪽 데이터 0-20ms 정도의 편차를 가지는 사용자들을 광클릭 사용자라고 판단하고 있습니다. 사람이 클릭 이벤트를 발생 시켰다면 이렇게 편차가 낮기는 쉽지 않을테니까 말입니다.

             md 2
두 데이터에 대한 상관 관계입니다. 가로축이 평균, 세로 축이 표준편차입니다. 뭔가 소행성같은 느낌이 나죠. 저희는 이 소행성에서 떨어져 나온 분진들 중에서도 y축값이 낮고 x축의 값도 낮은 데이터에 집중하고 있습니다. 평균 50ms, 표준 편차 50ms를 설정할 경우에 전체 사용자의 1% 정도가 나왔습니다. 그리고 더욱 놀라운 사실은 그 데이터에 포함된 사용자들이 기존 매크로 검출률이 높은 사용자였다는 점이죠. 이쯤되면 감 잡으셨죠.

#2

물론 광클릭외에도 게이밍 마우스를 통해서 얻을 수 있는 이득은 무궁무진합니다. 인간의 입력을 기계가 대체한다는 점만을 놓고 볼 때 게임 상에서 허용되지 않는 방식을 통한 모든 종류의 매크로 입력은 사실상 부정행위입니다. XIGNCODE 개발팀에서는 이러한 다양한 매크로 방식에 대해서도 자동적으로 식별할 수 있는 새로운 방법을 연구하고 있습니다.

지금은 일정 구간의 모든 입력을 레코딩한 다음 해당 구간에서 공통적으로 반복되는 가장 긴 부분 집합을 찾는 작업을 하고 있습니다. 물론 이 방법의 가장 큰 취약점은 타이밍 오차인데 그 부분만 근사할 수 있게 만든다면 굉장히 강력한 방법이 될 거라고 생각합니다. 하지만 이 작업의 가장 큰 걸림돌은 잘 아시겠지만 이 내용이 말로하면 쉽지만 동작하는 코드로 만들어 내기에는 그렇게 녹록한 작업이 아니라는 점이죠. 어쨌든 XIGNCODE 개발팀은 이 세상 모든 하드웨어 입력 방식의 매크로를 원천 차단하겠다는 신념 하나로 오늘도 불철주야 불꽃 코딩을 하고 있습니다. ㅋㅋㅋ~

#3

어때요? 잘 보셨죠. XIGNCODE 개발팀은 단순히 해킹툴을 잡은 일만 하는 건 아니라는 거, 게임에 대한 모든 부정 행위에 대해서 깊이 있는 생각을 하고 그 대안을 찾아준다는거 꼭 기억하세요. 뉴요커 게임 개발자라면 당연히 보안 제품은 XIGNCODE를 선택한다는 것도 잊지 마시구욥 흐흐~~

probably는 빼도 된다는거, 까먹지 마세요!!! ㅋ~

probably는 빼도 된다는거, 까먹지 마세요!!! ㅋ~

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중