메이플스토리는 왜 핵과 매크로에 집중하나
모든 게임에는 규칙이 있고, 이 규칙은 모든 유저에게 공정해야만 합니다. 비인가 프로그램으로 이 공통의 규칙이 무너지고, 게임 속 경제 시스템과 생태계 자체가 파괴될 수 있기 때문에 메이플스토리는 물론 모든 게임에서 핵과 매크로 등 불법 프로그램 대응에 팔을 걷어 부치고 나서고 있는 건데요, 이번 글에서는 메이플스토리에서 비인가 프로그램 방어를 위해 하고 있는 노력과 시행착오, 개선과정에 대해 소개해드리려고 합니다.
핵과 매크로 제대로 알기
우선 핵과 매크로는 구분되어야 합니다. 핵을 암세포라 한다면 매크로는 잘못된 습관이라고 할 수 있습니다. 핵은 백해무익! 무조건 척결해야 하지만 매크로는 좀 더 신중한 대응이 필요합니다. 두 가지 모두 비공정한 방식으로 서비스에 악영향을 주지만, 상대적으로 핵이 더 큰 피해를 줄 수 있어 강한 조치를 하고 있습니다.
운영 정책 상 핵은 적발 시 바로 영구정지 제재가 될 수 있고, 매크로는 적발 횟수에 따라 제재 일수가 증가하는 누적 제재 방식을 적용하고 있습니다. 물론, 매크로 적발도 반복되는 경우 영구정지 조치됩니다.
핵 방어
CRC 체크
클라이언트 난독화
NGS (Nexon Game Security)
데이터 및 클라이언트 코드영역 CRC체크, 클라이언트 코드 보호를 위한 난독화, 또한 위 2가지 이외에도 다양한 방어로직이 포함된 NGS까지 핵 방어를 위한 클라이언트 단의 변조 방어를 구축하고 있습니다.
게임 업데이트에 따른 새로운 코드나 데이터 추가에 대응하고자 CRC체크 로직을 보강 및 추가하고 있으며, 난독화도 마찬가지로 추가 및 적용을 확장하고 있습니다.
NGS는 활용도를 높이기 위해 넥슨 게임핵대응팀과 한층 밀접하게 컨텍하면서 업데이트 및 패치셋 적용을 빠르게 하고 있습니다. 특히 NGS 디텍팅을 이용한 자동제재를 추가하였고 다량의 의심 로그가 남은 유저에 대하여 자동추적 시스템과 연계하여 핵 동향파악과 함께 빠른 대응을 하고 있습니다.
매크로 방어
1. 서버 단 행동패턴 유사도를 이용한 검출 (LCP=Longest Common Prefix 알고리즘)
과거, 매크로 방어를 위하여 유저의 패턴에 대한 유사도를 계산하기로 합니다. 해당 로직은 게임서버에 있었으며 패턴은 클라이언트에서 보내오는 패킷을 이용합니다. 참고로 패킷에는 다양한 정보가 있습니다. 사냥, 아이템 줍기, 맵 이동, 채널이동 등등 대부분 중요한 정보가 다 있었습니다. 하지만 실패했습니다. 주로 매크로는 사냥에 사용하게 되는데 사냥 관련 패킷이 일반유저와 매크로를 구분하기 어렵도록 유사도가 높았기 때문입니다. 사람이 매크로 구분하는 것은 사냥 이동경로와 스킬 사용 지점과 같이 미세한 포인트인데 유사성이 부각되지 않았습니다.
2. 키입력 패턴 검출
이전까지는 오토핫키와 같은 키 녹화 프로그램을 사용하는 유저가 많았습니다만 매크로 프로그램 사용법을 모르더라도 키보드에서 제공하는 키패턴 녹화 기능을 이용하면 누구나 매크로를 사용할 수 있었습니다. 또 이런 하드웨어 방식은 NGS에도 디텍팅이 되지 않기 때문에 실질적으로 방어할 방법이 없었습니다. 하지만 부정 동향은 매우 큰 편입니다. 사냥맵이 한정되어 있고 누가 보더라도 매크로인데 24시간 맵을 점령하고 있으니 당연한 것이죠.
그래서 플레이 패턴의 유사성을 체크하는 것이 아닌 키보드 입력값에 대한 패턴을 확인합니다. 모든 매크로를 막는 것은 불가능하지만 일반적으로 널리 사용되는 키보드 메크로는 방어할 수 있게 되었습니다.
물론 매크로 사용유저도 진화하고 있습니다. 키보드를 여러 개 사용하거나, 화상키보드를 조합하거나 소프트웨어 키보드를 사용하는 등 다양한 형태가 발견되었습니다. 이런 형태의 플레이는 또다른 힌트를 주고 새로운 매크로 검출 모델 개발에 이용됩니다. 그러면서 점점 플레이 패턴이 다양화되고 얼핏 봐서는 사람과 구분하기 어려운 형태가 되고 있습니다.
공격과 방어가 반복되면서 하드웨어 방식의 매크로는 대부분 한계에 봉착하게 되고, 공격자는 매크로 패턴에 변수를 주기 위해 프로그램 형태를 선택할 수 있습니다. 다만 프로그램은 상대적으로 검출하기 쉽고 불법프로그램 사용은 계정 제재 사유에 해당합니다.
3. 마우스 패턴 검출
키보드매크로 탐지와 유사하게 마우스 이벤트에 대한 매크로 특징을 이용해 체크 로직을 추가하였습니다. 사람의 패턴은 한 지점에서 다른 지점으로 이동할 때 속도가 일정하지 않습니다. 빨라지기도 하고 느려지기도 하죠.
매크로 패턴은 한 지점에서 다른 지점으로 이동할 때 속도가 일정하게 줄어드는 특징이 있습니다. 처음에는 경매장 자동 구매/판매 매크로 방어를 위하여 개발했는데요, 경매장 이외에도 인게임에서 사용하는 마우스매크로가 검출되었습니다. 물론 완벽하다고 할 수는 없고, 계속해서 연구와 개선작업이 진행 중입니다.
4. 거짓말 탐지기 – 알림이 방어
한글 캡챠(CAPTCHA : Completely Automated Public Turing test to tell Computers and Humans Apart ) 방식의 국내 거짓말탐지기는 영문 보다 자동해제가 어렵습니다. 그래서 매크로 사용 유저는 거짓말탐지기 알림이를 만들어 수동으로 해제하고 있습니다. 그래서 알림이가 필수적으로 필요한데요, 거짓말탐지기 UI 이미지를 서치하여 알림이를 만들고, 원격 입력을 위하여 카톡을 연동하여 사용하는 양상을 보입니다.
알림이는 주로 오토핫키를 이용 이미지서치를 하는 방식이므로 UI를 반투명화하고 색상을 랜덤하게 변경했습니다.
UI의 일정한 패턴을 인식하는 이미지 서치 방식이 발견되면서 이에 대한 방어도 있었습니다. 거짓말 탐지기 화면이 사각형 형태가 아닌 랜덤성이 강한 형태로 강화된 버전을 사용했습니다. 다만 해당 버전은 매크로 사용이 의심되는 경우에만 사용되고 있습니다.
거짓말 탐지기 적발 사유를 보면 대략 20% 정도가 Disconnect입니다. 즉 알림이를 통해 연결을 끊고 자동으로 재접속하는 형태입니다. 반면 알림이 방어 타입의 거짓말 탐지기는 대부분 TimeOver, 즉 캡챠 입력 시간을 넘긴 경우인데요. 거짓말 탐지기 알림이가 거짓말 탐지기를 찾지 못했다고 할 수 있습니다.
5. 룬 자동 해방 방어
메이플스토리에는 고렙 사냥터에 룬이 존재합니다. 룬은 주기적으로 맵의 랜덤한 위치에 소환되는데요, 룬을 해방하게 되면 사냥에 도움을 주는 버프를 받을 수 있기 때문에 일반적으로 유저들은 해방을 하게 됩니다. 반면 자동 사냥 매크로는 무시를 했었습니다.
이러한 양상을 매크로 방어에 이용하기로 하고 17년 4월 패치에 “저주받은룬” 효과를 추가 합니다. 즉 룬을 해방하지 않고 방치하면 경험치 및 드롭율 감소 패널티를 받게 됩니다. 예상대로 매크로 이용자는 이미지 서치를 이용하여 자동해제를 하기 시작했고 저희는 방어를 위해 화살표를 약간 변형하고 랜덤 색상을 적용하였습니다. 이에 매크로 사용자도 대응을 하고 있는데요, 이미지 서치 뿐만 아니라 이미지 흑백화 후 유사도까지 계산합니다. 그리고 다시 방어 작업으로 이미지 자체를 랜덤하게 만드는 추가작인 방어 작업을 진행하고 있습니다.
6. 작업장 방어
- PC 여러대와 IP 방어
작업장 운영을 위해서 필수적으로 여러 대의 PC가 필요한데요, 메이플스토리는 클라이언트를 여러 개 실행하는 멀티 클라이언트를 허용하지 않기에 해당 체크코드를 무력화하거나 가상 머신(vm)을 사용하려 합니다. 이에 대해서는 NGS와 인게임 체크코드를 꾸준히 업데이트 하면서 방어하고 있습니다. 또한 IP당 로그인 제한을 회피하기 위하여 VPN을 사용하는 경우가 있는데 이 경우에는 NGS로깅으로 추적하고 있습니다.
- 여러 개의 계정 방어
그리고 작업장에 여러 개의 계정은 꼭 필요합니다. 당연히 한 번에 돌려야 하니 여러 계정이 필요한 것이지만 혹시 계정이 영구정지 제재를 받는 경우 새로운 계정 생성이 가능해야 합니다.
과거에는 넥슨 계정 탈퇴 후 신규 생성으로 제재 이력을 세탁할 수 있었으나 신상 단위 이력을 남겨 대응하고 있습니다.
타인 명의를 구매하여 사용하는 경우도 있는데 판매자는 보통 알뜰폰을 이용하여 본인인증 후 계정을 생성하고 있습니다. 알뜰폰을 이용한 신상 도용 문제는 사회적으로도 문제가 많이 있는데요. 정상 유저의 불편함은 최소화하면서 대응할 수 있는 방책을 넥슨에서는 준비 중입니다.
- 거짓말탐지기 알림이와 모니터링 근무자 방어 ‘비올레타’