반응형

게임 보안: 데이터 마이닝에 관한 소고
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net

요즘 게임 보안 업계에 부는 바람 중에 하나가 데이터 마이닝이다. 빅데이터와 클라우드같은 요즘 가장 핫한 키워드와 어느 정도 관련성을 가지고 있기도 하고 학계에서 몇 해 전부터 꾸준히 밀고 있는 방법이기도 해서 업계의 조명을 한몸에 받고 있다.

그렇다면 데이터 마이닝 과연 효과적일까? 사실 난 현재 수준의 데이터 마이닝에 대해서는 조금 회의적이다. 지난 글에서도 밝힌 것처럼 지금 시도하는 내지는 주장되는 데이터 마이닝이라는 기법은 그 태생적인 한계를 가지고 있기 때문이다. 그럼에도 요즘 게임 업계에서는 마치 기존 게임 보안 솔루션보다는 데이터 마이닝 쪽의 접근이 훨씬 더 근본적인 문제 해결 방법이라는 인식을 가지는 것 같아서 몇 가지 생각을 좀 덧붙여 보려고 한다.

#0. 비용
엔씨소프트의 경우 리니지, 아이온, 블소와 같은 게임 로그 데이터가 하루에 2-3TB 가량이 쌓이고, 이를 2개월 가량 저장할 수 있는 데이터 마이닝 시스템을 구축했다고 한다. 이 시스템을 통해서 오토나 작업장 같은 부정 행위를 저지르는 사용자들을 색출해 내고 있다고 한다. 2-3TB를 60일 저장할 수 있다면 그것만해도 180TB의 저장 공간이 필요하다. 오류 등을 생각한다면 더 큰 저장 공간이 필요할 것이다. 이를 안정적으로 저장하고 관리하는 시스템을 구축하는 일만해도 보통이 아니다.

하지만 문제는 데이터 저장이 아니다. 그 저장된 자료에서 의미있는 데이터를 뽑아내는 과정이 또 보통이 아니다. 오픈 소스 플랫폼을 사용해서 구축했다고 하는데 관련 분야의 인력이 부족한 실정을 고려해 본다면 결국 데이터 마이닝 시스템을 구축하는데에는 생각보다 많은 비용이 든다는 것을 알 수 있다. 게다가 아직까지는 게임 데이터를 마이닝하기 위한 맞춤형 솔루션을 제공하는 업체도 없기 때문에 바닥부터 모든 것을 직접 다 만들어야 한다.

이쯤되면 결론이 나온다. 선도적인 업체에서 투자적인 목적, 내지는 훨씬 더 높은 수준의 사용자 감시 체계를 만들고 싶은 때에는 유효하겠지만 그렇지 않은 대다수 게임 업체제에서는 비용적인 측면 때문에 도입 자체가 쉽지 않다는 것이다.

#1. 속도
데이터 마이닝, 말만 들으면 뭔가 우아하고 근사해 보인다. 하지만 이 데이터 마이닝이 힘들 발휘하려면 결국 데이터가 쌓여야 한다. 데이터가 없으면 이 시스템은 그냥 깡통이다. 데이터가 쌓여야 한다는 말은 다르게 설명하면 플레이어가 시스템 기준치에 부합하는 부정 행위를 지속적으로 저질러 주어야 한다는 것을 의미한다. 이렇게 상당한 시간동안 시스템의 감시망에 부합하는 부정 행위를 저지르면 그 윤곽이 마이닝 결과를 토대로 드러나게 되고 그 사용자에 대한 제재를 할 수 있다. 현재 데이터 마이닝 시스템은 속도가 느리고, 그마저도 아주 느린 사후 대응을 할 수 밖에 없는 구조다.

데이터 마이닝을 사용하는 업체들이 가지는 유일한 제재권은 계정 블럭이다. 계정 블럭도 좀 생각을 해 볼 필요가 있다. 크게 게임 결제 방식에 따라 두 가지로 나뉜다. 부분 유료화 게임과 계정비를 받는 정액제 게임이다.

부분 유료화 게임의 경우 계정 블럭은 아무런 효용가치도 없다. 다시 계정을 생성하면 그만이다. 이 경우에 다시 세부적으로 나뉘게 되는데 우리 나라처럼 주민 번호라는 희소화된 식별 체계를 가진 경우에는 그나마 다행이다. 하지만 이런 체계를 가진 해외 국가는 거의 없다. 따라서 국내에서 계정 블럭을 사용할 수 있더라도 해외에서는 이를 사용하기가 쉽지는 않다. 물론 XIGNCODE3 와 같은 요즘 게임 보안 솔루션의 경우에는 이런 계정 블럭을 도와줄 수 있는 보조 수단들을 제공하고 있다. 그런 기능을 이용하면 좀 더 효과적으로 대응할 수 있지만 부정 행위를 저지르는 시점에 차단할 수 없다는 근본적인 문제점은 여전히 존재한다.

다음으로 유료 게임이 있다. 유로 게임의 경우 계정 블럭이 의미하는 바는 블럭 당하는 사용자가 계정비를 날리게 되는 것을 의미한다. 즉, 그 계정비 만큼의 손해가 얼마나 큰지가 이 시스템이 유용성을 판단하는 근거가 된다고 할 수 있다. 그런데 이런 해킹 행위가 벌어지는 인기있는 유료 게임의 경우 계정비가 해킹을 시도하는 사용자 입장에서 의미있는 페널티가 되지 못한다. 실례로 부정 행위를 식별하는데 2일 정도의 시간이 필요하다고 가정 해보자. 그렇다면 이 2일의 시간동안 그 부정행위를 저지르는 사용자가 계정비 이상의 이익을 해킹을 통해서 창줄할 수 있다면 지속적으로 부정 행위를 저지를 수 있는 구조가 된다.

결국 여기서 중요한 쟁점은 ROE다. 안타깝게도 부정 행위를 색출해기 위해서 걸리는 시간 동안에 작업장에서는 그 계정비를 회수하고도 남는 만큼의 부가가치를 창출할 수 있는 경우가 많다. 만약 이 부가가치를 창출할 수 없다고 판단되면 작업장이나 해커는 사라진다. 그런데 진짜 정말 안타깝게도 그들이 사라지는 이유는 데이터 마이닝 시스템이 제공하는 계정비 + 캐릭 성장 비용 때문이 아니라 해당 게임의 인기가 시들해졌거나 작업장 과다 경쟁으로 아이템 가격이 지나치게 떨어진 경우가 대부분이다.

#2. 판단 기준
한 플레이어가 게임에서 한 시간내에 연달아 100번의 승리를 하는 것이 사실상 불가능 하다고 생각해보자. 게임 업체는 이를 토대로 기준을 세운다. 마이닝 시스템에서 한 시간내에 연달아 100번의 승리를 한 사용자를 찾는 것이다. 그런데 이런 모든 기준은 정상 사용자가 우연찮게 해낼수도 있기 때문에 게임 업체는 여기에다 허용 오차를 추가한다. 즉, 초범이라던지 어쩌다 한 번인 경우는 패스시켜준다는 의미다. 그걸 넘어서 지속적으로 한 경우에는 실질적인 계정 블럭을 시킨다.

말만 들으면 그럴듯 해 보인다. 하지만 말만 들었을 때 이야기다. 해커들이 어떻게 할 것 같은가? 영원히 저 룰을 못찾아서 방황하면서 모든 계정을 다 블럭당할까? 절때 아니다. 99번의 승리만 가져가면 잡히자 않는다는 것이 순식간에 퍼진다. 이걸 찾는데 아주 오랜 시간이 걸릴 것 같지만 아이러니하게도 생각보다 아주 손쉽게 발견된다. 심지어는 해커가 그걸 찾으려는 시도를 하지 않음에도 밝혀진다. 바로 사용자에 의해서 말이다. 인기있는 게임의 경우에는 해킹툴 사용자도 광범위하게 퍼져있고 그 사용자들은 제각각 다른 방식으로 해킹툴을 사용한다. 따라서 이런 집단 지성이 모이게 되면 모호할 것 같았던 게임사의 제재 룰도 연립 방정식이 풀리는 것처럼 손쉽게 단 하나의 해가 밝혀진다. 여기에 사람 심리가 더해지면 정보 공유 속도는 더 빨라진다. 해킹툴 사용자 중에 계정 블럭을 당하지 않은 사용자가 있다면 그걸 자랑하고 싶어하는 사람 심리가 생긴다. 마치 대단한 비밀을 알고 있는 것처럼 게시판에서 자랑질을 하게 되도, 그걸 또 증명하기 위해서 소수 사람들과 공유한다. 여기까지 가면 이미 모든 사람이 그 방법을 알게되는 것이나 다름 없다.

다시 돌아가보자. 게임 업체가 그래서 기준을 조정했다. 90번으로 줄이고 허용 오차도 좀 더 늘리도록 했다. 이번에도 해커는 기준치를 찾는다. 다시 조정한다. 70번에 허용 오차를 왕창 늘린다. 당연히 이번에도 찾는다. 그렇게 기준을 조정하다 보면 어느 순간에는 아주 일반적인 플레이어들이 심심치 않게 해낼 수 있는 수준까지 낮아진다. 마이닝 결과에 노이즈가 너무 많이 섞이고, 결국 데이터는 쓸모없게 되는 구조다.

#3. 치명적인 마이너리티 리포트
오진은 항상 문제다. 근데 이게 데이터 마이닝에서는 더 치명적이다. 예를들어 사소한 게임 보안 제품의 오진 같은 경우에는 정상적인 사용자의 경우에 다른 컴퓨터를 사용하거나 컴퓨터를 포맷하거나 하는 형태로 플레이를 이어갈 수 있다. 하지만 데이터 마이닝의 결과로 계정 블럭을 당하게 된다면 그 페널티는 엄청나다. 물론 사용자가 소명 절차를 걸쳐서 계정을 다시 복구할 수도 있겠지만 대다수 사용자는 그렇게 하지 않는다. 여기에는 사람의 감정적인 요인이 더 많이 작용하는데 정상적인 나를 이렇게 영구정지 시킨 게임을 내가 돈내고 해야 하는 이유를 찾을 수 없다고 생각하는 사람 심리 때문이다.

데이터 마이닝을 통한 계정 블럭은 진짜 최후의 수단이며 사용하지 않는 편히 오히려 게임 동접 건전성을 유지하는데 도움이 될지도 모른다. 왜냐하면 해커는 계정 블럭을 당해도 바로 새로운 계정으로 해킹을 이어갈 것이고, 정상 사용자는 사람 심리 때문에 그 게임을 떠날 것이기 때문이다. 결국 오토만 남아 있다가 그마저도 블랙 마켓이 힘을 잃는 순간 게임 속에는 아무도 없는 처참한 현실이 도래할 수 있다. 실제로 작년 하루에 2-3만 개씩의 오토 사용자를 색출해 낸다는 패기를 보여준 온라인 게임이 있었다. 하지만 패기는 패기로 끝난 것 같다. 오픈하고 얼마 지나지 않아서 인기가 시들해졌기 때문이다.

#4. 데이터 마이닝 그럼 쓸모 없을까?
약점들을 이야기 했지만 현재 수준의 데이터 마이닝도 완전히 쓸모 없지는 않다. 데이터 마이닝 시스템의 가장 큰 장점인 알려지지 않은 해킹툴에 대해서 높은 대응력을 구축할 수 있다는 점 때문이다. 마이닝 시스템을 페널티 없이 모니터링 용도로만 사용하더라도 의미가 있다는 말이다. 어느 정도의 해킹툴 사용자가 존재하는지 아는 것과 모르는 것은 천지 차이기 때문이다. 또 그 사용자의 시스템을 좀 더 집중적으로 분석 한다면 알려지지 않은 해킹툴의 실체에 대해서 판단할 수 있고, 더 나아가서는 모니터링 단계에서 색출한 사용자에 대해선 일반적인 경우와 다른 높은 수준의 보안 정책을 제공할 수도 있다.

몇해전 우리가 야심차게 진행했다가 포기한 내용 중에 하나가 화이트 기반 정책이 있다. 세상의 모든 깨끗한 바이너리 파일이 웰비아닷컴을 통하도록 만들자는 계획으로 야심차게 진행했지만 게임 업체들의 이해 관계와 깨끗한 바이너리 파일이 우리가 당초 예상한 것보다 너무 많다는 이유 때문에 결국 우리는 방향을 틀었다. 하지만 제한된 환경에서는 이런 것들이 의미있을 수 있다. 일례로 최근에 우리는 서비스하고 있는 게임 퍼블리셔로부터 온라인 게임 대회 서버에만 좀 더 높은 수준의 보안 정책을 유지할 수 있냐는 질문을 받은 적이 있다. 대회 서버에는 제한된 사용자가 참여하고 악성코드와 같은 엉뚱한 것들을 허용할 필요가 없기 때문에 화이트 정책을 사용하기에 안성 맞춤이다. 마찬가지로 데이터 마이닝 시스템의 결과물을 게임 보안 솔루션에 접목한다면 좀 더 효과적인 페널티 정책과 함께 높은 수준의 게임 보안 서비스를 유지할 수 있을지도 모른다.

세상은 0.1%의 프론티어와 0.9%의 동조자들 그리고 99%의 잉여로 돌아간다고 한다. 그러니 쓸모에 관계없이 여유 있는 게임 업체라면 이러한 방향의 연구를 지속적으로 수행하는 것이 바람직하다. 그래야 지금의 우리는 아닐지 몰라도 우리의 자식 세대, 내지는 입는 컴퓨터를 초딩때부터 착용할 자식의 자식 세대에는 보다 유쾌하고 공정한 온라인 게임 환경을 접할 수 있을테니 말이다.

덧) XIGNCODE3 개발팀에서는 기존 방식과는 다른 데이터 마이닝과 같은 대안적 게임 보안 솔루션에 대해서도 관심이 많습니다. 이런 백엔드 시스템 구축에 관심이 있거나 경험이 있는 분, 파이썬을 다룰줄 알고 웹 프로그래밍을 어느 정도 할 수 있는 분을 찾고 있습니다. 적어놓고 보니 뭐 맥가이버군요. 작은 회사들이 찾는 사람이 다 그렇겠지만 ㅠㅜ~ 어쨌든 이런 일들에 관심 있으신 분들은 codewiz at wellbia.com으로 연락 주세요.


xigncode-t

해커는 피하고 게이머는 원하는…

평판은 하루 아침에 만들어지지 않습니다.

XIGNCODE3는 여러분의 게임을 공정하게 만드는 가장 손쉬운 방법입니다.



Read more: http://www.jiniya.net/wp/archives/10597#ixzz3NCRfTFtx

반응형
반응형

게임 보안: VIP 해킹툴 대처 방안 A to Z…
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net

블로그가 진짜 말그대로 거의 개점 휴업 상태였네요. 바쁘다는 말을 별로 좋아하진 않는데 정말 바빴습니다. 제 머릿속에서 날 것 그대로 방출된 무수한 버그들, 겹겹이 겹친 CBT 일정, 그리고 각종 요구 사항, 이슈 사항, 거기에다 VIP 핵툴까지… 헉. 이런 것들에 파묻혀서 정말 숨도 못쉬다가 이제 조금 호흡을 가다듬고 있습니다. 후훗~ 간만에 XIGNCODE(라고 쓰고 싸인코드라고 읽습니다) 깔때기나 좀 댈겸 VIP 핵툴에 대한 이야기를 좀 해볼까 합니다. ㅋㅋ


가장 최근에 등장한 모 해킹툴 그룹의 GG 제스쳐.
해킹툴 제작자만 이런 사실을 안다는게 안타깝습니다 ㅋ~

VIP 핵툴이란 유료 핵툴이라고 생각하면 됩니다. 근데 그냥 유료 핵툴은 아니고 해킹툴 제작 그룹에서 퀄리티를 보장하는 해킹툴이라는 게 특징이죠. 즉 비싼 돈을 받는 대신에 QA를 해주는 핵툴이라고 생각하면 되겠습니다. 그래서 흔히들 보안 업체가 계약을 할 때에 최대 몇 시간 내에 대응을 해줄 것인지에 대한 보장을 하는데 이런 VIP 해킹툴도 사용자들에게 그런 조항을 달아 줍니다. 예를들면 72시간 동안 해킹툴이 다운될 경우에는 보너스 기간을 준다거나 하는 식이죠. 즉, 쉽게 생각하면 목숨걸로 핵툴 만드는 애들이 판매하는 핵툴이 VIP라고 생각하면 됩니다.

그러다보니 자연스럽게 VIP 핵툴의 경우 대응이 까다로운 점이 있습니다. 사실 대응이라고 하기도 좀 힘든 실정입니다. 대부분의 경우 VIP 핵툴은 게임 패치와 동시에 업데이트 돼서 거의 항상 오픈된 상태를 유지하기 때문입니다. 어쨌든 요번 글에서는 이런 VIP 해킹툴을 대응하면서 느꼈던 점, 팁(?!)들을 몇 가지 써볼까 합니다.

#0
테크닉, 기술. 사실 가장 중요한 요소입니다. 이게 안되면 이후에 진행하는 모든 것들이 애초에 불가능하기 때문입니다. 따라서 게임 보안 제품을 만든다면 반드시 해커보다는 똑똑한 개발자와 분석가를 뽑아야 합니다. 그게 안되면 싸움 자체가 성립이 안되기 때문입니다.

이 말이 의미하는 바는 이런 겁니다. 커널 모드 핵툴이 나왔는데 우리는 유저 모드 기술 밖에는 없을 때. 같은 레벨에서 싸우지 않고서는 답이 없는 경우가 존재합니다. DirectX 후킹만 알고 있는데 핵툴 제작자는 WDDM 후킹을 하고 있을 때, 함수 진입 부분 훅 체크만 하는데 함수 중간 부분을 후킹하는 기법일 때, 코드 오버라이트 방식의 훅만 생각하는데 예외 처리기를 통한 후킹 방식일 때, 등등… 즉, 일부 영역에서는 해당 테크닉을 모르고는 영원히 대응이 불가능한 지점이 생깁니다. 따라서 일정 수준 이상의 기술력을 갖추는 것은 필수 사항입니다.

#1
도구. 두 번째로 중요합니다. 보안 제품에 반드시 특정 싸움에 대해서는 종결 시킬 수 있는 이론적 근간이 있는 코드들이 있어야 한다는 것을 의미합니다. 논클라이언트 봇이나 바이패스 툴이 나왔을 때 해당 툴들을 사전에 차단은 하지 못하더라도 사후 대응은 가능한 이론적 근간은 있어야 한다는 겁니다. 그런 게 없으면 싸움을 이어 나갈 수가 없습니다. 이런게 없으면 그냥 단순하게 바이패스 등장, 끝이기 때문입니다.

더불어서 알려진 범용 핵툴 기법에 대해서는 해당 접근 루트를 완전히 차단할 정도로 완전한 도구가 필요합니다. 특정 API를 후킹할 때 우리가 해당 API를 체크하면 더 이상 해당 API를 후킹하면서 우리 코드를 우회할 방법은 없어야 한다는 것, 특정 게임 함수를 불법 호출할 때 해당 게임 함수를 보호하면 더 이상 불법 호출을 하면서 우리 코드를 우회할 방법은 없어야 한다는 것을 의미합니다. 그런데 이 정도로 완성도 높은 코드들을 만들기는 쉽지 않습니다. 하지만 이런 코드들 없이는 절대로 싸움을 끝낼 수가 없습니다. 반드시 어느 지점까지 몰아갔을 때에는 해커들을 막다른 골목으로 인도할 수 있는 도구가 있어야 싸움을 끝낼 수 있습니다.

#2
이런 기본기가 갖추어진 다음 진짜 중요한 것은 업데이트 입니다. 핵툴은 제작이 끝나는 순간 바로 배포합니다. 몇몇 운영체제에서 크래시가 나는 것은 중요하지도 않습니다. 선배포 후에 테스트를 진행한다고 보면 되겠습니다. 이렇게만 해도 일부 핵툴이 동작하는 사용자들은 환호하면서 그들에게 돈을 지불하고도 칭찬을 아끼지도 않죠.

하지만 보안 제품은 상황이 다릅니다. 모든 PC에서 정상 동작을 해야 하며, 다른 제품들과 충돌 테스트도 거쳐야 하고, 내부 QA에서 게임사 QA, 또는 게임사에 따라서는 게임사의 자체 보안팀의 QA를 거쳐야 합니다. 이러한 복잡한 단계를 거치더라도 최소한 해킹툴과 속도전을 할 수 있을 정도의 업데이트 속도는 갖추어야 합니다. 보안 제품 한 번 업데이트로 해킹툴을 하루 다운(down) 시킨다면 적어도 매일 업데이트가 이루어져야 한다는 겁니다. 대응을 해보면 알겠지만 사실 추가 업데이트 없이 하루를 다운시키는 것도 거의 불가능할 정도로 긴 시간입니다.

물론 이런 업데이트 주기를 가지기 위해서는 보안 제품을 개발하는 쪽에서도 많은 부분을 신경 써야 합니다. 우선은 코드가 아닌 데이터만 교체함으로써 핵툴을 차단할 수 있는 구조를 많이 만들어 두어야 합니다. 데이터 교체는 빌드를 새로 하는 것보다는 훨씬 문제가 덜 발생하기 때문이죠. 또한 검증할 것도 적어지기 때문에 QA 시간도 단축됩니다. 더불어 절대로 핵툴이 새로 나왔다고 그걸 분석하고 있어서는 안됩니다. 나오는 즉시 일단 막고 봐야 합니다. 그 후에 분석해도 늦지 않습니다. QA 시간을 고려해서 최대한 빨리 대응할 수 있도록 해주어야 한다는 의미입니다.

속도전입니다. 핵툴이 새롭게 업데이트 되자 마자 바로 문제가 발생한다는 인식을 해킹툴 사용자와 해킹툴 제작 그룹에 인지시켜 주어야 합니다. 이런 인식이 없으면 마치 깨진 유리창 이론처럼 우후죽순 유사 해킹툴들이 등장합니다.

#3
시스템 가변성. 이 싸움을 잘 살펴보면 해킹툴 그룹은 아주 소수이며 그것을 사용하는 사람은 절대 다수라는 점을 알 수 있습니다. 따라서 이 싸움에서 이기기 위한 영리한 생각 중에 하나는 시스템 가변성을 두는 것입니다. 즉 우리가 만든 보안 제품이 해킹툴 제작자의 PC와 다른 사람들의 PC에서 다르게 동작한다면 해킹툴 제작자 입장에서는 굉장히 골치 아픈 문제가 될 수 있다는 겁니다. 해커가 자기 PC에서 되는 것 같아서 배포했는데 사용자들은 모두 동작하지 않는다고 아우성을 치는 상황을 만들 수 있다는 것이죠. 이런 상황이 몇 번 연출되면 해킹툴 제작자 입장에서는 클레임에 골치 아파서라도 그냥 GG치게 됩니다.

#4
느린 탐지. 아주 간단하지만 의외로 굉장히 효과적인 방법입니다. 해킹툴 배포 시간을 늦추고 싶다면 해당 해킹툴 탐지 시간을 늦추는 단순한 행위로도 효과를 볼 수 있다는 말입니다. 물론 아무리 길어지더라도 해킹툴 사용자 입장에서는 핵툴을 이용한 효용이 없는 시간 정도여야겠지요. 예를 들어 FPS 게임이라면 핵툴을 가동하고 게임을 실행하고 방을 찾아 들어가서 이제 한 번 시작해볼까 할 때에 탐지하는 것을 말합니다. 그런데 보통은 빠른 탐지가 좋은 줄 알고 게임 구동 시에 알려진 핵툴에 대해서는 바로 탐지해 버립니다. 이게 문제입니다.

이 방법이 효과적인 이유는 해킹툴 제작자의 테스트 시간을 늘린다는 점과 굉장히 피로하게 만든다는 점입니다. 게임을 구동해서 방에까지 들어가야 뭔가 결과를 알 수 있기 때문이죠. 즉, 자신이 수정한 것이 우회됐는지를 확인하기까지 시간이 늘어난다는 점입니다. 더불어 탐지 시간이 가변적이라면 더 효과적입니다. 해킹툴 제작자 입장에서는 얼마 정도를 테스트해야 하는지를 알기가 힘들어지기 때문입니다.

#5
복잡한 내부 IPC 구조. 여러분이 반드시 숨겨야 하는 것은 어떤 기준으로 해킹툴을 탐지 했냐는 겁니다. 따라서 탐지하는 부분과 사용자에게 핵툴이 탐지 됐다고 보고하는 부분 사이에는 거리가 있어야 합니다. 절대로 탐지 했다고 바로 그것을 보고하는 멍청한 짓을 해서는 안됩니다. 왜냐하면 해커들은 당연히 탐지 지점부터 우리를 추적해 오기 때문입니다. 그 사이에 엄청 복잡한 단계의 IPC 통로를 만들어 두세요. 그 IPC 메커니즘이 일정 수준 이상 복잡해지면 어느 순간부터는 해커들이 우리 코드를 분석해 패치하기 보다는 그냥 자기 코드를 고치는 것이 빠르다는 생각을 하게 됩니다.

#6
VIP 핵툴의 경우 절대로 진단 루틴이 제너레이터를 통해서 우회할 수 있는 수준이어서는 안됩니다. 해킹툴 개발자가 코드를 보고 어디를 고쳐야 할지 생각하고 다시 컴파일을 강요할 수준은 되어야 합니다. 이런 게 되지 않으면 업데이트 한 트럭이 주어져도 전혀 효과가 없습니다. 무조건 우리가 업데이트를 한 번 할 때에는 해킹툴 개발자도 적어도 컴파일을 새로할 정도는 되는 진단 루틴을 추가해야 합니다. 물론 해커가 고민을 많이 해야 알 수 있는 루틴이라면 더 좋습니다.

#7
구구절절 설명했지만 솔직히 정말 복잡하고 골치 아프고 신경쓰기 싫은 문제들입니다. 그럴 땐 그냥 웰비아닷컴의 XIGNCODE를 사용하시면 됩니다. 합리적인 가격에 우수한 게임 보안 서비스를 제공한답니다. 어쨌든 게임 보안하면 XIGNCODE, XIGNCODE하면 게임 보안 딱 답 나오잖아요 ㅋㅋㅋ~



Read more: http://www.jiniya.net/wp/archives/5657#ixzz3NCQoiPvb

반응형
반응형

게임 보안: 0을 향한 질주…
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net


우리도 항상 제로의 영역을 꿈꾼답니다 ㅋ~

게임은 가장 하드코어한 프로그램 중에 하나죠. 사람들이 하드웨어를 업그레이드하는 주된 원인이기도 합니다. 이런 게임과 동시에 실행돼야 하는 게임 보안 프로그램의 가장 큰 어려움 중에 하나는 게임에 영향을 주지 않아야 한다는 겁니다. 백신 검사를 시켜놓고 게임을 실행해 보세요. 게임이 얼마나 느려지는지 보시면 이 말의 의미를 금방 체감하실 수 있습니다. 게임 보안 프로그래머는 보안 프로그램이 존재 하지만 없는 것처럼 만들기 위해서 상당히 많은 공을 들여야 합니다.

#0
XIGNCODE는 가장 공격적인 탐지 루틴을 사용하는 거의 유일한(?!) 게임 보안 제품입니다. 이러한 공격적인 방법을 사용하는 것은 해킹툴 억제력을 높이고 싸움에서 이길 수 있는 유일한 방법이기 때문입니다. 물론 그런다고 해킹툴이 100% 없어지는 것은 아니라는 점은 참고해 두시구요. 상대적으로 좀 더 우수한 해킹툴 제어 품질을 유지할 수 있다는 거겠죠 ㅋㅋㅋ~


AMD 2.7GHz 싱글 코어에서의 XIGNCODE CPU 점유율

공격적인 방법이란 달리 말하면 더 많은 연산을 의미하고, 더 많은 연산이란 더 많은 CPU 자원을 의미합니다. 하지만 게임과 동시에 실행되는 게임 보안 제품의 경우는 솔루션의 특성상 CPU 자원을 굉장히 아낄 수 밖에 없습니다. 그래서 우리는 공격적인 방법을 사용하돼 가급적 게임 구동 중에는 CPU 점유율을 거의 제로에 가깝게 유지하려고 애를 씁니다. “0%니까 어 그럼 CPU를 사용하지 않는다는 건가?”라고 생각하면 오산입니다. 0.0001%, 0.00001%씩 사용한다는 말이거든요. 그 1앞에 있는 0을 한없이 늘리기 위한 노력을 불출주야 쉬지 않고 노력 한다는 의미죠.

일반적으로 싱글코어에서 실행되는 게임에 있어서 2% 이상의 순간 CPU 점유율을 게임 보안 제품이 가져가면 민감한 사용자들이 순간 랙을 체감합니다. 3% 이상의 순간 점유율을 가져가면 조금 둔한 사용자가 끊김을 체감하고, 5% 이상의 점유율을 가져가면 모든 사용자가 랙을 호소합니다. 최소 사양 기준으로 말이죠.

그래서 어떤 경우에도 순간적으로 CPU 점유율을 과도하게 사용하지 않아야 합니다. 이게 말로만 들으면 굉장히 쉽습니다. 아, 그냥 CPU를 덜 사용하면 되겠구나라고 말이죠. 하지만 사실 윈도우 환경에서 스레드 별로 CPU 쿼터를 지정하는 방법이 공식적으로는 존재하지 않기 때문에 정확하게 게임 보안 제품이 가져가는 CPU 점유율을 제한하는 일은 생각처럼 그리 쉽진 않습니다.

윈도우 스케줄러가 아닌 선점형 스케줄러를 직접 구현하는 것이 가능하다면 문제가 조금 간단한데 윈도우 환경에서 유저모드에서 그런 스케줄러를 구현하기가 쉽지는 않습니다. 파이버가 비선점형으로 구현된 것만 봐도 알 수 있죠. 물론 커널 스케줄러를 대체하는 방법이 있긴 한데 이는 문서화된 방법도 아닐 뿐더러 시스템 전체적으로 굉장히 리스크가 큰 방법이라 상용 제품에 사용하기엔 힘든 실정입니다.

#1
뭐 천천히 실행하면 되는 걸 가지고 왜 그렇게 호들갑을 떠냐구요. 맞습니다. 하지만 여기엔 다른 쪽에서 우리를 압박하는 요소가 있습니다. 바로 마의 시간입니다. CPU 점유율을 낮추기 위해서 탐지 코드가 무한대로 느려져서는 안 된다는 것을 의미하는 말이죠. 게임 특성에 따라 다르긴 하지만 통상적으로 게임 보안에서 3분과 5분은 굉장히 의미있는 탐지 시간입니다.

3분 내 탐지가 이루어지면 유료 핵툴인 경우에는 제작자가 핵툴이 패치 됐다는 공지를 올리고 핵툴에 대한 업데이트를 진행합니다. 아주 악성 사용자들의 경우에도 이 시간 내에 탐지가 이루어지면 해킹툴 사용을 보류하는 경향이 높습니다.

5분 언저리에서 진단이 되거나 이 시간보다 진단이 지연되게 되면 해킹툴 제작자는 패치 됐다는 공지를 하지 않습니다. 사용자들은 이를 하나의 페널티로 인식하지요. 공격적인 사용자의 경우에는 지속적으로 해킹툴을 사용합니다. 5분 내에 탐지되지만 게임 핵툴을 사용하는 사용자가 계속 존재하기 때문에 게이머들은 지속적으로 게임 내에서 해킹툴 사용자를 마주치게 되고 해킹툴이 많다는 인상을 받게 됩니다.

즉, 마의 시간이란 아무리 늦어도 3분 내에는 해킹툴이 차단이 되어야 하고, 아주 최악의 경우에도 5분 내에는 사용자가 지속적으로 게임 플레이를 할 수 없도록 만들어야 한다는 것을 의미합니다. 이렇게 만들기 위해서는 당.연.한 이야기겠지만 CPU를 쓸 수 밖에는 없죠. 따라서 CPU 자원과 해킹툴 탐지 속도가 사이의 최적값을 찾는 것이 중요합니다. 그래야 CPU 자원을 최소한으로 사용하면서도 탐지 속도도 일정 수준 이상으로 끌어 올릴 수 있거든요.

#2
이런 이유로 XIGNCODE는 조금은 특이한 디스패칭 전략을 사용합니다. 우리 전략의 핵심은 시점입니다. 우리는 크게 이 시점을 네 가지 기준으로 분류합니다. 첫 번째는 게임이 시작하는 S 시점입니다. 게임의 각종 데이터가 로딩되기를 사용자가 기다리는 시점이죠. 다음으로는 시점은 게임이 시작돼서 사용자가 게임을 즐기는 P 시점이 있습니다. 또 게임을 사용자가 즐기다 게임을 일시 중단한 상태로 다른 작업을 수행하는 L 시점이 있습니다. 윈도우 환경이라면 게임이 액티브 프로세스가 아닌 시점을 의미하겠지요. 끝으로 해킹툴이 탐지된 X 시점이 있습니다. 똑똑한 분들이라면 버얼써 눈치채셨겠지만 이렇게 시점을 구분한 이유는 동일한 루틴도 어떤 시점에 실행되느냐에 따라서 CPU 자원 소모량을 다르게 만들기 위함입니다.

S 시점은 게임 데이터를 로딩하기 위해서 사용자가 어차피 기다리는 시점이기 때문에 이 시점에 스케줄링 되는 루틴들은 모든 CPU 자원을 활용하는 형태로 구동됩니다. P 시점은 사용자가 실제로 게임을 즐기는 시점이기 때문에 최소한의 CPU를 사용할 수 있도록 스케줄링 됩니다. 또한 뒤에서 살펴보겠지만 점감 프리미엄을 받도록 설계돼 있습니다.

L 시점의 경우에는 조금 애매합니다. L 시점이 됐다고 바로 모든 CPU 자원 소모가 들어가는 작업을 수행한다면 바로 다시 게임으로 돌아오는 경우에 랙을 체감할 수 있기 때문이죠. 떠난 시간이 일정 수준을 넘어서면 모든 검사 루틴들이 시작 시점과 동일하게 CPU 자원을 많이 소모하는 형태로 동작합니다. 다른 프로세스에게는 미안한 일이지만 어쨌든 게임 플레이라는 입장에서 봤을 때에 페널티가 발생하지는 않기 때문이죠. 마지막으로 X 시점입니다. 이 시점은 우리가 똥을 싸질러도 되는 시점이지요. 가장 아름다운 순간입니다. 크래시 따위도 전혀 무섭지 않은 무적 상태랍니다 ㅋㅋ~

#3
XIGNCODE는 랙을 줄이기 위해서 사회공학적인 기법들이 사용하기도 합니다. 바로 검사 루틴들의 스케줄링 정책입니다. XIGNCODE의 모든 검사 루틴들은 기본적으로 리타르단도 방식으로 스케줄링됩니다. 리타르단도가 뭐냐구요? 점점 느려진다는 말이죠. 왜 점점 느려지게 만들었을까요? 정상 사용자들에게 최대한 피해를 주지 않기 위해서 입니다.

일반적으로 해킹툴 사용자의 경우 게임 시작과 동시에 해킹툴을 사용하는 경향이 매우 높고, 모든 해킹툴 탐지의 80%는 20% 악성 사용자에게서 발생하는 경향이 있습니다. 신기하지만 2080 법칙은 어디에나 통용되는 것 같아요. 어쨌든 사회공학적으로 착하게 플레이를 하는 사용자들은 지속적으로 착하게 플레이할 가능성이 높다는 거죠. 그래서 XIGNCODE의 모든 검사 루틴은 점감 효과를 받도록 스케줄링됩니다. 게임 시작 후에 일정 시간이 지나면 거의 모든 검사 루틴들이 마치 죽은듯이 동작한다는 의미입니다. 물론 그렇게 되더라도 앞서 말한 3분내 탐지는 가능할 정도 수준으로 동작은 해야겠지요.

윈도우 사용자라면 윈도우를 사용하면 할수록 빨라진다는 느낌을 받았을 겁니다. 또 어떤 프로그램을 설치해서 처음 실행했을 때 보다는 자주 실행했을 때 그 프로그램의 수행 속도가 더 빨라지는 현상도 느꼈을 텐데요. 운영체제에서 이런 것들을 가능하게 해주는 캐싱 시스템이 존재하기 때문입니다. 대단한 건 아니고 여러분이 자주 요청했던 리소스를 미리 캐싱해놨다가 사용자가 요청하는 시점에 니가 이걸 요청할 줄 알았다하고는 바로 내주는 것이죠. 이 시스템이 재미난 건 대부분의 사용자가 쓰는 프로그램을 반복적으로 사용하기 때문에 굉장히 히트율이 높다는 겁니다. XIGNCODE 개발팀에는 최근에 이런 점에 착안해서 스케줄링 정책에 이런 캐싱 시스템을 도입하려고 하고 있습니다. 즉, 여러분이 게임을 지속적으로 착하게 플레이 하면 할수록 보안 제품으로 인한 성능 페널티는 점점 더 없어지고, 여러분이 해킹툴을 사용하고 뻘짓을 하면 할 수록 여러분의 시스템을 박박 긁는 것이죠.


xigncode

안타깝게도 여기에 은탄환(Silver Bullet)은 없습니다.

물론 그렇다고 너무 아쉬워할 필요는 없습니다.

최상급 수제 에픽 탄환인 XIGNCODE가 있잖아요.

딜이 안 될 때에는 탄환을 먼저 체크해 보세요. 미터기는 저희가 찢어 드리겠습니다.

뉴요커 냥꾼이는 앵벌 할 때에도 에픽 탄환을 쓴다는 점. 꼭 기억하세요 ㅋ~



Read more: http://www.jiniya.net/wp/archives/7777#ixzz3NCPhnabQ

반응형
반응형

게임 보안 솔루션 그놈이 그놈 아닌가요?
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net

게임보안 제품 이거 쓰나 저거 쓰나 그놈이 그놈 아닌가요?
어차피 100% 막지도 못하잖아요.

업체 분들을 만나면 이런 이야기를 많이 하십니다. 네. 맞습니다. 그 어떤 솔루션도 해킹을 100% 막지는 못합니다. 하지만 100% 막지 못한다고 해서 다 그놈이 그놈인 건 아니랍니다.

일반적으로 많은 분들이 게임 보안 솔루션하면 게임 해킹을 100% 차단하기 위한 솔루션이라고 생각을 합니다. 하지만 이건 정말 아주 많이 잘못된 생각입니다. 왜냐하면 어떠한 보안도 100%가 있을 수는 없거든요. 이 세상에 그렇게 많은 경찰과 군인이 있지만 범죄와 테러가 끊임없이 발생하는 것과 똑같은 원리입니다.

게임 보안 솔루션이 하는 일은 100% 차단하는 것이 아닌 게임 내에서 유통되는 해킹툴의 수치를 관리하는 일에 가깝습니다. 게임 보안 솔루션이 없을 때에는 착한 사용자가 게임 내에서 아주 손쉽게 모든 지역에서 해킹툴을 사용하는 게이머를 만났다면, 게임 보안 솔루션을 적용한 후에는 그 빈도를 좀 낮춰서 가끔 만나도록 만들어 주는 역할을 하는 것이죠.

일종에 당뇨병 환자의 당 수치를 관리하는 것과 비슷한 일입니다. 당뇨병을 완치할 순 없지만 당 수치를 잘 관리한다면 생존에는 문제가 없습니다. 당 수치를 관리하는 것에는 여러가지 방법이 있죠. 식이요법도 있고, 당뇨약을 시간에 맞춰서 복용하는 방법도 있습니다. 자동으로 인슐린을 투입해주는 인슐린 펌프도 있죠. 모든 방법이 당뇨병을 완치하진 못하지만 심각한 당뇨 환자라면 인슐린 펌프가 제일 편한 방법입니다.

게임 보안 솔루션도 마찬가지입니다. 많은 솔루션이 존재하지만 100% 모든 해킹툴을 차단하는 솔루션은 단 하나도 없습니다. 하지만 그 솔루션들의 해킹툴 수집 능력, 신규 핵킹툴 출현 억제력, 해킹툴 출현 시 대응 속도에는 식이요법과 인슐린 펌프만큼이나 큰 차이가 있습니다. 이제 게임 보안 솔루션의 기능이 동일하다고 성능도 동일하다는 생각은 과감하게 옆집 멍멍이에게 주도록 합시다.

반도의 흔한 게이머의 합.성.짤.


반도의 흔한 게임 보안 솔루션의 네이버 테스트


반도의 흔한 게임 보안 솔루션 개발자 블로그 검색어 유입 순위






미디엄과 하드, 사소하지만 굉장히 큰 차이

해커들에게 가장 어려운 게임 보안 제품

해커들에게 가장 골치아픈 게임 보안 제품

해커들에게 가장 터프한 게임 보안 제품

그리고 게이머들이 탑재를 요구하는 게임 보안 제품

오늘도 XIGNCODE 개발팀은 그런 제품을 만들기 위해서 최선을 다한다는거, 아시죠? ㅋ~




Read more: http://www.jiniya.net/wp/archives/9191#ixzz3NCN2g7Rw

반응형

+ Recent posts