3.1 Training Algorithm
본 연구에서 제안하는 문서형 악성코드 탐지 시스템은 데이터 수집(data collection), 특징 추출(feature extraction), 모델
학습(model learning), 모델 평가(model evaluation) 단계로 구성하였다. 제안하는 시스템 구성은 그림 1과 같다.
그림. 1. 시스템 구성도
Fig. 1. System Overview
제안하는 시스템은 PDF 문서에서 추출한 42개의 특징 정보를 이용하여 정상 PDF와 악성 PDF를 분류할 수 있는 딥러닝 학습 모델을 개발한다.
제안하는 학습 모델 구축을 위해 사용한 분류 알고리즘은 Random Forest, Support Vector Machine을 이용한다. 또한, 시스템
구현을 위해 파이선 기반의 머신러닝 오픈소스 라이브러리인 Scikit-learn을 사용한다. 특징 추출을 위한 데이터는 VirusSign(10)에서 수집한 악성 PDF 파일 2,000개와 구글에서 수집한 정상 PDF 파일 2,000개로 총 4,000개의 PDF 파일을 사용한다.
Random Forest 알고리즘(6)은 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 분류를 진행한다. Random Forest는
트리 사이에 상관관계를 줄임으로써 분산을 줄여주고, 성능이 뛰어나다는 특징을 가지고 있다.
SVM 알고리즘(7)은 데이터를 분류하는 결정 경계를 구하는 알고리즘이다. 최적의 초평면(Optimal Hyperplane)을 만드는데 기여하는 서포트 벡터만 골라내어
margin이 최대화될 수 있는 방법을 찾는 알고리즘이다. SVM은 오류 데이터에 대한 영향이 적고 과적합 되는 경우가 적으며 신경망보다 사용하기
쉬우므로 많이 사용되는 알고리즘이다. 그러나 입력 데이터 세트가 많으면 학습 속도가 느리다는 단점을 가지고 있다.
학습을 진행할 때 같은 데이터로 반복해서 훈련하게 되면 과적합이 발생하기도 한다. 과적합(Overfitting)이란 학습 데이터를 지나치게 학습하여
학습 데이터에 대해서는 높은 정확도를 나타내지만, 실제 적용 시나 테스트 데이터에서는 성능이 떨어지는 문제를 말한다. 따라서 이를 방지하기 위해 제안하는
방법에서는 교차검증(Cross Validation) 방식을 사용하며, 교차검증을 10으로 설정하여 학습을 진행하였다. 10겹 교차검증이 수행되면 훈련
데이터 세트와 검증 데이터 세트에 대해 각각의 예측 결과인 S_train과 S_test가 생성되고 이 값을 최종 Classifier인 Random
forest와 SVM으로 학습시켜 최종 예측 결과를 출력하도록 구성하였다.
3.2 PDF File Structure
PDF 파일은 그림 2와 같이 Header, Body, Cross Reference Table, Trailer로 구성되어 있다(8).
그림. 2. PDF 파일 구조
Fig. 2. PDF File Structure
표 1. PDF 파일 구조
Table 1. PDF File Structure
Name
|
Specification
|
Header
|
-PDF 시그니처와 문서의 버전 정보를 지정.
-PDF-x.x 형식으로 표현됨.
|
Body
|
-문서의 실질적인 내용을 포함하는 객체들이 트리구조로 구성됨.
-이미지, 글꼴, 텍스트 등이 포함됨.
|
Cross-
reference Table
|
-각 객체를 참조할 때 사용되는 테이블.
-객체의 사용 여부와 식별 번호 등이 저장됨.
|
Trailer
|
-최상위 객체(root)의 위치와 상호 참조 테이블에 대한 링크가 포함됨.
-PDF 파일의 끝을 식별하기 위해 %%EOF로 끝남.
|
오브젝트는 Boolean values, Integer and real numbers, Strings, Names, Arrays, Dictionary,
Streams, 간접 오브젝트와 같이 다양한 종류가 있다.
표 2. 오브젝트 구조
Table 2. Object Structure
Name
|
Specification
|
Boolean values
|
-True, False 값을 가지는 오브젝트
|
Integer and Real numbers
|
-정수형, 실수형
|
Strings
|
-문자 스트링, 16진수 스트링으로 구분됨.
-문자 스트링의 경우 "()"로 표현하고 16진수 스트링의 경우"<>"로 표현함.
|
Names
|
-유일한 문자열, 대소문자 구분 가능
|
Arrays
|
-[] 괄호 내의 연속된 오브젝트 작성
|
Dictionary
|
-2개의 엔트리 오브젝트를 연계한 테이블
|
Streams
|
-연속적인 이진 데이터의 집단.
-길이 제한이 없음
|
간접 오브젝트
|
-다른 오브젝트는 간접 오브젝트의 고유한 식별자를 이용하여 참조 가능
|
다른 타입의 오브젝트는 길이의 제약이 있으므로 악성 PDF는 보통 스트림 오브젝트에 악성코드가 삽입되게 된다.
3.3 PDF Feature Extraction
PDF 파일은 단순한 문서 뷰어가 아닌 이미지, 동영상, 하이퍼링크 등이 포함될 수 있어서 객체마다 다수의 키워드를 가지고 있다.
PDF 파일의 오브젝트 내에 존재하는 특징을 추출하기 위해 PDF 분석 도구인 PDF-Parser(9)를 사용하여 42개의 feature를 추출한다.
∙ PDF 파일 내의 키워드 정보(42개)
/Font, /FontDescirptor, /Outlines,
/XObject, /Annot, /Encoding, /Metadata,
/StructTreeRoot, /URI, /AA, /ExtGState,
/OutputIntent, /ObjStm, /XRef, /F, /OpenAction,
/AcroForm, /Action, /EmbeddedFile, /Filespec,
/JS, /JavaScript, /RichMedia, /XFA, /StructElem, /Catalog,
/Pattern, /OCG, /Group, /Stream, /3D,
/Mask, /Uni-2D, /Sig, /Para, /OBJR, /Launch, /Halftone, /Cmap, /OCMD, /Page, /Pages
다음은 PDF 파일 내에 존재하는 주요한 키워드의 의미이다.
∙ /JS, /JavaScript: 자바스크립트가 포함됨.
∙ /AA, /OpenAction, /Launch: 문서가 열릴 때 자동 실행.
∙ /EmbeddedFiles: 첨부파일이 포함됨.
∙ /URI: PDF 파일에 URI 링크가 포함됨.
그림. 3. 특징 정보 시각화
Fig. 3. Visualization of Feature Information
그림 3은 유의미한 특징 정보와 키워드 간의 관계를 분석하기 위해 추출한 특징의 상관관계를 판다스 모듈을 이용하여 시각화한 정보이며 표 3과 같이 특징 상관관계가 우수한 정보를 학습에 이용하였다.
표 3. 강한 상관관계를 가진 키워드
Table 3. Highly correlated keyword
Highly correlated
|
/Font
|
/FontDescirptor
|
/OutputIntent
|
/StructTreeRoot
|
/JS
|
/JavaScript
|
/RichMedia
|
/3D
|
/Group
|
/Mask
|