모바일 게임 보안 - 해킹 방어
이번 포스트에서는 ( ‘모바일 게임 보안 - 해킹 유형’)의 후속편으로 해킹 유형 별 적합한 대응방안에 대해 다루어 보겠습니다.
변화하는 모바일 게임 해킹의 트렌드를 보면 인기가 있는 게임만 해킹을 하는 초기부터 최근에는 자동화된 해킹툴을 이용하여 무분별하게 해킹을 하는 것이 특징입니다.
일반적으로 규모가 있는 게임 개발사 ( 게임 개발 이외에 사용할 수 있는 자금적 여유가 있는 회사 ) 를 제외하면 대부분 한정된 예산 때문에 보안을 적용하는 시점을 게임 출시 후 일정한 수익이 발생한 시점에 계획하는 경우가 대부분입니다.
하지만 게임 서비스에 유저의 수가 일정 이상 모이게 되면 거기에 따른 개발 작업량이 많아 지기 때문에 보안을 적용해야 할 타이밍을 놓치고 해커들에게 게임의 구조를 모두 파악당한뒤에 보안을 하려 하지만 해커들은 이미 앱 구조에 대한 파악이 완료된 상태임으로 추가적인 해킹시도가 빈번하게 일어날수 있습니다.
그럼으로 초기부터 아주 작은 보안이라도 하나씩 해나가는 것이 중요합니다.
아래는 게임을 해킹하는 유형별 적절한 방어책을 제시 합니다.
(1) 메모리 서칭
(2) 리패키징
(3) 해킹툴
(4) 루팅, 가상머신
메모리 서칭(Memory Searching)
알려져 있는 해킹툴이나 해커가 직접 제작한 ‘custom hack tool’ 의 경우 현재 모바일 디바이스에서 사용하는 가상메모리 체계에서 게임앱에 특정 주소를 변조하기 위해서는 게임 앱 memory에 attach(접근)를 해야하는 작업이 필수적입니다.
해킹툴이 게임 앱 memory에 접근하기 위해서는 크게 시스템 OS 에서 제공하는 API의 사용 또는 게임 앱 프로세스의 memory 파일을 직접 접근하는 방식으로 메모리 서칭 및 변조를 하게 됩니다.
방어 방법
해킹툴이 게임 앱 memory에 접근하기 위해서는 크게 시스템 OS 에서 제공하는 API의 사용 또는 게임 앱 프로세스의 memory 파일을 직접 접근하는 방식으로 메모리 서칭 및 변조를 하게 됩니다.
방어 방법
1. 메모리 서칭 및 변조를 방어 하기 위해서는 앱이 실행된 후 해킹툴이 API 또는 게임 앱 프로세스의 memory 파일 접근을 통하여 앱 메모리에 접근하는 것을 탐지 하고 차단 하는 기능이 필요 합니다.
- LIAPP Memory protection 참조
2. 이러한 기능의 효과로 앱 내 중요한 정보들의 흐름을 파악할수 있는 debugging과 메모리의 중요 정보를 탈취할 수 있는 dumping에 대한 방어 역시 가능하여 집니다.
리패키징 (Repacking)
- LIAPP Memory protection 참조
2. 이러한 기능의 효과로 앱 내 중요한 정보들의 흐름을 파악할수 있는 debugging과 메모리의 중요 정보를 탈취할 수 있는 dumping에 대한 방어 역시 가능하여 집니다.
리패키징 (Repacking)
리패키징은 크게 2가지의 대상으로 나뉘어 집니다.
[ Source code 변조 ]
게임을 동작 시키는 핵심 Source code를 변조함으로써 해커가 원하는 목표를 달성합니다.
1. 현재 게임 앱에 사용 되는 Java의 Source code 또는 UNITY의 Source code 는 기기 이식성을 우선으로 개발된 언어이기 때문에 상대적으로 구조의 파악과 변조가 쉬운 특성이 있습니다.
2. Unreal engine의 경우 JAVA, UNITY와 같이 BYTE CODE로 이루어지지는 않았으나 PC 때부터 해킹에 익숙한 해커들에게는 조금 더 시간이 필요할 뿐 구조 파악 및 변조가 가능합니다.
[ Resource 변조 ]
Resource 변조는 앱 패키지내 실행에 필요한 Source code 외 파일을 수정하여 해커가 원하는 목표를 달성합니다.
1. 게임 초기에는 게임 자체의 기능 구현을 위해 신경을 쓸 것 들이 많기 때문에 게임 플레이에 중요한 파일들을 패키지 내 리소스 파일에 define해 놓고 참조 하여 사용하는 경우가 있습니다.
때로는 이러한 파일들이 의도하지는 않았지만 부주의 또는 오픈 일자의 기한으로 인해 게임에 중요한 DATA가 앱 패키지 내에 정의한 대로 배포가 되기도 합니다.
무결성 탐지는 앱파일이 개발자가 배포한 상태의 파일인지 아니면 다른 사람에 의해 변조가 된 상태인지를 파악하는 기능입니다.
무결성 탐지를 통하여 게임앱의 무단 Source code 변조 및 Resource 변조를 방어할 수 있습니다.
- 현재 실행 중인 앱이 해커에 의하여 수정이 되었는지 또는 개발자가 직접 배포한 파일이 맞는지를 검사하여 리소스 변조의 해킹을 방어 할수 있습니다.
- 간혹 게임내 광고를 제거하고 해커가 자신의 광고로 교체하여 넣는 경우 개발사는 광고 수익을 모두 탈취 당할 수 있음으로 무결성 탐지를 통하여 방어를 하여야 합니다.
2. 소스코드 보호
- JAVA CODE 보호 , UNITY CODE 보호
Android APP의 기본을 이루는 JAVA CODE와 UNITY로 개발된 앱의 UNITY CODE의 보호는 필수적입니다.
이를 파악하고 변조를 통해 게임을 공격할 수 있음으로 소스코드를 쉽게 분석할 수 없도록 암호화와 난독화를 통하여 방어를 하여야 합니다.
-Unreal Engine, cocos
Unreal Engine, cocos는 게임앱의 중요 소스코드가 패키지 파일내 lib폴더에 .so파일로 존재 합니다.
해당 파일의 구조를 파악할 수 없도록 보호를 해야 함은 물론이고 수정을 하더라도 정상적으로 게임 앱에 사용 될수 없도록 방어를 하여야 합니다.
무결성 탐지와 소스코드의 보호는 게임 앱 보호에 가장 중요한 역할을 합니다.
위의 기능을 필수적으로 사용하여 안전한 게임 서비스를 구축할 수 있습니다.
- LIAPP Anti-Tamper 참조
- LIAPP Native Library Protection 참조
Source code 변조
Resource 변조
[ Source code 변조 ]
게임을 동작 시키는 핵심 Source code를 변조함으로써 해커가 원하는 목표를 달성합니다.
1. 현재 게임 앱에 사용 되는 Java의 Source code 또는 UNITY의 Source code 는 기기 이식성을 우선으로 개발된 언어이기 때문에 상대적으로 구조의 파악과 변조가 쉬운 특성이 있습니다.
2. Unreal engine의 경우 JAVA, UNITY와 같이 BYTE CODE로 이루어지지는 않았으나 PC 때부터 해킹에 익숙한 해커들에게는 조금 더 시간이 필요할 뿐 구조 파악 및 변조가 가능합니다.
[ Resource 변조 ]
Resource 변조는 앱 패키지내 실행에 필요한 Source code 외 파일을 수정하여 해커가 원하는 목표를 달성합니다.
1. 게임 초기에는 게임 자체의 기능 구현을 위해 신경을 쓸 것 들이 많기 때문에 게임 플레이에 중요한 파일들을 패키지 내 리소스 파일에 define해 놓고 참조 하여 사용하는 경우가 있습니다.
때로는 이러한 파일들이 의도하지는 않았지만 부주의 또는 오픈 일자의 기한으로 인해 게임에 중요한 DATA가 앱 패키지 내에 정의한 대로 배포가 되기도 합니다.
방어 방법
1. 무결성 탐지무결성 탐지는 앱파일이 개발자가 배포한 상태의 파일인지 아니면 다른 사람에 의해 변조가 된 상태인지를 파악하는 기능입니다.
무결성 탐지를 통하여 게임앱의 무단 Source code 변조 및 Resource 변조를 방어할 수 있습니다.
- 현재 실행 중인 앱이 해커에 의하여 수정이 되었는지 또는 개발자가 직접 배포한 파일이 맞는지를 검사하여 리소스 변조의 해킹을 방어 할수 있습니다.
- 간혹 게임내 광고를 제거하고 해커가 자신의 광고로 교체하여 넣는 경우 개발사는 광고 수익을 모두 탈취 당할 수 있음으로 무결성 탐지를 통하여 방어를 하여야 합니다.
2. 소스코드 보호
- JAVA CODE 보호 , UNITY CODE 보호
Android APP의 기본을 이루는 JAVA CODE와 UNITY로 개발된 앱의 UNITY CODE의 보호는 필수적입니다.
이를 파악하고 변조를 통해 게임을 공격할 수 있음으로 소스코드를 쉽게 분석할 수 없도록 암호화와 난독화를 통하여 방어를 하여야 합니다.
-Unreal Engine, cocos
Unreal Engine, cocos는 게임앱의 중요 소스코드가 패키지 파일내 lib폴더에 .so파일로 존재 합니다.
해당 파일의 구조를 파악할 수 없도록 보호를 해야 함은 물론이고 수정을 하더라도 정상적으로 게임 앱에 사용 될수 없도록 방어를 하여야 합니다.
무결성 탐지와 소스코드의 보호는 게임 앱 보호에 가장 중요한 역할을 합니다.
위의 기능을 필수적으로 사용하여 안전한 게임 서비스를 구축할 수 있습니다.
- LIAPP Anti-Tamper 참조
- LIAPP Native Library Protection 참조
해킹툴 (hacking tools)
해킹툴에 의한 해킹은 가장 일반적이며 전체 해킹 수 중 가장 많이 발생하는 해킹 방법입니다.
해킹툴을 효율적으로 방어하기 위해서는 아래 2가지 경우 모두를 방어할 수 있도록 고려 되어야 효율적인 방어가 가능합니다.
알려진 해킹툴을 탐지
알려지지 않은 해킹툴로부터의 접근을 차단
또한 해킹툴을 효율적으로 방어 하기 위해서는 해킹툴이 제공하는 대표적인 기능에 대한 방어도 필요합니다.
메모리 변조
스피드 핵
무료 결제
방어 방법
통계에 의하면 해킹툴을 사용하는 경우 대부분 메모리 변조와 스피드 핵을 사용하는 목적으로 사용되어 집니다.
1. 메모리 변조와 스피드 핵 경우 ‘메모리 서칭(Memory Searching)’의 '방어 방법'에서 언급되었던 게임 앱 process에 접근을 차단함으로써 알려진 해킹툴과 알려지지 않은 해킹툴에 의한 방어가 가능 해 집니다.
2. 또한 알려진 해킹툴의 경우 현재 해킹툴이 실행되어 있는 상태인지를 확인하여 탐지 및 차단하는 것 또한 중요한 방어책 입니다.
- LIAPP Hacktools Detection 참조
여기서 고려해야 할 사항은 사용자 자신이 받은 앱이 해킹에 사용되는 툴인지 모르는 경우가 간혹 있습니다. 이런 사용자의 경우 설치 되어 있는 해킹툴로 인해 게임이 차단되게 되면 불만을 야기 할 수 있으며, 이는 사용자의 이탈로 이루어 질수 있습니다.
이에 해킹툴 탐지시 해킹툴의 설치여부를 검사하지 않고 실행된 프로세스 중 해킹툴의 실행 여부를 확인하여 사용자의 불편을 최소화 할 수 있습니다.
3. 무료 결제의 경우 게임 앱에서 결제시에 발급받은 in-app 결제 영수증을 Game Server로 보내어 영수증의 유효성을 체크함으로써 방어가 가능합니다.
1. 메모리 변조와 스피드 핵 경우 ‘메모리 서칭(Memory Searching)’의 '방어 방법'에서 언급되었던 게임 앱 process에 접근을 차단함으로써 알려진 해킹툴과 알려지지 않은 해킹툴에 의한 방어가 가능 해 집니다.
2. 또한 알려진 해킹툴의 경우 현재 해킹툴이 실행되어 있는 상태인지를 확인하여 탐지 및 차단하는 것 또한 중요한 방어책 입니다.
- LIAPP Hacktools Detection 참조
여기서 고려해야 할 사항은 사용자 자신이 받은 앱이 해킹에 사용되는 툴인지 모르는 경우가 간혹 있습니다. 이런 사용자의 경우 설치 되어 있는 해킹툴로 인해 게임이 차단되게 되면 불만을 야기 할 수 있으며, 이는 사용자의 이탈로 이루어 질수 있습니다.
이에 해킹툴 탐지시 해킹툴의 설치여부를 검사하지 않고 실행된 프로세스 중 해킹툴의 실행 여부를 확인하여 사용자의 불편을 최소화 할 수 있습니다.
3. 무료 결제의 경우 게임 앱에서 결제시에 발급받은 in-app 결제 영수증을 Game Server로 보내어 영수증의 유효성을 체크함으로써 방어가 가능합니다.
루팅, 가상머신 (rooting, virtual machine)
[ 루팅 (rooting) ]
루팅은 모바일 Device를 변경하여 관리자 권한을 획득하는 것을 말합니다. 관리자 권한은 모바일 Device 시스템에 접근할 수 있는 전권을 가지고 있음으로 이를 이용하여 게임 앱을 변조 하거나 메모리에 접근 및 process에 접근 할 수 있습니다.
루팅을 탐지 하기 위해서는 관리자 권한으로 전환할 수 있는 파일의 탐지와 custom rom에 대한 탐지가 함께 이루어져야 효율적인 탐지가 가능합니다.
하지만 게임앱의 경우 사용자의 유입성을 고려 하여 루팅을 허용하는 경우가 많음으로 루팅에 대한 무조건적인 차단은 게임 서비스로의 사용자 유입을 저해하는 요소가 될수 있습니다.
보안적인 관점상 루팅된 디바이스의 차단 정책이 효율적이나 게임 앱의 경우 위에서 언급한 메모리 서칭, 무결성 탐지, 해킹툴 탐지 등의 기능으로 중요한 해킹에 대한 방어는 가능하여 집니다.
[ 가상머신 ]
가상 머신은 PC에 모바일 환경을 지원하여 PC에서 모바일 게임을 즐길 수 있도록 지원해 주는 프로그램입니다.
가상머신이 해킹에 중요한 이유는 대부분의 가상머신이 루팅을 지원하고 있으며 PC에서 사용하였던 강력한 해킹툴들을 모바일에서도 동일하게 사용이 가능하기 때문입니다.
하지만 루팅과 마찬가지로 많은 게임 앱들이 가상머신을 사용하는 유저 또한 가치있는 유저로 유입하고 싶어하기 때문에 게임 앱 런칭 초기에는 해당 기능을 권유해 드리고 있지 않습니다.
그러나 가상머신의 경우 루팅과는 다르게 게임 앱의 사용자가 많아 짐에 따라 가상머신을 이용한 해킹유저가 많아 진다면 가상머신의 탐지 또한 고려해보아야 할만한 중요한 요소 입니다.
가상머신이 해킹에 중요한 이유는 대부분의 가상머신이 루팅을 지원하고 있으며 PC에서 사용하였던 강력한 해킹툴들을 모바일에서도 동일하게 사용이 가능하기 때문입니다.
하지만 루팅과 마찬가지로 많은 게임 앱들이 가상머신을 사용하는 유저 또한 가치있는 유저로 유입하고 싶어하기 때문에 게임 앱 런칭 초기에는 해당 기능을 권유해 드리고 있지 않습니다.
그러나 가상머신의 경우 루팅과는 다르게 게임 앱의 사용자가 많아 짐에 따라 가상머신을 이용한 해킹유저가 많아 진다면 가상머신의 탐지 또한 고려해보아야 할만한 중요한 요소 입니다.
방어 방법
지금까지 언급한 게임 앱에 대한 해킹 방어를 위해 필수적인 기능과 선택적인 기능을 정리 한다면 아래와 같습니다.
[필수]
소스코드 보호
앱 변조 방지
메모리 보호
디버깅 차단
unity code 보호
리패키징 방지
Unreal,cocos Engine 보호
[확장]
해킹툴 탐지
가상머신 탐지
루팅 탐지
게임 앱 런칭 초기에는 필수 요소가 필요 함으로 LIAPP ONSITE 티켓 (1회 적용권) 또는 LIAPP ONSITE Monthly (월간 무제한 적용권)를 이용하여 필수적인 방어사항 충족하여 배포하시고게임 앱의 사용자가 늘어나는 중기에는 LIAPP BUSINESS Monthly를 사용하여 확장에 해당되는 요소들을 충족하는 것이 좋습니다.이후 게임 앱의 서비스가 폭발적인 사용자 증가나 일정 수준의 이상의 사용자가 모집된 경우에는 IOS와 Android 모두를 방어하고 자신의 게임 서비스에 맞게 정책을 설정하고 User를 control 할 수 있는 LIAPP for Game 을 사용하시는 것이 효율적인 전략이 될 것 입니다.
#android mobile game protector #application mobile game protection #모바일 앱 보안 #모바일 게임 보안 #Unity 보안 #Unreal engine 보안 #리패키징 보안