KR101699693B1 - 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램 - Google Patents

온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램 Download PDF

Info

Publication number
KR101699693B1
KR101699693B1 KR1020150068166A KR20150068166A KR101699693B1 KR 101699693 B1 KR101699693 B1 KR 101699693B1 KR 1020150068166 A KR1020150068166 A KR 1020150068166A KR 20150068166 A KR20150068166 A KR 20150068166A KR 101699693 B1 KR101699693 B1 KR 101699693B1
Authority
KR
South Korea
Prior art keywords
function
call
packet
abnormal
called
Prior art date
Application number
KR1020150068166A
Other languages
English (en)
Other versions
KR20160134308A (ko
Inventor
신창현
임윤섭
Original Assignee
주식회사 엔씨소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 엔씨소프트 filed Critical 주식회사 엔씨소프트
Priority to KR1020150068166A priority Critical patent/KR101699693B1/ko
Publication of KR20160134308A publication Critical patent/KR20160134308A/ko
Application granted granted Critical
Publication of KR101699693B1 publication Critical patent/KR101699693B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Primary Health Care (AREA)
  • Marketing (AREA)
  • General Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Abstract

온라인(on-line) 게임에서의 비정상적인 함수 호출을 탐지하기 위해, 감시 대상 함수가 봇 프로그램을 통해 호출되는지 여부를 패킷에 표시하도록 게임 클라이언트를 수정하고, 감시 대상 함수의 호출에 따라 생성되어 수신되는 패킷의 분석을 통해 비정상적인 함수 호출을 탐지하는 방법이 개시된다.

Description

온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램 {Method and program for detecting abnormal function call in on-line game}
본 발명은 온라인(on-line) 게임의 보안에 관한 것으로서, 더욱 구체적으로는 비정상적으로 온라인 게임을 이용하기 위해 봇(BOT) 프로그램을 통해 게임 클라이언트 내 함수를 호출하는 것을 탐지하는 방법에 관한 것이다.
통신망과 컴퓨터 관련 기술이 발전하면서 다양한 종류의 온라인 게임 서비스가 제공되고 있는데, 게임 내 재화의 가치가 높아지면서 비정상적인 방법으로 온라인 게임을 이용하는 사례가 늘고 있다.
게임 내 재화를 획득하기 위하여 온라인 게임을 비정상적으로 이용하는 방법은 다양하다. 예를 들어, USB(Universal Serial Bus) 디바이스를 이용하여 마치 사용자가 키보드나 마우스를 통해 어떤 명령을 입력하는 것처럼 위장하는 하드웨어적 처리 방법이나, 특정 기능을 수행하는 프로그램(악성 모듈)을 메모리의 온라인 게임 프로세스에 로딩시켜 게임 함수를 호출하는 소프트웨어적 처리 방법 등이 이용되고 있다.
후자의 경우 봇(BOT) 프로그램(로봇 프로그램이나 불법 프로그램 등으로도 불림)은 사용자 컴퓨터에서 실행중인 온라인 게임 프로세스에 악성 모듈을 주입(Injection)시키는데, 일반적으로 악성 모듈은 DLL(Dynamic Linking Library)로 만들어져 온라인 게임 프로세스에 주입된다. 온라인 게임 프로세스에 주입된 악성 모듈은 게임 클라이언트가 제공하는 정상적인 함수를 호출하여 게임을 진행하고, 게임 내에서 사냥이나 채집 등을 스스로 수행하여 게임 내 재화를 획득한다,
이와 같이 악성 모듈에 의해 게임이 진행되면, 정상적으로 게임을 이용하는 사용자들이 게임 내에서 좋은 아이템을 얻을 기회가 부당하게 박탈되고, 게임 진행을 방해 받기 때문에 여러가지 피해가 발생한다. 이는 온라인 게임에 대한 흥미를 감소시켜 게임의 이용을 피하게 하고 민원을 발생시키는 주요 요인이 될 수 있다.
일반적으로 소프트웨어 방식의 봇은 온라인 게임에 주입된 봇 용 DLL을 이용하여 온라인 게임 내부의 함수를 직접 호출하여 캐릭터가 특정 행동을 하도록 처리한다. 봇 DLL에서 온라인 게임의 함수를 호출할 경우 콜 스택(Call Stack)에서 피호출 함수의 리턴 어드레스(Return Address)는 봇 DLL의 주소가 되며, 정상적인 게임에서 함수를 호출하는 경우 리턴 어드레스는 게임의 주소가 되므로, 피호출 함수의 리턴 어드레스를 확인하여 악성 모듈을 검출하는 방법이 사용되고 있다.
그러나, 이러한 방법은 게임 클라이언트에서 게임 내 모든 쓰레드(Thread)에 의해 생성되는 모든 콜 스택을 모니터링하는 감시용 프로그램의 실행이 필요하고, 악성 모듈에 대한 정보를 서버로 전송할 필요가 있으므로 사용자 컴퓨터의 부하를 야기할 수 있다. 따라서, 온라인 게임 서버 측에서 비정상적인 함수 호출에 대한 데이터를 직접 수신하고 모니터링할 수 있는 방법이 필요한 실정이다.
본 발명은 상기와 같은 종래 기술의 문제점을 해소하기 위한 것으로, 온라인(on-line) 게임 서버 측에서 봇 프로그램을 통한 비정상적인 게임 함수의 호출에 대한 데이터를 직접 획득하여 모니터링할 수 있는 비정상 함수 호출 탐지 방법을 제공하기 위한 것이다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법은, 사용자 단말로부터 게임 클라이언트에 포함된 함수의 호출에 의해 생성되는 패킷을 수신하는 단계와, 상기 수신된 패킷을 분석하여 상기 함수 호출이 봇 프로그램을 통한 비정상적인 함수 호출인지 여부를 판단하는 단계를 포함할 수 있다.
상기 방법은, 적어도 하나의 감시 대상 함수를 포함하며 상기 감시 대상 함수의 호출에 따라 생성되는 패킷에 비정상적인 함수 호출임을 나타내는 데이터를 기록하는 게임 클라이언트를 상기 사용자 단말에 제공하는 단계를 더 포함할 수 있다.
상기 방법은, 상기 게임 클라이언트에 포함된 감시 대상 함수와 동일한 기능을 하되 상기 감시 대상 함수의 호출과 구별되는 호출임이 대응하는 패킷에 표시되는 복제 함수를 추가한 게임 클라이언트를 상기 사용자 단말에 제공하는 단계를 더 포함할 수 있다.
상기 비정상적인 함수 호출인지 여부를 판단하는 단계는, 상기 수신된 패킷을 분석하여, 상기 감시 대상 함수의 호출인 경우는 비정상적인 함수 호출로, 상기 복제 함수의 호출인 경우는 정상적인 함수 호출로 판단하는 단계를 포함할 수 있다.
상기 패킷을 수신하는 단계는, 상기 감시 대상 함수가 호출된 경우와 상기 복제 함수가 호출되는 경우 패킷의 식별자가 다른 패킷을 수신하는 단계를 포함할 수 있다.
상기 패킷을 수신하는 단계는, 상기 게임 클라이언트에서 순차적으로 호출되는 함수가 호출되는 경우 호출 시퀀스가 표시된 패킷을 수신할 수 있다.
상기 비정상적인 함수 호출인지 여부를 판단하는 단계는, 상기 수신된 패킷에 표시된 호출 시퀀스를 이용하여, 대응하는 함수가 순차적인 함수 호출에 의해 호출되었는지 확인하는 단계와, 상기 대응하는 함수가 순차적인 함수 호출에 의해 호출되지 않은 경우 비정상적인 함수 호출로 판단하는 단계를 포함할 수 있다.
상기 비정상적인 함수 호출인지 여부를 판단하는 단계는, 상기 수신된 패킷에 표시된 호출 시퀀스를 이용하여, 사용자의 결정이나 동작이 필요한 함수 호출이 생략되었는지 여부를 확인하는 단계와, 상기 사용자의 결정이나 동작이 필요한 함수 호출이 생략된 경우 비정상적인 함수 호출로 판단하는 단계를 포함할 수 있다.
본 발명의 다른 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법은, 봇 프로그램을 통해 호출되는 감시 대상 함수와, 상기 감시 대상 함수와 동일한 기능을 하는 복제 함수를 포함하는 게임 클라이언트 실행중, 상기 동일 기능의 복제 함수가 호출되면, 상기 감시 대상 함수의 호출과 구별되는 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 상기 온라인 게임 서버로 전송하는 단계와, 상기 감시 대상 함수가 호출되면, 상기 감시 대상 함수의 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 상기 온라인 게임 서버로 전송하는 단계를 포함할 수 있다.
상기 감시 대상 함수의 호출에 대응하는 패킷과 상기 복제 함수의 호출에 대응하는 패킷은 패킷 식별자가 다를 수 있다.
본 발명의 또 다른 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법은, 소정의 목적을 위해 사용자의 조작에 따라 순차적으로 호출되는 복수의 함수를 포함하는 게임 클라이언트 실행중, 상기 순차적으로 호출되는 복수의 함수 중 하나가 호출되면, 호출의 순번을 나타내는 호출 시퀀스를 대응하는 패킷에 기록하여 온라인 게임 서버로 전송하는 단계와, 상기 함수의 호출에 이어 상기 복수의 함수 중 다른 하나가 호출되면, 상기 호출 시퀀스를 증가시킨 호출 시퀀스를 대응하는 패킷에 기록하여 온라인 게임 서버로 전송하는 단계를 포함할 수 있다.
상기와 같은 본 발명에 의하면, 온라인(on-line) 게임 서버 측에서 봇 프로그램을 통한 비정상적인 게임 함수 호출에 대한 데이터를 직접 획득하여 지속적으로 봇의 활동을 모니터링할 수 있다.
또한, 본 발명에 의하면, 게임 클라이언트 프로그램을 업데이트한 후에도 봇 프로그램이 정상적으로 동작하므로 봇 프로그램 사용자 측에서 비정상 함수 호출의 탐지 사실을 쉽게 파악하기 어렵다는 효과가 있다.
또한, 본 발명에 의하면, 서버에서 수신되는 함수 호출 패킷만으로 쉽게 봇 프로그램의 함수 호출을 파악할 수 있다.
도 1은 온라인 게임을 서비스하는 시스템의 개요도이다.
도 2는 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 3은 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 5는 본 발명의 일 실시예에 따라 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 원리를 설명하기 위한 도면이다.
도 6은 도 5에서 전송되는 패킷의 일 예를 설명하기 위한 도면이다.
도 7은 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도9는 본 발명의 일 실시예에 따라 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 원리를 설명하기 위한 도면이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...수단", "...부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 온라인 게임을 서비스하는 시스템의 개요도이다.
도 1을 참조하면, 온라인 게임 서비스는 유선 인터넷망이나 무선 인터넷망 등 각종 통신망을 통해 제공되며, 각 사용자 단말(110, 120)에 설치되는 게임 클라이언트(111)는 통신망을 통해 온라인 게임 서버(100)와 서로 통신하면서 온라인 게임을 진행한다. 온라인 게임의 종류는 다양할 수 있으며, 구체적인 예로 여러 사용자가 동시 다발적으로 참여할 수 있는 MMORPG(Massively Multi-Player Online Role Playing Game) 유형의 게임을 들 수 있다.
각 사용자가 온라인 게임을 이용하기 위해 사용하는 사용자 단말(110, 120)은 데스크탑 컴퓨터나 노트북 컴퓨터와 같은 개인용 컴퓨터뿐만 아니라 휴대폰이나 스마트폰 등 통신망을 통해 온라인 게임 서비스를 이용할 수 있는 성능을 가진 임의의 기기일 수 있다.
사용자 단말(110, 120)에는 사용자가 온라인 게임을 이용할 수 있도록 하는 게임 클라이언트(111)가 설치된다. 게임 클라이언트(111)는 통신망을 통해 온라인 게임 서버(100)로부터 다운로드되어 설치되고 최신 버전으로 유지되거나 그밖의 방방법에 의해 사용자에게 제공될 수 있다. 게임 클라이언트(111)는 온라인 게임 서버(100)와 통신하면서 게임 관련 공지사항의 디스플레이, 게임 화면 처리, 사운드 효과 처리, 게임을 위한 각종 사용자 인터페이스의 제공 등 플레이어 측에서 수행되어야 할 다양한 역할을 담당한다.
사용자가 사용자 단말(110, 120)에서 게임 클라이언트(111)를 실행시키면, 게임 클라이언트(111)가 메모리에 로드되어 온라인 게임 프로세스가 생성되어 실행된다.
한편, 온라인 게임을 비정상적으로 이용하는 사용자 단말(110)에는 봇 프로그램(112)도 실행된다. 봇 프로그램(112)은 사용자 단말(110)의 메모리에 악성 모듈을 주입하고, 악성 모듈은 사냥이나 채집 등 온라인 게임 내에서 재화를 획득할 수 있는 게임 함수를 집중적으로 호출하며 게임을 진행하게 된다.
이하에서는 설명의 편의를 위하여 봇 프로그램(112)을 통해, 즉 봇 프로그램(112)에 의해 온라인 게임 프로세스에 주입된 악성 모듈에 의해 호출되는 게임 함수를 '감시 대상 함수'라 칭하기로 한다. 감시 대상 함수는 악성 모듈에 의해 호출되긴 하지만 온라인 게임 제공업체에 의해 제공된 정상적인 게임 함수이다.
도 2는 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 2를 참조하면, 사용자 단말로부터 게임 클라이언트에 포함된 함수의 호출에 의해 생성되는 패킷을 수신하고(S202), 수신된 패킷을 분석하여 이 함수 호출이 봇 프로그램을 통한 비정상적인 함수 호출인지 아니면 게임 클라이언트에 의한 정상적인 함수 호출인지 여부를 판단한다(S204).
분석의 대상이 되는 패킷은, 게임 클라이언트를 구성하는 함수들 중 봇 프로그램에 의해 호출되는 함수여서 감시 대상 함수로 선정된 적어도 하나의 함수나, 그에 관련된 함수에 대응하는 패킷일 것이다. 감시 대상 함수나 관련 함수에 대해서는, 호출의 결과로 온라인 게임 서버에 전송되는 패킷에 비정상적인 함수 호출과 정상적인 함수 호출을 구별하기 위한 데이터를 기록하도록 게임 클라이언트가 작성 또는 변경될 것이다. 적어도 하나의 감시 대상 함수 및/또는 관련 함수를 포함하는 게임 클라이언트(111)는 온라인 게임 서버(100)로부터의 다운로드나 오프라인 상의 배포 등의 방법을 통해 사용자 단말(110, 120)에 제공 및 설치될 것이다.
도 3은 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 3을 참조하면, 온라인 게임 서버(100)는 게임 클라이언트(111)를 사용자 단말(110, 120)에 제공하며, 이 게임 클라이언트(111)에는 감시 대상 함수와 함께, 감시 대상 함수와 동일한 기능을 하되 감시 대상 함수의 호출과 구별되는 호출임을 대응하는 패킷에 표시되는 관련 함수인 복제 함수가 포함되어 있다(S302).
게임 클라이언트 측에서 감시 대상 함수나 복제 함수의 호출에 따라 생성된 패킷이 사용자 단말(110, 120)로부터 수신되면(S304), 온라인 게임 서버(100)는 수신된 패킷을 분석하여 수신된 패킷에 대응하는 함수 호출이 비정상적인 호출인지 여부를 판단한다(S306).
감시 대상 함수가 호출된 것으로 패킷에 표시되어 있으면 악성 모듈에 의한 비정상적인 함수 호출로, 감시 대상 함수와 동일 기능의 수행을 위해 복제 함수가 호출된 것으로 패킷에 표시되어 있으면 게임 클라이언트 내부의 정상적인 함수 호출로 판단할 수 있다.
도 4는 본 발명의 일 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
사용자 단말(110, 120)의 게임 클라이언트(111)는 도 3의 실시예에 따른 온라인 게임 서버(100)의 비정상 함수 호출 탐지를 지원하기 위해 아래와 같은 단계들을 수행할 수 있다.
먼저, 온라인 게임 서버(100)로부터 제공받은 게임 클라이언트(111), 즉 봇 프로그램(112)을 통해 호출되는 감시 대상 함수와, 감시 대상 함수와 동일한 기능을 하는 복제 함수를 포함하는 게임 클라이언트(111)를 실행한다(S402).
게임 클라이언트(111) 실행중 복제 함수가 호출되면, 감시 대상 함수의 호출과 구별되는 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 온라인 게임 서버(100)로 전송한다(S404).
한편, 감시 대상 함수가 호출되면, 감시 대상 함수의 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 온라인 게임 서버(100)로 전송한다(S406).
도 5는 본 발명의 일 실시예에 따라 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 원리를 설명하기 위한 도면이다.
도 5를 참조하면, 게임 클라이언트(500) 업데이트시 기존의 함수 A(감시 대상 함수, 510)를 그대로 두고서 동일한 동작을 하는 새로운 함수 A'(복제 함수, 520)를 만들어 포함시킨다. 기존의 함수(510)는 봇 프로그램이 사냥 등의 특정 기능을 위해 호출하는 것으로 알려진 함수이며, 정상적인 게임 진행 중에 상기와 동일한 기능이 필요한 경우는 복제 함수(520)가 호출되도록 설정되어 있다.
즉, 감시 대상 함수(510)는 봇 프로그램을 통해서만 호출되며, 복제 함수(520)는 일반 유저의 게임 클라이언트에 의해서만 호출된다.
감시 대상 함수(510)와 복제 함수(520)는 기능상으로는 동일한 함수이지만 피호출시 서로 구별되는 패킷이 생성되어 게임 서버(100)로 전송된다. 게임 서버(100)는 패킷에 기록된 데이터를 조사하여 어떤 함수가 호출되었는지 알 수 있으며, 감시 대상 함수(510)가 호출된 경우는 봇 프로그램을 통한 비정상적인 호출로 판단하고 해당 유저에 대해서는 봇 탐지 로그를 기록하거나 다른 방법으로 온라인 게임의 관리자에게 통보할 수 있다.
이와 같은 방법에 의하면 게임 클라이언트를 업데이트한 이후에도 봇 프로그램은 정상적으로 동작할 수 있으므로 봇 프로그램 사용자 측에서 쉽게 감시 여부를 파악하기 어려운바, 온라인 게임 제공자 측에서는 지속적으로 봇 프로그램의 활동을 모니터링할 수 있다.
도 6은 도 5에서 전송되는 패킷의 일 예를 설명하기 위한 도면이다.
도 6(a)와 같이 패킷은 패킷 식별자(Packet ID), 패킷 길이(Length), 데이터(Data) 등으로 구성될 수 있다.
봇 프로그램을 통한 비정상적인 호출의 경우는 감시 대상 함수(510)가 호출되며, 도 6(b)와 같이 감시 대상 함수를 나타내는 소정의 값(0x1000)이 패킷 식별자로 설정된 패킷이 게임 서버(100)로 전송될 것이다.
반면, 게임 클라이언트(500)의 정상적인 호출의 경우는 복제 함수(520)가 호출될 것이며, 도 6(c)와 같이 기존의 감시 대상 함수(510)와 다른 패킷 식별자(0x1001)로 패킷을 생성하여 서버(100)로 전송한다.
게임 서버(100)는 패킷 식별자의 값에 따라 어떤 함수가 호출되었는지 즉 봇 프로그램을 통한 호출인지 여부를 판정할 수 있다.
도 7은 본 발명의 일 실시예에 따라 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
도 7을 참조하면, 게임 클라이언트는 순차적으로 호출되는 복수의 함수를 포함하고 있으며, 이들 함수 중 하나가 호출되면 몇 번째 호출인지를 나타내는 호출 시퀀스가 표시된 패킷이 수신된다(S702). 이 실시예에서 감시 대상 함수는 순차적으로 호출되는 것이 예정된 복수의 함수이다.
온라인 게임 서버(100)는 수신된 패킷에 표시된 호출 시퀀스를 이용하여, 대응하는 함수가 순차적인 함수 호출에 의해 호출되었는지 확인한다(S704). 즉, 호출 시퀀스를 통해, 수신 패킷에 대응하는 함수가 호출되기 전에 호출되어야 하는 적어도 하나의 함수가 모두 호출된 후에 해당 함수가 호출되었는지 여부를 확인한다.
해당 함수가 순차적인 함수 호출에 의해 호출되지 않은 경우 비정상적인 함수 호출로 판단한다(S706). 즉, 호출 시퀀스가 미리 정해진 수 미만인 경우 해당 함수가 이전에 호출되어야 하는 함수들의 호출 없이 비정상적으로 호출된 것이다. 호출 시퀀스가 미리 정해진 수 미만인 경우, 봇 프로그램에 의해 사용자의 결정이나 동작이 필요한 중간 함수의 호출이 생략된 것으로 간주될 수 있기 때문이다.
도 8은 본 발명의 또 다른 실시예에 따라 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 설명하기 위한 순서도이다.
게임 클라이언트는 사냥이나 채집 등 소정의 목적을 위해 사용자의 조작에 따라 순차적으로 호출되는 복수의 함수를 포함하고 있으며, 이 게임 클라이언트의 실행중(S802) 순차적으로 호출되는 복수의 함수 중 하나가 호출되면, 게임 클라이언트는 호출의 순번을 나타내는 호출 시퀀스를 대응하는 패킷에 기록하여 온라인 게임 서버(100)로 전송한다(S804).
또한, 상기 함수의 호출에 이어 상기 복수의 함수 중 다른 하나가 호출되면, 상기 호출 시퀀스를 증가시킨 호출 시퀀스를 대응하는 패킷에 기록하여 온라인 게임 서버(100)로 전송한다(S806). 예컨대, 함수1 -> 함수2 -> 함수3의 순으로 호출되는 함수들의 경우, 각각 호출 시퀀스 1, 2, 3을 패킷에 기록하여 보낸다. 온라인 게임 서버(100)는, 함수3이 호출되었는데 호출 시퀀스가 3이 아니라 1 또는 2인 경우, 함수1 및/또는 함수2가 비정상적으로 생략되었음을 알 수 있다.
도9는 본 발명의 또 다른 실시예에 따라 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 원리를 설명하기 위한 도면이다.
도 9를 참조하면, 함수 A1, A2, A3, A4, A5는 사냥을 위한 함수들이며 순차적으로 호출되어야 하는 함수들이다. 함수 A1의 호출시 호출 시퀀스가 1이라면, 함수 A2의 호출 시퀀스는 2, 함수 A3의 호출 시퀀스는 3, 함수 A4의 호출 시퀀스는 4, 함수 A5의 호출 시퀀스는 5이어야 정상적인 함수 호출이다.
이와 같이 순차적으로 호출되는 함수들의 경우 이전 함수의 리턴값을 파라미터로 하여 호출되는 것이 일반적이나, 봇 프로그램은 파라미터를 고정값으로 설정하여 호출한다. 즉 사용자의 결정이나 동작이 필요한 함수 호출은 생략되는 것이다. 이 실시예에서는, 상기와 같은 현상에 착안하여 함수의 순차적인 호출시 호출 순번을 카운트하여 패킷에 그 값을 실어 보내도록 게임 클라이언트를 변경한다.
게임 서버(100)는 함수 A5의 호출에 따라 전송되는 패킷에 호출 시퀀스가 5로 기록되어 있는 경우 정상적인 함수 호출로 판단하나, 5 이외의 다른 데이터가 호출 시퀀스로 기록되어 있다면 비정상 함수 호출로 판단한다.
예를 들어, 봇 프로그램이 구동되어 있는 사용자 단말에서 함수 A1이 호출되고 호출 시퀀스 1이 수신된 후, 함수 A2~A4의 호출은 생략된 채 봇 처리 함수(910)에 의해 대체되고 함수 A5가 호출되었다면, 함수 A5에 대응하는 패킷에는 호출 시퀀스가 2로 기록되어 있을 것으므로, 함수 A5에 대한 호출은 봇 프로그램을 통한 비정상적인 함수 호출로 판단될 것이다.
패킷에 호출 시퀀스를 실어 보내는 방법은 어느 하나로 한정되지 않으며 다양한 방법들이 사용될 수 있다. 예를 들어, 패킷의 소정 위치에 호출 시퀀스를 기록한다거나 패킷에 호출 시퀀스를 기록한 더미 바이트를 붙여서 보낼 수 있다.
이러한 본 발명의 실시예에 따르면 봇 프로그램은 정상적으로 동작하지만 게임 서버(100) 측에서 비정상적인 함수 호출에 대한 데이터를 계속 수신할 수 있기 때문에 봇에 대한 지속적인 모니터링이 가능하다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속한다.
100: 온라인 게임 서버
110, 120: 사용자 단말
111: 게임 클라이언트
112: 봇 프로그램

Claims (14)

  1. 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법에 있어서,
    사용자 단말로부터 게임 클라이언트에 포함된 함수의 호출에 의해 생성되는 패킷을 수신하는 단계와,
    상기 수신된 패킷을 분석하여 상기 함수 호출이 봇 프로그램을 통한 비정상적인 함수 호출인지 여부를 판단하는 단계를 포함하며,
    상기 게임 클라이언트에 포함된 감시 대상 함수와 동일한 기능을 하되 상기 감시 대상 함수의 호출과 구별되는 호출임이 대응하는 패킷에 표시되는 복제 함수를 추가한 게임 클라이언트를 상기 사용자 단말에 제공하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    적어도 하나의 감시 대상 함수를 포함하며 상기 감시 대상 함수의 호출에 따라 생성되는 패킷에 비정상적인 함수 호출임을 나타내는 데이터를 기록하는 게임 클라이언트를 상기 사용자 단말에 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 비정상적인 함수 호출인지 여부를 판단하는 단계는,
    상기 수신된 패킷을 분석하여, 상기 감시 대상 함수의 호출인 경우는 비정상적인 함수 호출로, 상기 복제 함수의 호출인 경우는 정상적인 함수 호출로 판단하는 단계를 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 패킷을 수신하는 단계는,
    상기 감시 대상 함수가 호출된 경우와 상기 복제 함수가 호출되는 경우 패킷의 식별자가 다른 패킷을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    상기 패킷을 수신하는 단계는,
    상기 게임 클라이언트에서 순차적으로 호출되는 함수가 호출되는 경우 호출 시퀀스가 표시된 패킷을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 비정상적인 함수 호출인지 여부를 판단하는 단계는,
    상기 수신된 패킷에 표시된 호출 시퀀스를 이용하여, 대응하는 함수가 순차적인 함수 호출에 의해 호출되었는지 확인하는 단계와,
    상기 대응하는 함수가 순차적인 함수 호출에 의해 호출되지 않은 경우 비정상적인 함수 호출로 판단하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제6항에 있어서,
    상기 비정상적인 함수 호출인지 여부를 판단하는 단계는,
    상기 수신된 패킷에 표시된 호출 시퀀스를 이용하여, 사용자의 결정이나 동작이 필요한 함수 호출이 생략되었는지 여부를 확인하는 단계와,
    상기 사용자의 결정이나 동작이 필요한 함수 호출이 생략된 경우 비정상적인 함수 호출로 판단하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 온라인 게임 서버가 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 실행하기 위해 기록매체에 기록된 컴퓨터 프로그램에 있어서, 상기 방법은,
    사용자 단말로부터 게임 클라이언트에 포함된 함수의 호출에 의해 생성되는 패킷을 수신하는 단계와,
    상기 수신된 패킷을 분석하여 상기 함수 호출이 봇 프로그램을 통한 비정상적인 함수 호출인지 여부를 판단하는 단계를 포함하며,
    상기 게임 클라이언트에 포함된 감시 대상 함수와 동일한 기능을 하되 상기 감시 대상 함수의 호출과 구별되는 호출임이 대응하는 패킷에 표시되는 복제 함수를 추가한 게임 클라이언트를 상기 사용자 단말에 제공하는 것을 특징으로 하는 컴퓨터 프로그램.
  10. 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법에 있어서,
    봇 프로그램을 통해 호출되는 감시 대상 함수와, 상기 감시 대상 함수와 동일한 기능을 하는 복제 함수를 포함하는 게임 클라이언트 실행중, 상기 동일 기능의 복제 함수가 호출되면, 상기 감시 대상 함수의 호출과 구별되는 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 상기 온라인 게임 서버로 전송하는 단계와,
    상기 감시 대상 함수가 호출되면, 상기 감시 대상 함수의 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 상기 온라인 게임 서버로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 감시 대상 함수의 호출에 대응하는 패킷과 상기 복제 함수의 호출에 대응하는 패킷은 패킷 식별자가 다른 것을 특징으로 하는 방법.
  12. 사용자 단말이 온라인 게임에서의 비정상적인 함수 호출을 탐지하는 방법을 수행하기 위해 기록매체에 기록된 컴퓨터 프로그램에 있어서, 상기 방법은,
    봇 프로그램을 통해 호출되는 감시 대상 함수와, 상기 감시 대상 함수와 동일한 기능을 하는 복제 함수를 포함하는 게임 클라이언트 실행중, 상기 동일 기능의 복제 함수가 호출되면, 상기 감시 대상 함수와 구별되는 복제 함수의 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 상기 온라인 게임 서버로 전송하는 단계와,
    상기 감시 대상 함수가 호출되면, 상기 감시 대상 함수의 호출임을 표시하는 데이터를 대응하는 패킷에 기록하여 온라인 게임 서버로 전송하는 단계를 포함하는 것을 특징으로 하는 프로그램.
  13. 삭제
  14. 삭제
KR1020150068166A 2015-05-15 2015-05-15 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램 KR101699693B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150068166A KR101699693B1 (ko) 2015-05-15 2015-05-15 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150068166A KR101699693B1 (ko) 2015-05-15 2015-05-15 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램

Publications (2)

Publication Number Publication Date
KR20160134308A KR20160134308A (ko) 2016-11-23
KR101699693B1 true KR101699693B1 (ko) 2017-01-25

Family

ID=57542116

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150068166A KR101699693B1 (ko) 2015-05-15 2015-05-15 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램

Country Status (1)

Country Link
KR (1) KR101699693B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010227182A (ja) 2009-03-26 2010-10-14 Sega Corp オンラインゲームサーバ処理方法、オンラインゲームサーバ装置、オンラインゲームサーバ処理プログラム、オンラインゲームクライアント処理プログラムおよびオンラインゲームサーバ処理プログラム記録媒体

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101267725B1 (ko) * 2010-08-30 2013-05-24 주식회사 엔씨소프트 온라인 게임의 봇 프로그램 패턴 수집방법
KR101741026B1 (ko) * 2010-10-29 2017-05-30 주식회사 엔씨소프트 온라인 게임에 있어서의 악성모듈 탐지 방법, 및 컴퓨터 판독 가능한 기록 매체
KR20140114945A (ko) * 2013-03-18 2014-09-30 한국전자통신연구원 게임 봇 탐지 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010227182A (ja) 2009-03-26 2010-10-14 Sega Corp オンラインゲームサーバ処理方法、オンラインゲームサーバ装置、オンラインゲームサーバ処理プログラム、オンラインゲームクライアント処理プログラムおよびオンラインゲームサーバ処理プログラム記録媒体

Also Published As

Publication number Publication date
KR20160134308A (ko) 2016-11-23

Similar Documents

Publication Publication Date Title
US20200050765A1 (en) Methods and apparatus for identifying and removing malicious applications
US8875294B2 (en) System and method for cloud-based detection of computer malware
RU2653985C2 (ru) Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию
KR101899589B1 (ko) 안전 소프트웨어 인증 시스템 및 방법
US10943008B2 (en) System and method of detecting hidden behavior of a browser extension
US20240022603A1 (en) Security system for detecting malicious actor's observation
US11444970B2 (en) Dynamic security test system
CN109783316B (zh) 系统安全日志篡改行为的识别方法及装置、存储介质、计算机设备
KR20150138340A (ko) 게임 데이터 수집을 위한 방법 및 시스템
CN104700029B (zh) 一种软件在线检测方法、装置和服务器
Choi et al. All‐in‐One Framework for Detection, Unpacking, and Verification for Malware Analysis
EP2728472B1 (en) User terminal, reliability management server, and method and program for preventing unauthorized remote operation
CN114741695A (zh) 一种恶意代码监控方法、装置、电子设备及存储介质
KR101237161B1 (ko) 온라인 게임의 비공개 봇 검출방법
CN108874658A (zh) 一种沙箱分析方法、装置、电子设备及存储介质
KR101699693B1 (ko) 온라인 게임에서 비정상적인 함수 호출을 탐지하는 방법 및 프로그램
KR101741026B1 (ko) 온라인 게임에 있어서의 악성모듈 탐지 방법, 및 컴퓨터 판독 가능한 기록 매체
CN114860351A (zh) 异常识别方法及装置、存储介质、计算机设备
CN115378628A (zh) 基于沙箱的恶意样本检测方法、系统、主机、电子设备及存储介质
CN113779576A (zh) 一种可执行文件感染病毒的识别方法、装置及电子设备
CN108875361A (zh) 一种监控程序的方法、装置、电子设备及存储介质
KR101155255B1 (ko) 온라인 게임 서비스에 있어서의 불량 유저 검출 시스템 및 그 방법
EP3522057B1 (en) System and method of detecting hidden behavior of a browser extension
KR20110048936A (ko) 로봇 프로그램에 의한 게임 플레이 검출 방법
KR20120045234A (ko) 온라인 게임에 있어서의 악성모듈 탐지 방법, 및 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191211

Year of fee payment: 4