[기고칼럼] '결제부터 스피드해킹까지' 모바일게임 해킹과 방어전략에 대한 모든 것-2부

칼럼 | 홍진선 기자 | 댓글: 2개 |


디지털 컨텐츠 보안 전문기업 잉카엔트웍스 앱실링 홍진선 CTO가 '모바일 게임 앱 해킹 그리고 보안' 정보를 기반으로 모바일 게임을 둘러싼 해킹의 다양한 방법과 이를 대처할 수 있는 각각의 보안 방법을 소개합니다.

가상의 인물이 '게임 스타트업'을 시작하는 과정에서 발생하는 해킹 이슈와 보안 컨셉을 질의응답 형태로 전문적인 정보를 알기 쉽게 전달하고자 합니다.

* 외부 필진의 기고 내용은 본지의 편집방향과 일치하지 않을 수도 있습니다.

[1부] 모바일게임 해킹과 방어전략에 대한 모든 것



1부에서는 메모리 해킹에 대한 것과 다양한 방어 전략 등을 알아봤습니다. 이번에는 결제 해킹에 대해 알아보겠습니다. 결제 해킹은 무엇인가요?

결제 해킹은 말 게임앱의 결제 로직을 해킹하여 과금을 우회하는 시도를 통해서 불법적으로 앱을 사용할 수 있도록 하는 행위를 의미합니다.

결제 해킹의 대다수는 IAB(In App Billing) 또는 IAP(In App Purchase)라고 불리우는 앱내 결제 로직을 대상으로 합니다. 특히 IAB는 앱내에서 직접 과금하여 구매하는 절차인 IAB는 많은 앱이 사용하고 있기에, 결제 해킹은 결국 IAB를 해킹하는 것으로 이해하시면 되겠습니다.


그렇다면 IAB 해킹은 어떤 프로세스로 이루어지나요?

먼저 설명드릴 IAB 해킹의 대표적인 방법은 '프리*'이라는 앱을 사용하여 공격하는 것입니다. 아마도 모바일 게임 보안과 관련하여 관심을 가진 분들은 이 명칭을 들어보셨을 겁니다. 많은 앱들이 프리*을 이용한 공격에 무력화되어 피해를 입었고, 지금은 많이 줄긴 했지만 여전히 프리*을 이용한 공격이 가능한 앱들이 많습니다.

프리*은 여느 메모리 치팅앱과 동일하게 루팅된 환경에서 동작을 합니다. 이 앱은 구동하면서 리눅스나 윈도우에서 사용되는 사용되는 파일인 '/etc/hosts' 파일을 변조합니다. 이 파일은 호스트 이름(인터넷에 연결된 컴퓨터 이름. 주로 도메인)에 대응하는 IP 주소가 저장되어 있어서 DNS에서 주소 정보를 제공받지 않고도 서버의 위치를 찾게 도와주는 역할을 수행하고 있죠.



▲ 프리* 어플의 /etc/hosts 파일 변조


프리*은 이 호스트 파일의 변조를 통해서 원래 구글 서버로 접속해야 할 결제 요청을 따로 지정한 프록시 서버로 요청하도록 변경하는 것입니다. 실행과 동시에 현재 모바일 단말에 설치된 IAB 적용앱을 조사하여 리스팅한 후 루트 권한을 획득해 호스트 파일을 변조, 프리* 프록시 서버 주소를 매핑해 둡니다.

프리*을 통해 리스팅된 앱을 실행한 후 IAB 결제를 시도하면 '/etc/hosts'에 지정된 주소로 결제가 요청되며, 이때 'FreeCard'라는 가상 지불수단이 생성되어 결제가 처리됩니다. 이런 과정을 거치면, 게임 앱 내에는 조작된 결제 결과가 전달되어 게임앱은 결제가 완료되었다는 정보를 받지만, 실제로 구글 서버에는 결제 이력정보가 남지 않게 됩니다. 따라서 이 과정에서 서버와의 결제 검증 프로세스를 거치지 않는 앱은 고스란히 피해를 입게 되는 것입니다.




▲ 프리* 어플의 결제 해킹 프로세스


프리*의 공격을 방어할 수 있는 방법이 있나요?

프리* 공격은 구매영수증의 서명 확인을 하는 것으로 쉽게 방어할 수 있습니다. 안드로이드에서는 IAB 결제가 완료된 경우 구매영수증을 발급하는데, 이 값에는 구글에서 발급했다는 서명(Signature)이 반드시 포함되어 있습니다. 서명 값에 대한 유효성 검증을 수행했다면 프리* 공격은 얼마든지 막을 수 있었는데, 2014년도 5월 기준으로 구글 안드로이드 마켓에서 판매되는 Top100 앱의 절반이 프리*에 의해 공격이 가능했을 정도로 많은 수의 앱이 이와 같은 절차를 생략했기 때문에 무차별적인 공격이 발생했던 것입니다.


프리*을 이용한 방법 외에 IAB 해킹의 다른 방법은 무엇인가요? 또 방어책은 마련되어 있나요?

IAB 해킹의 또 다른 방법은 디컴파일(Decompile: 앱 패키지 파일을 임의로 풀어서 특정 기능을 무능력하게 만들거나 하는 것을 의미)과 디버깅(Debugging; 컴퓨터 프로그램의 정확성이나 논리적인 오류를 찾아내는 테스트 과정을 의미)을 통한 앱 위변조를 수행하는 것입니다. 앱 위변조는 기술적으로 난이도가 있지만, 그 파급력은 매우 큰 해킹 방법이라고 할 수 있습니다.

해커는 안드로이드 게임앱의 대부분에서 디컴파일을 통해서 모바일 게임 소스를 얻어올 수 있습니다. 또한 디버깅을 통해서 게임의 어떻게 동작하는지를 파악할 수가 있습니다. 이러한 일련의 행위를 통해서 IAB 부분을 로직을 걷어내거나, 혹은 구매영수증의 서명을 검증하는 부분을 제외하는 등의 공격이 가능한 것입니다.

디컴파일 및 디버깅을 통하여 앱을 위변조하는 것을 리버스 엔지니어링이라고 하는데 이러한 공격의 가장 큰 문제는 이렇게 변조된 앱이 유통이 될 수 있다는 것입니다. 소위 이야기하는 블랙마켓을 통해서 혹은 각종 커뮤니티를 통해서 위변조된 유료앱이 무료로 바뀌어 유통이 된다면 개발사나 서비스사는 큰 타격을 입을 수 밖에 없습니다.

이러한 앱의 위변조를 막는 방법은 앱의 위변조 여부를 판단하는 로직을 앱내에서 수행하는 것으로 방어할 수 있습니다. 해시함수(임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 알고리즘으로 해시함수에 의해 얻어지는 값은 해시 값, 해시 코드, 체크섬 또는 해시 등으로 불리움)를 이용하여 순정앱의 해시 값을 얻어와 현재 앱의 해시 값과 비교하여 일치하는지를 파악하는 방법을 사용합니다


IAB 해킹은 결국 게임앱 개발사나 서비스 회사의 수입에 직접적으로 타격을 입히는 군요. 이런 피해에 노출된 앱 개발자들을 위해 모바일 오픈마켓에서 마련해 둔 방어책이 있나요?

IAB 해킹은 피해 사례도 많고, 매출에도 영향을 끼치기 때문에 각별히 주의해야 할 사항이다보니 구글에서도 공식적으로 'Security Best Practices' 라는 대응방법 가이드를 제공하고 있습니다. 해당 가이드를 요약하면 다음과 같습니다

● 서버 기반 인증 시스템 구축
● Public Key 보호
● 구매 요청 시 검증을 위해 사용되는 developerPayload 값을 전달할 것
● 검증에 사용되는 랜덤 값의 유일성 보장과 생성, 관리의 서버 기반 시스템 구성
● 인증 완료되어 지급된 상품에 대한 보호
● 지급된 상품에 대한 Revocation Scheme 구현
● Customizing된 결제 모듈 적용
● 코드 난독화 (Obfuscation) - Proguard
● 상표 및 저작권 침해에 대한 조치 강화


위에서 언급한 사이트에 각 항목별로 상세히 설명되어 있으니, 확인하시고 꼭 지키시길 바랍니다. 참고로, 위에 언급된 내용 중에는 게임 운영과 관련해서 서로 상충되는 부분이 있을 수 있으니, 구현 시에 관련내용을 잘 숙지하셔서 절충안을 적용하시기 바랍니다.


메모리 해킹, 결제 해킹 외에 또 조심해야 할 해킹은 무엇인가요?

또 다른 해킹 방식으로는 스피드 해킹을 들 수 있습니다. 스피드 해킹은 시스템의 시간 관련 정보를 변경하여 해당 시스템에서 동작하는 시간을 빠르게 증가시키거나 느리게 감소시키는 소프트웨어를 활용하여 게임 진행에 영향을 주고자 공격하는 것을 의미합니다. 스피드 해킹은 온라인 게임에서 소위 '오토'라고 불리우는 케릭터 자동 성장 프로그램과 함께 아주 많이 쓰였던 게임 해킹 방법이라고 할 수 있습니다.

이를 지원하는 소프트웨어가 바로 온라인게임에서 자주 이야기되는 '스피드 핵'입니다. 모바일 게임에서도 스피드 해킹을 지원하는 다양한 스피드 핵이 존재합니다. 일전에 설명드렸던 메모리 치팅툴과 같은 개념으로 이해하시면 되겠습니다. 현재 모바일에서 많이 사용되는 스피드 핵의 종류는 아래와 같습니다.

● xxA*******
● X****game
● ** ****Hacker
● ** ****Speed
● SB M*****
● H******


일부 스피드 핵은 메모리 해킹을 함께 지원하기도 합니다. 메모리 치팅툴처럼 스피드 핵도 지속적으로 업데이트되고 새로운 스피드 핵들이 개발되고 공개되고 있는 실정입니다.


어떻게 사용되는 지 알아야 그에 따른 예방도 할 수 있을 터. 대표적인 툴의 사용법을 알려주세요.

대표적인 스피드 핵으로, 중국에서 만든 H******에 대해서 설명 드리도록 하겠습니다. 아래 그림과 같은 UI 구성을 가지며, 게임 실행 후 H****** 메인 UI의 게임 스피드 가속 아이콘을 선택한 뒤 스피드 가속 슬라이더와 감/가속 버튼을 이용하여 스피드를 변경하는 방식입니다. 다른 스피드핵도 비슷하게 사용할 수 있습니다.



▲ 스피드 핵의 구동 화면


그럼 이와 같은 스피드 해킹을 방어하는 방법은 무엇이 있나요?

각 핵마다 차이는 있지만, 대부분의 스피드 핵은 비슷하게 동작합니다. 다만 그 동작 원리가 조금 어렵습니다. 간략하게 설명하자면 루팅된 환경에서 타겟이 되는 게임 프로세스에 접촉 후, 시간 관련된 후킹 모듈을 타겟 프로세스에 투입(Injection)합니다. 게임을 실행시킨 후 스피드 가속 시도를 하게되면 후킹 모듈을 통해서 시간관련 함수와 매핑된 후킹된 함수가 수행되어 시간을 조절하게 됩니다.



▲ 스피드핵의 동작 원리


스피드 해킹을 방어하는 방법은 메모리 치팅툴 방어 전략과 유사하게 루팅을 감지하거나,블랙리스트 방식으로 스피드 해킹툴을 감지하는 방법이 있습니다. 좀더 근본적으로는 투입되는 후킹 모듈을 감지함으로써 방어를 할 수가 있습니다.




이상으로 모바일 게임 해킹의 대표적인 공격 방법과 그 방법 전략을 소개해 드렸습니다. 모바일 게임 공격 방법은 이 밖에도 매크로를 이용한 오토 공격, 앱 위변조 등이 있으며, 다음 기회에 이를 더 상세히 다루도록 하겠습니다.

모바일 게임 해킹은 아주 자주, 매우 쉽게 일어나고 있는 것이 현실입니다. 이로 인해 매우 큰 피해를 입을 수가 있습니다. 때로는 개발회사가 문을 닫기도 하고, 담당팀이 없어지기도 합니다. 기본적으로 사용자의 저작권 인식에 대한 교육이 필요하겠지만, 게임 공급자들도 좀 더 적극적으로 게임 해킹에 대한 방어전략을 수립하는 것이 바람직하다는 생각이 듭니다.

마지막으로 모바일 게임 해킹의 공격 방법은 항상 발전합니다. 방어 전략보다 공격 방법이 항상 한발 앞서서 발전하는 것으로 이해하시면 됩니다. 따라서 이번에 방어에 성공했다고 해서 다음에도 방어할 수 있다는 보장이 없음을 명심하시기 바랍니다.

댓글

새로고침
새로고침

기사 목록

1 2 3 4 5