사쿠의 데이터 블로그

self-similarity 게임 봇 탐지를 위한 자기 유사도 분석 본문

게임 데이터 분석

self-similarity 게임 봇 탐지를 위한 자기 유사도 분석

토스트먹어 2023. 3. 4. 13:47

논문 링크https://koreascience.kr/article/JAKO201609562997970.pdf

제목: 자기 유사도를 이용한 MMORPG 게임봇 탐지 시스템

 

예전에 알게된 논문인데, 실제로 적용해본건 이번이 처음이다. 

기본적인 개념

  1. 단위 시간동안(=위 사진은 1분) 발생한 로그를 수집한다.
  2. 수집된 로그가 몇회나 발생했는지 체크하여, 가장 오른쪽 그림과 같이 만든다.
  3. 특정 유저 A의 시점마다 코사인 유사도를 구하면 된다. --> t-1 시점과 t 시점의 코사인 유사도 구하기
  4. 그럼, 유저마다 데이터가 N개씩 있었다면 유사도는 N-1 개씩 생성되는데 
  5. 유사도들의 표준편차(delta)를 구하고 다음과 같이 H를 구한다  

사실 H는 별거 없다.

유사도들의 표준편차가 작을수록 즉, 비슷한 행동을 반복적으로 하는 유저일수록 1에 가까워진다.

H를 만들지 않아도, 표준편차가 작은 유저들을 뽑아내면 동일한 결과를 얻을 수 있다.


내가 만든 sample 예시

나는 30분 간격, 53가지 로그를 추출해 Matrix를 만들었다. (=위 그림의 가장 오른쪽 그림)

유저별 H & 유저별 단위 시간 갯수(rn)

다음으로, 유저별 자기유사도 H를 구한다.

유저별로 접속시간(=rn)이 다를텐데 그것까지 고려해서 H가 가장 높은 유저들을 발라냈다.

결과는 꽤 만족스러웠다.


다음으로, 이렇게 걸러진 유저들이 어떤 특징이 있는지 사후분석을 실시했다.

논문에는 이부분은 없지만 그냥 간단하게 실행했다.

 

  1. 각 유저별 단위시간마다 몇개의 행동로그가 발생했는지 확인
    --> Bot은 행동을 반복하기 때문에 단위 시간마다 발생하는 로그 종류도 거의 동일했다

  2. 1번에서 A라는 유저가 단위시간 마다 4가지 행동을 반복했다면, 해당 로그만 가져와서 어떤 행동을 했는지 확인한다.

  3. 그 행동들 가운데, 다시 반복되는 행동을 찾아 확인한다.

 

이제, 간단한 방법으로 Bot 계정을 찾아냈고, 어떤 행동들을 했는지 알게되었다.

요즘은 반복행동을 하기 전 단계, 비 정상적인 방법으로 레벨업하는 유저들을 찾고있다.

 

참고:

1) https://battlecook.github.io/2021/02/10/You-are-a-game-bot-self-similarity.html