치트 엔진 보호 – 게임 앱을 치트 엔진으로부터 보호하는 방법
모바일 게임은 코로나19로 인한 봉쇄 조치를 겪으면서 많은 이들에게 '집에서 즐기는 레저'로 급부상하게 되었습니다. 하지만, 전 세계적인 모바일 게임 시장의 성장과 비례하여 가장 문제가 되는 것이 바로 ‘게임 핵’입니다.
이러한 게임 핵은 다양한 기법을 활용하여 게임을 공격하고 있으며, 이 중에서도 메모리 변조 공격은 전통적으로 가장 흔하게 발생하는 해킹 사례입니다. 모바일에서는 주로 잘 알려진 해킹툴을 사용하여 메모리 변조를 통해 게임 내 데이터(재화, 체력, 공격력 등)를 변조하거나 메모리 상 코드를 조작하여 허용되지 않는 방법으로 비교적 쉽게 게임 플레이가 가능하게 됩니다. 이를 돕는 해킹 도구는 다수 존재하며, 모바일 게임을 향한 해커의 공격은 하루에도 수십, 수천 건이 발생하고 있는 실정입니다. 이에 게임 서비스를 보호하기 위해 모바일 게임 제공 업체에서는 다양한 방법으로 해킹도구를 탐지하고 차단하고 있습니다.
그러나 최근 일반적인 방법으로 탐지가 힘든 메모리 변조 공격이 유행하고 있습니다. 대표적인 것인 에뮬레이터 환경에서 치트엔진을 이용한 메모리 공격입니다. 에뮬레이터(NOX, BlueStacks, ...)에서 앱을 실행하고 PC에서 실행시킨 치트 엔진을 통해 에뮬레이터의 메모리를 조작하면, 보안 모듈이 탐지할 수 없는 공간에서 해킹 메모리 변조 행위가 이루어질 수 있기 때문에 게임 서비스 업계에서 치트 엔진은 큰 골칫거리가 되고 있는 상황입니다.
치트 엔진의 위험성
사실 잘 알려진 모바일 게임 해킹도구(GameGurdian,...)는 보안 모듈의 검사를 피하기 위해 다양한 기법으로 우회를 시도하고 있지만 기본적으로 보안 모듈이 검사 가능한 범위인 모바일 Device에 설치된 형태이므로 검사 및 탐지가 가능합니다.
보안 모듈에서 일반적인 해킹 툴 탐지
하지만 치트 엔진의 경우 모바일 device에 설치 및 실행이 되는 형태가 아니라 PC 환경에서 녹스, 블루스택, LD플레이어 같은 에뮬레이터로 게임을 실행하고, 동일한 PC에서 실행된 치트 엔진으로 에뮬레이터 내 실행된 게임의 메모리를 변조시키기 때문에 보안 모듈은 자신이 검사할 수 있는 범위 (모바일 Device 내)를 벗어난 경우라 공격을 탐지할 수 없게 됩니다. 즉, 치트 엔진은 PC에서 실행되는 하나의 프로세스로써 PC 환경에서 에뮬레이터 내 실행되고 있는 앱의 메모리 영역을 조작할 수 있습니다. 이를 통해 안티 디버깅 또는 프로세스, 파일 탐지 등의 행위를 쉽게 우회하여 메모리 조작이 가능하기 때문에 기본적인 모바일 보안 모듈은 이를 탐지할 수 없게 됩니다.
사실, 메모리 변조는 과거부터 현재까지 PC나 모바일 등의 플랫폼과 무관하게 끊이지 않는 해킹 유형입니다. 하지만 만약 보호 기능의 영향력이 미치지 않는 곳이 존재한다면, 해커들은 그곳을 집중적으로 공격하게 됩니다. 실제로 치트 엔진으로 메모리를 변조하는 해킹 사례는 꾸준히 보고되고 있고 이를 이용한 특정 게임을 타킷으로 동영상 공유 사이트에 관련 자료가 다수 공유되고 있기 때문에 이러한 공격 유형은 앞으로 더 빠르게 퍼질 것으로 예상됩니다.
동영상 사이트 내 치트엔진을 통한 해킹 방법 공유
치트 엔진은 그 기능도 위험하지만, 가장 큰 위험성은 많은 커뮤니티를 통해 치트 엔진을 이용한 해킹 기법에 대해 공유가 활발히 이루어지고 있어 파급력이 크다는 것입니다.
게임 회사의 치트 엔진 대응 현실
그렇다면 치트 엔진은 막을 방법은 없는 것일까요? 사실, 게임 데이터의 경우, 플레이에 따라 지속적으로 변동되는 값이기 때문에 위변조 탐지가 어렵습니다. 또한 대표적인 해킹 도구 탐지 기법 중 하나인 프로세스 감시와 특정 핵이나 메모리에 접근하는 외부 프로세스를 감지하는 방법은 위에서 설명한 이유로 치트 엔진의 시도에 대해서는 무의미하기에 어느 개발자들도 막으려는 시도를 잘 안 하고 있죠. 그렇기에 사실상 이보다는 중요 데이터를 암호화 하거나 조작을 검사하는 방식으로 초점을 두고 발전되고 있습니다.
또한 이러한 기능을 위해 게임 개발사에서는 게임 엔진 에셋(유니티 에셋,...)에서 판매되고 있는 메모리 방어 툴킷 등을 사용하는 경우도 있지만, 이러한 모듈은 간단한 암호화 방식만을 제공할 뿐만 아니라 암호화 패턴을 쉽게 알 수 있어 이를 기반으로 쉽게 우회하여 해킹이 진행될 수 있습니다.
LIAPP을 통한 치트 엔진 방어 전략
따라서 치트 엔진을 통한 해킹에 대응하기 위해서는 중요도에 따라 변수를 구분하고 중요 순위가 높은 변수를 암호화하여 사용해야 합니다. 변수 암호화는 메모리 변조에 대응하기 위한 가장 효과적인 방법이고 실제로 많은 사례에서 검증된 방법이기도 합니다. 그러나 이러한 암호화 로직의 경우 개발자의 역량에 따라 보안 효과에 큰 편차가 발생할 수 있으며, 게임상의 성능과 퍼포먼스를 위해 최대한 암호화, 복호화 과정을 줄여서 최적화하는데 이 경우 사칙연산이나 비트 연산과 같은 단순한 암호화가 적용되는 경우도 있어 데이터를 효과적으로 보호하지 못하게 되기도 합니다.
하지만 모바일 앱 보안 서비스 LIAPP은 패턴에 기반한 변수 암호화가 아닌 매 실행 시, 매 회 새롭게 생성되는 변수 생성으로 추론이 불가능하기 때문에 게임 메모리 보안에 탁월합니다. 또한, LIAPP은 게임 로직 내 변수 암호화를 삽입하기 쉽기 때문에 쉽게 적용 가능할 수 있으며, 특히 변수의 이름 변경만으로 적용이 가능하기 때문에 누구나 사용하기 간편하지만 누구도 쉽게 뚫을 수 없는 강력한 보안을 자랑합니다.
사실, 하나의 방어 기법으로 모든 해킹 기술을 막기는 어렵습니다. 때문에 항상 우회될 수 있다고 생각하고 다양한 방어 기법을 적용하여 최대한 해킹을 어렵게 만드는 것이 가장 효과적인 방법일 것입니다. 여러분의 모바일 게임을 보호하길 원하신다면 LIAPP 팀으로 연락하여 주세요. 고객사 별 맞춤형 컨설팅과 함께 가장 강력한 보안 서비스를 제공해 드리겠습니다.
LIAPP, 최상의 서비스만을 제공합니다.