KR101265173B1 - 비실행 파일 검사 장치 및 방법 - Google Patents

비실행 파일 검사 장치 및 방법 Download PDF

Info

Publication number
KR101265173B1
KR101265173B1 KR1020120050156A KR20120050156A KR101265173B1 KR 101265173 B1 KR101265173 B1 KR 101265173B1 KR 1020120050156 A KR1020120050156 A KR 1020120050156A KR 20120050156 A KR20120050156 A KR 20120050156A KR 101265173 B1 KR101265173 B1 KR 101265173B1
Authority
KR
South Korea
Prior art keywords
malicious
address
executable file
execution
executable
Prior art date
Application number
KR1020120050156A
Other languages
English (en)
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 KR1020120050156A priority Critical patent/KR101265173B1/ko
Priority to PCT/KR2013/003427 priority patent/WO2013168913A1/ko
Priority to US13/887,610 priority patent/US8627478B2/en
Priority to JP2013100465A priority patent/JP5326062B1/ja
Application granted granted Critical
Publication of KR101265173B1 publication Critical patent/KR101265173B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 비실행 파일 검사 장치에 관한 것으로, 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 로딩하는 데이터 로딩부와, 비실행 파일에 대응하는 프로그램이 구동되면, 메모리에 로드되는 모듈의 정상 주소 범위 정보를 획득하고 악성 후보 주소 정보에 대한 중단점을 설정하는 프로그램 연결부와, 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 정상 주소 범위 정보에 속하는지를 판단하는 악성 판단부를 포함한다.
따라서, 본 발명은 비실행 파일 내 악성 코드가 실행되기 전에 악성 비실행 파일을 신속하게 정확하게 탐지할 수 있는 효과가 있다.

Description

비실행 파일 검사 장치 및 방법{APPARATUS AND METHOD FOR INSPECTING NON-PORTABLE EXECUTABLE FILES}
본 발명은 비실행(Non-PE: Non-Portable Executable) 파일 검사 장치 및 방법에 관한 것이다. 보다 구체적으로, 본 발명은 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 이용하여, 비실행 파일이 악성 코드를 포함하고 있는지를 검사하는 장치, 방법 및 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 기록매체에 관한 것이다.
주지하는 바와 같이, 인터넷 및 무선통신 기기의 보급에 따라 악성 코드(malicious code)의 전염경로가 다양해지고 있으며, 이로 인한 피해 정도가 매년 증가하고 있다.
본 명세서에 기재한 "악성 코드"라 함은 사용자의 의사와 이익에 반하여 시스템을 파괴하거나 정보를 유출하는 등의 악의적 활동을 수행하도록 의도적으로 제작된 소프트웨어를 의미한다. 악성 코드로는 바이러스(virus), 웜(worm), 트로이얀(trojan), 백도어(backdoor), 논리폭탄(logic bomb), 트랩도어(trap door) 등의 해킹 툴, 악의적인 스파이웨어(spyware), 애드웨어(ad-ware) 등이 포함된다.
이러한 악성 코드는 자기복제나 자동번식 기능을 통하여, 사용자 식별정보(ID)와 암호 등의 개인정보 유출, 대상 시스템 통제, 파일 삭제/변경, 시스템 파괴, 응용프로그램/시스템의 서비스 거부, 핵심 자료 유출, 다른 해킹 프로그램 설치 등의 문제를 일으키고 있으며, 그 피해도 매우 다양하고 심각하다.
한편, 최근 이슈가 되고 있는 지능형 지속 위협(APT: Advanced Persistent Threat) 공격은 공격자가 특정 타깃을 정하고 목표한 정보를 빼내기 위해 고도의 공격기법을 적용하여 지속적으로 다양한 형태의 악성 코드를 활용한다. 특히 APT 공격은 초기 침입단계에서 탐지하지 못하는 경우가 많으며, 주로 악성 코드를 포함하는 비실행 파일을 이용하는 경우가 많다. 이는 비실행 파일을 실행하는 프로그램(예: 문서작성 또는 이미지 프로그램)이 기본적으로 어느 정도의 보안 취약성을 가지고 있을 뿐만 아니라, 악성 코드를 비실행 파일에 포함시키면 파일 변경에 따라 손쉽게 변종 악성 코드를 만들 수 있기 때문이다.
이러한 특성 때문에, APT 공격은 악성 비실행 파일 익스플로잇(exploit)을 이용하여 제로 데이(Zero Day) 공격을 하는 사례가 많다. 예를 들어, 수신인이 이메일에 첨부된 악성 비실행 파일을 무심코 오픈하는 경우, 수신인의 컴퓨터는 악성 파일에 의해 감염되어 다른 컴퓨터를 공격할 수도 있고, 시스템에 침입하여 핵심 자료를 외부로 유출할 수도 있다. 뿐만 아니라, 비실행 파일이 다양한 형식(포맷)을 가지고 있기 때문에 악성 비실행 파일을 이용한 제로 데이 익스플로잇(Zero-Day Exploit)은 분석가가 비실행 파일의 악성 여부를 판단하고 악성 행위를 분석하는데 상당한 시간과 노력이 필요하며, 분석 기간 동안에 변형되거나 새로이 생성되는 수많은 악성 비실행 파일에 대응하는 것은 거의 불가능하다고 할 수 있다.
현재 이러한 악성 코드를 탐지하고 치료하기 위한 악성 코드 치료 시스템(백신 프로그램)에 대한 연구가 지속되고 있으며, 지금까지 알려진 대부분의 악성 코드 치료 시스템(백신 프로그램)은 실행 파일 내에서 악성 코드를 검출하는 것이 대부분이다.
이처럼 악성 코드 치료 시스템이 실행 파일을 대상으로 하여 악성 코드를 검출하는 이유는 대부분의 악성 코드가 특정 시스템에서 실행되기 위해서는 해당 시스템에서 실행이 가능한 형태로 되어 있다는 점에서 기인한 것이다. 예를 들어, 악성 코드가 윈도우 시스템에서 실행되기 위한 파일의 확장자는 exe, cpl, ocx, dll, vxd, sys, scr, drv 등이 있다.
하지만 최근 들어서 주목 받고 있는 악성 쉘 코드(shell code)는 비실행 파일의 포맷을 가지는 각종 파일에 삽입되어 악성 코드 치료 시스템 및 분석가를 우회하는 기술이 이용되고 있다. 예를 들어, 윈도우 시스템에서 악성 코드가 가지는 비실행 파일의 확장자는 HWP, DOC, XLS, JS, HTML, JPG 등이 있다.
이러한 비실행 파일에 대한 악성 검사를 위해서는 분석가가 파일별로 악성 여부를 판단해 주어야 한다. 특히, 제로 데이 익스플로잇을 이용한 비실행 파일은 분석가가 악성 여부를 판단하고, 악성 행위를 분석하기까지 상당한 시간과 노력이 필요하기 때문에 분석 기간 동안에 변형되거나 새로이 생성되는 수많은 악성 비실행 파일에 대응하는 것은 거의 불가능하다고 볼 수 있다.
그런데, 앞서 설명한 바와 같이 최근에 지능형 지속 위협 공격 시나리오를 성공시키기 위해서 악성 비실행 익스플로잇을 이용하는 사례가 증가하여 이를 방어할 수 있는 기술 개발의 필요성이 절실하다.
종래 기술에 따른 비실행 파일에 대한 악성 검사 방법으로는 시그너처 기반의 악성 검사 방법이 있다. 그러나 이러한 방법은 다양한 형태의 공격 방법을 탐지하기 위해서는 대량의 시그너처 데이터베이스를 보유하고 있어야 하기 때문에 현실적으로는 제로 데이 익스플로잇을 방어할 수 없다.
비실행 파일에서 악성 코드를 탐지하는 종래의 다른 방법으로는 공격자가 악성 비실행 파일에 포함된 셀 코드를 어떤 방식으로 설계하느냐에 따라 달라지는 행위를 탐지하여 악성 코드를 포함한 비실행 파일을 찾아내는 방법이 있다. 그러나 이러한 방법은 다양한 공격자에 대한 설계 방법 등의 정보가 필요하기 때문에 많은 오탐(false positive)과 미탐(false negative)이 발생되는 문제점이 있다.
안철수연구소(공개특허 제2010-5518호)의 "확장자를 위장한 파일을 탐지하는 방법 및 그 장치"에는 악성 코드가 텍스트, 이미지 등의 비실행 파일의 확장자로 위장한 뒤 시스템 내부에 침투하는 것을 사전에 방지하기 위한 기술이 개시되어 있다.
본 발명은, 이와 같은 종래 기술의 문제점을 해결하기 위한 것으로서, 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 이용하여 비실행 파일이 악성 코드를 포함하고 있는지 여부를 판단할 수 있는 비실행 파일 검사 장치 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 명령어 실행 주소가 악성 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA: Relative Virtual Address)를 이용하여 동일한 익스플로잇을 시도하는 악성 비실행 파일을 일괄적으로 검출할 수 있는 비실행 파일 검사 장치 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 악성 비실행 파일을 이용한 제로 데이 익스플로잇을 이용하는 APT 공격을 효과적으로 방어할 수 있는 비실행 파일 검사 장치 및 방법을 제공하는 것을 목적으로 한다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기한 목적을 달성하기 위해, 본 발명의 일 실시예에 따르면, 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 로딩하는 데이터 로딩부와, 상기 비실행 파일에 대응하는 프로그램이 구동되면, 메모리에 로드되는 모듈의 정상 주소 범위 정보를 획득하고 상기 악성 후보 주소 정보에 대한 중단점(breakpoint)을 설정하는 프로그램 연결부와, 상기 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는 악성 판단부를 포함하는 비실행 파일 검사 장치가 제공된다.
이 경우, 상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면, 상기 비실행 파일은 악성 파일로 판단될 수 있다.
또한, 상기 악성 판단부는 상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하며, 상기 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
또한, 상기 악성 판단부는 상기 메모리 영역이 실행 속성인 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
또한, 상기 악성 판단부는 상기 비정상적인 이벤트가 발생되지 않을 경우 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 지시하는지를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
또한, 상기 악성 판단부는 상기 메모리 영역이 비실행 속성인 것으로 판단되는 경우 상기 비실행 파일을 악성으로 판단할 수 있다.
또한, 비실행 파일 검사 장치는 상기 악성 후보 주소 정보의 세트가 저장된 데이터베이스부를 더 포함하되, 상기 악성 후보 주소 정보는 비실행 파일의 악성 코드와 관련된 모듈의 상대적 가상 주소(RVA: Relative Virtual Address)에 관한 정보일 수 있다.
또한, 상기 데이터 로딩부는, 상기 비실행 파일의 파일 형식을 판단하고, 상기 악성 후보 주소 정보의 세트 중에서 상기 판단된 파일 형식에 대응하는 악성 후보 주소 정보를 로딩할 수 있다.
또한, 비실행 파일 검사 장치는 악성 파일로 판정된 비실행 파일의 악성 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출하는 악성 코드 추출부를 더 포함할 수 있다.
또한, 비실행 파일 검사 장치는 상기 상대적 가상 주소와 취약성 정보와의 비교를 통해 익스플로잇(exploit) 발생 원인을 분석하는 원인 분석부를 더 포함할 수 있다.
한편, 상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함할 수 있다.
그리고, 상기 실행 주소는 중앙 처리 유닛의 EIP(Extended Instruction Pointer) 레지스터로부터 제공될 수 있다.
또한, 상기 악성 판단부는 상기 정상 주소 범위 정보를 벗어난 실행 주소 직전에 실행된 명령어의 실행 주소를 저장할 수 있다.
상기 목적을 달성하기 위해, 본 발명의 다른 실시예에 따르면, 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 로딩하는 단계와, 상기 비실행 파일에 대응하는 프로그램이 구동되면, 메모리에 로드되는 모듈의 정상 주소 범위 정보를 획득하는 단계와, 상기 악성 후보 주소 정보에 대한 중단점을 설정하는 단계와, 상기 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는 단계를 포함하는 비실행 파일 검사 방법이 제공된다.
이 경우, 상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면, 상기 비실행 파일은 악성 파일로 판단될 수 있다.
또한, 상기 판단하는 단계는 상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하는 단계와, 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부에 따라 상기 비실행 파일에 대한 악성 여부를 판단하는 단계를 포함할 수 있다.
또한, 상기 메모리 영역이 실행 속성인지의 여부를 판단하는 단계는 상기 메모리 영역이 실행 속성인 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하는 단계를 포함하되, 상기 비정상적인 이벤트가 발생되는 경우 상기 비실행 파일을 악성으로 판단할 수 있다.
또한, 상기 비실행 파일을 악성으로 판단하는 단계는 상기 비정상적인 이벤트가 발생되지 않을 경우 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 상기 메모리 영역을 지시하는지를 체크하는 단계와, 상기 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 상기 비실행 파일을 악성으로 판단하는 단계를 포함할 수 있다.
또한, 비실행 파일 검사 방법은 상기 악성 후보 주소 정보의 세트를 저장하는 단계를 더 포함하되, 상기 악성 후보 주소 정보는 비실행 파일의 악성 코드와 관련된 모듈의 상대적 가상 주소(RVA)에 관한 정보일 수 있다.
또한, 상기 로딩하는 단계는, 상기 비실행 파일의 파일 형식을 판단하는 단계와, 상기 악성 후보 주소 정보의 세트 중에서 상기 판단된 파일 형식에 대응하는 악성 후보 주소 정보를 로딩하는 단계를 포함할 수 있다.
또한, 비실행 파일 검사 방법은 악성 파일로 판정된 비실행 파일의 악성 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출하는 단계를 더 포함할 수 있다.
또한, 비실행 파일 검사 방법은 상기 상대적 가상 주소와 취약성 정보와의 비교를 통해 익스플로잇 발생 원인을 분석하는 단계를 더 포함할 수 있다.
또한, 상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함할 수 있다.
또한, 상기 실행 주소는 중앙 처리 유닛의 EIP 레지스터로부터 제공될 수 있다.
또한, 상기 판단하는 단계는 상기 구동되는 프로그램의 명령어의 종류에 기초하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단할 수 있다.
한편, 상기 명령어가 리턴(return), 콜(call) 또는 점프(jump)인 경우, 하나의 스텝을 진행하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단할 수 있다.
반면, 상기 명령어가 구조화된 예외 처리(SEH)인 경우, 상기 구조화된 예외 처리의 체인(chain) 값이 상기 정상 주소 범위 정보에 속하는지를 판단할 수 있다.
또한 소정의 디렉토리에 저장되어 있는 복수개의 비실행 파일 각각에 대하여 본 비실행 파일 검사 방법이 수행될 수 있다.
이 때, 상기 악성 코드는 악성 쉘 코드를 포함할 수 있다.
또한, 본 발명의 또 다른 실시예에 따르면 상기 비실행 파일 검사 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독가능 기록매체가 제공된다.
본 발명은 비실행 파일에 대응하는 프로그램이 구동됨에 따라 로드되는 명령어 실행 주소가 악성 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA: Relative Virtual Address) 세트를 저장하고 비실행 파일의 형식에 따른 상대적 가상 주소(RVA)를 로딩한 후 이 상대적 가상 주소에 중단점을 설정하고 중단점에 관한 이벤트가 발생하는 경우에 비실행 파일이 악성 파일인지 여부를 검사함으로써, 특정 상대적 가상 주소(RVA)를 이용하여 동일한 익스플로잇을 시도하여 악성 행위를 하려고 하는 많은 악성 비실행 파일을 일괄적으로 검출할 수 있는 효과가 있다.
또한, 본 발명은 명령어 실행 주소가 악성 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA)에 중단점을 설정하고 중단점에 관한 이벤트가 발생하는 경우에 다음 실행 파일이 정상 주소 범위를 벗어나 악성 쉘 코드(shell code)를 지시하는지 여부를 통해 비실행 파일이 악성 쉘 코드를 포함하는 악성파일인지 여부를 검사함으로써, 특정 상대적 가상 주소(RVA)에서 악성 쉘 코드로 분기하는지의 여부만 판단하면 되기 때문에 다양한 변종 악성 비실행 파일을 고속으로 탐지할 수 있는 효과가 있다.
또한, 본 발명은 악성 비실행 파일을 이용한 제로 데이 익스플로잇을 이용하는 APT 공격을 효과적으로 방어할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 비실행 파일 검사 장치의 블록도이다.
도 2는 본 발명의 실시예에 따른 비실행 파일 검사 방법을 설명하기 위한 흐름도이다.
도 3은 본 발명의 실시예에 따른 비실행 파일 검사 장치에 의해 수행되는 비실행 파일 검사 방법에 대한 이해를 돕기 위한 개념도이다.
도 4는 본 발명의 다른 실시예에 따라 실행 주소가 정상 주소 범위 정보를 벗어난 영역을 지시하는 경우 비실행 파일 검사 장치의 동작 과정을 도시한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 명세서에서 사용되는 "비실행 파일"이란 실행 파일 또는 실행 가능한 파일과 반대되는 개념으로서 자체적으로 실행되지 않는 파일을 의미한다. 예를 들어, 비실행 파일은 한글 파일, 워드 파일과 같은 문서 파일, JPG 파일과 같은 이미지 파일, 동영상 파일, 자바 스크립크 파일, HTML 파일 등이 될 수 있으나 이에 한정되지 않는다.
악성 코드를 포함하는 악성 비실행 파일은 이메일에 첨부되는 방식 또는 네트워크를 통해 전송되는 방식 등을 통해 지능형 지속 위협(APT) 공격 등에서 사용될 수 있다. 이 경우 악성 코드는 쉘 코드(shell code)일 수 있고, 이러한 악성 쉘 코드는 비실행 파일의 형식(포맷)에 대응하는 프로그램을 실행하는 경우에 실행될 수 있다. 비실행 파일의 형식은 예를 들어, hwp 파일, doc 파일, pdf 파일, jpg 파일, js 파일, html 파일 등이 될 수 있다.
특히, 본 발명의 실시예에 따른 비실행 파일 검사 장치 및 방법은 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA: Relative Virtual Address)를 미리 확보한 상황에서 이를 데이터베이스부 등에 저장하여 비실행 파일 검사에 이용함으로써 보다 신속하고 효과적으로 악성 비실행 파일을 탐지할 수 있다.
이와 관련하여, 이러한 상대적 가상 주소를 확보하는 과정에 대해 먼저 살펴보기로 한다.
악성 비실행 파일들은 악성 쉘 코드를 포함할 수 있으며, 악성 쉘 코드를 포함하고 있는 악성 비실행 파일은 어떤 방식을 통해서든 결국 명령어를 실행할 때에 악성 쉘 코드 영역으로 이동한다. 이러한 악성 쉘 코드 영역으로의 이동은 실행 주소를 확인하면 미리 예측할 수 있다. 예컨대, CPU 와 같은 중앙처리유닛의 레지스터 중의 하나인 EIP(Extended Instruction Pointer) 레지스터에 저장된 값을 통해 다음 실행 주소를 확인할 수 있다. 따라서, 정상적인 주소 범위를 벗어나 악성 쉘 코드 영역으로 이동하는 명령어를 가지는 비실행 파일은 악성으로 판별 및 분류할 수 있다. 또한, 이들 정보를 이용하여 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 가상 주소를 미리 확보할 수 있다. 여기서, 가상 주소는 하드웨어의 변화 등과 같은 프로그램 구동 환경의 변화에 따라 그 값이 변화되기 때문에 상대적 가상 주소(RVA)로 치환할 필요가 있으며, 본 발명의 실시예에서는 이러한 이유로 비실행 파일의 악성 여부를 검사할 때에 이러한 상대적 가상 주소를 이용한다.
도 1은 본 발명의 실시예에 따른 비실행 파일 검사 장치의 블록도이다.
도시된 바와 같이, 비실행 파일 검사 장치(100)는, 데이터 로딩부(110), 프로그램 연결부(120), 악성 판단부(130), 악성 쉘 코드 추출부(140), 원인 파악부(150), 데이터베이스부(160) 등을 포함할 수 있다.
데이터베이스부(160)에는 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA) 정보의 세트가 저장되며, 이러한 상대적 가상 주소 정보는 비실행 파일에 대해 악성 여부를 검사할 때에 악성 후보 주소 정보(Candidate address)로 이용된다. 다시 말해, 악성 후보 주소 정보의 세트라는 것은 악성 쉘 코드 영역으로 이동하려고 했던 전례가 있는 모듈들의 가상 주소 정보(RVA)의 세트를 의미한다. 이 경우 모듈은 동적 연결 라이브러리(DLL: Dynamic Linking Library)가 될 수 있다.
또한, 데이터베이스부(160)에는 상대적 가상 주소 정보와 매핑하여 취약성 정보가 저장된다. 여기서, 취약성 정보는 상대적 가상 주소 정보와의 비교를 통해 특정한 상대적 가상 주소를 가지는 익스플로잇에 대해 그 발생 원인을 파악할 때에 이용할 수 있다. 일 실시예에 따르면 비실행 파일의 파일 형식별로 다른 복수의 악성 후보 주소 정보의 세트가 데이터베이스부(160)에 저장될 수 있다.
데이터 로딩부(110)는 비실행 파일에 대한 악성 여부를 검사할 때에 데이터베이스부(160)로부터 상대적 가상 주소에 의거한 악성 후보 주소 정보를 로딩한다. 실시예에 따르면 데이터 로딩부(110)는 악성 검사 대상인 비실행 파일의 파일 형식을 판단한 후에 데이터베이스부(160)에 저장된 복수의 악성 후보 주소 정보의 세트 중에서 비실행 파일의 파일 형식에 부합하는 악성 후보 주소 정보를 중단점 설정을 위해 로딩한다.
프로그램 연결부(120)는 악성 검사의 대상인 비실행 파일에 대응하는 구동 프로그램이 실행되면, 가상 메모리에 로드된 모듈의 시작 주소와 끝 주소를 포함하는 정상적인 주소 범위 정보를 획득하고, 데이터 로딩부(110)에 의해 로딩된 악성 후보 주소 정보에 따라 악성 후보 주소 정보에 대응하는 악성 후보 주소를 구동 프로그램의 중단점(breakpoint)을 설정한다. 이러한 프로그램 연결부(120)는, 실시예에 따라, 구동 프로그램을 직접 실행시킬 수도 있으며, 별도의 프로그램 구동부(도시 생략됨)에게 해당하는 구동 프로그램의 실행을 요청할 수도 있다.
악성 판단부(130)는 프로그램 연결부(120)에 의해 설정된 중단점에 의해 이벤트(event)가 발생하면 다음 실행 주소가 정상 주소 범위 정보에 속하는지를 판단하고, 다음 실행 주소가 정상 주소 범위 정보에서 속하면 비실행 파일을 정상파일로 판단하고, 반대로 다음 실행 주소가 정상 주소 범위 정보에서 벗어나면 비실행 파일을 악성으로 판단한다. 여기서, 악성 판단부(130)는 중앙처리유닛의 EIP(Extended Instruction Pointer) 레지스터에 저장된 다음 실행 주소를 이용할 수 있다. 실시예에 따르면 악성 판단부(130)는, 명령어의 종류에 따라서, 한 스텝(step)을 진행하여 다음 실행 주소가 정상적인 주소 범위 정보에 속하는지를 판단하거나, 한 스텝을 진행하지 않고 바로 다음 실행 주소가 정상적인 주소 범위 정보에 속하는지를 판단할 수 있다. 예컨대, 명령어가 구조화된 예외 처리(SEH: Structured Exception Handling)일 경우, 악성 판단부(130)는 구조화된 예외 처리의 체인(chain) 값과 정상 주소 범위 정보간의 비교를 수행할 수 있다. 또한, 리턴(return), 콜(call) 또는 점프(jump) 등과 같은 명령어들은 한 스텝을 진행하여 다음 실행 주소가 정상 주소 범위 정보에 속하는지를 판단할 수 있다. 여기에서, 구조화된 예외 처리의 체인 값은 실행할 주소를 의미한다.
다만, 악성 판단부(130)는 정상 프로그램이 비실행 파일을 로드하기 위해 정상 모듈의 정상 주소 범위 정보 밖에서 명령어를 실행하는 것은 예외 처리할 수도 있다.
예외 처리되는 경우에 대해 설명하면, 악성 판단부(130)는 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 실행 주소가 지시하는 메모리 영역의 속성을 판단하며, 판단 결과 메모리 영역의 속성이 실행 속성이 아닌 경우 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따라 발생되는 이벤트가 비정상적인 이벤트인지를 판단한다.
여기에서, 비정상적인 이벤트의 예로는
Access Violation;
EXCEPTION_ARRAY_BOUNDS_EXCEEDED;
EXCEPTION_DATATYPE_MISALIGNMENT;
EXCEPTION_FLT_DENORMAL_OPERAND;
EXCEPTION_FLT_DIVIDE_BY_ZERO;
EXCEPTION_FLT_INEXACT_RESULT;
EXCEPTION_FLT_INVALID_OPERATION;
EXCEPTION_FLT_OVERFLOW;
EXCEPTION_FLT_STACK_CHECK;
EXCEPTION_FLT_UNDERFLOW;
EXCEPTION_GUARD_PAGE;
EXCEPTION_ILLEGAL_INSTRUCTION;
EXCEPTION_IN_PAGE_ERROR;
EXCEPTION_INT_DIVIDE_BY_ZERO;
EXCEPTION_INT_OVERFLOW;
EXCEPTION_INVALID_DISPOSITION;
EXCEPTION_INVALID_HANDLE;
EXCEPTION_NONCONTINUABLE_EXCEPTION;
EXCEPTION_PRIV_INSTRUCTION;
EXCEPTION_STACK_OVERFLOW
등이 될 수 있으나, 이에 한정하지 않는다.
비정상적인 이벤트가 발생되는 경우 악성 판단부(130)는 비실행 파일을 악성 코드로 판단함과 더불어 정상 주소 범위 정보를 벗어나는 실행 주소의 명령어 직전에 실행된 명령어의 실행 주소를 가상 메모리에 저장할 수 있다.
한편, 비정상적인 이벤트가 발생되지 않을 경우 악성 판단부(130)는 기 설정된 스텝, 예컨대 3∼5 스텝까지의 명령어에 대한 실행 주소와 정상 주소 범위 정보간의 비교를 통해 비실행 파일에 대한 악성 여부를 판단할 수 있다. 즉, 악성 판단부(130)는 기 설정된 스텝까지의 명령어에 대한 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 비실행 파일을 악성으로 판단하며, 기 설정된 스텝 이전의 명령어에 대한 실행 주소가 정상 주소 범위 정보인 경우 비실행 파일을 정상으로 판단하여 이후 스텝에 대한 명령어를 수행할 수 있다.
악성 쉘 코드 추출부(140)는 비실행 파일의 구동 프로그램이 가상 메모리에 디코딩하여 둔 악성 쉘 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출한다. 예컨대, 악성 쉘 코드 추출부(140)는 디코딩된 악성 쉘 코드를 확장자가 exe, cpl, ocx, dll, vxd, sys, scr 또는 drv 중 어느 하나인 파일 형태로 추출할 수 있다. 하지만, 추출할 수 있는 파일 형태의 확장자는 이들로 한정되지 않는다.
또한, 악성 코드 추출부(140)는 실행 파일 형태 또는 실행 가능한 파일 형태로 추출된 코드를 통신망(미도시됨)에 연결된 악성 코드 검사 및 분석 서버(미도시됨)에 전송하여 분석을 의뢰할 수도 있다.
원인 파악부(150)는 악성 판단부(130)가 악성 파일로 분류한 비실행 파일의 상대적 가상 주소와 데이터베이스부(160)에 기 저장된 취약성 정보와의 비교를 통해 익스플로잇 발생 원인을 파악하며, 파악된 익스플로잇 발생 원인을 보고(리포팅) 한다.
본 발명의 실시예에서는 원인 분석부(112)가 비실행 파일 검사 장치의 내부에 설치되는 것으로 예를 들어 설명하였지만, 통신망을 통해 연결된 별도의 분석 서버(미도시됨)에 설치될 수 있다.
일 실시예에서 본 발명의 비실행 파일 검사 장치는 복수개의 비실행 파일이 저장되어 있는 디렉토리가 선택되면 해당 디렉토리에 저장되어 있는 복수개의 비실행 파일 각각에 대하여 비실행 파일 검사를 수행할 수 있다.
또한 다른 일 실시예에서 본 발명의 비실행 파일 검사 장치는 네트워크를 통해 전송되는 비실행 파일의 악성 여부를 실시간으로 모니터링 할 수도 있다.
도 2는 본 발명의 실시예에 따른 비실행 파일 검사 방법을 설명하기 위한 흐름도이다.
도시된 바와 같이, 비실행 파일 검사 방법은, 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소를 미리 확보한 상황에서, 악성 검사의 대상인 비실행 파일에 대응하는 구동 프로그램의 실행에 따라서 로드된 모듈의 정상 주소 범위 정보를 획득하는 단계(S201 내지 S207)와, 상대적 가상 주소에 의거한 악성 후보 주소 정보에 따라 중단점을 설정하는 단계(S209)와, 설정된 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 정상 주소 범위 정보에 속하는지를 판단하는 단계(S211 및 S213)와, 다음 실행 주소가 주소 범위 정보에서 벗어나면 비실행 파일을 악성으로 판단하는 단계(S215)와, 구동 프로그램이 가상 메모리에 디코딩하여 둔 악성 쉘 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출하는 단계(S217)와, 상대적 가상 주소와 기 획득된 취약성 정보와의 비교를 통해 익스플로잇 발생 원인을 분석하고 보고하는 단계(S219)와, 단계 S213에서 다음 실행 주소가 정상적인 주소 범위 정보에 속하는 것으로 판단되면 비실행 파일에 대한 검사가 종료될 때까지 단계 S211에 의한 중단점 이벤트의 발생을 모니터링하는 단계(S221)를 포함한다.
이하, 본 발명의 실시예에 따른 비실행 파일 검사 장치에 의한 비실행 파일 검사 방법을 설명하기에 앞서 본 발명의 이해를 돕기 위하여 비실행 파일 검사 장치(100)의 데이터베이스부(160)에 저장되는 상대적 가상 주소(즉, 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소)의 세트를 확보하는 과정에 대해 실시예를 통해 살펴보기로 한다. 아래에는, 이러한 상대적 가상 주소의 확보 과정을 비실행 파일 검사 장치(100)가 직접 수행하는 경우를 예시하기로 한다.
먼저, 사용자가 사용자 인터페이스를 이용하여 비실행 파일이 저장된 소정의 디렉토리를 선택하면 데이터 로딩부(110)는 선택된 디렉토리 내 비실행 파일의 형식을 파악하여 프로그램 연결부(120)로 제공한다.
그러면, 프로그램 연결부(120)는 비실행 파일에 대응하는 구동 프로그램을 직접 실행시키거나 별도의 시스템(미도시됨)에게 해당 구동 프로그램의 실행을 요청하며, 해당 구동 프로그램의 실행에 따라 로딩된 모듈의 명령어별 실행 주소 정보를 악성 판단부(130)에게 제공한다. 여기에서, 실행 주소 정보는 모듈 내 명령어가 실행될 때 가상 메모리 상의 주소를 의미하며, EIP 레지스터에 저장되어 있는 정보일 수 있다.
그리고, 프로그램 연결부(120)는 프로그램의 실행에 따라 가상 메모리에 로드되는 모듈의 가상 메모리 상 시작 주소와 끝 주소로 이루어진 정상 주소 범위를 가상 메모리에 저장한다.
이후, 악성 판단부(130)는 프로그램 연결부(120)로부터 출력되는 실행 주소 정보와 정상 주소 범위간의 비교를 통해 실행 주소 정보가 정상 주소 범위에 포함되는지를 판단한다.
여기서, 실행 주소 정보가 정상 주소 범위에 포함하는 경우에 악성 판단부(130)는 다음 명령어에 대한 실행 주소 정보를 프로그램 연결부(120)로부터 제공받은 후 다음 명령어의 실행 주소 정보가 정상 주소 범위에 포함되는지를 판단한다.
실행 주소 정보가 정상 주소 범위를 벗어나는 경우에 레지스터 값이 악성 셀 코드 영역으로 이동하는 것이기 때문에, 악성 판단부(130)는 비실행 파일을 악성으로 분류한 후 대상 프로그램의 구동을 중지시킨다.
이후, 악성 판단부(130)는 악성 셀 코드 영역으로 이동하기 전의 실행 주소 정보와 프로그램 내 해당 모듈(취약성을 갖는 모듈)의 정보를 가상 메모리에 저장한 후 이를 원인 파악부(150)에게 제공한다.
한편, 악성 쉘 코드 추출부(140)는 주소 범위를 벗어나는 실행 주소 정보가 지시하는 영역, 즉 악성 셀 코드 영역에 대한 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출한 후 이를 가상 메모리에 저장한다.
원인 파악부(150)는 악성 판단부(130)로부터 제공받은 실행 주소 및 모듈의 정보를 기 저장된 취약성 정보간의 비교를 통해 취약성 발생 원인을 파악한 후 이를 사용자 또는 분석가에게 제공함으로써, 해당 비실행 파일에 대한 분석 결과를 리포팅하여 줄 수 있다.
그리고 나서, 디렉토리 내에 다른 비실행 파일이 존재하는 경우에 비실행 파일 검사 장치(100)는 다른 비실행 파일 각각에 대하여 앞서 설명한 비실행 파일 검사 과정을 다시 수행한다.
지금까지 설명한 비실행 파일 검사 장치에 의한 악성 비실행 파일에 대한 검사 과정에서도 알 수 있듯이, 악성 비실행 파일은 악성 코드, 예를 들어, 악성 쉘 코드를 공통적으로 포함하고 있으며, 악성 쉘 코드를 포함하고 있는 악성 비실행 파일은 어떤 방식을 통해서든 결국 악성 쉘 코드에 관한 명령어를 실행할 때에 악성 쉘 코드 영역으로 이동한다. 이러한 악성 쉘 코드 영역으로의 이동은 다음 실행 주소를 확인하면 미리 예측할 수 있다. 예컨대, 중앙처리유닛의 레지스터 중의 하나인 EIP 레지스터에 저장된 값을 통해 다음 실행 주소를 확인할 수 있다. 따라서, 정상적인 주소 범위를 벗어나 악성 쉘 코드 영역으로 이동하는 명령어를 가지는 비실행 파일은 악성으로 판별 및 분류할 수 있다. 또한, 이들 정보를 이용하여 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 가상 주소를 미리 확보할 수 있다. 여기서, 모듈이 로드되는 가상 주소는 하드웨어의 변화 등과 같은 프로그램 구동 환경의 변화에 따라 로드될 때마다 그 값이 변화되기 때문에 상대적 가상 주소로 치환할 필요가 있으며, 본 발명의 실시예에 따른 비실행 파일 검사 장치(100)는 비실행 파일의 악성 여부를 검사하기 위해 이러한 상대적 가상 주소를 데이터베이스부(160)에 미리 저장한다.
이하, 도 1 및 도 3을 참조하여 본 발명의 실시예에 따른 비실행 파일 검사 장치에 의한 비실행 파일 검사 과정을 자세히 살펴보기로 한다. 여기서, 본 발명의 일 실시예에 따른 프로그램 연결부(120)는 실행이 필요한 특정 프로그램을 직접 실행시킬 수도 있다. 이는 본 발명의 비실행 파일 검사 장치(100)가 특정 프로그램 또는 이를 포함하는 각종 프로그램을 프로그램 저장부 등과 같은 저장수단에 직접 저장할 수 있다는 것을 나타낸다고 할 수 있다.
먼저, 본 발명의 실시예에 따라 비실행 파일 검사 장치(100)가 특정 프로그램을 직접 실행하는 경우를 설명하기로 한다.
검사 대상인 비실행 파일이 저장된 디렉토리가 사용자 인터페이스 등을 통해 선택되면 데이터 로딩부(110)는 해당 디렉토리에 저장된 비실행 파일의 파일 형식 정보(303)에 의거하여 파일 형식을 판단한다. 예컨대, 드라이브1의 하위에 존재하는 루트 폴더1 내지 루트 폴더N 중에서 루트 폴더2(301)가 사용자 인터페이스 등을 통해 선택되면 루트 폴더2(301)에 저장된 비실행 파일의 파일 형식 정보를 확인하여 해당 비실행 파일의 파일 형식을 판단한다(S201).
그리고, 데이터 로딩부(110)는 데이터베이스부(160)에 저장된 복수의 악성 후보 주소 정보의 세트 중에서 비실행 파일의 파일 형식에 부합하는 악성 후보 주소 정보(305)를 로딩한다(S203).
프로그램 연결부(120)는 악성 검사의 대상인 비실행 파일에 대응하는 구동 프로그램(307)을 실행하며(S205), 해당 구동 프로그램의 실행에 따라서 로드된 모듈(309)의 정상적인 주소 범위 정보를 획득하여 저장한다(S207). 여기에서, 모듈의 예로는 동적 연결 라이브러리(DLL)를 들 수 있다. 예컨대, 프로그램 연결부(120)는 프로그램 저장부(도시 생략됨) 등과 같은 저장수단에 저장된 구동 프로그램 중에서 해당하는 프로그램을 로드하여 가상 환경에서 실행할 수 있다.
아울러, 프로그램 연결부(120)는 데이터 로딩부(110)에 의해 로딩된 악성 후보 주소 정보(305)에 따라 악성 후보 주소 정보(305)에 대응하는 악성 후보 주소를 구동 프로그램의 중단점으로 설정(311)한다(S209).
이후, 단계 S209에서 설정된 중단점에 의해 중단점 익셉션 이벤트(exception event)가 발생(S211)하면, 단계 S207에서 다음 실행 주소가 획득된 정상적인 주소 범위 정보에 속하는지를 판단하고(S213), 다음 실행 주소가 정상적인 주소 범위 정보에서 벗어나면 비실행 파일을 악성으로 분류(313) 및 판단한다(S215). 여기서, 악성 판단부(130)는 중앙처리유닛의 EIP 레지스터에 저장된 다음 실행 주소를 이용하여 해당 명령어가 정상적인 주소 범위를 벗어나 악성 쉘 코드 영역으로 이동하는지를 판단할 수 있다.
한편, 단계 S213에서 악성 판단부(130)는 명령어의 종류에 따라서 한 스텝을 진행하여 다음 실행 주소가 정상적인 주소 범위 정보에 속하는지를 판단하거나 한 스텝을 진행하지 않고 바로 다음 실행 주소가 정상적인 주소 범위 정보에 속하는지를 판단할 수 있다. 예컨대, 악성 판단부(130)는 리턴(return), 콜(call) 또는 점프(jump) 등과 같은 명령어들은 한 스텝을 진행하여 다음 실행 주소가 정상적인 주소 범위 정보에 속하는지를 판단하며, 명령어가 SEH일 경우에 SEH의 체인 값이 정상적인 주소 범위 정보에 속하는지를 판단할 수 있다.
그러면, 악성 쉘 코드 추출부(140)는 비실행 파일의 구동 프로그램이 가상 메모리에 디코딩하여 둔 악성 쉘 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출한다. 예컨대, 악성 쉘 코드 추출부(140)는 디코딩된 악성 쉘 코드를 실행 파일 또는 실행 가능한 파일로 추출할 수 있다. 이때 실행 파일 또는 실행 가능한 파일은 확장자가 exe, cpl, ocx, dll, vxd, sys, scr 또는 drv 중 어느 하나인 파일 형태로 추출할 수 있다. 하지만, 추출할 수 있는 파일 형태의 확장자는 이들로 한정되지 않는다. 이렇게 추출된 악성 쉘 코드 실행 파일은 악성 쉘 코드의 동작 방식을 분석할 때에 이용할 수 있다(S217).
또한, 원인 파악부(150)는 악성 판단부(130)가 악성 파일로 분류한 비실행 파일의 상대적 가상 주소와 데이터베이스부(160)에 기 저장된 취약성 정보와의 비교를 통해 익스플로잇 발생 원인을 파악하며, 파악된 익스플로잇 발생 원인을 리포팅 한다(S219). 여기서, 취약성 정보로는 CVE(Common Vulnerabilities and Exposures), Microsoft Security Bulletin(예컨대, MS11-002), NVD(National Vulnerability Database), US-CERT Bulletin 등에서 제공한 정보일 수 있지만 이들에 한정되지는 않는다.
단계 S213에서 다음 실행 주소가 정상적인 주소 범위 정보에 속하는 것으로 판단되면 정상 파일로 분류(315)하여 비실행 파일에 대한 검사가 종료될 때까지 단계 S211에 의한 중단점 익셉션 이벤트의 발생을 모니터링 한다(S221). 아울러, 현재의 검사 대상인 비실행 파일에 대한 악성 검사가 종료되면 동일한 디렉토리에 존재하는 다른 비실행 파일에 대한 악성 검사를 수행한다.
또한, 전술한 바와 같이, 본 발명의 다른 실시예에서는 비실행 파일 검사 장치(100)가 특정 프로그램을 직접 실행하지 않고 별도의 시스템에게 특정 프로그램의 실행을 요청함으로써 상기한 비실행 파일 검사 방법을 수행할 수도 있다. 여기에서, 시스템의 예로는 악성 코드 검사 장치가 설치된 개인용 단말기, 통신망(미도시됨)을 통해 연결된 프로그램 제공 서버 등을 의미할 수 있으며, 이에 한정되는 것은 아니다.
한편, 앞서 설명한 실시예에서는 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 이를 악성으로 판단하는 것으로 예를 들어 설명하였지만, 실행 주소가 지시하는 메모리 영역에 실행 속성이 있는 경우 이를 예외 처리할 수 있는데 이에 대한 설명은 아래와 같다.
도 4는 본 발명의 다른 실시예에 따라 실행 주소가 정상 주소 범위 정보를 벗어난 영역을 지시하는 경우 비실행 파일 검사 장치의 동작 과정을 도시한 흐름도이다.
도 4에 도시된 바와 같이, 제 1 실행 주소가 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 악성 판단부(130)는 카운터 값을 기 설정된 초기 값, 예컨대 "0"으로 셋팅(S400)한 후 제 1 실행 주소가 지시하는 메모리 영역에 대한 속성을 검사하여 속성이 실행 속성인지를 판단한다(S402).
S402의 판단 결과, 실행 속성이 아닌 경우 악성 판단부(130)는 제 1 실행 주소가 지시하는 메모리 영역 내 코드를 실행(S404)시키며, 실행에 따라 발생되는 이벤트가 비정상적인 이벤트인지를 검사한다(S406).
한편, S402에서 실행 속성인 경우 악성 판단부(130)는 비실행 파일을 정상으로 판단(S408)하여 다음 실행 주소, 즉 제 2 실행 주소와 정상 주소 범위 정보간의 비교를 수행한다. 또한, S406의 검사 결과, 비정상적인 이벤트가 발생되는 경우도 악성 판단부(130)는 비실행 파일을 악성으로 판단한다(S410).
S406의 검사 결과, 비정상적인 이벤트가 발생되지 않을 경우 악성 판단부(130)는 카운터 값을 "1" 증가(S412)시킨 후 카운터 값이 임계값 이하인지를 판단한다(S414).
S414의 판단 결과, 카운터 값이 임계값 이하인 경우 악성 판단부(130)는 프로그램 연결부(120)로부터 제공받은 다음 스텝의 명령어에 대한 제 2 실행 주소가 정상 주소 범위 정보를 벗어나는지를 판단한다(S416).
S416의 판단 결과, 다음 스텝의 명령어에 대한 다음 실행 주소, 즉 제 2 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 악성 판단부(130)는 제 2 실행 주소가 지시하는 메모리 영역에 대한 실행 속성을 검사하는 S402으로 진행하여 이후 단계를 수행한다.
한편, S414의 판단 결과, 카운터 값이 임계값을 초과하는 경우 악성 판단부(130)는 비실행 파일을 악성으로 판단한다.
또한, S416의 판단 결과, 다음 스텝의 명령어에 대한 제 2 실행 주소가 정상 주소 범위 정보를 지시하는 경우 악성 판단부(130)는 다음 명령어에 대한 제 3 실행 주소와 정상 주소 범위 정보간의 비교를 실시한다.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100 : 비실행 파일 검사 장치
110 : 데이터 로딩부 120 : 프로그램 연결부
130 : 악성 판단부 140 : 악성 쉘 코드 추출부
150 : 원인 파악부 160 : 데이터베이스부

Claims (30)

  1. 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 로딩하는 데이터 로딩부와,
    상기 비실행 파일에 대응하는 프로그램이 구동되면, 메모리에 로드되는 모듈의 정상 주소 범위 정보를 획득하고 상기 악성 후보 주소 정보에 대응하는 악성 후보 주소를 상기 프로그램의 중단점(breakpoint)으로 설정하는 프로그램 연결부와,
    상기 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는 악성 판단부를 포함하는
    비실행 파일 검사 장치.
  2. 제 1 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면, 상기 비실행 파일을 악성 파일로 판단하는
    비실행 파일 검사 장치.
  3. 제 1 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하며, 상기 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    비실행 파일 검사 장치.
  4. 제 3 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 지시하는 메모리 영역이 실행 속성이 아닌 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    비실행 파일 검사 장치.
  5. 제 4 항에 있어서,
    상기 악성 판단부는,
    상기 비정상적인 이벤트가 발생되지 않을 경우, 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 지시하는지를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    비실행 파일 검사 장치.
  6. 제 3 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 지시하는 메모리 영역이 실행 속성인 경우 상기 비실행 파일을 정상으로 판단하는
    비실행 파일 검사 장치.
  7. 제 1 항에 있어서,
    상기 악성 후보 주소 정보의 세트가 저장된 데이터베이스부를 더 포함하되,
    상기 악성 후보 주소 정보는 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA) 정보인
    비실행 파일 검사 장치
  8. 제 7 항에 있어서,
    상기 데이터 로딩부는,
    상기 비실행 파일의 파일 형식을 판단하고, 상기 악성 후보 주소 정보의 세트 중에서 상기 판단된 파일 형식에 대응하는 악성 후보 주소 정보를 로딩하는
    비실행 파일 검사 장치.
  9. 제 2 항 또는 제 3 항에 있어서,
    악성 파일로 판정된 비실행 파일의 악성 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출하는 악성 코드 추출부를 더 포함하는
    비실행 파일 검사 장치.
  10. 제 7 항에 있어서,
    상기 상대적 가상 주소와 취약성 정보와의 비교를 통해 익스플로잇(exploit) 발생 원인을 분석하는 원인 분석부를 더 포함하는
    비실행 파일 검사 장치.
  11. 제 1 항에 있어서,
    상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함하는
    비실행 파일 검사 장치.
  12. 제 1 항에 있어서,
    상기 실행 주소는 중앙 처리 유닛의 EIP(Extended Instruction Pointer) 레지스터로부터 제공되는
    비실행 파일 검사 장치.
  13. 제 1 항에 있어서,
    상기 악성 판단부는,
    상기 정상 주소 범위 정보를 벗어난 실행 주소 직전에 실행된 명령어의 실행 주소를 저장하는
    비실행 파일 검사 장치.
  14. 비실행 파일의 악성 코드와 관련된 악성 후보 주소 정보를 로딩하는 단계와,
    상기 비실행 파일에 대응하는 프로그램이 구동되면, 메모리에 로드되는 모듈의 정상 주소 범위 정보를 획득하는 단계와,
    상기 악성 후보 주소 정보에 대응하는 악성 후보 주소를 상기 프로그램의 중단점(breakpoint)으로 설정하는 단계와,
    상기 중단점에 대한 이벤트가 발생하면 다음 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는 단계를 포함하는
    비실행 파일 검사 방법.
  15. 제 14 항에 있어서,
    상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면, 상기 비실행 파일을 악성 파일로 판단하는
    비실행 파일 검사 방법.
  16. 제 14 항에 있어서,
    상기 판단하는 단계는,
    상기 실행 주소가 상기 정상 주소 범위 정보에 속하지 않는 것으로 판단되면 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하는 단계와,
    상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부에 따라 상기 비실행 파일에 대한 악성 여부를 판단하는 단계를 포함하는
    비실행 파일 검사 방법.
  17. 제 16 항에 있어서,
    상기 메모리 영역이 실행 속성인지의 여부를 판단하는 단계는,
    상기 실행 주소가 지시하는 메모리 영역이 실행 속성이 아닌 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하는 단계를 포함하되,
    상기 비정상적인 이벤트가 발생되는 경우 상기 비실행 파일을 악성으로 판단하는
    비실행 파일 검사 방법.
  18. 제 17 항에 있어서,
    상기 비실행 파일을 악성으로 판단하는 단계는,
    상기 비정상적인 이벤트가 발생되지 않을 경우 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 상기 메모리 영역을 지시하는지를 체크하는 단계와,
    상기 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 상기 비실행 파일을 악성으로 판단하는 단계를 포함하는
    비실행 파일 검사 방법.
  19. 제 14 항에 있어서,
    상기 악성 후보 주소 정보의 세트를 저장하는 단계를 더 포함하되,
    상기 악성 후보 주소 정보는 명령어 실행 주소가 악성 쉘 코드 영역을 지시한 전례가 있는 모듈의 상대적 가상 주소(RVA) 정보인
    비실행 파일 검사 방법
  20. 제 19 항에 있어서,
    상기 로딩하는 단계는,
    상기 비실행 파일의 파일 형식을 판단하는 단계와,
    상기 악성 후보 주소 정보의 세트 중에서 상기 판단된 파일 형식에 대응하는 악성 후보 주소 정보를 로딩하는 단계를 포함하는
    비실행 파일 검사 방법.
  21. 제 15 항 또는 제 16 항에 있어서,
    상기 악성 파일로 판정된 비실행 파일의 악성 코드를 실행 파일 형태 또는 실행 가능한 파일 형태로 추출하는 단계를 더 포함하는
    비실행 파일 검사 방법.
  22. 제 19 항에 있어서,
    상기 상대적 가상 주소와 취약성 정보와의 비교를 통해 익스플로잇 발생 원인을 분석하는 단계를 더 포함하는
    비실행 파일 검사 방법.
  23. 제 14 항에 있어서,
    상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함하는
    비실행 파일 검사 방법.
  24. 제 14 항에 있어서,
    상기 실행 주소는 중앙 처리 유닛의 EIP 레지스터로부터 제공되는
    비실행 파일 검사 방법.
  25. 제 14 항에 있어서,
    상기 판단하는 단계는,
    상기 구동되는 프로그램의 명령어의 종류에 기초하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단하는
    비실행 파일 검사 방법.
  26. 제 25 항에 있어서,
    상기 명령어가 구조화된 예외 처리(SEH)인 경우, 상기 구조화된 예외 처리의 체인 값이 상기 정상 주소 범위 정보에 속하는지를 판단하는
    비실행 파일 검사 방법.
  27. 제 25 항에 있어서,
    상기 명령어가 리턴(return), 콜(call) 또는 점프(jump)인 경우, 한 스텝을 진행하여 상기 명령어가 지시하는 상기 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는
    비실행 파일 검사 방법.
  28. 제 14 항에 있어서,
    소정의 디렉토리에 저장되어 있는 복수개의 비실행 파일 각각에 대하여 상기 비실행 파일 검사 방법이 수행되는
    비실행 파일 검사 방법.
  29. 제 14 항에 있어서,
    상기 악성 코드는 악성 쉘(shell) 코드인
    비실행 파일 검사 방법.
  30. 제 14 항 내지 제 29 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독가능 기록매체.
KR1020120050156A 2012-05-11 2012-05-11 비실행 파일 검사 장치 및 방법 KR101265173B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020120050156A KR101265173B1 (ko) 2012-05-11 2012-05-11 비실행 파일 검사 장치 및 방법
PCT/KR2013/003427 WO2013168913A1 (ko) 2012-05-11 2013-04-23 비실행 파일 검사 장치 및 방법
US13/887,610 US8627478B2 (en) 2012-05-11 2013-05-06 Method and apparatus for inspecting non-portable executable files
JP2013100465A JP5326062B1 (ja) 2012-05-11 2013-05-10 非実行ファイル検査装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120050156A KR101265173B1 (ko) 2012-05-11 2012-05-11 비실행 파일 검사 장치 및 방법

Publications (1)

Publication Number Publication Date
KR101265173B1 true KR101265173B1 (ko) 2013-05-15

Family

ID=48666379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120050156A KR101265173B1 (ko) 2012-05-11 2012-05-11 비실행 파일 검사 장치 및 방법

Country Status (4)

Country Link
US (1) US8627478B2 (ko)
JP (1) JP5326062B1 (ko)
KR (1) KR101265173B1 (ko)
WO (1) WO2013168913A1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101646096B1 (ko) * 2016-01-21 2016-08-05 시큐레터 주식회사 메모리 분석을 통한 비실행 파일의 악성 여부 검사 방법 및 장치
KR20160107985A (ko) * 2015-03-06 2016-09-19 삼성전자주식회사 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법
KR20160112744A (ko) * 2015-03-20 2016-09-28 소프트캠프(주) 문서 보안시스템 및 문서 보안방법
KR20170048060A (ko) * 2015-10-26 2017-05-08 삼성에스디에스 주식회사 악성 코드 탐지 장치 및 방법
KR101754720B1 (ko) * 2016-01-14 2017-07-19 주식회사 블랙포트시큐리티 비 실행 파일 내의 악성코드 검출 장치 및 방법
WO2018088844A1 (ko) * 2016-11-11 2018-05-17 주식회사 안랩 비실행형 파일의 악성여부 검사시스템 및 비실행형 파일의 악성여부 검사 방법
KR102469651B1 (ko) * 2021-11-02 2022-11-23 주식회사 케이사인 IoT 장치에서의 IoT 봇넷 차단 방법 및 장치
KR102469654B1 (ko) * 2021-11-02 2022-11-23 주식회사 케이사인 IoT 봇넷 차단 방법 및 시스템
KR102472523B1 (ko) * 2022-05-26 2022-11-30 시큐레터 주식회사 리버싱 엔진 기반의 문서 행위를 판단하기 위한 방법 및 이를 위한 장치
WO2023027228A1 (ko) * 2021-08-26 2023-03-02 시큐레터 주식회사 응용프로그램의 실행 흐름 변경을 통한 비실행 파일의 악성 탐지 방법 및 장치

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140150101A1 (en) * 2012-09-12 2014-05-29 Xecure Lab Co., Ltd. Method for recognizing malicious file
US20160134652A1 (en) * 2014-01-29 2016-05-12 Verint Systems Ltd. Method for recognizing disguised malicious document
US9015814B1 (en) * 2014-06-10 2015-04-21 Kaspersky Lab Zao System and methods for detecting harmful files of different formats
US9838418B1 (en) * 2015-03-16 2017-12-05 Synack, Inc. Detecting malware in mixed content files
US9984230B2 (en) * 2015-06-26 2018-05-29 Mcafee, Llc Profiling event based exploit detection
US9983986B2 (en) * 2015-09-28 2018-05-29 International Business Machines Corporation Testing code response to injected processing errors
CN106919811B (zh) * 2015-12-24 2020-08-18 阿里巴巴集团控股有限公司 文件检测方法和装置
US10423792B2 (en) * 2016-09-23 2019-09-24 Red Hat, Inc. Identifying exploitable code sequences
RU2634178C1 (ru) * 2016-10-10 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных составных файлов
EP3352110B1 (en) * 2017-01-23 2020-04-01 Cyphort Inc. System and method for detecting and classifying malware
CN108970122B (zh) * 2018-06-28 2021-06-08 广州华多网络科技有限公司 防止外挂的方法、装置、终端及存储介质
US11120131B2 (en) 2018-07-30 2021-09-14 Rubrik, Inc. Ransomware infection detection in filesystems
US11636197B2 (en) * 2018-11-15 2023-04-25 Webroot, Inc. Selective import/export address table filtering
US11615022B2 (en) * 2020-07-30 2023-03-28 Arm Limited Apparatus and method for handling accesses targeting a memory

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516304B1 (ko) * 2003-05-16 2005-09-26 주식회사 안철수연구소 프로세스메모리의 악성코드 검출기 및 그 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2570593B2 (ja) * 1993-09-24 1997-01-08 日本電気株式会社 デバッグ装置
US7487544B2 (en) * 2001-07-30 2009-02-03 The Trustees Of Columbia University In The City Of New York System and methods for detection of new malicious executables
US7340777B1 (en) * 2003-03-31 2008-03-04 Symantec Corporation In memory heuristic system and method for detecting viruses
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置
KR100870140B1 (ko) * 2006-11-13 2008-11-24 한국전자통신연구원 악성 코드가 숨겨진 파일 탐지 장치 및 방법
KR100850361B1 (ko) 2007-03-14 2008-08-04 한국전자통신연구원 실행 가능한 코드 탐지 방법 및 장치
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
US8037536B2 (en) * 2007-11-14 2011-10-11 Bank Of America Corporation Risk scoring system for the prevention of malware
KR100992434B1 (ko) * 2008-07-07 2010-11-05 주식회사 안철수연구소 확장자를 위장한 파일을 탐지하는 방법 및 그 장치
EP2256659A1 (en) * 2009-05-27 2010-12-01 NTT DoCoMo, Inc. Method and apparatus for preventing modification of a program execution flow
KR101056283B1 (ko) 2009-10-29 2011-08-11 주식회사 반딧불소프트웨어 악성코드 검출 장치 및 그 방법
KR101228900B1 (ko) * 2010-12-31 2013-02-06 주식회사 안랩 비 pe파일의 악성 컨텐츠 포함 여부를 판단하는 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516304B1 (ko) * 2003-05-16 2005-09-26 주식회사 안철수연구소 프로세스메모리의 악성코드 검출기 및 그 방법

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102355760B1 (ko) * 2015-03-06 2022-01-26 삼성전자주식회사 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법
KR20160107985A (ko) * 2015-03-06 2016-09-19 삼성전자주식회사 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법
KR20160112744A (ko) * 2015-03-20 2016-09-28 소프트캠프(주) 문서 보안시스템 및 문서 보안방법
KR101670456B1 (ko) 2015-03-20 2016-10-28 소프트캠프(주) 문서 보안시스템 및 문서 보안방법
KR20170048060A (ko) * 2015-10-26 2017-05-08 삼성에스디에스 주식회사 악성 코드 탐지 장치 및 방법
KR101754720B1 (ko) * 2016-01-14 2017-07-19 주식회사 블랙포트시큐리티 비 실행 파일 내의 악성코드 검출 장치 및 방법
KR101646096B1 (ko) * 2016-01-21 2016-08-05 시큐레터 주식회사 메모리 분석을 통한 비실행 파일의 악성 여부 검사 방법 및 장치
WO2018088844A1 (ko) * 2016-11-11 2018-05-17 주식회사 안랩 비실행형 파일의 악성여부 검사시스템 및 비실행형 파일의 악성여부 검사 방법
WO2023027228A1 (ko) * 2021-08-26 2023-03-02 시큐레터 주식회사 응용프로그램의 실행 흐름 변경을 통한 비실행 파일의 악성 탐지 방법 및 장치
KR102469651B1 (ko) * 2021-11-02 2022-11-23 주식회사 케이사인 IoT 장치에서의 IoT 봇넷 차단 방법 및 장치
KR102469654B1 (ko) * 2021-11-02 2022-11-23 주식회사 케이사인 IoT 봇넷 차단 방법 및 시스템
KR102472523B1 (ko) * 2022-05-26 2022-11-30 시큐레터 주식회사 리버싱 엔진 기반의 문서 행위를 판단하기 위한 방법 및 이를 위한 장치
WO2023229066A1 (ko) * 2022-05-26 2023-11-30 시큐레터 주식회사 리버싱 엔진 기반의 문서 행위를 판단하기 위한 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
JP2013239172A (ja) 2013-11-28
WO2013168913A1 (ko) 2013-11-14
US8627478B2 (en) 2014-01-07
JP5326062B1 (ja) 2013-10-30
US20130305373A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
KR101265173B1 (ko) 비실행 파일 검사 장치 및 방법
KR101212553B1 (ko) 악성 파일 검사 장치 및 방법
US12019734B2 (en) Methods and apparatus for control and detection of malicious content using a sandbox environment
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
EP3462358B1 (en) System and method for detection of malicious code in the address space of processes
EP3039608B1 (en) Hardware and software execution profiling
US8042186B1 (en) System and method for detection of complex malware
EP2515250A1 (en) System and method for detection of complex malware
CN110119619B (zh) 创建防病毒记录的系统和方法
KR101244731B1 (ko) 디버그 이벤트를 이용한 악성 쉘 코드 탐지 장치 및 방법
US9959406B2 (en) System and method for zero-day privilege escalation malware detection
KR101311367B1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법
CN116738427B (zh) 终端安全防护方法、装置、设备及存储介质
EP3522058B1 (en) System and method of creating antivirus records
Verner et al. MODERN INFORMATION SYSTEMS SECURITY MEANS
Klymenko Modern information systems security means

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
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: 20160506

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170508

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180508

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190507

Year of fee payment: 7