KR101990028B1 - 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템 - Google Patents

바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템 Download PDF

Info

Publication number
KR101990028B1
KR101990028B1 KR1020180148801A KR20180148801A KR101990028B1 KR 101990028 B1 KR101990028 B1 KR 101990028B1 KR 1020180148801 A KR1020180148801 A KR 1020180148801A KR 20180148801 A KR20180148801 A KR 20180148801A KR 101990028 B1 KR101990028 B1 KR 101990028B1
Authority
KR
South Korea
Prior art keywords
file
packer
entry point
packed
analysis
Prior art date
Application number
KR1020180148801A
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 KR1020180148801A priority Critical patent/KR101990028B1/ko
Application granted granted Critical
Publication of KR101990028B1 publication Critical patent/KR101990028B1/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 바이너리 파일 복원을 위한 언패킹 방법 및 시스템에 관한 것으로서, 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법에는, 데이터 추출부에서 PE 파일을 입력받아 PE 파일의 정보를 추출하는 단계, 제 1 데이터 분석부에서 추출된 PE 파일의 정보를 기초로 하여 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계 및 제 2 데이터 분석부에서 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 단계가 포함될 수 있다.

Description

바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템{HYBRID UNPACKING METHOD AND SYSTEM FOR BINARY FILE RECOVERY}
본 발명은 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템에 관한 것으로, 더욱 상세하게는 실행압축된 파일들에 대한 초기 분석을 수행하고, 초기 분석에 기초하여 패킹 유무와 패커의 종류에 따라 정적 분석 또는 동적 분석을 진행함으로써 효율적인 언패킹을 수행할 수 있는 방법 및 시스템에 관한 것이다.
1. PE(Portable Executable) 포맷
PE 파일 포맷은 Windows 환경에서 사용되는 실행 파일의 모든 포맷으로 윈도우 로더가 실행 가능한 코드를 관리하는데 필요한 정보를 캡슐화하여 저장한 데이터 구조체이다. PE 파일은 DOS 헤더, PE 헤더, 각 섹션의 헤더와 섹션 테이블로 구성되어 있다. 이 중 PE 헤더는 PE 파일의 실행 환경 정보를 가지고 있는 구조체를 말한다. PE 헤더는 PE 고유의 식별자로 시작하며, 언패킹에 필요한 정보인 실행될 수 있는 시스템, 섹션 수, 실행 속성, 진입점 섹션의 속성값 등을 포함하고 있다.
2. 패킹 및 언패킹 기법
패킹이란 실행압축이라고도 불리는데, 실행파일(.exe, .dll, .sys 등)을 압축하여 파일 크기를 줄이고 압축된 상태에서 실행을 가능하게 하는 기술이다. 원래 패킹 기술은 DOS OS 파일의 크기를 줄여서 저장 공간을 효율적으로 확보하기 위해서 개발되었지만, 최근에는 악성코드를 은닉하는 방법으로 많이 사용되고 있다. AV-Test사의 자료에 따르면, 2006년에 이미 92% 이상의 악성코드에 실행 압축 기술이 적용되어있다고 한다. 패킹된 파일에서 원본 파일의 코드는 은닉되기 때문에 언패킹 과정을 거쳐야 바이너리 분석이 가능하게 된다. 언패킹된 파일의 PE 헤더를 분석하면 패킹 여부 및 패커 종류 탐지에 필요한 정보를 얻을 수 있다. 파일을 압축시켜주는 패커의 종류는 현재 well-known 패커만 해도 10개가 넘고, 악성코드 제작자나 해커들이 만든 패커(custom)를 합치면 수십 개의 종류가 넘는다.
언패킹 기법은 크게 세 가지로 분류된다. 첫째는 사람이 직접 분석도구를 이용하여 언패킹하는 직접 분석 방법이다. 이는 정확한 압축 해제가 가능하지만, 시간이 오래 걸린다는 단점이 있다. 둘째는 실행 압축 알고리즘의 특징에 기반을 둔 방법이다. 이는 패킹에 사용된 패킹 알고리즘의 특징을 분석하여 언패킹을 진행하는 방법이다. 하지만 어떤 패킹 알고리즘이 쓰였는지 모르는 경우, 사용이 불가하다는 단점이 있다. 셋째는 패킹 알고리즘에 의존하지 않는 언패킹 기법이다. 이는 어떤 패킹 알고리즘으로 패킹된 파일도 언패킹할 수 있다는 장점이 있지만, 시간이 오래 걸린다는 단점이 있다.
3. 악성코드 분석 기법
악성코드 분석방법은 크게 초기 분석, 정적 분석, 동적 분석으로 나뉜다. 제일 처음으로 진행되는 초기 분석은 악성코드 언패킹을 위한 사전 단계로서, 악성코드의 PE 파일의 정보를 추출하여 악성코드 파일의 기본 속성을 분석하는 것이다. 초기 분석에서 추출되는 기본 정보는 파일 이름, 크기, 오프셋, 엔트리 포인트 주소, 엔트리 포인트 섹션 이름, PE 파일 확장자, 진입점 섹션의 엔트로피 값, 진입점 섹션의 속성 값 등이다. 초기 분석에서 추출되는 정보들을 통해 악성코드의 패킹 여부 탐지 및 패커 종류 분류가 가능하므로 초기 분석은 중요한 단계라고 볼 수 있다.
두 번째, 정적 분석이란 악성코드를 실행하지 않은 상태에서 내부 코드와 구조를 파악하고 흐름 분석을 통해 수행 시 어떤 동작이 진행되는지 파악하는 방법이다. 정적 분석은 바이트 코드를 직접 분석하거나 코드를 분해해서 opcode 및 프로그램의 내용에 대한 세부 정보를 추출하는 방식으로 수행된다. 악성코드의 특징을 추출하는 방식은 보통 PE 헤더를 분석하고 정보를 추출하는 경우가 대부분이다. 그리고 PE 헤더의 정보만으로는 분석에 한계가 있을경우, PE파일 전체를 분석하는 방식도 존재한다. 동적 분석과 달리 Anti-VM이나 Anti-Debug 등을 무력화하는 환경 구축에 제한 없이 분석을 진행할 수 있다. 또한, 악성코드를 실행하지 않은 상태에서 분석을 진행하기 때문에 악성코드 감염의 위험과 악성코드 실행에 따른 자원 과부하가 없다는 장점이 있다. 단점으로 정적 분석은 사용자의 숙련도에 따라 분석 결과에서 얻을 수 있는 정보의 수준이 달라질 수 있다는 것이다. 전문가는 분석 결과를 통해 발견하기 어려운 정보를 얻어낼 수 있지만, 초보자는 의심스러운 정보를 탐지하는 것이 어려울 수 있다.
마지막으로 동적 분석이란 악성코드를 직접 실행시켜 코드의 흐름과 메모리 상태를 직접 모니터링하는 방법을 말한다. 동적 분석은 주로 악성 행위를 감시 및 추적하고 실제 동작방식을 분석하는 데 사용된다. 또한, 동적 분석은 행위 정보 기반으로 분석하기 때문에 신규 악성코드에 대한 탐지 가능성이 높고, 분석 기능의 자동화가 가능해 의심스러운 코드나 설계 등 탐지에 대한 편의성이 제공된다. 하지만 동적 분석은 악성코드를 실행시켜 분석하기 때문에 감염을 회피하기 위해서 가상 머신을 활용하거나 추가적인 백업 등의 분석 환경 구축과 분석을 수행하기 위한 조건이 필요하다. 악성코드 동적 분석 시 피해를 막기 위해 실행을 가상 머신에서 하는 경우, 악성코드에는 이를 탐지하고 회피하는 Anti-VM 기능이 존재한다. 또한, 악성코드가 디버거 프로그램을 탐지하여 분석 자체를 회피하는 Anti-Debug의 기능을 포함하는 경우도 존재하기 때문에 분석에 있어서 추가적인 기능을 구현할 필요가 있다는 단점이 있다. 따라서 각 방법의 특징에 맞게 초기 분석, 정적 분석, 동적 분석을 목적에 따라 적절히 활용해야 한다.
4. 언패킹의 한계와 기존 언패킹 기술
파일을 패킹해주는 well-known 패커 알고리즘은 여러 종류가 있으나, 이를 언패킹하는 라이브러리나 툴을 지원하는 패커는 극히 일부만 존재한다. 또한, 툴이 존재하더라도 버전 문제나 라이브러리 충돌 문제로 언패킹을 진행하지 못하는 패커가 많으며, 패킹 알고리즘 자체가 알려지지 않아 언패킹 툴 자체가 없는 custom 패커가 존재한다는 문제가 있다.
대한민국 등록특허공보 제10-1095071호 (2011.12.09)
본 발명은 전술한 바와 같은 문제점을 해결하기 위한 것으로서, 파일의 언패킹 여부 확인, 패커의 종류에 따른 하이브리드 분석(i.e. 정적 분석 또는 동적 분석의 선택적 수행)을 통해 패킹된 바이너리 파일의 복원을 위한 언패킹의 전 과정을 효율적으로 수행할 수 있는 방법 및 시스템을 제공함에 목적이 있다.
또한, 패커의 종류에 따른 하이브리드 분석을 통해 언패킹 분석에 적합한 작업 환경을 제공함과 동시에 언패킹을 위한 분석의 단점을 상호보완할 수 있는 방법 및 시스템을 제공함에 목적이 있다.
본 발명의 일 실시 예에 따른 바이너리 파일 복원을 위한 하이브리드 언패킹 방법에는, 데이터 추출부에서 PE 파일을 입력받아 PE 파일의 정보를 추출하는 단계, 제 1 데이터 분석부에서 추출된 PE 파일의 정보를 기초로 하여 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계 및 제 2 데이터 분석부에서 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 단계가 포함될 수 있다.
본 발명의 일 실시 예에 따른 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계에는, 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 제 1 데이터 분석부에서 PE 파일이 패킹된 것으로 판단하는 단계가 포함될 수 있다.
본 발명의 일 실시 예에 따른 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계에는, 추출된 PE 파일의 정보에 진입점 섹션이 존재하는 경우, 제 1 데이터 분석부에서 데이터베이스에 저장된 시그니처와 동일한 시그니처가 진입점 섹션 내에 존재하는지 여부를 분석하는 단계, 동일한 시그니처가 진입점 섹션 내에 존재하지 않는 경우, 제 1 데이터 분석부에서 진입점 섹션의 엔트로피 값을 측정하여 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 단계 및 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, 제 1 데이터 분석부에서 PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 단계가 포함될 수 있다.
본 발명의 일 실시 예에 따른 정적 분석 또는 동적 분석을 수행하는 단계에서는, 패커가 공지(Well-known)의 패커인 경우, 제 2 데이터 분석부에서 언패킹 툴(Tool)을 사용하여 정적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따른 정적 분석 또는 동적 분석을 수행하는 단계에서는, 패커가 커스텀(Custom) 패커인 경우, 제 2 데이터 분석부에서 오리지널 엔트리 포인트(Original Entry Point, OEP)를 탐지하는 동적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따른 동적 분석은 제 2 데이터 분석부에서 PE 파일의 각 섹션의 엔트로피 값에 기초하여 JMP계열의 명령어가 존재하는지 여부를 분석함으로써 수행될 수 있다.
본 발명의 일 실시 예에 따른 바이너리 파일 복원을 위한 하이브리드 언패킹 시스템에는, PE 파일을 입력받아 PE 파일의 정보를 추출하는 데이터 추출부, 추출된 PE 파일의 정보를 기초로 하여 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 제 1 데이터 분석부 및 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 제 2 데이터 분석부가 포함될 수 있다.
본 발명의 일 실시 예에 따르면, 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 제 1 데이터 분석부에서 PE 파일이 패킹된 것으로 판단할 수 있다.
본 발명의 일 실시 예에 따른 제 1 데이터 분석부에는, 추출된 PE 파일의 정보에 진입점 섹션이 존재하는 경우, 데이터베이스에 저장된 시그니처와 동일한 시그니처가 진입점 섹션 내에 존재하는지 여부를 분석하는 시그니처 분석부, 동일한 시그니처가 진입점 섹션 내에 존재하지 않는 경우, 진입점 섹션의 엔트로피 값을 측정하여 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 엔트로피 분석부 및 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 쓰기 속성 분석부가 포함될 수 있다.
본 발명의 일 실시 예에 따르면, 패커가 공지(Well-known)의 패커인 경우, 제 2 데이터 분석부에서 언패킹 툴(Tool)을 사용하여 정적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따르면, 패커가 커스텀(Custom) 패커인 경우, 제 2 데이터 분석부에서 오리지널 엔트리 포인트(Original Entry Point, OEP)를 탐지하는 동적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따른 동적 분석은 제 2 데이터 분석부에서 PE 파일의 각 섹션의 엔트로피 값에 기초하여 JMP계열의 명령어가 존재하는지 여부를 분석함으로써 수행될 수 있다.
한편, 본 발명의 일 실시 예에 의하면, 전술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
본 발명의 일 실시 예로서 제공되는 하이브리드 언패킹 방법 및 시스템에 따르면, 패킹된 바이너리 파일의 복원을 위한 언패킹의 전 과정(i.e. 파일의 언패킹 여부 확인 및 패커의 종류에 따른 분석)이 효율적으로 수행되도록 할 수 있다.
또한, 언패킹을 위한 정적 또는 동적 분석 기반의 하이브리드 분석을 통해 패커의 종류에 따른 분석 과정의 단점을 상호보완함으로써, 종래 대비 더욱 효과적인 언패킹 과정이 수행될 수 있도록 할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법을 나타낸 제 1 순서도이다.
도 2는 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법의 패킹 여부 분석 및 패커의 종류 탐지 단계를 구체적으로 나타낸 순서도이다.
도 3은 본 발명의 일 실시 예에 따른 패킹 탐지 알고리즘을 나타낸다.
도 4는 본 발명의 일 실시 예에 따른 동적 분석의 OEP 탐지 알고리즘을 나타낸다.
도 5는 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법을 나타낸 제 2 순서도이다.
도 6은 (a) 기존 분석 툴에서 추출된 PE 파일의 정보, (b) 본 발명의 일 실시 예에 따른 시스템에서 추출된 PE 파일의 정보를 나타낸 표이다.
도 7은 본 발명의 일 실시 예에 따라 패커별로 패킹 여부 분석을 수행한 결과를 나타낸 그래프이다.
도 8은 본 발명의 일 실시 예에 따른 PE 파일의 정보 추출 및 패킹 여부 분석을 수행 결과를 나타낸다.
도 9는 본 발명의 일 실시 예에 따른 정적 분석의 결과를 나타낸 표이다.
도 10은 본 발명의 일 실시 예에 따른 PE 파일의 정보 추출 및 섹션 별 엔트로피 값의 측정 결과를 나타낸다.
도 11은 본 발명의 일 실시 예에 따른 동적 분석의 JMP 계열의 명령어 분석 결과를 나타낸다.
도 12는 본 발명의 일 실시 예에 따라 동적 분석을 완료하여 OEP 주소와 재측정된 엔트로피 값이 출력된 결과를 나타낸다.
도 13은 본 발명의 일 실시 예에 따른 동적 분석의 언패킹 검증을 위한 알고리즘을 나타낸다.
도 14는 도 13에서 나타낸 알고리즘을 사용하여 패킹되지 않은 원본 파일과 툴로 언패킹된 파일들의 해시 값을 비교한 결과를 나타낸다.
도 15는 (a) 원본 파일과 툴을 이용하여 언패킹한 파일의 해시 값을 섹션 별로 나타내며, (b) 언패킹 툴로 언패킹한 파일과 본 발명의 일 실시 예에 따른 시스템을 통해 언패킹한 파일의 해시 값을 섹션 별로 나타낸다.
도 16은 본 발명의 일 실시 예에 따른 하이브리드 언패킹 시스템을 나타낸 블록도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시 예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법을 나타낸 제 1 순서도이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 바이너리 파일 복원을 위한 하이브리드 언패킹 방법에는, 데이터 추출부(10)에서 PE 파일을 입력받아 PE 파일의 정보를 추출하는 단계(S100), 제 1 데이터 분석부(20)에서 추출된 PE 파일의 정보를 기초로 하여 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계(S200) 및 제 2 데이터 분석부(30)에서 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 단계(S300)가 포함될 수 있다.
전술한 각 단계들을 살펴보면, 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법은 초기 분석 과정(S100), 정적 분석 과정(S310) 및 동적 분석 과정(S320)으로 크게 3단계로 진행될 수 있다. 이때, 정적 분석 과정(S310)과 동적 분석 과정(S320)은 패커의 종류에 따라 선택적으로 수행되는 하이브리드 방식으로 진행될 수 있다.
먼저, 초기 분석 과정(S100)은 데이터 추출부(10)에서 PE 파일을 입력받아 PE 파일의 정보를 추출하는 단계로서, PE 파일의 크기나 확장자 등 기본적인 정보뿐만 아니라 오프셋, 진입점 섹션의 주소, 섹션별 속성 값 등 언패킹을 수행하기 위해 필요한 기본적인 정보를 얻을 수 있는 단계를 말한다.
예를 들어, 초기 분석 과정(S100)에서는 데이터 출력부가 파이썬 기반의 PE 파일 분석 도구인 PEfile을 사용하여 입력된 PE 파일을 분석하고, 분석된 PE 파일의 정보를 추출할 수 있다. PEfile 이외에도 분석 도구로서 PeiD가 사용될 수 있다.
이때, 초기 분석 과정(S100)을 통해 추출되는 PE 파일의 정보에는 파일 이름, 크기, 오프셋, 엔트리 포인트 주소, 엔트리 포인트 섹션 이름, PE 파일 확장자, 진입점 섹션의 엔트로피 값, 진입점 섹션의 속성 값 등이 포함될 수 있다.
초기 분석이 완료되어 입력된 PE 파일의 정보가 추출되면, 제 1 데이터 분석부(20)에서 추출된 정보에 기초하여 PE 파일의 패킹 여부를 분석하는 단계(S210)가 수행될 수 있다. 제 1 데이터 분석부(20)에 의해 PE 파일이 패킹되지 않은 것으로 분석된 경우, 새로운 PE 파일이 입력되기 전까지 언패킹을 위한 분석 과정이 더 이상 진행되지 않을 수 있다. 반면, 제 1 데이터 분석부(20)에 의해 PE 파일이 패킹된 것으로 분석된 경우, 정적 분석 또는 동적 분석의 진행을 위해 패커의 종류가 탐지될 수 있다(S220).
이하에서는 도 2 및 도 3을 참조하여, PE 파일의 패킹 여부 및 패커의 종류에 대한 분석 과정을 보다 구체적으로 살펴보도록 한다.
도 2는 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법의 패킹 여부 분석 및 패커의 종류 탐지 단계를 구체적으로 나타낸 순서도이며, 도 3은 본 발명의 일 실시 예에 따른 패킹 탐지 알고리즘을 나타낸다.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계(S200)에는, 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 제 1 데이터 분석부(20)에서 PE 파일이 패킹된 것으로 판단하는 단계(S211, S215)가 포함될 수 있다.
즉, PE 파일의 패킹 여부를 분석하기 위해서 제 1 데이터 분석부(20)에서는 먼저 PE 파일의 정보에 기초하여 진입점 섹션이 존재하는지 여부를 분석할 수 있다(S211). 만약 PE 파일의 정보에 진입점 섹션이 존재하지 않는 것으로 확인된다면, 제 1 데이터 분석부(20)에서는 PE 파일이 패킹된 것으로 판단(S215)할 수 있다.
이와 같이 판단하는 이유는 모든 PE 파일에는 진입점 섹션이 존재하기 때문이다. 진입점 섹션이 존재하지 않는다는 것은 PE 파일의 정보가 은닉된 것이므로, PE 파일이 패킹된 것으로 판단될 수 있다. 따라서, 제 1 데이터 분석부(20)에 의해 진입점 섹션이 존재하지 않는 것으로 분석된 경우에는 PE 파일이 패킹된 것으로 판단될 수 있다.
반면, 도 2를 참조하면, 본 발명의 일 실시 예에 따른 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계(S200)에는, PE 파일의 정보에 진입점 섹션이 존재하는 경우, 제 1 데이터 분석부(20)에서 데이터베이스(40)에 저장된 시그니처와 동일한 시그니처가 진입점 섹션 내에 존재하는지 여부를 분석하는 단계(S212), 동일한 시그니처가 진입점 섹션 내에 존재하지 않는 경우, 제 1 데이터 분석부(20)에서 진입점 섹션의 엔트로피 값을 측정하여 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 단계(S213) 및 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, 제 1 데이터 분석부(20)에서 PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 단계(S214)가 포함될 수 있다.
즉, 만약 PE 파일의 정보에 진입점 섹션이 존재하는 것으로 확인된다면, 제 1 데이터 분석부(20)에서 PE 파일에 대한 시그니처 분석(S212), 엔트로피 값 분석(S213) 또는 쓰기 속성 분석(S214)을 순서대로 수행할 수 있다. 이러한 3단계 분석을 통해 PE 파일의 패킹 여부를 보다 정확하고 정밀하게 분석할 수 있다.
도 2 및 도 3을 참조하면, 본 발명의 일 실시 예에 따른 시그니처 분석부(21)에 의해 먼저 수행되는 시그니처가 진입점 섹션 내에 존재하는지 여부를 분석하는 단계(S212)에서는, 시그니처 분석부(21)가 PE 파일의 정보와 데이터베이스(40)에 저장된 시그니처를 비교함으로써, 패킹 유무와 패커의 종류 및 버전을 분석할 수 있다. 만약 진입점 섹션 내에 데이터베이스(40)에 저장된 시그니처와 동일한 시그니처가 존재한다면, 제 1 데이터 분석부(20)는 곧바로 PE 파일이 패킹된 것으로 판단하여 패커의 종류를 탐지할 수 있다.
아래의 [표 1]은 데이터베이스(40)에 저장된 패커들의 시그니처 중 5개를 비교한 결과를 나타낸다. [표 1]을 참조하면, 각각의 패커는 빈 줄로 구분된다. 각 패커의 첫번째 줄은 패커의 종류와 버전, 시그니처의 제적자를 나타낸다. 두번째 줄의 16진수는 패커에 따른 시그니처를 나타낸다. 세번째 줄의 ep_only 값은 시그니처가 진입점 섹션에서 발견될 수 있는지를 나타내는 것으로, ep_only 값이 true이면, 데이터베이스(40)에 저장된 패커의 시그니처가 입력된 PE 파일의 진입점 섹션에서 발견된다는 것을 의미한다.
[표 1]
Figure 112018118477573-pat00001
도 2 및 도 3을 참조하면, 만약 진입점 섹션 내에 데이터베이스(40)에 저장된 시그니처와 동일한 시그니처가 존재하지 않는다면, 엔트로피 분석부(22)에 의해 진입점 섹션의 엔트로피 값을 측정하여 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 단계(S213)가 수행될 수 있다.
본 발명의 일 실시 예에 따른 엔트로피 값에 기반한 분석 과정(S213)은 패킹 여부를 탐지하기 위해 PE 파일의 진입점 섹션의 엔트로피 값을 사용하는 방법이다. PE 파일 전체 섹션의 엔트로피 값으로 패킹 여부를 탐지하면 패킹되지 않은 일반 파일의 엔트로피 값과 겹치는 부분이 발생할 수 있다. 하지만 진입점 섹션의 엔트로피 값으로 패킹 여부를 탐지하면, 패킹된 파일과 일반 파일의 엔트로피 값이 겹치는 범위가 없어질 수 있다. 이에 따라 엔트로피 분석부(22)에서는 패킹된 파일과 패킹되지 않은 일반 파일을 구분하기 위해 진입점 섹션의 엔트로피 값을 사용한다.
도 3을 참조하면, 본 발명의 일 실시 예에 따른 엔트로피 분석부(22)에서는 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하여 PE 파일의 패킹 여부를 판단할 수 있다. 이때, 소정의 범위값이란 엔트로피 값이 5 미만이거나 6.85 초과인 경우를 말한다. 5라는 수치값은 300여개의 PE 파일들을 테스트한 결과에 따라 도출된 값이며, 6.85는 기존의 엔트로피 기반 패킹 탐지 기법의 연구에서 제안된 값이다.
즉, 도 2 및 도 3을 참조하면, 엔트로피 분석부(22)에서는 진입점 섹션의 엔트로피 값이 5 미만이거나 6.85 초과의 범위값에 해당하는 경우에는 PE 파일이 패킹된 것으로 판단할 수 있다. 진입점 섹션의 엔트로피 값이 5 이상 6.85 이하의 범위값에 해당하는 경우에는 쓰기 속성 분석부(23)에 의해 PE 파일의 쓰기 속성의 유무를 판단하는 단계(S214)가 수행될 수 있다.
본 발명의 일 실시 예에 따른 쓰기 속성부에 의한 쓰기 속성의 분석 과정(S214)은 전술한 기준 범위를 엔트로피 값이 벗어나더라도 PE 파일에 쓰기 속성이 존재하는지 여부를 확인하여 패킹 여부를 분석하는 방법이다. 패킹된 PE 파일은 패킹을 해제하는 코드와 패킹된 데이터를 쓰는 권한이 필요하므로, 쓰기 속성을 살펴보면 패킹 여부를 알 수 있다. PE파일의 속성은 PE 파일의 헤더에서 확인할 수 있는데, 이 값은 WinNT.h에 정의되어 있다. 대표적으로 정의된 항목은 실행 가능(0x20000000), 읽기 가능(0x40000000), 쓰기 가능(0x80000000) 등이 있다. 따라서 패킹된 파일의 헤더를 분석한 결과, 파일의 WRITE 속성 값이 0x80000000 이상일 경우 패킹이 되었다고 할 수 있다.
도 2 및 도 3을 참조하면, 이러한 쓰기 속성의 분석 결과, PE 파일에 쓰기 속성이 존재하는 것으로 판단되는 경우, 제 1 데이터 분석부(20)에서는 PE 파일이 패킹된 것으로 판단하여 패커의 종류를 탐지할 수 있다. PE 파일에 쓰기 속성이 존재하지 않는 것으로 판단되는 경우, 제 1 데이터 분석부(20)에서는 PE 파일이 패킹되지 않은 것으로 최종적으로 판단하며, 새로운 PE 파일이 입력되기 전까지 분석이 진행되지 않을 수 있다(S216).
본 발명의 일 실시 예에 따라 진입점 섹션이 존재하는 것으로 판단되어 수행된 시그니처 분석(S212), 엔트로피 값 분석(S213) 또는 쓰기 속성 분석 과정(S214)에서 각각의 분석 결과에 따라 PE 파일이 패킹된 것으로 판단된 경우, 제 1 데이터 분석부(20)에 의해 해당 파일에 대한 패커의 종류가 탐지될 수 있다(S220). 이때, 패커의 종류는 일반적으로 잘 알려진 공지의 패커 또는 코드 제작자나 해커들이 만든 커스텀 패커로 구분될 수 있다. 예를 들어, 제 1 데이터 분석부(20)에 의해 입력된 PE 파일의 패커가 공지의 패커에 해당하는지 여부가 탐지되고, 공지의 패커에 해당하지 않는 경우에는 커스텀 패커인 것으로 구분될 수 있다.
본 발명의 일 실시 예에 따라 패커의 종류가 탐지된 결과, PE 파일이 공지의 패커로 패킹된 경우에는 제 2 데이터 분석부(30)에서 언패킹 툴을 사용한 정적 분석을 수행(S310)할 수 있으며, 커스텀 패커로 패킹된 경우에는 제 2 데이터 분석부(30)에서 엔트로피 기반 동적 분석을 수행(S320)할 수 있다. 정적 분석 또는 동적 분석을 구분하여 언패킹을 수행하는 이유는 정적 분석의 경우 공지의 패커에 대해서는 PE 파일을 실행하지 않고도 언패킹이 가능하지만 언패킹 툴이 제공되지 않으면 언패킹을 할 수 없는 단점이 있으며, 동적 분석은 언패킹 툴이 제공되지 않는 패커나 커스텀 패커를 언패킹 할 수 있지만, 파일을 실행해야 하므로 악성코드에 대한 감염의 위험성이 있기 때문이다. 즉, 본 발명의 일 실시 예에 따른 정적 분석과 동적 분석을 구분한 하이브리드 언패킹을 통해 상호 단점을 보완하여 패커의 종류에 관계없이 언패킹을 수행함과 동시에 감염의 위험성을 최소화할 수 있다.
본 발명의 일 실시 예에 따른 정적 분석의 결과로는 버전 정보 및 메타데이터, 상속된 dll 및 API, 문자열 등이 도출될 수 있다. 이와 같이 도출된 결과를 기초로 하여 패커의 종류에 맞는 언패킹 툴을 사용하여 언패킹을 진행할 수 있다(S311).
도 4는 본 발명의 일 실시 예에 따른 동적 분석의 OEP 탐지 알고리즘을 나타낸다.
본 발명의 일 실시 예에 따른 동적 분석은 PE 파일을 메모리에 업로드하여 코드의 흐름을 분석하는 방식이다. 이때, 패킹된 파일의 오리지널 엔트리 포인트(Original Entry Point, OEP)를 찾는 것이 동적 분석에 필수적인 요소이다. OEP는 패킹된 파일이 메모리 상에 언패킹이 진행되는 과정에서 원본 파일의 코드가 처음 실행되는 위치를 나타내기 때문이다.
도 4를 참조하면, 동적 분석 과정에서 제 2 데이터 분석부(30)는 먼저 PE 파일의 정보에 포함된 각 섹션의 엔트로피 값에 기초하여 분석이 완료될 때까지 JMP계열의 명령어가 존재하는지를 탐지할 수 있다(S321). 패킹된 파일은 코드 섹션이나 데이터 섹션 등이 압축되어 통합되어 있지만 분석 과정에서 압축이 해제되는데, 이때 JMP 계열 명령어를 통해 언패킹된 원본 파일의 시작점으로 이동하기 때문에 JMP 계열 명령어를 탐지하면 OEP를 찾을 수 있다.
만약, JMP계열의 명령어가 섹션의 크기보다 큰 주소나 파일의 주소 밖으로 이동하는 경우에는, 제 2 데이터 분석부(30)에서 이 명령어를 건너뛰고 다음 명령어를 읽어 계속 분석을 수행할 수 있다. 명령어 주소의 범위보다 큰 위치를 가리키는 건 가져오는 .dll파일이나 라이브러리 등을 가리키는 것이고, 파일의 주소 밖으로 이동하는 경우는 해당 섹션의 끝을 의미하기 때문에 OEP와 무관하다. 또한, 같은 섹션으로 이동하는 JMP 명령어는 일반적인 코드 실행을 의미하기 때문에 제 2 데이터 분석부(30)에서는 이러한 명령어는 무시할 수 있다.
이러한 탐지 과정 중 다른 섹션으로 이동 JMP 명령어가 탐지되면, 제 2 데이터 분석부(30)에서는 이동하는 주소를 엔트리 포인트(Entry Point, EP)로 설정할 수 있다. 그다음 이동한 섹션부터 엔트로피 수치를 측정하였을 때, 엔트로피 값의 변화가 0.01 미만이거나 이전 값이 유지된다면 제 2 데이터 분석부(30)에서는 언패킹이 완료되었다고 판단할 수 있다. 이때, 제 2 데이터 분석부(30)에서는 저장된 엔트리 포인트를 OEP로 저장하고 분석을 종료할 수 있다(S322).
도 5는 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법을 나타낸 제 2 순서도이다.
도 5를 참조하면, 본 발명의 일 실시 예에 따른 하이브리드 언패킹 방법에는 PE 파일의 패킹 여부 및 패커의 종류에 대한 분석 단계의 이전에 제 1 데이터 분석부(20)에서 PE 파일에 대한 안티 가상머신(Anti-VM) 또는 안티 디버그(Anti-Debug)를 포함하는 분석 회피 기능이 존재하는지 여부를 분석하는 단계(S130)가 포함될 수 있다.
이는 PE 파일의 언패킹을 위한 하이브리드 분석 과정(i.e. 패커의 종류에 따른 정적 분석 또는 동적 분석 과정)에서 가상머신에서 분석 과정을 회피하는 안티 가상머신 기능 또는 디버거 프로그램을 감지하여 분석 자체를 회피하는 안티 디버그 기능이 포함되는 경우에 이를 검출하여 무력화시키기 위함이다.
본 발명의 일 실시 예에 따라 제 1 데이터 분석부(20)에서 안티 가상머신 또는 안티 디버그를 포함하는 분석 회피 기능이 존재하는 것으로 판단하면, 안티 가상머신 또는 안티 디버그를 포함하는 분석 회피 기능을 우회(S131)하는 동작을 통해 이러한 기능을 무력화시킨 이후 패킹 여부에 대한 분석이 수행(S210)될 수 있다.
본 발명의 일 실시 예에 따라 제 1 데이터 분석부(20)에서 안티 가상머신 또는 안티 디버그를 포함하는 분석 회피 기능이 존재하지 않는 것으로 판단하면, 곧바로 패킹 여부에 대한 분석이 수행(S210)될 수 있다.
이하에서는 본 발명의 일 실시 예에 따른 시스템(100)에 의한 분석의 유효성을 검증한 결과를 구체적으로 살펴보도록 한다.
(1) PE 정보 추출 단계에 대한 검증
기존 분석 툴에서 추출하는 PE 정보와 본 발명의 일 실시 예에 따른 시스템(100)에서 추출하는 PE 정보를 비교하여 유효성을 검증하였다. 실험 파일은 'Windows' 폴더 내의 파일과 일반적으로 구할 수 있는 실행 파일 300개를 임의로 선정하였다. 그다음 널리 사용되는 패커인 UPX, Aspack, Nspack, Upack, Yoda's Protector 패커 중 랜덤으로 선택하여 패킹하고, Exeinfope로 추출한 PE 정보와 본 발명의 일 실시 예에 다른 시스템(100)으로 추출한 PE 정보를 비교한다.
도 6의 (a)는 300개의 파일 분석 결과 중 임의로 10개를 선정하여 Exeinfope로 추출한 PE 정보이고, 도 6의 (b)는 본 발명의 일 실시 예에 따른 시스템(100)으로 추출한 PE 정보이다. 검증 결과 File_Offset과 File_Size를 제외한 정보가 동일하게 추출되었다. File_Size의 경우 근소한 차이를 보이며, File_Offset의 경우 같은 경우와 다른 경우가 존재한다. 이는 Nspack과 Upack 패커 특성에 의한 영향일 수 있다. Nspack은 분석에 대한 수비 기술들이 많이 포함되어 있고, Upack은 까다로운 난독화 기술이 포함되어 디버거에서 혼란을 일으킬 만한 패딩이 적용되어있어 File_Size와 File_Offset에 차이를 보인다.
300개의 파일 중 Upack으로 패킹 가능한 298개의 파일을 패킹하여 PE 정보를 추출한 결과, 6개의 파일에서 File_Offset 필드가 달리 추출되었다. File_Size와 File_Offset 필드는 패킹 여부 탐지와 패커 종류 탐지에 사용되는 필드가 아니므로 본 발명의 일 실시 예에 따른 시스템(100)에서는 그 값이 달라도 무관하다. 결론적으로 Nspack과 Upack 일부 파일의 File_Offset은 일치하기 어려우므로, 이러한 값을 제외하면 본 발명의 일 실시 예에 따른 시스템(100)에 의한 PE 정보 추출이 정확하게 수행되었다고 볼 수 있다.
(2) 패킹 여부 분석 및 패커의 종류 탐지에 대한 검증
실행 파일을 임의의 공지의 패커로 패킹한 후, 본 발명의 일 실시 예에 따른 시스템(100)이 패킹 여부 및 패커 종류를 제대로 탐지하는지를 살펴보았다. Windows 폴더에서 300개의 PE 파일을 무작위로 선택하여 UPX, Aspack, Nspack, Upack, Yoda's Protector 패커로 패킹한 후 이 파일들을 실험에 사용하였다. 총 300개 파일에 대해 각 패커로 패킹이 되지 않는 파일들이 있어서 이를 제거하고, 다음과 같은 숫자의 파일만으로 검증하였다. UPX로 276개, Aspack으로 300개, Nspack으로 298개, Upack으로 289개, Yoda's Protector로 267개를 패킹 후, 패킹 여부 탐지 및 패커 종류 탐지를 검증하였다. 도 7은 본 발명의 일 실시 예에 따른 각 패커별 패킹 여부를 탐지한 결과를 나타낸다. 도 7을 참조하면, 전술한 5개의 패커로 패킹한 데이터로 실험한 경우, 모든 패커가 탐지되며 이에 따른 탐지율이 100%임을 확인할 수 있다. 즉, 본 발명의 일 실시 예에 따른 시스템(100)의 패킹 여부에 대한 분석 과정이 정상적으로 수행됨을 알 수 있다.
다음으로, 도 8은 본 발명의 일 실시 예에 따른 PE 파일의 정보 추출 및 패킹 여부 분석을 수행 결과를 나타낸다. 도 8의 (a)를 참조하면, PE 파일의 정보 추출이 완료되면 파일 오프셋, 엔트리 포인트, 엔트리 포인트 섹션, 데이터 섹션의 첫 바이트, 전체 파일의 엔트로피, 파일 크기 등 PE 파일에 대한 정보가 추출됨을 알 수 있다.
도 8의 (b)는 진입점 섹션의 엔트로피 값에 대한 분석 및 쓰기 속성의 유무에 대한 분석을 통해 패킹 여부가 탐지된 결과를 보여준다. 도 8의 (b)를 참조하면, 진입점 섹션의 엔트로피 값이 6.85보다 크고 쓰기 속성이 있으므로, 분석된 PE 파일은 패킹된 파일인 것을 확인할 수 있다.
(3) 하이브리드 분석에 대한 검증
먼저, 정적 분석의 경우 분석가가 직접 디버거를 사용하여 분석하는 방식이기 때문에 본 발명의 일 실시 예에 따른 시스템(100)에 의한 정적 분석으로 언패킹한 결과에 대한 검증을 수행한다.
도 9는 전술한 300개의 PE 파일 중 원본 PE 파일 10개에 대해 언패킹 전과 후의 분석 결과를 비교한 표이다. 정적 분석에 적합한 항목이 존재하지 않으므로 동적 분석에서 사용하는 쓰기 속성, 진입점 섹션의 엔트로피, 패킹 여부 탐지 결과 항목을 비교한다. 원본 PE 파일을 UPX로 패킹하고, 본 발명의 일 실시 예에 따른 정적 분석으로 언패킹을 수행하여 패킹 전후의 분석 결과를 살펴본다.
도 9의 (a)는 UPX로 패킹한 PE 파일의 언패킹 전의 파일 분석 정보, 도 9의 (b)는 언패킹 후의 파일 분석 정보를 나타낸다. 도 9의 (a)를 참조하면, 진입점 섹션의 엔트로피 값인'EPS_Entropy'의 값은 모두 6.85보다 크고, 패킹 여부를 나타내는'Packing_Detect'컬럼 값은 모두 1인 것을 볼 수 있다. 진입점 섹션의 속성 필드를 나타낸'EPS_Characteristics'의 값인 0xe0000020와 도 9의 (b)의 속성 값을 비교하여 쓰기 속성 값(0x80000000)이 추가된 것을 확인할 수 있다. 따라서 모든 파일이 패킹되어 있다는 것을 확인할 수 있다.
도 9의 (b)를 참조하면, 진입점 섹션의 엔트로피 값이 모두 6.85 이하이고,'Packing_Detect'컬럼 값은 모두 0으로 출력된다. 이때, 진입점 섹션의 속성 값이 0x60000020 인 것을 볼 수 있다. 이 값은 쓰기 속성이 제거되고 실행 가능(0x20000000)값, 읽기 가능(0x40000000)값을 나타낸 것이다. 이와 같은 패킹된 PE 파일의 언패킹 전후에 분석한 결과 값을 통해 정적 분석이 정상적으로 수행되었음을 확인할 수 있다.
다음으로, UPX로 패킹된 일반 파일과 UPX로 패킹된 악성코드 파일, Nspack으로 패킹된 일반 파일로 언패킹을 수행함으로써 본 발명의 일 실시 예에 따른 동적 분석을 검증한다. 도 10은 언패킹을 시작하기 전에 파일에 대한 PE 정보 분석 및 섹션 별 엔트로피 값 계산 결과를 보여준다. 도 10을 참조하면, UPX로 패킹된 파일들은 엔트로피가 6.85를 초과한 것을 확인할 수 있다. Nspack의 경우 엔트로피 값은 6.85가 넘지 않았지만 시그니처와 쓰기 속성으로 패커가 탐지되었다.
도 11은 동적 분석에서 JMP 명령어를 탐지하고 JMP 명령어의 주소, 이동하는 섹션 이름, 변경되는 주소 값에 대한 정보를 보여준다. 도 12는 동적 분석을 완료하고 OEP 주소와 재측정한 엔트로피 값을 출력한 결과을 나타낸다. 섹션에 더이상 JMP 명령어가 존재하지 않고 섹션별로 엔트로피 값을 재계산하였을 때, 엔트로피 값이 6.85 이하면서 안정적으로 유지되었다면 이동한 주소가 OEP인 것을 알 수 있다. 도 12를 참조하면, 본 발명의 일 실시 예에 따른 동적 분석의 결과로 모든 파일의 엔트로피 값이 6.85 이하로 변경된 것과 OEP주소가 탐지된 것을 확인할 수 있다.
아래의 [표 2]는 PE 구조를 볼 수 있는 프로그램인'PEView'파일을 패킹하고, 패킹 툴로 언패킹한 결과와 본 발명의 일 실시 예에 따른 동적 분석을 통해 언패킹한 결과의 일부 바이트 코트 값을 비교하여 나타낸 것이다. 이때, 중심을 기준으로 좌측에 작성된 코드는 패킹 툴로 언패킹한 결과를 나타내며, 중심을 기준으로 우측에 강조되어 작성된 코드는 본 발명의 일 실시 예에 따른 동적 분석을 통해 언패킹한 결과를 나타낸다.
구체적으로, [표 2]는 원본 파일의 data Section과 언패킹된 파일의 UPX0 Section의 바이트 코드, 원본 파일의 code Section과 언패킹된 UPX0 Section의 바이트 코드, 원본 파일의 idata Section과 언패킹된 UPX1 Section의 바이트 코드 값을 비교한 결과를 보여준다. 첫번째 컬럼은 바이트 코드의 주소이고, 나머지 컬럼은 16진수로 표현된 파일의 분석 정보를 나타낸다. [표 2]를 참조하면, 각 섹션의 이름과 위치가 다르더라도 파일 내에 동일한 바이트 코드 값이 존재한다는 것을 알 수 있다.
[표 2]
Figure 112018118477573-pat00002
[표 2]에서 좌측 및 우측 코드의 모든 섹션의 바이트 코드의 주소가 다른 것을 볼 수 있다. 그 이유는 본 발명의 일 실시 예에 따른 시스템(100)의 결과 파일은 언패킹 툴을 이용한 정석적인 언패킹을 진행하는 것이 아니라 OEP를 찾아 실행해 가면서 메모리상에 올라온 코드를 덤프한 결과이기 때문이다. 패킹되지 않은 원본 파일에 있는 각 섹션의 바이트 코드는 섹션의 순서와 동일하게 존재한다. 그러나 패킹되었다가 언패킹된 파일은 원본 파일과 달리 패킹되었을 때의 섹션 명을 유지하고, 패딩이나 쓰레기 값이 제거되지 않고 그대로 유지되고 있기 때문에 원본 파일과 다른 곳에 바이트 코드 값이 나타난다.
원본 파일과 언패킹 파일을 비교할 때마다 바이트 코드가 어디에 위치하는지 탐색하고, 바이트 코드를 하나씩 손수 비교하여 검증하기엔 분석 시간이 오래 걸린다. 이를 해결하기 위하여 두 결과를 비교하는 방법을 설계하고 구현하여 검증을 진행하였다.
도 13은 두 파일의 바이트 코드를 비교하여 블록별 해시 값과 복원율을 결과로 반환하는 알고리즘을 나타낸다.
도 13을 참조하면, 검증 알고리즘은 먼저 패킹되지 않은 원본 파일(A)과 본 발명의 일 실시 예에 따른 시스템(100)으로 언패킹을 진행한 파일(B)이 입력되면, 먼저 패딩과 쓰레기 값을 제거한다. 그 다음으로 (A)의 섹션 별 바이트 코드의 길이를 저장해두고, (A)와 (B) 파일의 바이트 코드를 문자열로 변환한다. 문자열로 변환하는 이유는 비교하는 파일들의 섹션 이름, 개수 등이 다르기 때문에, 파일들에 존재하는 모든 섹션을 합쳐 문자열로 변환하고 문자열로 비교하기 위해서이다.
다음으로, 앞서 저장해둔 (A)의 섹션별 바이트 코드의 길이만큼 (A)와 (B)의 문자열을 해시 값으로 변환한다. 해시를 사용한 이유는 문자열이 일치하는지 확인하기 위해 (A)와 (B) 파일의 문자열을 출력하기에는 그 길이가 길기 때문에, 일치하는 문자열 블럭에 해시알고리즘을 적용하여 해시값이 같으면 두 문자열이 일치한다고 판단하기 위해서이다. 해시 알고리즘으로는 'md5'를 사용하였다.
변환한 해시 값이 같을 경우 해시 값과 복원율을 출력한다. 해시 값이 같지 않을 경우, 바이트 코드의 길이를 감소시키면서 해시 값이 동일하게 나올 때까지 반복하고 복원율을 출력한다. 복원율은 (A)파일에 있는 바이트 코드가 (B)의 파일에 얼마만큼 존재하는지를 나타내는 값이다. 복원율을 계산하는 식은 {(섹션 별 바이트 코드의 총 길이-해시 값이 동일해 질 때까지 감소된 값)/총 길이}*100으로 복원율을 계산한다. 해당 섹션의 해시 값과 복원율 계산까지 완료했을 때, 다음 섹션이 존재하면 이전 동작을 반복하여 (A)파일에 존재하는 모든 섹션의 해시 값과 복원율을 계산한다.
도 14는 도 13에서 제안한 알고리즘을 사용하여 패킹되지 않은 원본 파일과 툴로 언패킹된 파일들의 해시 값을 비교한 결과를 보여준다. 도 14의 (a)는 패킹되지 않은 원본 파일과 언패킹 툴로 언패킹된 파일의 데이터 섹션을 비교한 것이다. 패킹되지 않은 원본 파일의 데이터 섹션의 길이는 48068이고, 언패킹 툴로 언패킹된 파일의 총 길이는 87685이다. 언패킹한 파일의 총 길이가 더 긴 것은 앞서 언급했듯이, 패킹과 언패킹을 거치면서 패딩과 쓰레기 값이 추가되었기 때문이다. 초기 해시의 범위는 패킹되지 않은 원본 파일의 데이터섹션 길이인 48608이다. 정해진 길이만큼 원본 파일과 언패킹된 파일의 문자열에서 해시를 계산한다. 두 해시 값이 같으므로 툴로 언패킹된 파일에서 데이터 섹션은 전부 복원된 것으로 판단할 수 있다.
도 14의 (b)는 언패킹 툴로 언패킹된 파일과 본 발명의 일 실시 예에 따른 시스템(100)에서 언패킹된 파일의 데이터 섹션의 해시 값을 비교한 결과를 나타낸다. 도 14의 (b)에서 해시 값을 적용할 초기 범위는 언패킹 툴로 언패킹된 파일의 각 섹션 길이로 결정했다. 도 14의 (a)와 동일하게 해시 값이 같으므로 본 발명의 일 실시 예에 따른 시스템(100)이 정상적으로 동작하는 것으로 확인할 수 있다.
언패킹 툴로 언패킹된 파일과 본 발명의 일 실시 예에 따른 시스템(100)으로 언패킹된 파일의 총 길이가 다른 것을 볼 수 있다. 본 발명의 일 실시 예에 따른 시스템(100)으로 언패킹한 파일은 프로세스가 실행되면서 메모리에 올라온 바이트 코드를 덤프한 결과로서, 가져오는 dll파일이나 라이브러리의 데이터가 추가된 것이다. 해당 부분은 해시 계산 시에 삭제했기 때문에 검증 결과에 대한 영향은 없다.
도 15의 (a)는 원본 파일과 Tool을 이용하여 언패킹한 파일의 해시 값을 섹션 별로 나타낸 것이고, 도 15의 (b)는 언패킹 Tool로 언패킹한 파일과 본 발명의 일 실시 예에 따른 시스템(100)에서 언패킹한 파일의 해시 값을 섹션 별로 나타낸 것이다. data, code, const 섹션의 해시 값은 도 15의 (a)와 도 15의 (b)가 동일하지만, rsrc와 idata 섹션의 경우 각 섹션의 특징 때문에 원본 파일과 툴로 언패킹한 해시 값이 다르다. rsrc 섹션은 GUI에 관한 정보를 저장하고, idata 섹션은 rdata 섹션의 일부를 분리한 섹션으로 Import Address Table(IAT)에 대한 정보를 갖고 있다. 두 섹션의 공통점은 외부 dll파일이나 라이브러리를 갖고 오기 때문에 원본 파일과 툴로 언패킹한 결과가 달라지게 된다는 점이다. 이는 결국 해시값이 달라지고 복원율에 영향을 미치게 된다. 특히, idata 섹션의 복원율은 평균 20%로 매우 낮은 편이다. 일반적으로 악성코드 탐지 및 분석을 수행할 때 필요한 정보는 Data와 Code 섹션에 존재하므로, 본 발명의 일 실시 예에 따른 시스템(100)이 악성코드 탐지 및 분석에 필요한 섹션들은 제대로 언패킹한다고 볼 수 있다.
아래의 [표 3]은 PE 파일들의 섹션 별 복원율을 비교한 결과를 나타낸다. 먼저, 패킹하지 않은 원본 파일 20개와 그 파일들을 UPX와 Nspack로 패킹하고 언패킹한 결과를 비교하였다. UPX는 언패킹 툴을 사용하여 언패킹한 파일과 우리 시스템(100)으로 언패킹한 파일을 모두 비교하였다. Nspack은 언패킹 툴을 제공하지 않아 본 발명의 일 실시 예에 따른 시스템(100)으로 언패킹한 파일만 비교하였다. 비교 결과로 code, data, rsrc Section의 복원율이 90% 이상인 것을 확인할 수 있었다. rdata와 reloc Section 복원율은 현저히 낮은 것을 확인할 수 있는데, 이는 섹션에 포함되는 내용 때문이다.
rdata 섹션은 Import Address Table(IAT), 섹션의 수 등을 갖고있는 섹션이다. rdata 섹션에서 차이점이 생기는 첫번째 이유는 원본과 패킹된 파일의 섹션 구성이 달라져서 섹션의 개수에서 차이점이 생기기 때문이다. 두번째 이유는 IAT로 인해 발생한다. IAT는 프로그램에서 사용하는 라이브러리 내에서 어떤 함수를 사용하는지, 어떤 dll파일을 가져오는지 알기 위하여 함수 이름과 함수의 시작 주소를 저장해둔 테이블이다. 원본 파일과 달리 패킹된 PE 파일은 패커에 의해 패킹이 수행될 때 필요한 함수가 IAT에 저장된다. 그러므로 IAT의 주소는 원본 파일과 패킹된 파일이 실행되면서 메모리상에 올라와 매핑될 때 사용하는 함수와 dll파일이 달라진다. 그러므로 두 파일의 rdata 섹션의 해시값은 다를 수밖에 없고, 결과적으로 복원율이 낮게 나온다.
reloc Section은 PE 파일이 메모리에 로드될 때 IAT에 저장된 함수의 주소가 이미 사용 중일 경우, 그 함수를 이 섹션에 재배치하여 실행하게 하는 용도로 사용된다. rdata와 같은 이유로 원본 파일과 패킹된 파일은 사용되는 함수와 dll파일이 다르므로 reloc Section의 값이 다를 수밖에 없으며 결론적으로 해시값이 달라지고 복원율이 낮을 수밖에 없다. 차이점이 존재하는 rdata와 reloc Section을 제외한 복원율을 보았을 때, 본 발명의 일 실시 예에 따른 시스템(100)은 UPX와 Nspack에 대해서는 정상적으로 언패킹이 됨을 알 수 있다. 또한, [도 13]을 통해 제시한 해시 알고리즘을 사용한 검증 시스템도 정상적으로 동작한다고 볼 수 있다.
[표 3]
Figure 112018118477573-pat00003
도 16은 본 발명의 일 실시 예에 따른 하이브리드 언패킹 시스템(100)을 나타낸 블록도이다.
도 16을 참조하면, 본 발명의 일 실시 예에 따른 바이너리 파일 복원을 위한 하이브리드 언패킹 시스템(100)에는, PE 파일을 입력받아 PE 파일의 정보를 추출하는 데이터 추출부(10), 추출된 PE 파일의 정보를 기초로 하여 PE 파일의 패킹 여부를 분석하고, PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 제 1 데이터 분석부(20) 및 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 제 2 데이터 분석부(30)가 포함될 수 있다.
본 발명의 일 실시 예에 따르면, 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 제 1 데이터 분석부(20)에서 PE 파일이 패킹된 것으로 판단할 수 있다.
도 16을 참조하면, 본 발명의 일 실시 예에 따른 제 1 데이터 분석부(20)에는, 추출된 PE 파일의 정보에 진입점 섹션이 존재하는 경우, 데이터베이스(40)에 저장된 시그니처와 동일한 시그니처가 진입점 섹션 내에 존재하는지 여부를 분석하는 시그니처 분석부(21), 동일한 시그니처가 진입점 섹션 내에 존재하지 않는 경우, 진입점 섹션의 엔트로피 값을 측정하여 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 엔트로피 분석부(22) 및 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 쓰기 속성 분석부(23)가 포함될 수 있다.
본 발명의 일 실시 예에 따르면, 패커가 공지(Well-known)의 패커인 경우, 제 2 데이터 분석부(30)에서 언패킹 툴(Tool)을 사용하여 정적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따르면, 패커가 커스텀(Custom) 패커인 경우, 제 2 데이터 분석부(30)에서 오리지널 엔트리 포인트(Original Entry Point, OEP)를 탐지하는 동적 분석을 수행할 수 있다.
본 발명의 일 실시 예에 따른 동적 분석은 제 2 데이터 분석부(30)에서 PE 파일의 각 섹션의 엔트로피 값에 기초하여 JMP계열의 명령어가 존재하는지 여부를 분석함으로써 수행될 수 있다.
본 발명의 일 실시 예에 따른 시스템(100)과 관련하여서는 전술한 방법에 대한 내용이 적용될 수 있다. 따라서, 시스템(100)과 관련하여, 전술한 방법에 대한 내용과 동일한 내용에 대하여는 설명을 생략하였다.
한편, 본 발명의 일 실시 예에 의하면, 전술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다. 다시 말해서, 전술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터 판독 가능 매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터 판독 가능 매체에 여러 수단을 통하여 기록될 수 있다. 본 발명의 다양한 방법들을 수행하기 위한 실행 가능한 컴퓨터 프로그램이나 코드를 기록하는 기록 매체는, 반송파(carrier waves)나 신호들과 같이 일시적인 대상들은 포함하는 것으로 이해되지는 않아야 한다. 상기 컴퓨터 판독 가능 매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, DVD 등)와 같은 저장 매체를 포함할 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 추출부 20: 제 1 데이터 분석부
21: 시그니처 분석부 22: 엔트로피 분석부
23: 쓰기 속성 분석부 30: 제 2 데이터 분석부
40: 데이터베이스 100: 하이브리드 언패킹 시스템

Claims (13)

  1. 바이너리 파일 복원을 위한 하이브리드 언패킹 방법에 있어서,
    데이터 추출부에서 PE 파일을 입력받아 상기 PE 파일의 정보를 추출하는 단계;
    제 1 데이터 분석부에서 상기 추출된 PE 파일의 정보를 기초로 하여 상기 PE 파일의 패킹 여부를 분석하고, 상기 PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 단계; 및
    제 2 데이터 분석부에서 상기 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 단계가 포함되며,
    상기 정적 분석 또는 동적 분석을 수행하는 단계에서는,
    상기 패커가 공지(Well-known)의 패커인 경우, 상기 제 2 데이터 분석부에서 언패킹 툴(Tool)을 사용하여 정적 분석을 수행하고, 상기 패커가 커스텀(Custom) 패커인 경우, 상기 제 2 데이터 분석부에서 오리지널 엔트리 포인트(Original Entry Point, OEP)를 탐지하는 동적 분석을 수행하는 것을 특징으로 하는 하이브리드 언패킹 방법.
  2. 제 1 항에 있어서,
    상기 PE 파일의 패킹 여부를 분석하고, 상기 PE 파일이 패킹된 경우에는 상기 패커의 종류를 탐지하는 단계에는,
    상기 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 상기 제 1 데이터 분석부에서 상기 PE 파일이 패킹된 것으로 판단하는 단계가 포함되는 것을 특징으로 하는 하이브리드 언패킹 방법.
  3. 제 1 항에 있어서,
    상기 PE 파일의 패킹 여부를 분석하고, 상기 PE 파일이 패킹된 경우에는 상기 패커의 종류를 탐지하는 단계에는,
    상기 추출된 PE 파일의 정보에 진입점 섹션이 존재하는 경우, 상기 제 1 데이터 분석부에서 데이터베이스에 저장된 시그니처와 동일한 시그니처가 상기 진입점 섹션 내에 존재하는지 여부를 분석하는 단계;
    상기 동일한 시그니처가 상기 진입점 섹션 내에 존재하지 않는 경우, 상기 제 1 데이터 분석부에서 상기 진입점 섹션의 엔트로피 값을 측정하여 상기 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 단계; 및
    상기 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, 상기 제 1 데이터 분석부에서 상기 PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 단계가 포함되는 것을 특징으로 하는 하이브리드 언패킹 방법.
  4. 삭제
  5. 삭제
  6. 제 1 항에 있어서,
    상기 동적 분석은 상기 제 2 데이터 분석부에서 상기 PE 파일의 각 섹션의 엔트로피 값에 기초하여 JMP계열의 명령어가 존재하는지 여부를 분석함으로써 수행되는 것을 특징으로 하는 하이브리드 언패킹 방법.
  7. 바이너리 파일 복원을 위한 하이브리드 언패킹 시스템에 있어서,
    PE 파일을 입력받아 상기 PE 파일의 정보를 추출하는 데이터 추출부;
    상기 추출된 PE 파일의 정보를 기초로 하여 상기 PE 파일의 패킹 여부를 분석하고, 상기 PE 파일이 패킹된 경우에는 패커의 종류를 탐지하는 제 1 데이터 분석부; 및
    상기 탐지된 패커의 종류에 따라 정적 분석 또는 동적 분석을 수행하는 제 2 데이터 분석부가 포함되며,
    상기 제 2 데이터 분석부에서는,
    상기 패커가 공지(Well-known)의 패커인 경우, 언패킹 툴(Tool)을 사용하여 정적 분석을 수행하고, 상기 패커가 커스텀(Custom) 패커인 경우, 오리지널 엔트리 포인트(Original Entry Point, OEP)를 탐지하는 동적 분석을 수행하는 것을 특징으로 하는 하이브리드 언패킹 시스템.
  8. 제 7 항에 있어서,
    상기 추출된 PE 파일의 정보에 진입점 섹션이 존재하지 않는 경우, 상기 제 1 데이터 분석부에서 상기 PE 파일이 패킹된 것으로 판단하는 것을 특징으로 하는 하이브리드 언패킹 시스템.
  9. 제 7 항에 있어서,
    제 1 데이터 분석부에는,
    상기 추출된 PE 파일의 정보에 진입점 섹션이 존재하는 경우, 데이터베이스에 저장된 시그니처와 동일한 시그니처가 상기 진입점 섹션 내에 존재하는지 여부를 분석하는 시그니처 분석부;
    상기 동일한 시그니처가 상기 진입점 섹션 내에 존재하지 않는 경우, 상기 진입점 섹션의 엔트로피 값을 측정하여 상기 엔트로피 값이 소정의 범위값에 해당하는지 여부를 판단하는 엔트로피 분석부; 및
    상기 진입점 섹션의 엔트로피 값이 소정의 범위값에 해당하지 않는 경우, 상기 PE 파일의 쓰기(WRITE) 속성의 유무를 판단하는 쓰기 속성 분석부가 포함되는 것을 특징으로 하는 하이브리드 언패킹 시스템.
  10. 삭제
  11. 삭제
  12. 제 7 항에 있어서,
    상기 동적 분석은 상기 제 2 데이터 분석부에서 상기 PE 파일의 각 섹션의 엔트로피 값에 기초하여 JMP계열의 명령어가 존재하는지 여부를 분석함으로써 수행되는 것을 특징으로 하는 하이브리드 언패킹 시스템.
  13. 제 1 항, 제 2 항, 제 3 항 또는 제 6 항 중 어느 한 항의 방법을 구현하기 위한 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
KR1020180148801A 2018-11-27 2018-11-27 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템 KR101990028B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180148801A KR101990028B1 (ko) 2018-11-27 2018-11-27 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180148801A KR101990028B1 (ko) 2018-11-27 2018-11-27 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템

Publications (1)

Publication Number Publication Date
KR101990028B1 true KR101990028B1 (ko) 2019-06-17

Family

ID=67064842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180148801A KR101990028B1 (ko) 2018-11-27 2018-11-27 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101990028B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102202911B1 (ko) 2019-07-25 2021-01-14 호서대학교 산학협력단 Pe 섹션 정보를 이용한 패커 유형 분류 장치 및 방법
CN113760770A (zh) * 2021-09-14 2021-12-07 上海观安信息技术股份有限公司 基于自动静态资源检测的反调试方法和系统
KR102335475B1 (ko) * 2021-01-05 2021-12-08 (주)모니터랩 악성코드 정적분석을 위한 실행파일 언패킹 시스템 및 방법
KR20220007529A (ko) * 2020-07-10 2022-01-18 주식회사 엔피코어 악성행위 탐지를 위한 클라우드 기반 가상화 장치, 시스템 및 운영 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101095071B1 (ko) 2010-03-04 2011-12-20 고려대학교 산학협력단 엔트로피 분석을 이용한 실행 압축 해제 장치 및 그 방법
KR20120105759A (ko) * 2011-03-16 2012-09-26 한국전자통신연구원 악성 코드 시각화 장치와 악성 코드 탐지 장치 및 방법
KR20150136919A (ko) * 2014-05-28 2015-12-08 주식회사 안랩 악성파일진단장치 및 악성파일진단장치의 진단 방법
KR101580624B1 (ko) * 2014-11-17 2015-12-28 국방과학연구소 벌점기반의 알려지지 않은 악성코드 탐지 및 대응 방법
KR101816045B1 (ko) * 2016-11-29 2018-01-08 주식회사 엔에스에이치씨 악성코드 룰셋을 이용한 악성코드 탐지 시스템 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101095071B1 (ko) 2010-03-04 2011-12-20 고려대학교 산학협력단 엔트로피 분석을 이용한 실행 압축 해제 장치 및 그 방법
KR20120105759A (ko) * 2011-03-16 2012-09-26 한국전자통신연구원 악성 코드 시각화 장치와 악성 코드 탐지 장치 및 방법
KR20150136919A (ko) * 2014-05-28 2015-12-08 주식회사 안랩 악성파일진단장치 및 악성파일진단장치의 진단 방법
KR101580624B1 (ko) * 2014-11-17 2015-12-28 국방과학연구소 벌점기반의 알려지지 않은 악성코드 탐지 및 대응 방법
KR101816045B1 (ko) * 2016-11-29 2018-01-08 주식회사 엔에스에이치씨 악성코드 룰셋을 이용한 악성코드 탐지 시스템 및 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102202911B1 (ko) 2019-07-25 2021-01-14 호서대학교 산학협력단 Pe 섹션 정보를 이용한 패커 유형 분류 장치 및 방법
KR20220007529A (ko) * 2020-07-10 2022-01-18 주식회사 엔피코어 악성행위 탐지를 위한 클라우드 기반 가상화 장치, 시스템 및 운영 방법
KR102530083B1 (ko) * 2020-07-10 2023-05-09 주식회사 엔피코어 악성행위 탐지를 위한 클라우드 기반 가상화 장치, 시스템 및 운영 방법
KR102335475B1 (ko) * 2021-01-05 2021-12-08 (주)모니터랩 악성코드 정적분석을 위한 실행파일 언패킹 시스템 및 방법
WO2022149729A1 (ko) * 2021-01-05 2022-07-14 (주)모니터랩 악성코드 정적분석을 위한 실행파일 언패킹 시스템 및 방법
CN113760770A (zh) * 2021-09-14 2021-12-07 上海观安信息技术股份有限公司 基于自动静态资源检测的反调试方法和系统

Similar Documents

Publication Publication Date Title
KR101990028B1 (ko) 바이너리 파일 복원을 위한 하이브리드 언패킹 방법 및 시스템
US7421587B2 (en) Detecting computer programs within packed computer files
EP2460075B1 (en) Repairing portable executable files
US8555392B2 (en) System and method for detecting unknown packers and cryptors
Jeong et al. Generic unpacking using entropy analysis
US20130246038A1 (en) Emulator updating system and method
US9804948B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
US11675905B2 (en) System and method for validating in-memory integrity of executable files to identify malicious activity
JP5996145B1 (ja) プログラム、情報処理装置、及び情報処理方法
KR20100055314A (ko) 모니터 장치, 모니터링 방법 및 그에 관한 하드웨어용 컴퓨터 프로그램 산출물
US20080222215A1 (en) Method for Deleting Virus Program and Method to Get Back the Data Destroyed by the Virus
US20090138969A1 (en) Device and method for blocking autorun of malicious code
KR102006242B1 (ko) 바이너리 파일에 기초하여 오픈소스 소프트웨어 패키지를 식별하는 방법 및 시스템
US10691791B2 (en) Automatic unpacking of executables
US11836252B2 (en) Machine learning through iterative memory analysis for malware detection
US20220414209A1 (en) Iterative memory analysis for malware detection
US20240061931A1 (en) Executable file unpacking system and method for static analysis of malicious code
Lakhotia et al. Abstracting stack to detect obfuscated calls in binaries
KR101052735B1 (ko) 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
CN111897559B (zh) 热更新代码检测方法、装置、电子设备及存储介质
KR102203200B1 (ko) 역난독화 장치 및 방법
KR20210082706A (ko) 파일 언패킹 방법
EP4109309A1 (en) Machine learning through iterative memory analysis for malware detection
KR102466000B1 (ko) 메모리 페이지 보호 속성을 이용한 범용 언패킹 방법 및 컴퓨팅 장치
KR101977265B1 (ko) 패킹된 실행파일의 시작지점 탐지 방법 및 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant