온라인 게임 보안 업계 2편
이전의 글은 아무래도 너무 게임회사의 보안담당자만 옹호하고 보안회사 쪽에는 부정적으로
비춰진 것 같아서 이번에는 한번 보안회사 측의 편을 들어서 또다른 얘기를 해볼까 합니다.
문제가 되는 현실이 일단 모든 보안담당자가 반드시 보안에 일가견이 있어서 보안담당자가
된 것은 아니라는 겁니다. 걍 보안은 알고 있긴 하지만 그 흔한 매크로 한번 실행해보지 못한
게임 보안에 무지한 사람이 담당자가 된 경우도 있고, 아니면 아예 보안의 보자도 모르는 사람이
어쩌다보니 부서를 빙빙 돌며 업무가 이리저리 날아다니다가 맡게 되는 경우가 있습니다.
이런 경우가 바로 게임회사의 보안 담당자 때문에 보안회사의 개발자나 SE 분들이 매우
힘들어지는 상황이 발생하는 때입니다.
이런 사람은 자기는 아무것도 모르면서 가지고 있는 얄팍한 지식으로 보안회사의 개발자들을
가르치려 합니다. 현실과 맞지 않는 이런저런 기능 개발을 요구하기도 하고 말도안되는 유지보수를
요청하기도 하죠. 예를 들어서 클릭 한방에 모든 패킷이 자동 암호화 되는 솔루션을 만들어
달라던가 (그것도 비밀키 알고리즘으로. 대체 비밀키는 어디서 줏어 들었는지 ㅅㅂ) 아이템
내구도의 중요한 수치를 클라이언트의 데이터 섹션에 보관하는 어이없는 취약점을 가지고
있으면서 전혀 고칠생각은 없고 보안솔루션이 ㅄ이라서 맨날 자기네 게임이 당한다고 하는 등
상식에 어긋나는 언행으로 보안회사의 사람들을 괴롭힙니다. 이런 사태를 빗대어 당시 저의
동료였던 최모 대리가 이런 말을 남기기도 했는데요 "게임 서버 클라이언트의 한번 동기화로
막을 수 있는 핵을 게임보안 솔루션에서 걸레가 되도록 패턴으로 대응하고 있다" 아주 가슴아픈
명언이라고 생각됩니다.
그런 얘기가 있습니다. 어설픈 엔지니어보단 아예 아무것도 모르는 초짜가 낫다고. 적당히
어설프게 아는 사람들은 "어? 이러면 될 거 같은데 왜 안하고 있는거지? ㅄ 아냐?" 라는 말을
너무도 무책임하고 자연스럽게 내뱉습니다. 그리고 그에 대한 비난을 보안개발자들에게 퍼붓죠
이 경우가 정말 가장 힘든 경우입니다. 보안이라는 것에 대해 이제 개미발가락 만큼 알았다고
해서 자신이 생각해 냈던 것을 보안회사에 생각해보지 않았을까요? 만약 이사람들이 보안쪽
공부를 열심히 해서 나중에 시간이 흘러 자신이 했던 말을 다시 주워서 돌려준다면 본인이
얼마나 어리석었는지 알게 될 거라는 생각이 듭니다.
보안회사에서 일부러 뻔히 보이는 구라를 치려고 발버둥치는 모습이 보이지 않는 한,
그들을 믿으세요. 그리고 어떠한 견해를 제출하고 싶을 때 폄하로서의 의견을 내비치지
않는 것이 중요합니다. 조그마한 한마디가 굉장히 가슴을 아프게하는 경우가 많습니다.
상황이 이쯤 되자 각 게임사들은 사내에 보안팀을 확보하면서, 내부 보안 프로그램을
구축하기에 이르렀다. 내부적으로 툴을 개발하고, 개발 초기부터 클라이언트 보안을
확실히 하면서 해킹에 대한 피해를 미연에 방지하기 위해서다. 하지만 아직까지
특별한 툴이나 해킹을 방지할만한 대안이 없어 안정화까지는 시간이 걸린다. 따라서
여전히 외부 프로그램을 사용하고 있는 실정이다.
이것도 어느 정도는 맞는 얘긴데, 어느 정도는 포인트가 빗나간 면이 없지 않아 있습니다.
게임 회사 내부에서 보안 개발팀을 통하여 게임 보안 솔루션을 개발한 이력이 여러번 있었고
아쉽게도 알려진 대부분의 것들은 성공? 이라는 단어를 올리기 어려운 결과를 안겨주었습니다
(아직 서비스 되고 있는 곳도 있긴 하죠)
이유는 무엇일까요? 글쎄, 저만의 생각일지도 모르겠지만 저는 결코 기술력이 후달려서 라고
생각되지 않습니다. 게임보안 기술력은 아직도 그 흔한 책한권 나온게 없지만 인터넷을 통해
그리고 수많은 해커들의 리버스 엔지니어링을 통해 아주 많이 알려졌습니다. 그리고 회사에서
돈 들여 솔루션을 개발하는데, 그정도 기술을 보유하지 못한 초삐리들로 인력을 구성할까요?
그럼 문제는 무엇이냐, 제 생각으로는 제품 유지보수와 안정화 문제라고 생각됩니다.
게임 보안 분야는 그 특이성으로 인해 새로운 해킹툴이 계속 쏟아져 나올 수밖에 없고, 이런
모습을 사물에 빗대어보자면, 일종의 소모품 같은 구조라고 할 수 있습니다. 현관문에 자물쇠를
붙혀 놓으면 계속 사용할 수 있는 것과는 달리, 계속 닳고 닳는 자물쇠라는 겁니다. 그래서
시간이 지나면 자물쇠는 다 닳아 풀려버리게 되고 업데이트/유지보수가 반년 이상 버려진 채
지속된다면 그냥 뚫려버리게 되겠죠. 이런 습성의 솔루션인 까닭이라고 생각됩니다.
다시 기사로 돌아와서 안랩 신호철 부장님의 한마디를 인용해 볼까요.
게임 보안 기술은 IT보안 업계 중에서도 최고 난이도에 속한다. 게임 속도에 영향을 미치지
않으면서도, 게임 밸런스 유지와 함께 오토 프로그램, 각종 해킹툴에 대한 방어까지 고려
해야할 요소만 수십 가지에 달한다. 전 세계를 통틀어 어떠한 업체도 완벽한 보안
프로그램을 개발하지는 못했다. 다만 그 대응 속도를 어떻게 가져가느냐에 따라 승부가
갈린다고 본다.
이 한마디에 모든 것이 다 담겨있다고 생각했습니다. 결론은 유지보수와 대응력 그리고 안정화
입니다. 실제로 핵이 난무하는 게임을 담당하다보면, 뚫리고 뚫리고 뚫리고 또 뚫리고 아주 미치죠.
나중에가선 "대체 어떻게 해야 할까 ㅠ ㅠ" 라는 좌절감 까지 맛보는 경우도 생깁니다. 그리고 피똥
싸가며 코딩해서 새기술을 게임에 적용 시켰는데, 무수히 많은 오진 사태. 연구 테마와 필드에서
사용 가능한 기술은 완전히 다르다는 현실을 직감케 해줍니다. 마지막으로 오만 프로그램과의
충돌 사태, 특히나 보안 솔루션끼리의 충돌은 아주 기가 막힙니다. 내가 후킹한걸 얘가 후킹하고
그걸 다시 또 쟤가 후킹하고, 그걸 또 또다른 넘이 원복해서 오버 후킹을 하고. 아주 지랄맞죠 ㅋ
이같은 세 가지 문제 때문에 "어 ㅅㅂ 까짓거 우리도 함 만들어보지 겜보안솔루션" 하고 뛰어들만한
시장이 아니라는 얘기입니다. 그래서 전문 보안 솔루션을 사용해야 합니다. 그들은 지금까지의
저런 문제에 대한 노하우를 어쨌든 축적하고 있으니까요. 그리고 IT 업계는 특히나 자신의 분야에
대해 자긍심이 많으시겠지만, 사실 객관적으로 봐도 게임 보안기술은 IT 보안업계 중에서도 최고
난이도에 속한다 라는 말에 전적으로 동의합니다. 알아야 될게 너무도 많으니까요 ㅠ ㅠ
제가 생각하는 게임 보안 개발자가 가지고 있어야 할 자질입니다.
- 기본적인 C/C++/Asm 프로그래밍 스킬
- 암호화 프로그래밍, 각종 알고리즘에 대한 지식
- 시스템 프로그래밍 (API Hooking, Process, Thread etc Windows Internals 에 대한 지식)-
- native API, Kernel 프로그래밍 스킬
그리고 다음은 게임 개발자와 협업하여 그리고 게임 서버/클라이언트에 대한 시큐어 코딩 가이드를
전달하거나 라이브러리를 만들어 제공할 수 있을만한 기술이 필요합니다. 게임 보안 클라이언트
엔진만으로는 불가능한 경우가 많으니까 게임 서버에 코드를 심는 경우가 잦습니다.
- 네트워크 프로그래밍 스킬 (서버/클라이언트)
- 패킷 암호화
- Direct X, OpenGL 프로그래밍 스킬 (이것도 필요할때가 있습니다 ㅅㅂ)
그리고 바이러스 분석가 이상의 분석력이 필요합니다.
- 리버스 엔지니어링
- ring3 / ring0 디버깅
- 바이러스 분석
- 패킷 분석
- PE Header/ Protector/Packer
- Anti-Debugging
그리고 마지막으로 어이없는 스펙까지 요구됩니다.
- 정파스런 코딩이 아닌 사파스런 코딩 (주화입마에 빠지기 직전의 코딯)
- 슈퍼 잔대가리
이렇게 이들의 입장을 한번 간추려 보았습니다. 게임 보안 솔루션은 라이브 서비스 제품입니다.
유지보수와 각종 대응은 상식 이하로 많으며, 일단 붙혀놓고 널럴한 제품과는 수준이 틀립니다.
또 역시 이런 인력이 없다보니 현실은 제공하는 입장이나 사서 쓰는 입장이나 모두 힘든 경우가
많죠. 고생하시는 분들 끝없는 고행길이 눈앞에 훤하고 너무도 힘든 시장이네요. 우리가 사용하고
있는 솔루션 우리가 욕 해 보았자 소용이 없습니다. 이바닥은 결국엔 같이 협업해야 되니까요.
한쪽에서만 발악하며 대응해 봤자 큰 이득이 없습니다.
그리고 불필요한 간섭 조차 그들을 힘들게 합니다. 말은 이렇게 하지만 저 스스로도 똑바로 하고
있는지 모르겠네요... 이 재미없고 긴 글 글 여기까지 혹시라도 보신 분 계신다면 좀 게임보안
개발자들에게 좀더 잘 대해주세요 ^^;;;
window31. 2009년 1월
ps 이미지는 해커들이 만든 HackShield 이미지와, nProtect 이미지입니다.
nProtect 이미지는 치엔 포럼, HackShield 이미지는 이분 블로그에서 퍼왔습니다.
