반응형

게임 보안 솔루션 그놈이 그놈 아닌가요?
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

반응형
반응형

게임 보안: 타이밍 전쟁
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net

A Book On C란 책을 보면 C언어에서의 0의 의미에 대해서 설명하면서 시작을 합니다. 배열의 시작 인덱스 번호이기도 하고, 문자열의 끝을 나타내기도 하고, 거짓을 나타내기도 한다… 등등으로 말이죠. 이런 것처럼 게임보안에 있어서도 타이밍이란 참 다양한 의미로 사용되고 또 중요한 개념입니다. 오늘은 이 타이밍에 관한 내용에 대해서 좀 써볼까 합니다.

#0
일단 게임보안 제품이 영원히 한 수 접고 시작할 수 밖에 없는 타이밍이 있습니다. 바로 실행 타이밍입니다. 게임보안 제품의 제1공리가 다름아닌 ‘게임보안 제품은 절대로 해킹툴보다 먼저 실행될 수 없다’이기 때문입니다. 이런 전제를 뒤엎기 위해서 바다 건너 P모 제품은 게임 실행과 상관없이 메모리에 상주하기도 합니다. 하지만 이래봐야 운영체제가 실행된 다음에 실행될 뿐입니다. 운영체제 실행 전에 해킹툴이 실행된다면 어쩔 수 없습니다. 물론 그런 극단적인 — 뭐 사실 크게 극단적이지도 않습니다. — 예를 가정하지 않더라도 P모 제품의 전략이 안통하는 가장 큰 이유가 있습니다. 게임보안의 특수성이 그 이유죠. 일반적인 보안 제품은 사용자가 해커로부터 PC를 보호하기 위해서 보안 제품을 사용합니다. 하지만 게임보안에서는 사용자가 곧 해커가 돼 버립니다. 따라서 상주해 있다고 하더라도 사용자가 해킹툴을 사용할 목적으로 프로세스를 종료해 버리면 끝납니다. 아주 은밀하게 구동하겠다구요. 물론 가능합니다. 하지만 그 은밀함이 지나치다보면 옆동네 백신 친구들하고 싸움이 납니다. 화가난 백신 친구들이 우리를 white rootkit으로 분류하고는 마구 삭제해 버리죠. 어쨌든 백신 친구들하고 싸우면 안됩니다. 친하게 지내야죠 ㅋㅋ~

이런 이유로 게임 실행 전이란 그 영역은 게임보안 제품에게는 영원한 미지의 영역입니다. 마치 우리에게 빅뱅 시점이 영원히 풀지 못할 것처럼 보이는 미지의 영역인 것처럼 말입니다. XIGNCODE는 이런 제약에 보다 효과적으로 대응하기 위해서 대부분의 기술을 차단(blocking)의 관점보다는 탐지(detection)의 관점에서 개발합니다. 왜냐하면 일단 먼저 시작할 수 없기 때문에 차단은 언제나 결국은 실패할 수 밖에 없는 방법이거든요. 역사적인 관점에서 게임보안을 살펴보면 이것도 약간 트렌드가 있는데요. 아주 초장기는 백신에서 차용한 탐지의 관점에서, 그러다가 후킹이 발전하면서 차단의 관점으로, 그러다 해킹툴 진영의 후킹 기술도 덩달아 발전하면서 다시 탐지의 영역으로 돌아오는 형태가 되고 있습니다. 현재 모든 게임보안 제품에서 말하는 차단의 형태는 바보들을 막기위한 껍데기라고 생각하시면 됩니다. 그렇다고 차단 기술이 완전히 의미없진 않습니다. 해킹툴을 만드려고 하는 사람들의 대다수는 그런 바보들이거든요.

#1
다음으로 게임보안에서 주로 이야기되는 타이밍은 무한(INFINITE)입니다. 게임 보안에서 INFINITE는 금기시 되어야 하는 것 중에 하나입니다. INFINITE가 뭐냐구요? 특정 이벤트나 메시지가 올 때까지 한없이 대기를 한다는 것을 의미합니다. 프로그래밍을 배울 때 개발자들은 동기화 이슈를 만들지 않기 위해서 INFINITE를 써야 한다고 배웁니다. 하지만 게임보안에서 INFINITE는 구린 제품을 만드는 직행 티켓이죠.

모든 것이 언젠간 응답할 거란 너의 가정이 얼마나 쉽게 부서지는지 보여줄께!!!

영원히 응답하지 않는 세계를 한 번 맛보렴.

예를 들면 이런 겁니다. 게임보안 제품이 아주 은밀하게 중요한 부분에서 특정 윈도우에 SendMessage를 했다고 생각해 봅시다. 어떤 윈도우인지는 모르겠지만 말입니다. 일반적인 경우라면 메시지가 리턴되겠죠. 해커가 그 사실을 알았다면 어떻게 할까요? 윈도우를 만들어서 SendMessage에 응답을 하지 않도록 만들어버립니다. 당연히 보안 제품은 바보가 돼 버립니다. SendMessage 뿐만 아니라 그 모든 이벤트에 대해서 절대로 무한 대기를 해서는 안됩니다. 이런 것들은 굉장히 쉽게 공격당할 수 있는 포인트거든요. 그래서 게임보안 제품은 대부분의 경우에 타임아웃을 설정합니다. 해당 타임아웃 넘어 응답이 없다면 그 다음 프로시저를 진행할 수 있도록 말이죠.

똑똑한 신입 게임보안 개발자들은 이런 이야기를 하곤 합니다. “그건 게임보안 제품이 게임과 별개로 동작하니깐 그런거죠. 게임이랑 한몸이 돼서 돌아가면 그렇게 하지는 못할것 같은데요. 그러면 게임도 같이 멈출테니까요?!?!”라고 말입니다. 정말 똑똑한 개발자군요. 우리 회사에 지원했다면 바로 채용했을 겁니다. 게임보안에서 가장 중요하게 생각하는 점을 제대로 짚긴 했습니다만 여기에도 맹점이 있습니다. 렌더링 스레드에 은밀하게 보안 코드가 추가되면 가장 좋긴 합니다. 하지만 다른 100만 가지의 문제를 야기 시키기도 합니다. 바로 랙이죠. 해커가 응답을 지연시키는 행위를 막을 순 있겠지만 정상적인 천만가지 상황에서도 렌더링 스레드가 지연돼서 화면이 프리징되는 문제가 만들어집니다. 그래서 렌더링 스레드에는 아주 섬세하고 조심스럽게 작성된 코드 외에는 추가하지 않는 것이 좋습니다.

#2
음. 다음으로는 또 활성화 타이밍이 있습니다. 해킹툴이 실행된 시점이 아닌 게임 내에서 실제로 활성화되는 시점을 의미하는 말입니다. 요즘 출시되는 대부분의 해킹툴은 실행 시점과 활성화 시점이 같은 경우는 거의 없습니다. 왜냐구요? 보안 제품을 우회하기 위해서입니다. 고전적인 게임보안 제품들은 게임 런칭 시점 외에는 따로 해킹툴 검사를 수행하지 않았습니다. 그래서 해커들은 해당 보안 제품이 스캔한 다음 자신의 해킹툴 코드를 활성화 되도록 만들었습니다. 그러면 스캔이 이미 지나갔기 때문에 예전 방식으로도 손쉽게 보안 제품을 우회할 수 있기 때문이죠.

게임보안 개발자들도 가만 있진 않았겠죠? 주기적으로 검사를 하도록 만들었습니다. 그랬더니 이번에 해커들은 어떻게 했을까요? 주기적으로 코드를 복원시킵니다. 즉, 초기 회피 타임과 주기를 알고 있다면 자신이 변조한 코드를 그 주기에 맞춰서 원본으로 돌려놓고 보안 제품 스캔이 끝나면 다시 코드를 변조하는 형태로 만들었다는 말입니다. 그 다음은요? 당연히 보안 제품 개발자들은 주기를 랜덤하게 해서 측정할 수 없도록 만들었답니다. 그래도 여전히 이 활성화 타이밍은 굉장히 중요한 부분입니다. 왜냐하면 검사 방식에 따라서는 비용이 너무 높아서 주기적으로 검사 하기는 힘든 것들도 있거든요.


게이머들은 매뉴얼 방식을 사용해서 인젝션 타이밍을 조절하기도 합니다.

물론 해커들만 이런 방법을 사용하는 것은 아닙니다. 사용자들도 이런 활성화 타이밍을 사용하는데요. 흔히 인젝션 딜레이라고 말하는 방법들이죠. DLL 인젝션 형태로 구동되는 해킹툴들은 언제 인젝션 하느냐에 따라서 해당 해킹툴이 탐지되기도 하고 안 되기도 합니다. 이런 취약성이 있을 때 쓸 수 있는 방법입니다. 예전에는 매뉴얼 인젝션 기능을 사용해서 게이머가 직접 판단해서 넣는 형태로 조작을 했습니다. 한 해킹툴 사용자가 탐지되지 않는 시점을 찾으면 커뮤니티에 방법을 공유합니다. 언제 게임이 뜨고 머가 나오고 3초 정도 있다가 넣으니까 되더라. 이 추상적인 문구를 토대로 그 글을 본 멍청이들이 모두 따라 해봅니다. 하지만 쉽진 않죠. 이런 백성들을 불쌍히 여긴 해킹툴 제작자가 버전업된 인젝터를 만들기에 이르렀는데요. 바로 인젝션 딜레이를 밀리초 단위로 지정할 수 있게 만든 것이죠. 그 이후로 커뮤니티에는 온갖 추상적인 이야기들은 사라지고 그 밀리초만 공유하게 되었다는 슬픈 이야기가 전해지고 있답니다. 하앍~

#3

내가 바로 그 유명한 알타. 하지만 XIGNCODE는 1000개를 띄워도 한번만 검사할 뿐이고~

또 다른 걸로는 게이머들이 많이 사용하는 용어이긴 한데 ‘알타’라는 말이 있습니다. 알집 타이밍의 준말인데요. 알집을 동시에 여러 개를 실행하는 것을 의미합니다. 알타50, 알타100등이 있는데요. 게임 실행 시점에 알집을 50개, 100개를 동시에 실행 시켜서 게임보안 제품이 알집을 검사하느라 해킹툴을 늦게 발견되도록 만드는 방법입니다. 대단하죠? 이토록 게임 해킹에 대한 사용자들의 욕망은 강렬합니다. 알타랑은 원리가 좀 다르긴 한데 자매품으로 Fraps 타이밍도 있답니다. ㅋㅋ~

XIGNCODE는 이런 방법에 대응하기 위한 다양한 기법들을 사용합니다. 기본적으로 거의 모든 검사 항목에 캐시를 사용합니다. 동일한 오브젝트를 두 번 검사할 필요는 없잖아요. 또 알집과 같이 알려진 프로그램에 대해서는 아주 빠르게 검사할 수 있도록 화이트 목록을 저장해 두는 방법도 사용하죠. 그리고 지능적으로 해킹툴 같아 보이는 것들부터 먼저 검사하도록 만드는 방법을 사용하기도 한답니다. 결국 뭐 알타는 XIGNCODE에게는 무용지물이라는 말이죠.

#4
해커와 게임보안 개발자 사이의 신경전적인 타이밍도 존재합니다. 바로 릴리즈 타이밍이죠. 새로 제작된 핵툴을 배포하는 시점과 그 핵툴을 차단하는 업데이트를 적용하는 시점을 의미합니다. 이런데 신경전이 있냐구요? 네 엄청나게 있습니다. 그런데 이것도 사실 게임보안 개발자가 천만배는 불리합니다. 왜냐하면 지난 글에서도 보았듯이 게임보안 제품 업데이트는 수많은 인력의 엄청난 시간과 노력을 필요로 하기 때문입니다.

그런 신경전을 거는 녀석들은 어떤 녀석들인지 알아볼까요? 여러분이 게임보안 개발자라면 언제 해킹툴이 새로 나오면 제일 짜증날까요? 네. 맞습니다. 짝짝짝 ㅋㅋ~ 불금이죠. 불타는 금요일 밤인데 이 녀석들이 업데이트를 하면 참 뷁스럽지 않겠습니까? 더 얄미운 녀석들은 해킹툴 사이트에 보라고 이렇게 공지를 한답니다. 참고로 해외 해킹툴입니다. 우리는 해킹툴을 이미 다 만들었는데, 한국시간으로 금요일 밤에 업데이트 하겠다. 핡~ 혈압이~ ㅠㅜ~ 이 바닥이 이렇습니다.

멍청하게 당하고만 있을수는 없지요. XIGNCODE 개발팀에서는 진단 루틴을 하나만 만들지 않고 한번에 여러 개를 만든답니다. 그리고 지난 번에 알려준 것처럼 시스템과 시간에 따라서 다르게 액티베이션되도록 만듭니다. 불금이 왔습니다. 해커는 신나게 릴리즈를 하죠. 어떻게 될까요? 네. 사용자들 원성이 자자하군요. 해커는 멘붕 시츄에이션에 봉착합니다. 자기 PC에서는 되는 것도 같거든요. 이런 불일치가 많아지면 많아질수록 해커는 쉽게 포기합니다.

XIGNCODE 개발팀 화이트보드에 붙은 그 녀석의 아바타~

신경전 이야기를 하니 예전 생각이 나는군요. XIGNCODE 역사상 이름이 가장 많이 거론된 해커가 한 명 있습니다. 얼마나 유명했냐면 개발팀 화이트보드에 그녀석 아바타 사진과 함께 WANTED가 붙기도 했죠. 걔 말고 그런 것이 붙었던 사람은 없었습니다. XIGNCODE 1.0시절 초창기 바이패스를 제작했던 녀석인데, 지금까지 그 녀석이 제작한 바이패스가 이론적으론 가장 완벽한 모델입니다. 그래서 우리는 아주 골치가 아팠죠. 그 녀석을 막기 위해서는 게임 서버에 있는 XIGNCODE 코드를 업데이트해야 했었거든요. XIGNCODE는 게임 서버가 구동 중인 상태에서도 업데이트가 가능하도록 설계는 돼 있지만 게임사에서 그렇게 하는 것을 별로 좋아라하지는 않습니다. 우리가 할 수 있는 업데이트는 일주일에 딱 한 번 정기 점검인 경우가 많았죠. 우리는 그 한 번의 샷을 최대한 활용하기 위해서 월화수목금토일 코드가 다르게 적용되도록 만들었답니다. 9-10개월 정도 지루한 공방이 이어졌지요. 그러다 세번째 버전인 XIGNCODE3가 나오면서 지금은 커뮤니티에서 자취를 감추었답니다. 다소 비극적인 결말이군요. SEH 하이재킹과 후킹을 참 잘하던 친구였는데. 적이었지만 실력은 인정해주고 싶은 친구였답니다. 부디 영원히 착하게 살아가길 ㅋㅋ~

#5
전쟁에서 이기기 위해서 가장 중요한 것은 정보고, 그 다음으로 중요한 것은 타이밍입니다. 게임보안에서도 마찬가지입니다. 정보와 타이밍이 참 중요합니다. 같은 값이면 이런 것들을 잘 이해하고 있는 사람들이 만드는 솔루션을 쓰는 게 좋겠다고 저는 생각하는데 말입니다. ㅋㅋ~

보안 제품 하나 바꿨을 뿐인데 핵툴 커뮤니티 소문 참 빠르네요. 왜일까요?


XIGNCODE는 해킹툴 제작자를 집으로 돌려보내는 유일한 솔루션이기 때문이지요.

 0  0 

 

 

 




Read more: http://www.jiniya.net/wp/archives/6006#ixzz3NCKSjmxX

반응형
반응형

모바일 게임 보안 솔루션: XIGNCODE3 for Android
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaruhttp://www.jiniya.net

모바일 게임 보안 솔루션 분야에 출사표를 던진지도 제법 시간이 지났습니다. 관련 제품이 전무한 상태이고, 저희 쪽에서도 직접적으로 광고를 하고 있지는 않은 상태라 아직도 많은 분들께서 모바일 게임 쪽에는 안티 해킹 솔루션이 없다고 알고 계신 경우가 많은 것 같습니다. 이런 안타까운 현실을 조금 개선하고자 요즘 가장 핫한 모바일 게임 보안 솔루션인 XIGNCODE3 for Android의 기능에 대해서 잠깐 소개를 해보는 시간을 가져볼까 합니다.

#0
역사는 반복된다고 했던가요? 모바일 시장을 보고 있으면 온라인 게임 보안 시장의 예전 모습을 보는 듯한 느낌이 많이 들곤 합니다. 온라인 게임 보안의 초기 시장의 경우에도 많은 게임 업체에서 외부 솔루션 업체는 믿지 못한다는 생각으로 직접 하겠다고 덤빈 경우가 많았습니다. 물론 안타깝게도 대부분 결과가 좋지 않았습니다. 그런 과도기를 거친 후에는 매출이 일정 수준 이상인 게임들은 통상적으로 게임 보안 솔루션을 필수적으로 탑재하는 시대가 오게 되었습니다.

시간이 흘러 흘러 최근에는 게임 출시 전에 사용자들이 제일 먼저 묻는 질문 중에 하나가 이런 것들이 되었습니다. 안티치트 솔루션이 무엇이냐? 해킹 방지 대책이 무엇이냐? 이런 현상을 반영하듯 요즘은 외부 솔루션 업체만으론 힘에 부치기에 게임사 내부에도 별도의 보안팀을 두어서 외부 솔루션 업체가 특화시키지 못하는 — 외부 솔루션 업체는 특성상 범용적인 보안을 할 수 밖에는 없답니다. — 게임의 세부 사항들에 대한 보안을 강화해 나가는 추세입니다.

#1

hackcnt

모바일 핵 탐지 카운트. 모바일 해킹, 온라인 못지 않습니다. 자바는 거들뿐…

먼저 모든 솔루션이 그렇겠지만 과연 이게 필요한가, 과연 그 조악한 모바일 디바이스에서 해킹을 시도하는 사용자가 당췌 얼마나 될까라는 의문을 가질 수 있습니다. 우선 그 질문에 대한 답변을 먼저 하자면, 단언컨대 모바일 환경의 해킹 시도는 온라인의 그것 못지 않게 심각합니다.

아직 블랙마켓이 형성되기 전이라 전문 프로그래머들이 진출하진 않았습니다. 바야흐로 초딩의 시대죠. 하지만 만만하게 볼 초딩이 아닙니다. 상상력 하나는 끝짱이거든요. 몇몇 메모리 조작 도구들이 개발되었고 초딩들은 그것들을 하염없이 개조해고, 개조하고, 또 개조해서 우회 엔진이라 말하며 웹사이트에 올립니다. 거기서 끝이 아니죠. 그 올려진 도구를 사용해서 밤새도록 끊임없이 앱의 메모리를 염탐하고 조작하고 있습니다. 이런 초딩 인구가 집계가 되지 않을 정도로 많다는 카더라 통신도 있습니다.

더 심각한 상황은 엄마가 컴퓨터는 끄라고 하지만 핸드폰을 끄라는 소리는 하지 않기 때문에 핸드폰이라는 디바이스는 초딩들에게 24시간 열려있습니다. 이런 연유로 초보 해커인 초딩들은 오늘도 밤새도록 이불 밑에서 앱 메모리를 탐색하면서 어딘가 허점은 없을까? 아이템을 공짜로 훔칠순 없을까? 연구하고 또 연구하고 있습니다. 여기다 초딩의 영웅심이 더해지면 해킹툴 유포 속도는 빛의 속도에 근접하게 됩니다. 인정받고 싶어하는 그들의 욕구 때문에 절대로 알아낸 지식을 혼자만 알고 끝내는 법이 없지요. 어떻게는 짜투리 지식도 공유하고 또 공유합니다. 집단 지성 풀이 만들어지는 겁니다. 특히나 요즘 초딩들은 조기 교육 덕분에 영어 리소스에 손쉽게 접근할 수 있습니다. 이런 사실은 그들이 아주 고급스런 인터넷 정보에 접근할 수 있음을 의미하지요. 더불어 더 이상 그들이 초딩의 지식 한계에 머무르지는 않는다는 것을 의미하기도 합니다. 이쯤되면 메이저 업체에서 만든 앱들도 난자 당하는 건 시간 문제라는 걸 알 수 있습니다.

게임이 인기를 끌면 끌수록 모여드는 초딩은 늘어나고 게임은 더 많은 해킹 위협에 노출됩니다. 컨텐츠 개발에 힘써야 할 게임 프로그래머들이 변수 오프셋을 변경하고 값을 암호화 시키는 작업에 더 많은 시간을 투자하게 됩니다. A를 A라 저장하지 못하는 그야말로 난감한 상황이 됩니다. 게이머들의 컨텐츠 소모 속도는 빨라지고, 게임 프로그래머의 개발 속도는 더뎌집니다. 결국 개발한 앱은 컨텐츠 경쟁력에서 뒤쳐질 수 밖에 없습니다. 심지어는 실컷 만들어 놓고, 사용자도 많은데 매출은 없는 기형적인 구조가 되기도 합니다.

이쯤되면 아 뭔가, 우리를 대신해서 이 초딩 집단을 컨트롤해 줄 현자가 필요하겠구나, 라는 생각이 듭니다. 안드로이드 시스템에 해박한 지식을 가진, 리눅스를 적어도 커널 1.2 때부터는 사용해 왔던, X윈도우 커서 앞에서 눈물을 한번쯤 흘려 본 똑똑한 시스템 프로그래머가 필요한 시점인거죠.

#2
안드로이드의 가장 큰 홀은 다름 아닌 자바입니다. 자바는 그냥 게이머들에게 소스 코드를 던져주는 것과 똑같습니다. 변수값을 암호화해도 암호화 키나 시드 값을 알아내기가 정말 쉽습니다. 자바 코드는 너무 쉽게 디컴파일이 되고, 그걸 다시 컴파일해서 리패키징 하는 작업은 ‘식은 죽 먹기’입니다. 해킹 앱을 변조해서 새로 만들어내는 방법은 이미 튜토리얼 수준으로 공개돼 있어서 컴퓨터에 접근할 수 있는 초딩이라면 누구나 30분 내에 자신만의 독자적인 신규 해킹 앱을 제조해 낼 수 있는 수준입니다.

주먹구구 식으로 해킹 앱 패키지명 몇 개를 추가하는 것으로는 공격의 속도를 감당할 수 없습니다. 마치 UCC 처럼 해킹 앱을 제작해서 배포하는 수준이기 때문에 기존의 해시 시스템으로도 대응하기가 힘든 속도입니다.

XIGNCODE3 for Android는 온라인에서 검증된 우수한 패턴 처리 시스템과 백엔드 시스템을 사용해서 이렇게 초딩들이 마구잡이로 만들어내는 변종 앱들을 신속하게 처리할 수 있는 구조를 가지고 있습니다. 더욱이 저희는 Android 환경의 APK 전용 패턴 시스템을 별도로 제작했습니다. 이 방식을 통해서 초딩들이 허구헌날 새로 만들어내는 변종 앱들에 대해서도 패턴 변경 없이 놀라울 정도로 높은 수준의 진단율을 유지할 수 있는 구조를 가지고 있습니다.

#3
아주 잘 다듬어진 패턴 시스템이지만 무력화 시키는 것이 불가능하지는 않습니다. 그 벽을 뚫고 넘어온 친구들에게 우리는 루팅 체크라는 아름다운 선물을 제공해 주고 있습니다. 안드로이드 환경에서 다른 앱 메모리를 변조하기 위해서는 루트 권한 획득이 필수적이기 때문에 해킹 앱들은 필수적으로 루트 권한을 획득해야 합니다.

한가지 안타까운 점은 기존의 잘못된 상식 때문에 이 기능의 효용 가치가 너무나 심각하게 훼손 됐다는 점입니다. 기존 앱들, 심지어 금융앱에서도 루팅 체크를 su나 supersu의 존재를 체크하거나 특정 경로의 존재 유무를 체크하는 방식을 사용하고 있습니다. 잘 아시겠지만 이 방식을 우회하는 것은 정말 쉽습니다. 요즘 루팅 앱에서는 임시 언루팅이라는 이름으로 그러한 기능을 제공해 주고 있습니다. 반대로 이 방식의 치명적인 단점은 루팅 됐다는 사실 만으로 앱 실행을 차단한다는 점입니다. 루팅이란 자신의 돈으로 산 디바이스의 주인 권리를 찾겠다는 말인데 이걸 찾았다고 앱 실행을 제한한다는 것은 조금 이상합니다. 특히 금융 앱이 아닌 앱들에서는 이러한 허들은 앱을 사용하는 접속자를 늘리는데 도움이 안 되는 방식임에 틀림없습니다.

당연히 저희는 기존의 파일, 경로 체크와 같은 조악한 방식의 루팅 체크를 사용하지 않습니다. 우리는 진짜 시스템 프로그래머잖아요. 직접 프로세스에 접근해서 관련 조사를 수행합니다. 이 방식을 우회하기 위해서는 리눅스 커널을 새로 디자인하거나 시스템 전체의 동작 방식을 변경하는 아주 복잡한 작업이 필요합니다. 그래서 우회하기가 쉽지 않죠. 더불어 루팅 됐다는 사실만으로는 차단 하지 않기 때문에 동접 건전성을 유지할 수 있습니다.

루팅 앱을 체크하는 문제가 쉽게 느껴질 수 있습니다. 하지만 생각보다 쉬운 문제는 아닙니다. 바로 권한 페널티가 있기 때문입니다. 안드로이드 환경은 기본적으로 루팅을 불법으로 간주하고 있습니다. 따라서 정상 어플리케이션이 루트 권한을 요구하기란 쉽지 않습니다. 물론 루팅 단말에서만 권한을 요구할 수 있지만 그것 또한 정상적인 운영체제 경험을 위배하기 때문에 좋은 전략이라고 볼 수는 없습니다.

이런 연유로 안드로이드 환경에서는 통상적으로 해킹툴은 모든 권한을 가지고 있고, 보안 제품은 제한된 권한을 가질 수 밖에는 없습니다. 이렇게 권한 차이가 발생하는 것을 두고 우리는 권한 페널티가 존재한다고 이야기합니다. 결국 낮은 권한을 가진 프로그램이 높은 권한을 가진 프로그램을 탐지해야 하는 문제라는 것이죠. 이 이야기를 쉽게 말하면 다른 우주에 있는 범죄자를 잡는 것과 똑같다고 생각하시면 됩니다. 우주 끝이 어딘지도 모르는데 우주 밖에 있는 범죄자를 잡아야 한다뉘 욱기죠. 그래서 어려운 문제입니다.

XIGNCODE3 개발 팀은 다년간 이런 환경에서 작업을 해 왔고 권한 페널티에 있어서는 누구보다 전문가 입니다. 모두가 드라이버 설치를 강제할 때 그걸 옵션으로 했고, 모두가 64비트 프로세스를 띄울 때 WoW64에서 모든 것을 처리하도록 만들었습니다. 단언컨대 권한 페널티에 있어서 우리보다 전문가는 없다고 자부합니다. 우리는 낮은 권한에서 높은 권한을 가진 오브젝트를 검사하는 다양한 전략과 전술을 알고 있습니다. 이런 온라인 보안에서의 실전 경험은 모바일 보안에서도 당연히 진가를 발휘할 수 밖에 없습니다.

#4
완벽한 보안 솔루션이란 없습니다. 물론 저희도 완벽하진 않습니다. 다만 빛의 속도로 완벽해지는 것을 추구하는 한 솔루션입니다. 여러분의 게임을 서버 기반으로 디자인 했기 때문에 안전하다고 생각하실지도 모르겠습니다. 하지만 여전히 자동 플레이는 큰 문제이며, 오픈 플랫폼인 안드로이드의 취약점을 공격하는 것에 대해서는 속수무책일 수 밖에 없습니다. 알려진 공격루트를 허용하는 것과 차단하는 것 사이에는 하늘과 땅만큼의 차이가 있다는 점을 꼭 기억할 필요가 있습니다.

모바일 게임 보안, 이제 선택이 아닌 필수입니다.



Read more: http://www.jiniya.net/wp/archives/12153#ixzz3NCFXNntn

반응형
반응형

[IT News 이강민 기자, kangmin@itnews.or.kr] 온라인 게임 이용자 증가와 시장 활성화에 따라 금전적 이득을 노린 해킹 툴도 증가하는 것으로 나타났다. 이런 해킹 툴은 간단한 검색만으로도 웹사이트나 블로그, 게임 커뮤니티 등에서 손쉽게 찾아 설치할 수 있어 주의가 필요하다.

안랩은 13일 온라인 게임의 플레이를 불공정하게 이끄는 해킹 툴이 올 상반기에만 795개가 발견됐다고 밝혔다. 또한 해킹 기법이 더욱 지능화해 게임 프로세스가 아닌 운영체제(OS) 등 다른 영역을 해킹하는 우회 공격 기법이 증가하는 추세라고 밝혔다.

안랩에 따르면 해킹 툴 종류 별 비중은 메모리 조작(65%), 그래픽 핵(24%), 오토플레이(7.4%) 순으로 나타났다. 

메모리 조작은 게임 프로세스의 메모리를 조작해 게임 캐릭터나 아이템의 체력, 돈, 능력치 등을 수정하여 게임의 균형에 영향을 미친다. 메모리 조작은 다른 해킹 툴에 비해 제작 기간이 길고 비용이 많이 든다. 그럼에도 비중이 높은 것은 그만큼 이를 통해 얻을 수 있는 금전적 이익이 크기 때문이라고 볼 수 있다. 이 같은 메모리 조작은 얼마 전 첫 발견된, 금융사 보안 모듈 해킹에도 적용된 방식이다. 

그래픽 핵은 대부분 FPS(First-person shooter; 총기류를 이용해 전투를 벌이는 슈팅 게임) 내에서 동작하며 Direct-X의 그래픽 인터페이스 정보를 조작한다. 대표적인 것이 지형 지물 뒤의 케릭터를 보여줌으로써 상대방의 움직임을 예측하여 공격하게 하는 월핵(WallHack)이다. 십자선 (Cross-Hair)를 화면 중앙에 그려줌으로써 공격의 정확도를 높여주는 기법도 있다. 

오토플레이는 사용자가 입력하는 키보드나 마우스의 움직임을 대신해 자동으로 게임을 할 수 있도록 한 프로그램이다. 

해킹 기법의 지능화의 경우 과거에는 DLL 인젝션(실행 중인 프로세스에 특정 DLL 파일을 강제로 삽입하는 것)으로 메모리를 조작하는 단순 기법이 많았는데, 게임 보안 솔루션이 이 기법을 차단하자 게임 프로세스가 아닌 운영체제 등 다른 영역을 해킹하는 우회 공격 기법이 증가하고 있다. 대표적인 것이 WDDM(Windows Display Driver Model) 조작, 게임 런처로 위장, 게임 보호 모듈 조작, 게임 내 스크립트 호출 등이다. 

안랩 박근영 선임연구원은 “최근에는 게임 프로세스 자체가 아닌 PC 환경에 전반적으로 영향을 미치는 영역을 해킹하는 툴이 다수 제작된다. 단순 호기심으로 실행했다가는 포맷을 해야 할 수도 있기 때문에 각별한 주의가 필요하다. 

안랩 최은혁 실장은 “온라인 게임 해킹 툴은 일반 악성코드와 달리 사용자가 능동적으로 설치하는 것이다. 자신이 하는 행동이 남에게 피해를 준다는 점, 본인에게도 뜻하지 않은 악성코드 감염, 포맷 등의 피해가 갈 수 있다는 점을 인식해야 한다.”라고 강조했다. 

# 온라인 게임 해킹 툴이 위험한 이유

온라인 게임 해킹 툴의 제작자는 프로그램 판매를 통해 금전적인 이익을 얻거나, 자신의 실력을 과시하거나, 혹은 본인이 사용하기 위해 만든다. 사용자는 캐릭터를 빨리 성장시키거나, 다른 이용자보다 유리한 조건에서 게임을 하기 위해 사용한다. 

그러나 해킹 툴 중에는 운영체제 등 PC 환경에 전반적으로 영향을 미치는 것도 있기 때문에 단순 호기심으로 실행했다가는 운영체제를 포맷해야 할 수도 있다. 또한 게임 해킹 툴에 악성코드가 포함된 경우 사용자의 개인 정보가 유출될 우려도 있다.

또한 해킹 툴 제작자나 사용자 때문에 다른 사람이 피해를 입는 것도 문제점이다. 게임의 공정성 저하로 해킹 툴을 사용하지 않는 사용자가 정신적 피해를 입고, 게임에 대한 충성도가 저하될 수 있다. 

게임 제공 업체로서는 해킹 툴로 인한 과도한 서버 부하가 원활한 서비스 제공을 방해하여 사용자 불만을 초래하고 서버 관리 비용이 증가한다. 불공정한 게임 진행으로 사용자 이탈이 많아지면 게임 수명이 단축되고 금전적인 손실이 생기도 한다. 또한 해킹 툴 때문에 게임 서비스에 문제가 발생할 경우 기업 이미지가 실추하고 다른 서비스에도 타격이 있을 수 있다.

WDDM 조작 

FPS의 그래픽 처리 과정을 조작하는 것이다. 일반적으로 FPS(First-person shooter; 총기류를 이용해 전투를 벌이는 슈팅 게임)에 대한 해킹 툴은 게임에서 사용하는 인터페이스인 Direct-X를 조작한다. 그러나 최근 특정 운영체제(윈도우 비스타 이후)에서 WDDM이라는 드라이버 모델을 이용해 그래픽 처리를 한다는 점을 노려 해당 영역을 조작한 사례가 발견되었다.

게임 런처로 위장 

실제 게임은 게임 런처에 의해 업데이트된 후 실행된다. 따라서 런처로 위장하면 게임 내 메모리에 접근할 수 있다. 실제로 런처로 위장해 게임을 실행한 후 데이터 및 코드를 조작해 게임의 실행 흐름을 바꾸거나 게임 내 함수를 직접호출(Abnormal Function Call)하여 게임을 공격하는 사례가 있었다.

게임 보호 모듈 조작

일반적으로 게임이 배포될 때, 해커에 의한 분석을 어렵게 하고자 ‘패커’라는 상용 제품이 함께 배포된다. 게임 내 지정된 중요 코드가 패킹 영역에서 실행되는데, 이 패킹 영역을 조작해 게임의 실행 흐름을 변경한 사례가 발견되었다.

게임 내 스크립트 호출 

특정 게임은 유지보수와 테스트의 용이성을 위해 스크립트 언어를 내부적으로 지원한다. 이 점을 노려 스크립트 언어를 악의적 목적으로 직접 호출(Abnormal Function Call)하여 게임을 공격하는 사례가 있었다. 이미 잘 알려진 스크립트 언어라는 점에서 해킹 툴이 손쉽게 접근했을 것으로 추정된다.

반응형

+ Recent posts