게임과 보안 #18 통계적 모델을 이용한 봇 유저수 추정

지난 편에서는 온라인 게임 서비스의 종료가 다가올 때의 MMORPG의 유저들이 보여준 행동들을 살펴보았습니다.

일반적으로 봇을 탐지하기 위해서는 많은 개발 노력과 모니터링 인원이 필요하게 됩니다. 하지만 서버 내 봇 규모를 어림(Approximation)으로 추정해 볼 목적이라면 꼭 많은 모니터링 인원이나 자원이 필요하지는 않습니다.

이번 편에서는 서버 내의 게임 봇의 수를 추정할 수 있는 가성비 좋은 아이디어를 소개하려고 합니다.


# 보다 효율적으로 게임 봇을 잡는 방법은?

게임 봇을 어느 시점에 잡는 것이 가장 좋을까?

물론 가장 좋은 방안은 게임 서버 오픈과 동시에 전력을 다해서 게임 봇을 탐지하고 수시로 제재를 하는 것이다. 상대방이 가벼운 치팅(Cheating)만 해도 상대방에게 스트레스를 많이 유발하는 FPS와 같은 게임이라면 특히나 초기부터 엄격한 대응을 해나가는 것이 중요하다.

하지만 현실은 어떠한가. 우선 기술적으로 완벽하게 탐지와 차단을 할 수 있는 방법이 없다. 그리고 무엇보다도 게임 서비스 초기에 다양한 버그 패치, 운영 대응을 하는 것에 모든 개발사의 자원이 투입되기 때문에 게임 내 버그를 패치(Patch)하고, 새로운 콘텐츠를 추가하는 일을 모두 미뤄두고 게임 봇을 잡는 데만 올인하는 것은 쉽지 않다.

 

# 제재가 필수적인 시점을 탐지할 수 있을까?

지난 연재 12편에서 게임 서버 내에 봇 이용자들은 서버 오픈 초기(한 달 ~ 40일 사이)에 매우 강하게 발생하는 것을 알 수 있었다. ([그림 1] 참조)

즉, 이용자들이 게임 봇을 쓰는 것을 막고 싶다면, 게임 서버 오픈 초기부터 적극적으로 게임 봇을 차단해야 한다는 결론을 얻을 수 있었다.

[그림 1] 모 MMORPG 오픈 직후 게임 봇 유저 비율 변화

그리고 게임에 따라 차이는 있지만, [그림2]에서 보는 것처럼 게임 서버 내 봇 유저의 비율이 일정 임계치를 넘게 되면 이용자의 확산세도 급격히 빨라진다. (즉, 게임 회사에서 아무런 제재나 조치를 하지 않은 경우.)

그리고 이를 계속 방치하면 봇 유저 수는 통제하기 어려울 정도로 증가한다. 마치 좀비와 접촉하면 그 자신도 좀비가 되는 것처럼 확산되는 모델의 예와 유사하다고 할 수 있다.

상시적으로 봇을 제재할 여력이 안 되는 경우, 다만 임계점이 되는 순간을 어느 정도 예측할 수 있다면 통제 불능으로 확산되기 전에 적절한 타이밍에 개입할 수 있을 것이다.

[그림 2] 봇 유저의 비율이 단계별 임계치를 통과하면 가파르게 확산되는 현상

봇의 규모를 낮은 오차로 어림(Approximation)할 수 있다면 소수의 모니터링 인원만으로도 개입 시점을 적확하게 알게되므로 비용 절감 효과는 물론이고, 봇과의 싸움에서 유리한 고지를 점유하게 될 것이다.

관측과 어림을 잘해서 전쟁에서 큰 도움이 된 예가 있는데, 바로 ‘독일군 탱크 문제’이다[1].

2차 대전 당시에 연합군은 팬저 탱크(Panther Tank)와 같이 압도적인 성능을 자랑하는 독일군의 탱크를 보고 엄청난 고민에 빠졌다. 저 정도의 강력한 탱크가 전장에 대규모로 출동한다면 어떻게 될까? 많은 전선에서 고전을 면치 못할텐데 어떻게 하면 좋을까?

그 당시 연합군의 첩보원들은  “독일군이 1천 대 정도의 팬저 탱크(Panther Tank)를 보유하고 있다.”, 또는 “1,550대를 보유하고 있다.” 등 불확실한 정보들을 제공해서 수뇌부에서는 온전한 판단을 하기 어려운 상황이었다.

[표1] ‘독일군 탱크 문제’에서 어림한 숫자와 실제 독일의 생산량과의 차이

하지만 수학자들은 독일 본국에 탱크 공장이 갑자기 몇배 이상 증설되는 일이 없는 한, 생산라인에서 출고되는 탱크의 수는 일정한 규칙을 가질 것이라는 아이디어를 냈다. 그 후 정찰병들에게 특정 지점에 출몰하는 독일군 탱크의 숫자를 날마다 관측해서 기록하게 하고, 파손된 독일 탱크의 부품 시리얼 번호를 기록해서 분석을 하기 시작했다.

즉 물자와 생산인구의 한계 상 탱크 생산라인을 급속히 늘릴 여력은 없을 테니 생산되는 탱크는 이항분포를 따를 것이고, 이를 출몰하는 탱크와 파손되서 사라진 탱크 숫자를 꾸준히 관찰해서 어림하기 시작했다.

나중에 독일이 항복한 후 독일의 탱크 생산량 기록과 대조를 해보니, [표1]에서 보듯이 첩보를 통해 얻은 정보는 많게는 8 배 가까이 부풀려진 숫자이기도 했지만, 통계적 추정을 해보니 관측만으로도 독일군의 실제 생산량을 흡사하게 추정해낸 것을 알 수 있었다. 정말 놀랍지 않은가?

마찬가지로, 게임 봇 역시 특정 지역(사냥 필드, 던전 등)에 출몰하는 것을 정기적으로 관측을 한다면(작업장이 갑자기 PC 수를 몇배 이상으로 투자해서 늘리지 않는 한), 일정 분포를 유지하며 게임 봇들이 출몰할 것이므로 개체수를 추정해 낼 수 있을 것이다.

어떤 섬에 사는 황제펭귄의 숫자를 추정하려면 어떤 방법이 있을까? 일단 개방된 환경이므로 펭귄은 이 섬에 살다가 옆의 섬으로 옮겨가고 또 다시 돌아오는 것도 가능하다고 전제를 해야 한다.

가장 편리한 셈 방법은 섬 내에 황제펭귄이 눈에 띄는 대로 우리에 가두는 것이다. 그 후 더 이상 출현하는 황제펭귄이 없다면, 우리에 있는 황제펭귄의 수가 이 섬에 사는 전체 마리수일 것이라고 파악하는 방법이다.

하지만 현실에서는 마리수 좀 세보겠다고 동물을 마구 잡아넣을 수는 없다. 이와 같은 조건에서는 관측한 동물을 잡아서 마킹하고 놓아주거나(또는 추적기를 붙인다거나), 사람처럼 고유한 외모를 각 개체가 가지고 있는 경우 관측한 개체별로 식별 번호를 부여하는 방식을 쓴다.

그래서 일정 기간 동안 관측했을 때 한번 카운트했던 객체가 다시 와서 카운트되는 비율을 계산해서 역으로 전체 개체수를 가늠하게 된다. 이러한 방식을 Capture-Recapture 기법이라 한다.

아래의 방법론 분류표에서 보듯이 개체수 측정에 쓸 수 있는 어림(Approximation) 기법은 여러가지가 있는데, 이 중에서 생태계에서 특정 종(Species)의 숫자를 파악하는데 자주 쓰이는 Jolly-Seber 기법을 소개하겠다[2].

게임에 응용할 이 방법은 앞서 설명한 Capture-Recapture 방법과 대동소이한 개념인데, 동물과 다르게, 게임 캐릭터들은 고유한 캐릭터명이 외관상에 보이기 때문에 손쉽게 카운트할 수 있다.

방법은 아주 간단하다. 주로 게임 봇들이 출현하는 필드에서 3일에 한 번씩 육안으로 보아도 봇으로 보이는 캐릭터 이름을 기록한다. 이를 5번 반복 측정하여, 한번 관측되었던 봇이 재출몰하는 횟수를 계산한다.

그리고 아래와 같이 매우 복잡한 수식에 대입하여 계산을 한다. (아악, 영혼이 승천할 것 같지만 컴퓨터가 대신 계산해주므로 걱정 안해도 된다.)

실제로 국내에서 인기리에 서비스 중인 B모 게임에 이 모델을 적용해 본 결과 한 서버에 약 8,322개의 봇 캐릭터가 있을 것으로 추정을 할 수 있었다. 또 전체 게임 서버 수만큼 곱을 한 결과, B 게임 내에 봇 캐릭터의 숫자는 약 27만 4천 개가 있을 것으로 추정됐다.

 

# 맺으며

이번 연재에서 소개한 방법의 의의는 대규모의 모니터링 인력을 동원하지 않고도 1~2명이 전체 게임 봇의 규모를 추정해 낼 수 있다는 점에 있다.

즉, 게임 내에 봇이 문제를 일으킬 수준으로 증가하였다면, 해당 시점에 재빨리 대규모 제재를 착수하는 등 유연한 대응 전략을 수립하는데 도움이 될 것으로 판단된다.

또한 자금 여력이 많지 않은 중소 게임 회사라 하더라도 손쉽게 게임 봇 제재에 착수 가능하다는점에서 활용성이 높다 할 수 있다.

 

참고 문헌

[1] 독일군 탱크 문제, https://en.wikipedia.org/wiki/German_tank_problem

[2] Da-Mi Hwang and In-Seok Kim, “The Digits Hidden in the Virtual World: Approximate Estimation Applying Capture and Recapture Method.” WISA 2017.


김휘강 고려대학교 정보보호대학원 부교수. KAIST 산업경영학과를 마치고 산업공학과에서 석사, 박사학위를 받았으며, 게임 봇 탐지 및 작업장 탐지, 계정도용 및 결제부정 탐지와 관련하여 지속적인 연구를 수행 중에 있으며, 고려대학교 해킹대응기술 연구실은 온라인게임보안 분야에서 전세계적으로 가장 많은 연구 성과를 내고 있다.

 

게임과 보안 #1 게임 봇의 두 얼굴

게임과 보안 #2 게임 봇이 나쁜 이유

게임과 보안 #3 게임 봇과 작업장을 바라보는 다양한 시선

게임과 보안 #4 게임 봇을 탐지하는 기법

게임과 보안 #5 게임 봇과의 채팅엔 뭔가 특별한게 있다

게임과 보안#6 찾아라! 게임 봇의 행동 패턴

게임과 보안#7 계정 도용을 막는 방법

게임과 보안 #8 시퀀스 분석으로 계정 도용을 막아라

게임과 보안 #9 모티베이션 (동기) 분석을 통한 봇 탐지

게임과 보안 #10 사설 서버

게임과 보안 #11 온라인게임 회사를 노리는 해킹 그룹

게임과 보안 #12 악성 행위의 전파

게임과 보안 #13 쾌적한 게임 공간을 만드는 방법

게임과 보안 #14 사람이 게임 봇과 다른 이유 Part 1

게임과 보안 #15 사람이 게임 봇과 다른 이유 Part 2

게임과 보안 #16 MMORPG를 통한 사회적/반사회적 행동 관찰 Part 1

게임과 보안 #17 MMORPG를 통한 사회적/반사회적 행동 관찰 Part 2