앱 위변조의 이해와 게임 산업에 미치는 영향
앱 위변조는 악의적인 목적으로 애플리케이션의 원본 코드를 수정하거나 조작하는 행위를 의미합니다. 이 과정을 통해 해커 혹은 악성 유저는 게임의 핵심 기능을 변조하거나 불법 복제해 게임 개발사에 다양한 방면으로 피해를 줍니다.
가장 직접적인 영향은 ‘수익’과 관련된 것입니다. 위변조된 게임 앱은 게임 개발사가 의도한 대로 수익을 창출하지 못하게 만들기 때문입니다. 또한 위변조된 앱은 멀웨어(Malware)를 포함할 수 있어 유저 기기의 보안을 위협하고, 그 결과 게임에 대한 유저의 신뢰성을 해칠 수 있습니다. 이 외에도 앱 위변조를 통한 지적 재산권 침해 등 장기적으로 게임 산업에 부정적인 영향을 끼치고 있습니다.
모바일 게임에서 나타나는 앱 위변조 양상
1. 바이너리 패치
컴파일된 코드를 변경하는 과정으로 이를 통해 해커들은 게임의 기능을 수정하거나 자신들에게 유리한 새로운 기능을 추가합니다. 예를 들어 게임의 난이도를 조정해 해커 외의 선량한 플레이어에게 불공정한 게임 환경을 제공하게 됩니다.
2. 코드 인젝션
게임 실행 중에 외부 코드를 게임 프로세스에 추가하여 게임 기능을 변경합니다. 이를 통해 해커들은 게임 내의 데이터 등에 접근해 조작하고 해커들은 부정당한 이익을 챙깁니다.
3. 모드와 치트 생성
게임 내 코드를 수정해 특정 치트 기능을 추가해 게임 경험을 변경합니다. 이는 플레이어가 게임 내 특정 장비나 능력을 얻기 위해 해야 하는 행동을 우회하고 바로 아이템을 얻을 수 있게 됩니다.
4. 리소스 변조
게임 내 리소스 파일(이미지, 사운드, 텍스트 등)을 변경해 게임 구성 요소나 플레이 규칙을 변조할 수 있습니다. 게임 개발사가 추구한 게임의 전반적인 분위기나 사용자 인터페이스를 다른 방식으로 변조해 피해를 입을 수 있습니다.
5. 클라이언트 사이드 해킹
유저가 직접 사용하는 애플리케이션 부분을 타깃으로 하는 해킹으로 특히 메모리를 수정, 조작하여 게임 내 화폐를 무한대로 생성하거나 특정 레벨로 오를 수 있도록 합니다. 또한 클라이언트 사이드에 악의적인 코드나 스크립트를 추가해 게임의 흐름을 변경하기도 합니다.
앱 위변조 방지 기술
앱 위변조에 대응하기 위해서는 애플리케이션의 코드나 데이터가 변경되지 않도록 보호하는 ‘안티탬퍼링(Anti-Tampering)’과 애플리케이션 실행 중 앱 무결성을 모니터링하고 보호하는 ‘런타임 애플리케이션 자가 보호(Run-time Application Self Protection, RASP)’ 기술을 동시에 활용할 수 있어야 합니다.
1. 정적(Static) 및 동적(Dynamic) 검사
정적 검사는 앱의 코드나 데이터에 변경 사항이 있는지 검증하기 위해 애플리케이션 첫 배포 시 체크섬(Checksum)*이나 해시를 생성해 저장합니다. 애플리케이션이 실행될 때마다 저장된 체크섬이나 해시와 현재 코드의 체크섬을 비교해 코드의 무결성을 보장합니다.
동적 검사는 애플리케이션 실행 중 실시간으로 코드나 데이터의 무결성을 검증합니다. 애플리케이션 실행 중 체크섬이나 해시 값을 주기적으로 생성해 검사하고 실행 기간 동안 데이터나 코드에 변경 사항이 있는지 확인합니다.
예를 들어 게임 개발자는 게임 앱의 주요 실행 파일에 대한 해시 값을 생성하고, 게임이 시작할 때마다 이 해시 값을 검증하여 게임 코드가 해킹되지 않았는지 확인할 수 있습니다. 게임 내 중요한 데이터 파일도 정기적으로 해시 검증을 수행해 데이터의 무단 변경을 감지할 수 있습니다.
¶ 용어 설명 체크섬(Checksum): 데이터의 무결성을 확인하기 위해 사용되는 방법으로 데이터가 전송 혹은 저장 후 손상되거나 변조되지 않았는지 확인합니다. |
2. 코드 난독화, 데이터 암호화
코드 난독화는 말 그대로 해커가 게임 코드를 이해하고 수정하는 것을 어렵게 만드는 기술입니다. 주로 리버스 엔지니어링 방지를 위해 사용됩니다. 식별자를 변조해 변수, 함수, 클래스 이름을 의미 없는 문자열로 변경하거나 가상 코드를 사용하거나 로직을 복잡하게 하기도 합니다. 특히 오픈 소스 플랫폼에서 호스팅 되는 애플리케이션은 코드 난독화가 필수입니다. 신뢰할 수 없는 환경에서 해커가 코드를 분석하기 어렵게 만드는 것이야말로 게임 보안의 첫 단계가 됩니다.
데이터 암호화는 게임 내 민감한 정보를 암호화된 형태로 변환해 무단 접근으로부터 데이터를 보호하는 기술입니다. 특정 키를 가진 사용자만이 해독할 수 있어 데이터가 노출되더라도 그 내용을 이해할 수 없습니다.
코드 난독화와 데이터 암호화는 모바일 게임의 해킹을 방어하는 데 필수적인 요소로 통합적으로 사용해 보안을 강화할 수 있습니다.
3. 런타임 애플리케이션 자가 보호(Run-time Application Self Protection, RASP)
애플리케이션의 정상적인 행동과 패턴을 학습하고 이를 기반으로 비정상적인 활동이나 공격 시도를 실시간으로 감지하는 기술입니다. 위협이 감지되면 앱을 자동으로 종료 시킴으로써 대응합니다. 실시간으로 디바이스가 루팅 되거나 탈옥되었는지 확인하는 등 게임 앱의 환경을 모니터링합니다. 그뿐만 아니라 게임 앱의 코드가 변경되지 않았는지 실시간으로 애플리케이션의 무결성을 확인합니다.
RASP는 코드 수정 없이 배포 후 게임 앱을 스스로 보호할 수 있도록 해 게임 개발자는 유저의 게임 경험을 저해하지 않으면서 보안 위협에 대응할 수 있습니다. 특히 멀티플레이어 게임이나 대규모 유저를 기반으로 하는 게임에서는 보안 강화 수단으로 RASP를 활용할 수 있습니다.
4. 모니터링 시스템
실시간 모니터링 시스템은 앱 보안 상태를 지속적으로 감시하며, 위변조 시도를 식별하고 대응합니다. 해킹 당했거나 변조되었을 때, 즉각적으로 개발자에게 알림을 보내 바로 대응할 수 있게 합니다. 모니터링 시스템을 통해 게임의 해킹 유형이나 패턴을 데이터로 확인할 수 있으므로, 예방 대책을 세울 때 근거 자료가 되기도 합니다.
안티탬퍼링과 RASP를 동시에 이용할 수 있는 앱 위변조 방지 솔루션
모바일 게임 앱의 위변조를 방지하고 다양한 형태의 공격과 탬퍼링에 포괄적으로 방어하기 위해서는 두 기술을 모두 사용해야 합니다. 이 두가지 기술은 서로 다른 계층의 보안을 담당합니다. 안티퍼링은 주로 앱이 실행되지 않을 때 코드와 데이터를 보호하는 데 집중합니다. 반면 RASP는 애플리케이션 실행 중일 때 발생하는 위협을 실시간으로 감지하고 대응합니다. 그렇기에 완벽한 보안 사이클을 보장하기 위해서는 두 가지 기술을 모두 활용하는 것이 좋습니다.
하지만 자체적으로 이 두 가지 기술을 구현하기에는 테크니컬적으로 복잡합니다. 각기 다른 목적과 기술적 요구 사항이 존재하기 때문에 충돌이 발생할 가능성이 있습니다. 그렇기에 게임 개발 회사가 자체적으로 보안 기술을 구축하기에는 많은 비용과 시간이 소요됩니다. 따라서 기술 보안 기업과 긴밀히 협업 혹은 앱 보안 솔루션을 도입하는 것이 좋습니다. 이를 통해 각 보안 계층이 애플리케이션 성능과 유저들의 게임 경험에 부정적인 영향을 주지 않습니다.
모바일 게임 앱 보안 솔루션 ‘앱실링’은 정적/동적 코드 암호화, 데이터 암호화, RASP, 앱 위변조, 모드 공격으로부터 앱을 보호하는 기능은 물론 해킹 행위에 대한 모니터링까지 합리적인 가격으로 제공하고 있습니다. 게임 개발자 분들은 개발에만 집중하고, 앱 보안은 앱실링에게 맡겨 소중한 게임 앱을 보호해 보세요!