메이플스토리는 왜 핵과 매크로에 집중하나 핵과 매크로 제대로 알기우선 핵과 매크로는 구분되어야 합니다. 핵을 암세포라 한다면 매크로는 잘못된 습관이라고 할 수 있습니다. 핵은 백해무익! 무조건 척결해야 하지만 매크로는 좀 더 신중한 대응이 필요합니다. 두 가지 모두 비공정한 방식으로 서비스에 악영향을 주지만, 상대적으로 핵이 더 큰 피해를 줄 수 있어 강한 조치를 하고 있습니다.운영 정책 상 핵은 적발 시 바로 영구정지 제재가 될 수 있고, 매크로는 적발 횟수에 따라 제재 일수가 증가하는 누적 제재 방식을 적용하고 있습니다. 물론, 매크로 적발도 반복되는 경우 영구정지 조치됩니다.핵 방어 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의 일정한 패턴을 인식하는 이미지 서치 방식이 발견되면서 이에 대한 방어도 있었습니다. 거짓말 탐지기 화면이 사각형 형태가 아닌 랜덤성이 강한 형태로 강화된 버전을 사용했습니다. 다만 해당 버전은 매크로 사용이 의심되는 경우에만 사용되고 있습니다.
모니터링 강화1. 로그 기반 모니터링문제 발생 시 빠른 대응을 위해서는 게임 전반의 모니터링이 매우 중요한데요, 모니터링 강화를 위하여 로그 기반의 이상감지를 보강하여 알림 메일을 발송하고 있으며, 게임 재화나 각종 에러로그가 대상입니다. 2. 유저 패킷 덤프 클라이언트에서 보내오는 패킷을 분석하면 어떻게 플레이 하는지 또는 어떻게 조작하고 있는지 확인할 수 있습니다. 그래서 특정 유저의 패킷을 게임서버 로그로 남기는 기능을 사용하고 있는데요. 이를 이용하여 유저의 플레이 하는 모습을 재현해 볼 수 있지 않을까? 하고 기대했습니다. 하지만 게임 업데이트 패치마다 새로운 패킷이 추가되거나 변경되기 때문에 자동화한다 하더라도 관리 이슈가 있고 분석이 쉽지 않습니다. 3. 자동 추적 시스템 개발사실 핵이나 매크로 사용 유저에 대한 확인은 직접 플레이 하는 장면을 보는 것이 가장 빠릅니다. 그렇다고 매번 해당 유저가 어느 월드에 있는지, 채널과 맵은 어디인지 찾아서 보는 것이 쉽지는 않습니다.그래서 의심 유저를 자동으로 추적하여 모니터링하는 시스템을 개발하게 되었습니다.추적자는 월드 별로 존재하며 전체 월드를 모니터링하고 있습니다.4~5년 전에는 핵 사용자가 많아 모니터링 뿐만 아니라 핵 방어 로직 개발에 매우 유용하게 사용되었습니다. 최근에는 다른 핵 체크 시스템이 개발되어 꾸준히 제재를 하고 있어 핵사용자가 많이 줄어 활용도는 기존보다 낮아졌습니다만 현재 방어 시스템에 시작점이라 할 수 있습니다.제재핵 방어에 가장 어려운 것은 오인일 것입니다. 100% 오인 없이 핵방어 로직을 짜는 것은 매우 어려운 일입니다. 그리고 오인이 발생하면 해당 로직은 다음 서버 점검까지 사용할 수 없습니다. 최악의 경우 해당 로직에 On/Off기능이 없다면 서버점검을 해야 할 수도 있습니다. 그래서 핵툴 업데이트를 따라잡기가 어려웠습니다. 메이플스토리는 오랜 서비스로 새로운 핵보다는 과거와 유사한 방식으로 핵을 만들기 때문에 대부분 비정상이라는 디텍팅 로그가 남고 있습니다. 다만 게임 업데이트로 오인이 발생하는 경우에 제재하고 있던 부분에 대해 예외처리를 하기에 로그만 남고 있는 경우가 많습니다. 그래서 신규 핵 체크 로직 뿐만 아니라 기존의 핵 관련 로그를 새로 개발한 HackLogControl로 변경 하였습니다. 이를 통해 점검 없이도 제재 방법과 기준을 변경할 수 있어서 핵툴 발견 시 빠른 대응이 가능해졌습니다. 주요 기능으로는 거짓말탐지기 발동, 영상찍기, 접속 끊기, 계정 제재 등입니다.1. HackRank 시스템수많은 검출 로직에 의해서 남은 로그를 통계 및 점수화하여 합산합니다. 이 합산 점수가 높은 상위 랭킹 메이플ID에 대해서 정밀 분석을 실시하고 새로운 제재 기준이나 모델을 만들어 적용합니다. 즉 상위 랭킹부터 대응하기 때문에 오랜 기간 검출 없이 비정상플레이를 했다 하더라도 언젠가 제재될 수 있습니다.마무리하며지금까지 핵과 매크로에 대한 방어는 대부분 기능적으로 나눠 ‘모듈화‘하였습니다. 대상자를 어떻게 찾을 것인가? 오인을 어떻게 판단할 것인가? 제재는 어떻게 할 것인가?어떻게 생각하면 당연한 것인데 ‘모듈화’를 설계초기부터 생각하지 않으면 새로운 작업이나 외부모듈 연계가 부담이거나 불가능할 수도 있을 것입니다. 사실 처음부터 완벽하고 완전하게 방어하는 것은 불가능합니다. 핵툴도 계속 업데이트를 하기 때문입니다. 실행파일의 이름을 변경하거나 빌드를 다시 해서 검출을 우회하려는 시도도 계속되고 있습니다. 넥슨 공통 모듈인 NGS와 어뷰징탐지 시스템, 그리고 게임 로그 통계 기반의 핵랭킹 시스템은 명확히 구분되는 특징이 있으면서도 유사점이 있습니다. 서로 보완적인 관계로 꾸준한 협업을 통해 시스템이 진화하고 있습니다.메이플스토리에서 하고자 하는 방향은, 새로운 핵과 매크로에 대한 빠른 대응이 가능하도록 틀을 만드는 것이고 이 작업은 지금도 진행 중입니다. 완벽하다고 할 수는 없지만 높은 수준의 핵/매크로 검출 시스템을 지속적으로 개선하며 발전시켜 나가고 있습니다. 이상, 메이플스토리 비인가 프로그램 방어에 대해 소개해드렸는데요, 핵과 매크로 대응에 관심이 많은 분들에게 도움이 되셨으면 좋겠습니다. 감사합니다. 15년차라이브서비스프로그래머 김기온 |