본문 바로가기

도서관

[연재] 4회: 로그 데이터로 'Abusing(버그악용)', '현물 거래(게임 아이템)', '계정도용(해킹)' 추론하기

작성 중이던 내용이 날아가는 바람에...
중간 저장되었던 내용에 이어서 다시 작성하게 되었습니다.

덕분에 1월초에 작성을 시작한 내용을 이제야 올리는군요...ㅜㅠ
-----------------------------------------------------------------------------------------------

안녕하세요.
필자로 활동하다가 최근 글을 올리지 않고,
활동이 매우 뜸했던(?) DevLion 입니다. ㅇㅅㅇ;

부족한 능력과 게으름을 모두 겸비한 인재(?) 이면서,
필자로 등록되어 있는 주제에 그간 너무 글을 뜸하게 올려서
죄송한 맘 뿐이네요... ㅠㅡㅜ

또한, 인사가 많이 늦었지만...
올 한해도 계획하신바 잘 진행되시길 바라구요.
소망하는 많은 일들에서 좋은 결과가 함께하고, 무엇보다 건강한 한해... 그리고
새해 복 많이 받으시면 좋겠습니다. (_ _)


오늘 말씀드릴 내용은,
로그데이터를 보고 "어! 이거 어뷰징 같은데..?" 라거나 "이건 계정을 도용당한 것 같군."
혹은 "아이템을 현물거래한 냄새가 나는군" 과 같은 '정상적이지 않은 케이스' 추론해보기 입니다.
비정상적인 사항들을 미리 예측해서 모니터링 툴을 만들고,
이런 툴들을 통해 조금 더 일찍 발견해보자는 내용이죠.

다만, 제가 현재 관련된 업무를 진행하기 때문에 이런 주제를 정해보긴 했으나,
이쪽방면의 '전문가'는 아니기 때문에 그냥 주관적인 생각들을 작성하게 될 것 같습니다.
그래서, 주 내용은 제가 경험한 부분에 대해 '이럴꺼야~' 라는 추측이 되겠네요.

너무나 당연한 이야기지만...
무엇인가를 판단하기위해서는 '근거' 가 필요하죠.
방대한 양의 데이터들 속에서 이상징후로 판단할 수 있는 데이터를 수집하고,
이 데이터들을 근거로, 결론을 내리게 됩니다.

그럼, 우선 어뷰징(Abuse)이란 무엇인지 정의부터 알아봐야겠네요.

Abuse (출처: http://en.wikipedia.org/wiki/Abuse)
Abuse
is the improper usage or treatment for a bad purpose, often to unfairly or improperly gain benefit. Abuse can come in many forms, such as: physical or verbal maltreatment, injury, sexual assault, violation, rape, unjust practices; wrongful practice or custom; offense; crime, or otherwise verbal aggression.[1]
[출처: 위키피디아]

영어로 적혀있어 좀 어렵지만(?) 어뷰징이란건...

"불공정 혹은 부당한 이득을 얻기위한 나쁜 목적으로 종종 사용하거나, 부적절하게 처리되는 모든 행위들을 말한다" 정도로
요약할 수 있겠습니다.
부당한 이득을 얻기위해 부적절하게 처리되는 나쁜 짓이 되겠군요.

또, 네이버 국어사전에는 아래와 같이 정의되어있습니다.
어뷰징 오픈사전
개인이 본인의 계정외 부계정등 다중계정조작을 하여 부당하게 이익을 취하는 행위를 일컫는 말.

사실, 국어사전의 설명은 흔히 우리가 '작업장' 이라고 얘기하는 '다수의 계정으로 많은 양의 골드를 취득하는 행위로
이해할 수 도 있겠죠.
다만, 하나의 계정이냐 다수의 계정이냐가 중요한 것이 아니라,
'게임 기획상의 룰이나 정상적인 룰에서는 인정하지않는 편법 등을 이용해서 부당한 이득을 취하는 것'
중요하다는 것은 짚고 넘어가야 겠네요.

그렇다면, 게임 로그나 데이터들 내에서 이런 부당 이득과 관련된 징후을
어떤 식으로 찾아보아야 할까요..?
어뷰징을 왜 사용하는지를 이해하면 조금 더 찾기 쉬울 것 같은데,
어뷰징을 하는 이유는 무엇일까요?

여기서 한가지 가설을 세워볼 필요가 있을 것 같습니다.

여러가지 이유가 있겠지만, 궁극적으로 어뷰징을 사용하는 이유는
'비용(노력과 시간)에 비해 큰이득이 발생'하기 때문이라고 볼 수 있지 않을까요?

예를 들어, 제가 100이라는 비용을 들여서 아이템 하나를 만들 수 있다고 가정해봅시다.
그런데, 아이템 제작 중 우연히 버그를 발견해서 100이라는 똑같은 비용으로
아이템 5개를 생산할 수 있게 되었다고 해볼께요.
그러면, 저는 똑같은 비용으로 5배의 결과물을 만들어낼 수 있게 된 거죠.

이 아이템 하나의 상점판매가격이 100원이었다면,
저는 100원외에 400원의 부수입을 그냥 벌 수 있게 된겁니다.
이 외에도 게임 내에서 어뷰징으로 판단할 수 있는 사항은
여러가지 케이스가 있습니다.

액션 게임에서 캐릭터가 사용하는 스킬들 중 쿨타임(쿨링 타임)이 적용되어 있는 스킬로
설명을 해보겠습니다.
한번 스킬을 발동시킨 뒤 5분동안은 재사용할 수 없는 강력한 스킬이 있다고 해봅시다.
이런 강력한 스킬을 5분의 쿨타임 없이 사용가능하다고 하면, 플레이에 영향이 크겠지요.
간단히 예측해봐도 이런 어뷰징을 이용하면, 일정 시간을 플레이해야 클리어가능한 던전을
비정상적으로 빠르게 클리어하는 것이 가능합니다.

트랙을 완주하는 레이싱 게임을 예로 들 수도 있습니다.
완주하는데 필요한 최소한의 레이싱 타임이 2분 30초 정도인 트랙이 있다고 해보죠.
만약, 특정 유저가 2분이내에 완주한 것으로 확인된다면,
일단 의심해볼 수 있겠죠.

이상과 같이 설명해드린 내용들은 상식적인 범위 에서 생각을 한다고해도
충분히 이상해보일 정도로 분명히 이상증상이 나타나는 경우 입니다.
그래서, 일반 유저들 사이에서 플레이를 통해 확인할 수도 있고, 여러 커뮤니티를 통해
공유되는 것을 어렵지 않게 확인할 수 있습니다.
다만, 해당 어뷰징이 악용되어서 발견되기 까지는 어느정도의 시간이 걸리게 됩니다.
심지어 크게 이슈가 되지 않는다면, 꽤 장시간동안 악용될 수도 있겠죠.

이러한 상황에서 조금 더 빠른 발견을 위해 '모니터링 툴' 을 이용해본다면 어떨까요?
클라이언트 해킹이나 통신 패킷같은 변조 뿐 아니라 게임 내 버그 악용 같은 어뷰징은
위에서 말씀드린 것처럼 부당이득을 발생시키게 됩니다.
정상적인 상황을 기준으로 해당 기준을 벗어나는 케이스를 찾아내는 필터
모니터링 툴이라고 할 수 있겠네요.

모니터링 툴이 적용되는 사항은 단순히 생각해도 많은 케이스에 활용이 가능합니다.

특정 아이템 ID의 판매 가격이 정상적이지 않은 가격으로 판매된 거래 로그나,
특정 캐릭터가 단기간 내 비정상적으로 빠르게 레벨업을 진행한 등의 플레이 로그를 기준으로
판단할 수 있을 것입니다.

게임 내 전체적인 경제와 관련해서도 예를 들어볼 수 있습니다.
만약, 단기간 내 게임서버 내 통용되고 있는 골드의 총량이
비정상적일만큼 큰 폭으로 상승한 것이 확인되었다면, 이것을
이상 징후로 포착해서 좀 더 상세한 조사를 진행해볼 수 있습니다.

물론, 모든 게임들이 모든 상황에 대해 전부 로그를 남긴다고는 볼 수 없습니다.
로그의 양 뿐만 아니라, 실시간으로 방대한 양의 로그를 남기는 것에 현실적으로
어려움이 상당히 많기 때문이죠.
다만, 위에 예로든 사항들 외에도 로그를 통해 추측해볼 수 있는 것들은 많이 있습니다.

접속과 관련된 IP를 통해서도 생각해볼 수 있는 것들이 여러가지 있죠.

특정 IP에서만 비정상적인 횟수로 많은 유니크 캐릭터들이 로그인 한 사항이 확인된다고
가정해보죠.
단순히 PC방에서 여러 유저들이 이용했다고 보기 어려울 정도로 많은 로그인/로그아웃이
확인되었다면, 이 상황을 우선 의심해볼 필요가 있을 것입니다.

이러한 사항에서 추가적인 로그들을 함께 적용해서 이 IP에서 벌어진 'Action' 들을 추가로
추적해볼 수 있겠죠.

하나의 IP에서 다량의 계정이 로그인/로그아웃 했다는 내용이나,
여러 계정이 하나의 특정 계정에게로 다량의 아이템을 이동시키는 것이 확인되었다면
계정의 해킹으로 의심해볼 수도 있습니다.

단기간 내 다수의 계정에게로 많은 아이템을 보낸 특정 IP는
게임 내 '현물거래' 로 추정해볼 수 있는 징후이기도 합니다.

여기서 조금 애매한 부분은
'정상' 과 '비정상' 을 나누는 기준이 되겠네요.
'기준이 정확하게 무엇이다' 라고는 말씀을 드리기 어렵습니다.
한가지 기준으로 모든 게임들을 판단하는 것은 불가능하기 때문이죠.

그렇지만, 확실하게 말씀드릴 수 있는 것은 모든 게임에 동일한 기준을 적용할 수는 없다는 것입니다.
해당 게임 내에서 단기간이 아닌 장기간의 데이터를 뽑아내고,
평균적으로 진행되는 패턴을 확인 한 후 정상적인 기준을 만들어야 합니다.
이 부분에서 여러번의 실험을 통해 보다 정확한 데이터를 찾아낼 수 있습니다.

또한, 한번 확인된 기준을 끝까지 적용하기엔 무리가 있다는 것도 염두해 두어야합니다.
처음에는 해당 필터를 통해 여러가지를 걸러낼 수 있겠지만,
비정상적인 이득을 얻기위해 어뷰징을 하는 그룹들은 현재 사용중인 어뷰징을 사용할 수 없게된다면,
다른 방법으로 시도를 할 것이기 때문이죠.

그렇기 때문에 지속적인 게임 내 모니터링 외에도,
커뮤니티의 동향이나 다른 외부적인 사항들에 대해서도 지속적인 확인이 필요합니다.

이상으로 말씀드리고자 하는 내용을 마무리하려고 합니다.
크게 도움되는 내용없이 글만 길어진 것 같아 부끄럽네요. ^^;


게임 내 이상징후를 찾아내는 방법에는 Test 만 있는 것이 아닙니다.
사전 검수를 통해서도 이상징후를 확인할 수 있지만,
온라인 게임과 같이 '컨텐츠 업데이트, 버그수정 패치가 반복되는 상품' 의 경우에는
사전 검수만으로 이상징후를 충분히 검증하기 어렵습니다.

처음 개발만큼 유지보수도 중요하기 때문에
사후 검수를 위한 모니터링도 사전 검수에 못지 않게 중요하다고 생각합니다.

앞으로 이러한 모니터링을 위해 다양한 시도를 해보아야겠다고 생각하면서
이만 글을 마칩니다.

긴 글 읽어주셔서 감사합니다. (_ _)