[개발일지] 비인가 프로그램 대응에 대해 안티 치트 팀에서 전하는 글

안녕하세요 플레이어 여러분,

지난 FIX PUBG 캠페인 개발자 일지에서 안티 치트 관련 내용은 추후에 좀 더 자세히 다루겠다고 말씀드렸듯이 이번 개발자 일지에서는 지금까지 진행해온 안티 치트 관련 진행 상황에 대해 공유를 드리고자 합니다.

“비인가 프로그램을 잡고 있나?” “비인가 프로그램에 대한 대응 방향이 궁금하다”

커뮤니티 동향을 살펴보면 자주 보는 질문입니다. PUBG가 진행하고 있는 안티 치트 활동에 대하여 모든 것을 속 시원하게 알려드리고 싶지만 안티 치트 생태계에서 이러한 정보는 매우 민감하며, 저희가 공개해 드리는 내용이 해커나 비인가 프로그램을 개발하는 사람들에게 오히려 도움이 될 수도 있기 때문에 자세한 내용을 알려드리기가 어려웠습니다.

하지만 저희도 플레이어 여러분과의 소통이 필요하다는 것을 늘 인지하고 있었고, 여전히 자세한 내용 공개는 어렵지만, 안내가 가능하다고 판단한 정보를 최대한 여러분께 공개하여 그동안 저희가 비인가 프로그램에 대응하기 위해 들여온 노력과 지금까지의 결과, 그리고 앞으로 저희가 나아갈 방향성에 대해 말씀드리는 시간을 갖고자 이번 안티 치트 개발자 일지를 준비하게 되었습니다.

FIX PUBG 캠페인 사이트에 기재된 FIX LOG의 목차와는 살짝 다르지만, 좀 더 효과적으로 여러분께 내용을 설명할 수 있도록 이번 개발자 일지는 아래와 같은 순서로 안내를 드리고자 합니다.

  • 기술적 대응 강화
  • 안티 치트 솔루션 기능 개선
  • 비인가 프로그램 사용자 대응 프로세스 개선
  • 시스템 취약점 보완
  • 법적 대응 강화

기술적 대응 강화

배틀그라운드 게임 프로세스를 공격하는 비인가 프로그램들의 공격기법은 매우 다양한 형태가 있고, 각각의 공격 기법에 대응하고 효율을 높이기 위해 여러 가지 보안 조치를 해왔습니다. 먼저 일반적으로 알려진 비인가 프로그램의 대략적인 구동 방식을 소개해드리고, 이를 바탕으로 한 기술적인 대응 강화 조치에 관해 설명을 이어가도록 하겠습니다.

① 비인가 프로그램(exe)과 게임(exe)이 구동되면 이와 동시에 관련 데이터가 메모리(RAM)에 로딩됩니다.

② 게임 프로세스 영역의 자체 구현된 보호 기술 혹은 제 3자 게임 안티 치트 솔루션의 보호 장치가 작동합니다.

  • 해당 프로세스 영역을 타 프로세스가 접근하지 못하도록 1차적으로 보호하는 단계입니다.

③ 불법프로그램 프로세스가 ②의 보호기술을 무력화고 게임 프로세스 메모리에 접근(access)*하는데 성공합니다.

  • *접근이 가능해졌다는 것은 게임과 관련된 정보를 임의로 바꿀 수 있다는 것을 의미합니다
  • 여기에 사용되는 대표적인 기법은 DKOM, Process Hollowing, SSDT후킹 등이 있습니다.

④ 게임 프로세스 메모리에 접근권한을 획득한 비인가 프로그램은 게임 내 각종 정보들을 수집하여 변조 또는 복제 후 게임에서 제공하지 않는 불법적인 기능을 제공하게 됩니다. 여기에 사용되는 대표적인 기법으로 DLL인젝션과 Code인젝션이 있습니다.

  • DLL 인젝션: 특정 프로세스에 dll 파일을 삽입하여 실행되게하는 기법으로 윈도우의 LoadLibrary() API 등이 사용됩니다.
  • Code 인젝션: 타겟 프로세스에 실행 코드를 삽입하는 기법으로 윈도우의 CreateRemoteThread() 등이 사용됩니다.

⑤ 획득한 메모리공간을 마음대로 읽어오거나, 위조/변조하여 게임에서 제공하지 않는 비정상적인 기능을 제공하는데 성공합니다.

첫 번째로 말씀드릴 내용은 공격 기법 중 가장 고전적이고 널리 사용되는 방법인 DLL 인젝션입니다. DLL 인젝션은 특정 DLL 파일을 게임프로세스에 강제로 삽입하는 공격 기법입니다. 이 기법이 성공하고 나면, 게임 프로세스는 이 DLL의 코드 영역이 마치 원래의 게임코드인 것처럼 신뢰하게 됩니다. 따라서 이 DLL을 이용해 후킹하거나 데이터를 가로채는 등 해커의 의도대로 프로세스를 조작할 수 있게 됩니다.

안티 치트 팀에서는 이 DLL 인젝션 공격기법의 차단에 힘써왔습니다. 배틀그라운드의 개발 초기에는 Steam이나 Discord 등의 프로그램들이 배틀그라운드 프로세스에 DLL인젝션을 시도하거나 마치 악성코드인 것처럼 인식되는 등 호환성 문제도 일부 있었습니다.

하지만 지속적인 개선 작업을 통하여 대부분의 호환성 이슈를 해결하였고 비인가 프로그램의 DLL인젝션 공격 또한 대부분 차단하고 있습니다. 현재는 이 DLL 인젝션을 통한 공격 기법으로 배틀그라운드 프로세스에 실질적으로 유효한 효과를 보는 것이 거의 불가능하다고 할 수 있습니다.

다음으로 설명드릴 공격 기법은 최근에 가장 많이 발견되는 공격 기법의 하나인 커널 드라이버를 이용한 공격입니다. 커널 드라이버는 원래 하드웨어간의 통신이나 특정 권한에서 작동하는 프로세스를 만들기 위한 파일로, 이 커널 드라이버는 대부분의 안티 치트 솔루션을 우회할 수 있으며 일반 사용자 권한 보다 높은 권한으로 실행되기 때문에 이를 탐지하기가 매우 어렵습니다.

또한 윈도우 OS에서 자체적으로 비인가 커널 드라이버를 차단하고 있음에도 불구하고, OS의 보안 취약점을 통하거나 불법 유통되는 공인인증서를 활용해 마치 정상적인 커널 드라이버인 것처럼 속여 불법행위에 활용되는 케이스가 많이 보입니다.

DLL인젝션 차단에 쓰인 것과 동일한 방법으로 해당 공격 기법에 대해 방어할 수도 있지만 윈도우 OS의 취약점들이 지속해서 발견되고 있고 대부분의 안티 치트 솔루션들이 악성코드와 유사한 방식으로 동작하기 때문에 분간이 힘들어 이 방법으로는 효과적으로 차단하기가 어렵습니다. 따라서, 안티 치트 팀에서는 커널 드라이버를 통한 공격에 효과적으로 대응하기 위해 해커가 악용할 소지가 큰 메모리 영역을 암호화하여 우선적으로 보호하고 있고, 그 적용 범위를 계속해서 넓혀가는 작업을 진행하고 있습니다.

이 밖에도 클라이언트와 서버 사이의 통신 프로토콜 암호화나 클라이언트에서의 결과값을 서버에서 재검증하는 등 다양한 기술적 대응을 강화해 나가고 있으며, 비인가 프로그램과의 싸움에서 우위를 점할 수 있도록 최선을 다하고 있습니다.

안티 치트 솔루션 기능 개선

배틀그라운드는 앞서 설명해 드린 기술적 보호 조치 외에도 게임 프로세스 영역 보호를 위해 외부 안티 치트 솔루션을 사용하고 있습니다. 이미 보도자료 등을 통하여 외부에 알려진 것처럼 저희는 BattlEye, Uncheater 두 가지의 안티 치트 솔루션을 사용하고 있습니다. 이를 통하여 게임 프로세스 영역을 보호하고, 안티 치트 솔루션을 우회하는 다양한 시도에 대한 감지를 병행하고 있습니다.

안티 치트 솔루션을 통한 보호 조치 외에도 머신러닝 기법을 도입하여 게임 이용자의 패턴을 분석하고, 비인가 프로그램 사용자의 비정상적인 게임 패턴 감지나 정상적인 게임 진행을 방해하는 행동에 대해서도 적발할 수 있는 시스템을 구축하여 운용하고 있습니다. 이러한 시스템을 구축하는 과정에서 다양한 경험을 보유한 다수의 안티 치트 솔루션 업체, 최고 수준의 엔지니어들과의 협업을 통하여 게임 보안 수준을 강화하는데 많은 발전이 있었습니다.

앞으로도 다양한 안티 치트 솔루션 업체들과 협업하여 새로운 공격 기법에 대한 연구와, 이를 방어하기 위한 기술 개발을 지속해 나갈 예정입니다.

비인가 프로그램 사용자 대응 프로세스 개선

위에 언급한 내용과 같이 기술적 보호 조치가 마련되어 있음에도 현실적으로 모든 비인가 프로그램을 완벽하게 차단하는 것은 어렵습니다. 겹겹이 둘러싼 보호 장치를 우회하고 침입하는 비인가 프로그램에 대해 저희는 해당 프로그램이 사용되는 것을 감지하고 즉각 차단하는 방식으로 대응하고 있습니다.

안티 치트 팀에서는 일 평균 약 3TB(4GB 영화 698편 분량)의 게임 로그, 60 여종의 치트 로그 그리고 일 평균 1천만 건의 신고 리포트를 분석하고 있으며 이를 통하여 비정상적인 패턴을 보이는 이용자를 선별하고 검증을 거쳐 제재를 진행하고 있습니다. 그리고 비인가 프로그램의 패턴을 주기적으로 파악하여 마치 “백신” 프로그램처럼 이들의 데이터베이스를 구축하고, 이를 토대로 이미 알려진 각종 비인가 프로그램을 사용하는 이용자에 대해 강력한 제재를 이어 나가고 있습니다.

이러한 비인가 프로그램을 감지하고, 비인가 프로그램 이용자에 대한 신속한 대응 및 제재를 진행함과 동시에 플레이어 여러분께 제재 진행 상황을 공유해드릴 수 있도록 시스템을 개선해 나가고 있습니다.

그 예로, FIX PUBG 캠페인에서 말씀드렸듯이 신고 피드백 시스템을 개발해 지난 8월 23일 업데이트부터 게임에 반영하여 실제 활용하고 있습니다. 신고 피드백 시스템이 적용된 후부터 지난 11월 30일까지 약 1억 건의 신고에 대해 피드백을 드렸습니다. 특히, 한 게임에서 다수의 신고를 받은 플레이어의 83%가 영구 제재되는 등 여러분이 보내 주시는 신고가 공정한 게임 환경을 만드는 데 많은 도움이 되고 있습니다.

아래는 8월 23일부터 11월 30일까지의 신고 피드백 주간 수치입니다.

FIX PUBG 캠페인에서 언급한 하드웨어 제재와 관련해서도 안내해 드립니다. 저희는 지난 11월 19일부로 하드웨어 제재를 시작하였습니다. 하드웨어 제재는 매우 민감한 제재 수단이기 때문에 PC방이나 공공장소의 PC가 피해를 받지 않도록 하고, 일부 선량한 피해자가 발생하지 않도록 하기 위해 매우 신중하게 대상자를 선별하고 있습니다. 하드웨어 제재가 되면 게임 도중이라도 아래 스크린샷과 같은 경고창이 나타나며 이후로 해당 하드웨어에서는 더 이상 배틀그라운드를 플레이 할 수 없습니다. 하드웨어 제재와 함께 매크로 마우스에 대한 차단도 시작하였으며, 매크로 기능을 통하여 불공정한 게임을 유도하는 모든 기기에 대해서는 앞으로 그 차단 작업의 범위를 확대해 나갈 것입니다.

<하드웨어 제재 경고창(위) / 매크로 마우스 차단 경고창 (아래)>

현재 100여 명 이상의 모니터링 요원들을 투입하여 전 세계에 흩어져있는 비인가 프로그램 판매처(웹사이트, 메신저, Discord 등)에 대하여 365일 24시간 모니터링을 진행하고 있습니다. 또한, 비인가 프로그램 개발 정보가 교환되는 각종 커뮤니티의 모니터링도 병행하여 게임 보안을 위협하는 요소를 더욱 발 빠르게 탐지하고 대처하기 위한 노력도 지속하고 있습니다.

이러한 다양한 프로세스 개선으로 비인가 프로그램에 대해 좀 더 신속하게 대응을 할 것이며, 비인가 프로그램 이용자에 대해서는 이들이 게임에서 더는 활동 하지 못하도록 선제 대응을 강화하겠습니다.

추가로, 플레이 도중 제재 조치된 플레이어가 있으면 해당 게임에 참가한 다른 플레이어들에게 실시간으로 제재 소식을 알려주는 시스템의 업데이트를 앞두고 있습니다. 실시간으로 비정상적인 게임 패턴이 감지되거나, 불법 프로그램 사용 정황이 확인되어 해당 계정에 대한 차단 조치가 이뤄지게 되면 킬피드의 형태로 안내해드릴 예정입니다. 이 시스템을 통하여 그동안 많은 분이 안티 치트 활동과 관련해 궁금해하셨던 부분을 일부 해소해드릴 수 있을 것으로 기대하고 있습니다.

Steam 시스템 취약점 보완

앞서 설명해드린 게임 내적인 대응 외에도 외부 플랫폼에서의 취약점도 개선을 진행했습니다. 다들 아시다시피 배틀그라운드는 Steam 플랫폼을 사용하고 있습니다. 플랫폼의 일부 취약점을 악용해 부당한 이득을 취하는 사례가 있었고, 스팀과 함께 이를 개선하여 비인가 프로그램 사용자가 정상적으로 처벌 받을 수 있도록 취약점을 보완하였습니다. 그 중 몇 가지 사례를 소개해 드리겠습니다.

  • Steam 가족 공유(Family Sharing) 시스템의 허점을 이용하여 Steam 및 PUBG의 제재를 우회할 수 있었던 사례
    • 배틀그라운드를 구매한 계정이 게임을 구매하지 않은 계정에 Steam 가족 공유를 했을 경우, 더는 가족 공유를 받은 계정이 게임을 이용하지 못하도록 원천적으로 차단하였습니다.
  • 실제 게임을 장시간 플레이를 했음에도 불구하고 게임 플레이 시간을 조작하여 Steam의 환불 신청 최소 기준을 만족시켜 환불에 성공, 결과적으로 게임을 무료로 플레이했던 사례
    • Valve(Steam)와 공조하여 Steam 사용자의 소프트웨어 환불 조건 및 배틀그라운드 플레이 시간 산정법을 보강함으로서 더이상 해당 사례가 발생하지 않도록 차단하였습니다.
  • Steam 플랫폼 구조상 베타 혹은 테스트 서버가 별도의 환경으로 간주하는 점을 악용해 라이브 서버에서 제재된 계정이 테스트 서버에 접속하여 비인가 프로그램을 사용할 수 있었던 사례
    • 모든 서버의 제재 내역을 체크하도록 변경하였습니다. 라이브 서버와 테스트 서버 및 그 외 서버 간에 이용 제한 기록이 공유되도록 조정하여 한 서버에서 이용 제한된 플레이어는 다른 서버에서도 이용할 수 없도록 조치하였습니다.

이러한 시스템의 취약점을 악용하는 경우에 대해서는 Steam과의 긴밀한 협업을 통하여 지속해서 개선해 나가고 있습니다.

법적 대응 강화

공정한 게임 환경을 저해하는 비인가 프로그램은 결단코 차단해야 할 요소이며, 이를 개발하고 홍보, 판매하는 사람 역시 게임 산업에서 근절되어야 합니다. 비인가 프로그램의 확산을 막기 위해 저희는 사법기관 및 해외 오피스와 협력하여 국내외를 막론하고 강력한 법적 대응 또한 진행하고 있습니다. 아래는 2018년 한 해 동안 진행한 법적 대응의 결과이며 중국은 ‘텐센트’와 긴밀한 공조를 통하여 이뤄낸 성과입니다.

  • 2018년 1월 중국 롄윈강 지역 41인 검거
  • 2018년 2월 중국 화이안 지역 3인
  • 2018년 2월 중국 샹양 지역 11인 검거
  • 2018년 4월 중국 난징 지역 141명 검거
  • 2018년 4월 중국 화이안 지역 1인 검거
  • 2018년 8월 한국 대전지방경찰청 6명 검거
  • 2018년 9월 중국 원저우 지역 1명 검거
  • 2018년 10월 중국 탕산 지역 3명 검거
  • 2018년 10월 중국 원저우 지역 34명 검거
  • 2018년 10월 한국 양천경찰서 11명 검거

위에서 언급해드린 수사 결과 외에도 현재 법무법인, 경찰, 저작권 보호 업체와 함께 비인가 프로그램 판매처에 대한 수사를 진행 중이며 판매처를 통하여 개발자까지 추적하고 있습니다. 모든 수사는 결과가 나오는 대로 여러분께 안내해 드릴 수 있도록 하겠습니다.

마치며…

배틀그라운드는 100명이 동시에 참여하는 배틀로얄 게임 장르이다 보니 단 한 명의 비인가 프로그램 사용자만 있어도 나머지 99명이 피해를 보게 되어 치명적인 영향을 받을 수 있습니다. 그렇기 때문에 타 게임보다 훨씬 더 높은 수준의 게임보안을 유지해야 한다는 것을 잘 알고 있습니다.

이번 개발자 일지에서 설명해 드린 것처럼 저희 안티 치트 팀은 “공정한 게임 환경 조성”을 가장 최우선 과제로 두고 다양한 방면으로 노력해 왔고 계속해서 정진할 것입니다. 오늘 안내해드린 내용은 저희 여정의 첫 발걸음에 불과하며, 비인가 프로그램과의 싸움에서 우위를 차지하기 위해 새로운 안티 치트 기술에 대한 연구와 개발 또한 멈추지 않을 것입니다.

지금까지 저희를 믿어와 주신 플레이어 여러분께 늘 감사드리고 있습니다.
믿어 주신 만큼 이에 보답하는 모습 보여드릴 수 있도록 최선을 다하겠습니다. 앞으로도 지켜봐 주시기 바랍니다.

 

감사합니다.
배틀그라운드 안티 치트 팀 일동

 

이 기사에 대해 토론
이 기사 공유