(19) 대한민국특허청 (KR) (12) 등록특허공보 (B1) (51) 국제특허분류 (Int. Cl.) G06F 21/56 (2013.01) G06F 21/60 (2013.01) (21) 출원번호 10-2014-0182578 (22) 출원일자 2014 년 12 월 17 일 심사청구일자 2014 년 12 월 17 일 (65) 공개번호 10-2016-0073801 (43) 공개일자 2016 년 06 월 27 일 (56) 선행기술조사문헌 KR1020060067117 A* KR1020130071617 A* * 는심사관에의하여인용된문헌 (45) 공고일자 2016년07월20일 (11) 등록번호 10-1641295 (24) 등록일자 2016년07월14일 (73) 특허권자 고려대학교산학협력단 주식회사한글과컴퓨터 주식회사한컴시큐어 (72) 발명자 이희조 권종훈 김종민 (74) 대리인 특허법인엠에이피에스전체청구항수 : 총 7 항심사관 : 구본재 (54) 발명의명칭문서에포함된악성공격코드탐지시스템및방법 (57) 요약 본발명의일실시예에따른문서에포함된악성공격코드를탐지하는시스템은악성공격코드를탐지하는프로그램이저장된메모리, 기수집된악성공격코드에기초하여분류된행위시그너처가저장된데이터베이스및프로그램을실행시키는프로세서를포함하되, 프로세서는상기악성공격코드를탐지하는프로그램이실행됨에따라, 문서를파싱하고, 파싱된문서의구조적특징에기초하여악성공격코드를추출하며, 추출된악성공격코드에기초하여행위시그너처를추출하고, 데이터베이스에저장된행위시그너처와문서에서추출된행위시그너처가매칭되는경우, 악성공격코드가공격행위를하는것으로탐지한다. 대표도 - 도 1-1 -
명세서청구범위청구항 1 문서에포함된악성공격코드를탐지하는시스템에있어서, 상기악성공격코드를탐지하는프로그램이저장된메모리, 기수집된악성공격코드에기초하여분류된행위시그너처가저장된데이터베이스및상기프로그램을실행시키는프로세서를포함하되, 상기프로세서는상기악성공격코드를탐지하는프로그램이실행됨에따라, 상기문서를파싱하고, 상기파싱된문서의구조적특징에기초하여악성공격코드를추출하며, 상기추출된악성공격코드에기초하여행위시그너처를추출하고, 상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처가매칭되는경우, 상기악성공격코드가공격행위를하는것으로탐지하며, 상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처가매칭되지않는경우, 상기데이터베이스에상기문서에서추출된행위시그너처를업데이트하는것인악성공격코드탐지시스템. 청구항 2 제 1 항에있어서, 상기구조적특징은상기파싱된문서에서악성공격코드가저장될수있는구조체및상기악성공격코드의크기를포함하는악성공격코드탐지시스템. 청구항 3 제 1 항에있어서, 상기프로세서는상기파싱된문서의구조적특징을이용하여탐색범위를줄이고, 상기탐색범위에서악성공격코드로의심되는부분을찾아바이너리코드화를수행한이후에상기악성공격코드를추출하는악성공격코드탐지시스템. 청구항 4 제 1 항에있어서, 상기악성공격코드는상기악성공격코드의공격방법을정의하는익스플로잇코드및상기악성공격코드의공격유형을정의하는쉘코드를포함하되, 상기프로세서는상기익스플로잇코드및상기쉘코드에기초하여상기악성공격코드의행위시그너처를분류하는악성공격코드탐지시스템. 청구항 5 삭제청구항 6 문서에대한악성공격코드탐지방법에있어서, 데이터베이스에기수집된악성공격코드에기초하여추출된행위정보를저장하는단계 ; 상기문서에서악성공격코드를추출하는단계 ; - 2 -
상기악성공격코드에기초하여행위시그너처를추출하는단계 ; 상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처를매칭하는단계 ; 상기매칭하는단계를통하여, 상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처가매칭되면, 상기악성공격코드가공격행위를하는것으로탐지하는단계 ; 및상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처가매칭되지않으면, 상기데이터베이스에상기문서에서추출된상기행위시그너처를업데이트하는단계를포함하는악성공격코드탐지방법. 청구항 7 제 6 항에있어서, 상기악성공격코드를추출하는단계는, 상기문서를파싱하는단계 ; 및상기파싱된문서의구조적특징에기초하여악성공격코드를추출하는단계를포함하되, 상기구조적특징은상기파싱된문서에서악성공격코드가저장될수있는구조체및상기악성공격코드의크기를포함하는악성공격코드탐지방법. 청구항 8 제 6 항에있어서, 상기악성공격코드는상기악성공격코드의위치및공격방법을정의하는익스플로잇코드및상기악성공격코드의공격유형을정의하는쉘코드를포함하되, 상기악성공격코드에포함된상기익스플로잇코드및상기쉘코드에기초하여상기악성공격코드의행위시그너처를분류하는악성공격코드탐지방법. 청구항 9 삭제 발명의설명 [0001] 기술분야 본발명은문서에포함된악성공격코드탐지시스템및방법에관한것이다. [0002] [0003] [0004] [0005] 배경기술오피스응용프로그램 (office application) 은워드프로세서 (word processor), 스프레드시트 (spread sheet), 데이터베이스 (database), 프리젠테이션 (presentation) 등의응용소프트웨어의모음이다. 예를들어, " 한글과컴퓨터 " 사의 " 한컴오피스 ", " 마이크로소프트 (Microsoft)" 사의 " 마이크로소프트오피스 (Microsoft office)", "Apple" 사의 "Works" 및 "Apache" 사의 " 아파치오픈오피스 (Apache Open Office)" 등이있다. 최근에는이러한오피스응용프로그램에의해생성된문서파일에악성공격코드를삽입하고정상문서처럼위장하여실행을유도하는해킹공격방법이전세계적으로늘어나고있다. 특히오피스응용프로그램파일은개인뿐아니라기업, 관공서및군부대등에서널리사용하고있어그위험성이커지고있다. 그러므로오피스응용프로그램을사용하는사용자들에게안전한오피스환경을보장하기위한보안대응이필요하다. 오피스응용프로그램에삽입된악성공격코드를탐지하는기술에대한종래발명은다음과같다. 한국공개특허공보제10-2012-0130626호 ( 발명의명칭 : " 발명의명칭문서기반악성코드탐지장치및방법 ") 는가상머신에서행위분석프로그램을이용하여문서의행위분석결과를검출하고, 검출된결과를이용하여악성공격코드 - 3 -
를판단하는문서기반악성탐지장치및방법을개시하고있다. [0006] 또한, 한국공개특허공보제 10-2013-0078960 호 ( 발명의명칭 : " 오피스프로그램의취약점을이용한악성공격코 드의행위기반진단및차단방법 ") 는오피스프로그램의취약점을이용하여문서에삽입된악성공격코드의행 위기반의진단및차단을하는방법을개시하고있다. 발명의내용 [0007] [0008] 해결하려는과제본발명은전술한종래기술의문제점을해결하기위한것으로서, 본실시예는문서에포함된악성공격코드를추출하고공격행위를탐지하는시스템및방법을제공하는데그목적이있다. 다만, 본실시예가이루고자하는기술적과제는상기된바와같은기술적과제로한정되지않으며, 또다른기술적과제들이존재할수있다. [0009] [0010] 과제의해결수단상술한기술적과제를달성하기위한기술적수단으로서, 본발명의일실시예에따른문서에포함된악성공격코드를탐지하는시스템은악성공격코드를탐지하는프로그램이저장된메모리, 기수집된악성공격코드에기초하여분류된행위시그너처가저장된데이터베이스및프로그램을실행시키는프로세서를포함하되, 프로세서는상기악성공격코드를탐지하는프로그램이실행됨에따라, 문서를파싱하고, 파싱된문서의구조적특징에기초하여악성공격코드를추출하며, 추출된악성공격코드에기초하여행위시그너처를추출하고, 데이터베이스에저장된행위시그너처와문서에서추출된행위시그너처가매칭되는경우, 악성공격코드가공격행위를하는것으로탐지한다. 또한, 본발명의일실시예에따른문서에대한악성공격코드탐지방법은데이터베이스에기수집된악성공격코드에기초하여추출된행위정보를저장하는단계 ; 문서에서악성공격코드를추출하는단계 ; 악성공격코드에기초하여행위시그너처를추출하는단계 ; 및상기데이터베이스에저장된행위시그너처와상기문서에서추출된행위시그너처를매칭하여상기악성공격코드가공격행위를하는것으로탐지하는단계를포함한다. [0011] [0012] 발명의효과전술한과제해결수단중어느하나에의하면, 본발명의일실시예는다수의악성공격코드에기초하여생성된적은수의행위시그너처만을이용하여악성공격코드의공격행위를탐지할수있으므로악성공격코드를탐지하는데소요되는시간및자원을대폭감소시킬수있다. 또한, 행위시그너처를이용하므로향후발생할수있는유사행위를수행하는변종악성공격코드를사전에탐지하고공격을예방할수있다. 즉, 적은시간과자원을이용하여문서에포함된다양한변종의악성공격코드를사전에탐지하므로사용자의개인컴퓨터의악성공격코드의감염을예방할수있고문서에대한안정성및신뢰성을증대시킬수있다. [0013] 도면의간단한설명 도 1 은본발명의일실시예에따른문서에포함된악성공격코드탐지시스템을개략적으로도시한구성도이 다. 도 2는본발명의일실시예에따른문서에포함된악성공격코드를개략적으로도시한블록도이다. 도 3은본발명의일실시예에따른문서에포함된악성공격코드탐지시스템의악성공격코드를탐지하는프로그램을개략적으로도시한구성도이다. 도 4는본발명의일실시예에따른문서에대한악성공격코드탐지방법을설명하기위한순서도이다. 도 5는본발명의일실시예에따른문서에대한악성공격코드탐지방법에서악성공격코드추출방법을설명하기위한순서도이다. [0014] 발명을실시하기위한구체적인내용 아래에서는첨부한도면을참조하여본발명이속하는기술분야에서통상의지식을가진자가용이하게실시할 - 4 -
수있도록본발명의실시예를상세히설명한다. 그러나본발명은여러가지상이한형태로구현될수있으며 여기에서설명하는실시예에한정되지않는다. 그리고도면에서본발명을명확하게설명하기위해서설명과 관계없는부분은생략하였다. [0015] [0016] [0017] [0018] [0019] [0020] [0021] [0022] [0023] [0024] [0025] [0026] [0027] 명세서전체에서, 어떤부분이다른부분과 " 연결 " 되어있다고할때, 이는 " 직접적으로연결 " 되어있는경우뿐아니라, 그중간에다른소자를사이에두고 " 전기적으로연결 " 되어있는경우도포함한다. 또한, 어떤부분이어떤구성요소를 " 포함 " 한다고할때, 이는특별히반대되는기재가없는한다른구성요소를제외하는것이아니라다른구성요소를더포함할수있는것을의미한다. 이하에서는도 1 내지도 3을참조하여본발명의일실시예에따른문서 (200) 에포함된악성공격코드탐지시스템 (100) 을설명하도록한다. 도 1은본발명의일실시예에따른문서 (200) 에포함된악성공격코드탐지시스템 (100) 을개략적으로도시한구성도이다. 악성공격코드탐지시스템 (100) 은문서 (200) 내에서추출한행위시그너처를이용하여악성공격코드를탐지하고악성공격코드의행위정보를제공한다. 이때, 악성공격코드탐지시스템 (100) 은기존의오피스프로그램과연동하거나, 독립적인형태 (stand only) 로실행될수있다. 예를들어, 기존의오피스프로그램과연동한악성공격코드탐지시스템 (100) 은사용자가오피스프로그램을이용하여문서 (200) 를편집하기위하여오피스프로그램을실행하고문서 (200) 를로드할때, 악성공격코드탐지를수행할수있다. 이때, 문서 (200) 에악성공격코드가포함된경우, 오피스프로그램의실행을중단하고사용자에게악성공격코드의행위정보및위험성을통보할수있다. 그리고악성공격코드탐지시스템 (100) 은메일서버 (mail server) 및사용자의메일시스템 (mail system) 과연동되어메일에첨부된문서 (200) 파일을대상으로악성공격코드의유무를탐지할수있다. 만약메일에첨부된문서 (200) 파일에서악성공격코드가탐지되는경우, 사용자이나메일서버관리자에게악성공격코드를포함하는문서 (200) 파일에대한정보및해당문서 (200) 파일에포함된악성공격코드의행위정보를통보하고, 사전에차단할수있도록할수있다. 또한, 독립적인형태로실행되는악성공격코드탐지시스템 (100) 은사용자의컴퓨터내에포함된복수개의문서 (200) 파일을대상으로악성공격코드의유무를탐지하고사용자에게악성공격코드를포함하는문서 (200) 파일에대한정보및해당문서 (200) 파일에포함된악성공격코드의행위정보를통보할수있으나이에한정된것은아니다. 본발명의일실시예에따른악성공격코드탐지시스템 (100) 은메모리 (110), 데이터베이스 (120) 및프로세서 (130) 를포함한다. 이때, 메모리 (110) 에는악성공격코드를탐지하는프로그램 (150) 이저장된다. 여기에서메모리 (110) 는전원이공급되지않아도저장된정보를계속유지하는비휘발성저장장치를통칭하는것이다. 예를들어, 메모리 (110) 는콤팩트플래시 (compact flash; CF) 카드, SD(secure digital) 카드, 메모리스틱 (memory stick), 솔리드스테이트드라이브 (solid-state drive; SSD) 및마이크로 (micro) SD 카드등과같은낸드플래시메모리 (NAND flash memory), 하드디스크드라이브 (hard disk drive; HDD) 등과같은마그네틱컴퓨터기억장치및 CD-ROM, DVD-ROM 등과같은광학디스크드라이브 (optical disc drive) 등을포함할수있다. 또한, 메모리 (110) 에저장된악성공격코드를탐지하는프로그램은소프트웨어또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit) 와같은하드웨어형태로구현될수있으며, 소정의역할들을수행할수있다. 그렇지만 ' 구성요소들 ' 은소프트웨어또는하드웨어에한정되는의미는아니며, 각구성요소는어드레싱할수있는저장매체에있도록구성될수도있고하나또는그이상의프로세서들을재생시키도록구성될수도있다. 따라서, 일예로서구성요소는소프트웨어구성요소들, 객체지향소프트웨어구성요소들, 클래스구성요소들및태스크구성요소들과같은구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램코드의세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터구조들, 테이블들, 어레이들및변수들을포함한다. 구성요소들과해당구성요소들안에서제공되는기능은더작은수의구성요소들로결합되거나추가적인구 - 5 -
성요소들로더분리될수있다. [0028] [0029] [0030] [0031] [0032] [0033] [0034] [0035] [0036] [0037] [0038] [0039] 데이터베이스 (120) 에는기수집된악성공격코드에기초하여분류된행위시그너처 (semantic signature) 가저장된다. 이때, 데이터베이스 (120) 는악성공격코드탐지시스템 (100) 에서버프로그램 (server program) 형태로실행되거나, 악성공격코드탐지시스템 (100) 과네트워크로연결된독립적인데이터베이스서버 (database server) 일수있다. 그리고데이터베이스 (120) 는캐쉬, ROM(Read Only Memory), PROM(Programmable ROM), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM) 및플래쉬메모리 (Flash memory) 와같은비휘발성메모리소자또는 RAM(Random Access Memory) 과같은휘발성메모리소자또는하드디스크드라이브 (HDD, Hard Disk Drive), CD-ROM과같은저장매체중적어도하나로구현될수있으나이에한정되지는않는다. 또한, 데이터베이스 (120) 에기수집된악성공격코드는알려진악성공격코드샘플이거나, 악성공격코드탐지시스템 (100) 을수행하며수집된악성공격코드일수있으나, 이에한정된것은아니다. 본발명의일실시예에따른프로세서 (130) 는메모리 (110) 에저장된악성공격코드를탐지하는프로그램 (150) 이실행됨에따라, 문서 (200) 를파싱하고, 파싱된문서 (200) 의구조적특징에기초하여악성공격코드를추출한다. 이때, 프로세서 (130) 는문서 (200) 를파싱하기위하여문서 (200) 의종류에따라복호화하고악성공격코드가의심되는파일내의오프셋 (offset) 을파악할수있다. 복호화방법은각각문서 (200) 의종류에따라상이할수있다. 예를들어, 입력되는문서 (200) 가 " 한글과컴퓨터 " 의 " 한글워드프로세서 " 를이용하여작성된 " 한글문서파일 "( 파일확장자 : "hwp") 의경우에는공개된한글워드프로세서포맷에기반하여복호화를수행할수있다. 또한, 입력되는문서 (200) 가 " 마이크로소프트오피스 " 를이용하여작성된 " 워드파일 "( 파일확장자 : "doc" 또는 "docx") 및 " 엑셀파일 "( 파일확장자 : "xls" 또는 "xlsx") 등의 " 마이크로소프트오피스문서파일 " 인경우에는 " 오피스 API(application programming interface)" 를이용하여복호화를수행할수있으나, 이에한정된것은아니다. 그리고프로세서 (130) 는악성공격코드가의심되는파일오프셋에기반하여악성공격코드가시작되는앵커포인터 (anchor point ) 를찾아바이너리코드화를수행한다. 이때, 바이너리코드화는프로그램이나파일의구조적인부분을분석하여바이너리코드나데이터를추출하는역공학 (reverse engineering) 을이용할수있다. 이때, 앵커포인터는악성공격코드에따라다양하게정의될수있다. 예를들어, 앵커포인터는 "0x0c", "0x0d" 와같은힙오버플로어 (heap overflow) 가가능한 1바이트 (byte) 기계어로구성될수있으며, "PUSH" 나 "NOP 코드 " 와같은명령어세트로구성될수있다. 이렇게문서 (200) 를파싱하고파싱된문서의구조적특징을이용하여탐색범위를줄인후에악성공격코드로의심되는부분을찾아바이너리코드화를거친후, 악성공격코드에기초하여행위시그너처를추출한다. 이때, 행위시그너처는악성공격코드의위치정보, 구조정보및행위정보등을포함할수있다. 위치정보는문서 (200) 내의악성공격코드가존재하는위치에대한정보이며, 구조정보는악성공격코드의구조적특징에대한정보일수있다. 그리고행위정보는문서 (200) 내의악성공격코드가포함하고있는악성행위정보이며, 이악성행위정보는악성공격코드가실행되었을때발생하는사용자컴퓨터의이벤트 (event) 일수있다. 예를들어, 위치정보는 " 헤더영역 ", " 본문영역 ", " 이미지 " 및 " 스크립트 " 등이될수있고, 구조정보는 " 일반적인구조 ", " 암호화루틴이포함된구조 " 및 " 체인형태로실행되는구조 " 등이될수있다. 그리고행위정보는 " 파일실행 ", " 라이브러리호출 " 및 " 레지스트리접근 " 등이될수있다. 행위시그너처는위치정보, 구조정보및행위정보를코드화하여표현 (representation) 할수있다. 예를들어, 위치정보는 " 헤더영역 " 의코드를 1, " 본문영역 " 의코드를 2로설정될수있다. 또한, 구조정보는 " 알수없음 " 의코드를 0, " 일반적인구조 " 의코드를 1, " 암호화루틴이포함된구조 " 의코드를 2로설정할수있다. 그리고행위정보는 " 알수없음 " 의코드를 0, " 파일실행 " 의코드를 1로설정할수있다. 이때, 행위시그너처는위치정보, 구조정보및행위정보코드에기초하여 3자리의코드를생성할수있다. 그러므로위치정보가 " 본문영역 ", 구조정보가 " 일반적인구조 " 이며, 행위정보가 " 파일실행 " 인악성공격코드의행위시그너처는 "211" 과같이코드화되어표현될수있다. 또한, 위치정보가 " 헤더영역 ", 구조정 - 6 -
보가 " 암호화루틴이포함된구조 " 이며, 행위정보가 " 알수없음 " 인악성공격코드의행위시그너처는 "120" 과같이코드화되어표현될수있다. [0040] [0041] [0042] [0043] [0044] [0045] [0046] [0047] [0048] [0049] [0050] [0051] [0052] [0053] 한편, 프로세서 (130) 는행위시그너처를추출한다음, 데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처의매칭여부를판단한다. 이때, 프로세서 (130) 은데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처가매칭되는경우, 문서 (200) 에포함된악성공격코드가공격행위를하는것으로탐지한다. 한편, 파싱된문서 (200) 에서악성공격코드를추출하기위하여사용되는구조적특징은파싱된문서 (200) 에서악성공격코드가저장될수있는구조체및악성공격코드의크기를포함할수있다. 이때, 악성공격코드가저장될수있는구조체는문서의포맷 (format) 에따른스트림 (stream) 구조체를의미하며, 태그 (tag) 등을포함할수있다. 예를들어, 구조체는문서의내용, 문서의형식및문장의형태등을포함할수있다. 그러므로프로세서 (130) 는파싱된문서 (200) 에서특정한구조체의길이가악성공격코드를구성하는최소크기이상인지판별한후, 악성공격코드의최소길이이상인경우, 의심구조체로분류할수있다. 의심구조체로분류한다음프로세서 (130) 은특정한구조체를악성공격코드탐색영역에포함되는것으로탐색할수있다. 또한, 프로세서 (130) 는역어셈블 (disassemble) 에기반하여파싱된문서 (200) 에서악성공격코드가시작되는것으로의심되는앵커포인터를찾고어셈블리어로변환하여바이너리코드화를수행할수있다. 역어셈블은역공학방법의하나로실행파일이나문서파일을어셈블리어 (assembly language) 로변환하는것이다. 그리고프로세서 (130) 는어셈블리어로변환된문서 (200) 에포함된명령어 (instruction) 및인자 (operand) 등의구조적특징에기초하여악성공격코드를추출할수있다. 도 2는본발명의일실시예에따른악성공격코드를개략적으로도시한블록도이다. 도 2를참조하면, 문서 (200) 에서추출되는악성공격코드는악성공격코드의공격방법을정의하는익스플로잇코드 (exploit code) 및악성공격코드의공격유형을정의하는쉘코드 (shell code) 를포함할수있다. 그러므로프로세서 (130) 는문서 (200) 에서추출되는악성공격코드의익스플로잇코드및쉘코드에기초하여악성공격코드의행위시그너처를분류할수있다. 예를들어, 프로세서 (130) 는악성공격코드의익스플로잇코드및쉘코드를분석하여공격행위를추출하여행위시그너처를분류할수있다. 한편, 문서 (200) 에서추출된악성공격코드의행위시그너처가데이터베이스 (120) 에저장된행위시그너처와매칭되지않을경우, 프로세서 (130) 은문서 (200) 에서추출된행위시그너처를데이터베이스 (120) 에업데이트할수있다. 이렇게데이터베이스 (120) 에업데이트된행위시그너처는앞으로다른문서 (200) 의악성공격코드탐지시활용될수있다. 다음은도 3을참조하여본발명의일실시예에따른문서에포함된악성공격코드탐지시스템 (100) 을상세하게설명한다. 도 3은본발명의일실시예에따른문서 (200) 에포함된악성공격코드탐지시스템 (100) 의악성공격코드를탐지하는프로그램 (150) 을개략적으로도시한구성도이다. 도 3을참조하면악성공격코드탐지시스템 (100) 의악성공격코드탐지프로그램 (150) 은문서파싱모듈 (151) 및악성공격코드탐지모듈 (152) 을포함하며, 문서 (200), 문서파일뷰어 (300) 및데이터베이스 (120) 와연결될수있다. 악성공격코드탐지프로그램 (150) 은하나이상의문서 (200) 가입력되면문서 (200) 의악성공격코드를추출하기위하여문서 (200) 를문서파싱모듈 (151) 에전달할수있다. 그리고문서 (200) 를수신한문서파싱모듈 (151) 은문서 (200) 의파싱을수행할수있다. 이때, 악성공격코드탐지시스템 (100) 으로입력되는하나이상의문서 (200) 는모두동일한종류이거나, 각각상이한종류일수있다. 또한, 문서파싱모듈 (151) 은문서 (200) 의종류에따라악성공격코드를탐지하기위하여문서 (200) 의복호화라이브러리를포함할수있다. 이때, 복호화라이브러리는각각문서 (200) 의종류에따라상이할수도있다. 예를들어, 입력되는문서 (200) 가 " 한글과컴퓨터 " 의 " 한글워드프로세서 " 를이용하여작성된 " 한글문서파일 ( 확장자 : "hwp")" 의경우에는복호화라이브러리로공개된한글워드프로세서포맷에기반하여복호화를수행할수있다. 또한, 입력되는문서 (200) 가 " 마이크로소프트오피스 " 를이용하여작성된 " 워드파일 ( 확장자 : "doc" 또는 "docx")" 및 " 엑셀파일 ( 확장자 : "xls" 또는 "xlsx")" 등의 " 마이크로소프트오피스문서파일 " 인경우에는 - 7 -
복호화라이브러리로 " 오피스 API(application programming interface)" 를이용하여복호화를수행할수있으 나, 이에한정된것은아니다. [0054] [0055] [0056] [0057] [0058] [0059] [0060] [0061] [0062] [0063] [0064] [0065] [0066] 그리고문서파싱모듈 (151) 은문서의파싱을수행한다음파싱된문서를악성공격코드탐지모듈 (152) 에전달할수있다. 악성공격코드탐지모듈 (152) 은파싱된문서 (200) 에서악성공격코드가시작될것으로의심되는파일내의오프셋에기반하여악성공격코드가시작되는앵커포인터를찾아바이너리코드화를수행할수있다. 바이너리코드화를수행한다음악성공격코드탐지모듈 (152) 은문서 (200) 의구조적특징을분석하여, 악성공격코드를추출할수있다. 이때, 구조적특징은파싱된문서 (200) 에서악성공격코드가저장될수있는구조체및악성공격코드의크기를포함할수있다. 또한, 악성공격코드탐지모듈 (152) 은추출된악성공격코드에기초하여행위시그너처를추출할수있다. 이때, 행위시그너처는악성공격코드의위치정보및행위정보등을포함할수있다. 악성공격코드탐지모듈 (152) 은행위시그너처를추출하고문서 (200) 에서추출된행위시그너처와데이터베이스 (120) 에저장된행위시그너처의매칭여부를판단할수있다. 이때, 데이터베이스 (120) 에저장된행위시그너처는악성공격코드탐지시스템 (100) 에의하여기수집된악성공격코드에서추출한행위시그너처이거나악성공격코드탐지시스템 (100) 구축을위하여수집된악성공격코드샘플에서추출된행위시그너처일수있다. 프로세서 (130) 는데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처가매칭되는경우, 악성공격코드탐지모듈 (152) 은문서 (200) 에포함된악성공격코드가공격행위를하는것으로탐지하고문서파일뷰어 (300) 에탐지결과및문서내용을전달할수있다. 이때, 탐지결과는악성공격코드의행위시그너처에포함된위치정보및행위정보등이포함될수있다. 이와반대로데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처가매칭되지않는경우, 악성공격코드탐지모듈 (152) 은데이터베이스 (120) 에행위시그너처를업데이트하고, 문서파일뷰어 (300) 에알려지지않은악성공격코드가탐지되었음을통보하는탐지결과및문서의내용을전달할수있다. 다음은도 4 및도 5를이용하여본발명의일실시예에따른문서 (200) 에대한악성공격코드탐지방법을설명한다. 도 4는본발명의일실시예에따른문서 (200) 에대한악성공격코드탐지방법을설명하기위한순서도이다. 도 4에도시된것처럼, 문서 (200) 에대한악성공격코드탐지방법은기수집된악성공격코드에기초하여추출된행위정보를데이터베이스 (120) 에저장한다 (S400). 이때, 기수집된악성공격코드는악성공격코드탐지시스템 (100) 에의하여기수집된악성공격코드이거나악성공격코드탐지시스템 (100) 을구축하기위하여수집된악성공격코드샘플일수있다. 악성공격코드탐지시스템 (100) 에문서 (200) 가입력되면, 악성공격코드탐지방법은문서 (200) 에서악성공격코드를추출하고 (S410), 악성공격코드에기초하여행위시그너처를추출한다 (S420). 이때, 행위시그너처는악성공격코드의위치정보및행위정보등을포함할수있다. 위치정보는문서 (200) 내의악성공격코드가존재하는위치에대한정보이며, 행위정보는문서 (200) 내의악성공격코드가포함하고있는악성행위정보가될수있다. 또한, 악성공격코드탐지방법은문서 (200) 에서행위시그너처를추출한다음, 데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처를매칭한다 (S440). 매칭여부를판단하여 (S440) 문서 (200) 의행위시그너처와데이터베이스 (120) 에저장된행위시그너처가매칭되면악성공격코드가공격행위를하는것으로탐지한다 (S450). 한편, 악성공격코드탐지방법은데이터베이스 (120) 에저장된행위시그너처와문서 (200) 에서추출된행위시그너처를매칭하고 (S440) 매칭되지않으면, 데이터베이스 (120) 에문서 (200) 에서추출된행위시그너처를업데이트할수있다 (S460). 이렇게업데이트된행위시그너처는다른문서 (200) 의악성공격코드탐지를위하여활용될수있다. 도 5는본발명의일실시예에따른문서 (200) 에대한악성공격코드탐지방법에서악성공격코드추출방법을설명하기위한순서도이다. - 8 -
[0067] [0068] [0069] [0070] [0071] [0072] [0073] 악성공격코드탐지방법은악성공격코드를추출하기위하여 (S410) 문서 (200) 를파싱하고 (S411), 파싱된문서 (200) 의구조적특징에기초하여악성공격코드를추출할수있다 (S412). 이때, 구조적특징은파싱된문서 (200) 에서악성공격코드가저장될수있는구조체및악성공격코드의크기를포함할수있다. 특히, 악성공격코드가저장될수있는구조체는문서 (200) 의포맷에따른스트림구조체를의미하며, 태그 (tag) 등을포함할수있다. 예를들어, 구조체는문서의내용, 문서의형식및문장의형태등을포함할수있다. 그러므로악성공격코드탐지방법은파싱된문서 (200) 에서특정한구조체의길이가악성공격코드를구성하는최소크기이상인지판별한후, 악성공격코드의최소길이이상인경우, 의심구조체로분류할수있다. 의심구조체로분류한다음악성공격코드탐지방법은특정한구조체를악성공격코드탐색영역에포함되는것으로탐색할수있다. 또한, 악성공격코드는악성공격코드의위치및공격방법을정의하는익스플로잇코드및악성공격코드의공격유형을정의하는쉘코드를포함할수있다. 이때, 악성공격코드에포함된익스플로잇코드및쉘코드에기초하여공격코드의행위시그너처를추출할수있다. 본발명의일실시예에따른악성공격코드탐지시스템 (100) 및방법은다수의악성공격코드에기초하여생성된적은수의행위시그너처만을이용하여악성공격코드의공격행위를탐지할수있으므로악성공격코드를탐지하는데소요되는시간및자원을대폭감소시킬수있다. 또한, 행위시그너처를이용하므로향후발생할수있는유사행위를수행하는변종악성공격코드를사전에탐지하고공격을예방할수있다. 본발명의일실시예는컴퓨터에의해실행되는프로그램모듈과같은컴퓨터에의해실행가능한명령어를포함하는기록매체의형태로도구현될수있다. 컴퓨터판독가능매체는컴퓨터에의해액세스될수있는임의의가용매체일수있고, 휘발성및비휘발성매체, 분리형및비분리형매체를모두포함한다. 또한, 컴퓨터판독가능매체는컴퓨터저장매체및통신매체를모두포함할수있다. 컴퓨터저장매체는컴퓨터판독가능명령어, 데이터구조, 프로그램모듈또는기타데이터와같은정보의저장을위한임의의방법또는기술로구현된휘발성및비휘발성, 분리형및비분리형매체를모두포함한다. 통신매체는전형적으로컴퓨터판독가능명령어, 데이터구조, 프로그램모듈, 또는반송파와같은변조된데이터신호의기타데이터, 또는기타전송메커니즘을포함하며, 임의의정보전달매체를포함한다. 본발명의방법및시스템은특정실시예와관련하여설명되었지만, 그것들의구성요소또는동작의일부또는전부는범용하드웨어아키텍쳐를갖는컴퓨터시스템을사용하여구현될수있다. 전술한본발명의설명은예시를위한것이며, 본발명이속하는기술분야의통상의지식을가진자는본발명의기술적사상이나필수적인특징을변경하지않고서다른구체적인형태로쉽게변형이가능하다는것을이해할수있을것이다. 그러므로이상에서기술한실시예들은모든면에서예시적인것이며한정적이아닌것으로이해해야만한다. 예를들어, 단일형으로설명되어있는각구성요소는분산되어실시될수도있으며, 마찬가지로분산된것으로설명되어있는구성요소들도결합된형태로실시될수있다. 본발명의범위는상기상세한설명보다는후술하는특허청구범위에의하여나타내어지며, 특허청구범위의의미및범위그리고그균등개념으로부터도출되는모든변경또는변형된형태가본발명의범위에포함되는것으로해석되어야한다. [0074] 부호의설명 100: 악성공격탐지시스템 110: 스토리지장치 120: 데이터베이스 130: 프로세서 - 9 -
도면 도면 1 도면 2-10 -
도면 3 도면 4-11 -
도면 5-12 -