이번 학기부터 "머신러닝을 이용한 악성 파일 탐지 플랫폼" 이라는 주제로 프로젝트를 하게 되었다.
원래 논문의 순서는
Introduction -> Experimental -> Results & discussion -> Conclusion -> References 순서 이지만,
이번에는 아래의 순서로 읽어보려고 한다.
Title > Abstract > Conclusion > Results & discussion (data)> Introduction > Results & discussion (detail)
CNN 기반 MS Office 악성 문서 탐지
Keywords(키워드) : MS office, malicious, detection, CNN, deep learning
ABSTARCT
해당 논문은 CNN 알고리즘을 이용하여 문서의 스트림 데이터 내에 존재하는
- 악성키워드의 위치를 확인하고
- 인접 정보를 활용하여 악성으로 분류
이 방식으로 악성코드를 탐지한 결과 0.97의 정확도를 보였고, 파일 단위 악성코드 탐지한 결과 0.92의 정확도를 보였다.
Conclusions
문서형 악성 코드의 특징 :
- 실행 파일이 직접적으로 실행되는 것이 아닌 external의 URL을 통한 C&C 서버와의 연결
- VBA 매크로를 담아 프로세스 조작, 스니핑
탐지 방법 (숨겨져 있는 악성코드, 외부 연결 시도하는 키워드) :
- 문서형 악성코드 내 인코딩, 디코딩, 암호화
- 스트림 데이터 수동 분석
DataSet :
- 정상 파일 : 550개
- 악성 파일 : 550개
- 데이터셋 만든 과정 :
- 스트림 데이터 저장
- 순차적으로 악성 키워드 여부 검사
- 악성 키워드 발견
- 악성 키워드 위치 태깅 및 존재 여부 표시
ML Algorithm :
- CNN으로 채택 -> 악성 키워드가 존재하는 위치를 특정하여 인접 이미지와 특징 효과적 인식 및 강조 됨.
-> CNN ML Algorithm :
- 악성 키워드(0x00~0xFF)를 아스키 코드(0 ~ 255)로 변환하여 저장
- CNN 알고리즘을 이용 : 키워드 존재하는 위치 특정, 인접 정보 인식 강조
- 스트림 단위로 테스트 진행 결과 => 0.9717
- 파일 단위로 테스트 진행 결과 => 0.9213
향후 연구 :
- 악성 키워드 추가 수집(정상 파일에 최대한 등장하지 않은 키워드 찾는 것
Experiment Result
1.1 데이터 셋
- 총 1,100개의 파일 사용:
- 악성 파일 550개 (백신 사가 제공)
- 정상 파일 550개
- 정상 파일 포맷 분포:
- PPT: 3개
- XLS: 264개
- DOC: 283개
- 총 550개는 공공 데이터 포털에서 수집
- PPT 5개, XLS 542개, DOC 3개
- 대부분 XLS 형식이 주류
- XLS는 공공기관에서 주로 사용하는 파일
- PPT와 DOC는 비중이 적어 스트림 데이터 수집이 어려움
- 각 파일 스트림 추출 후 총 102,447개의 스트림 데이터셋 생성
- 악성 파일에는 매크로 관련 데이터와 키워드 다수 포함
- 정상 파일에도 존재할 수 있는 매크로 키워드는 악성 키워드 목록에서 제외함
1.2 데이터 전처리
- 데이터 구성:
- 전체 데이터는 아래 4가지 스트림으로 구성됨:
- 악성 파일에서 악성 키워드 존재 스트림
- 악성 파일에서 악성 키워드 비존재 스트림
- 정상 파일에서 악성 키워드 존재 스트림
- 정상 파일에서 악성 키워드 비존재 스트림
- 전체 데이터는 아래 4가지 스트림으로 구성됨:
- 학습 데이터 추출 방식:
- 학습용 데이터는 (1)과 (4)에서 랜덤 추출
- 테스트용 데이터는 (2)와 (3) 사용
- 악성 스크립트 분석 결과:
- 악성 파일은 주로 스크립트 형식
- 악성 키워드는 스크립트 내에 포함되어 있었음
- 일부는 악성 코드가 스트림 중간이나 말미에 위치
- 스트림 샘플링 방식:
- 악성 키워드가 존재하는 구간 기준으로 앞뒤 1000 byte씩 추출
- 악성 키워드가 여러 개일 경우, 가장 앞 키워드부터 가장 뒤 키워드까지 위치를 기준으로 해당 범위를 1000 byte로 잘라 학습용으로 사용
1.3 모델
- CNN 모델 사용 이유:
악성 코드 탐지에 있어 특정 키워드의 앞뒤 문맥(연속성)까지 학습할 수 있기 때문에 CNN 모델을 사용함. - 스트림 데이터 분류 및 수:
- 전체 1100개 파일에서 총 10244개의 스트림 추출
- 이 중 3694개는 정상 파일 중 악성 키워드가 없는 스트림
- 학습용: 2585개 스트림
- 테스트용: 4종류 스트림 모두 사용 → 총 4770개 스트림
- 학습 및 테스트 데이터 구성 방식:
- 각 스트림은 1000 byte로 고정해 input size 맞춤
- 테스트 스트림도 동일하게 랜덤으로 1000 byte 추출
- 모델 구성 (요약):
- Conv2D + MaxPooling2D → Dropout → Conv2D → MaxPooling2D → Dropout
- Flatten → Dense(2회) → Dropout → Output(Dense)
- 총 파라미터 수: 약 2백만 개
- 학습 설정:
- epochs = 25, batch size = 30
- 스트림 단위 학습:
- 학습은 파일이 아닌 스트림 단위로 진행
- 악성 키워드가 존재하는 스트림은 악성, 존재하지 않으면 정상으로 판별
- 스트림 단위로 탐지하기 때문에, 새로운 악성코드도 탐지 가능
1.4 결과
학습/검증 성능
- Epoch 10 기준 성능:
- Train Loss: 0.0174
- Validation Loss: 0.0292
- Train Accuracy: 0.9957
- Validation Accuracy: 0.9935
- 최종 테스트 데이터 성능 (Table 2):
- Loss: 0.2543
- Accuracy: 0.9717
Confusion Matrix 결과
스트림 단위 평가 (Table 3)
- Accuracy: 0.9213
- Precision: 0.972
- Recall: 0.879
- F1-Score: 0.9239
- 기준: 스트림 내 악성 키워드 하나라도 존재 → 악성(malware) 판정
- 총 547개의 파일 중 504개 정확히 분류 (accuracy 기준 0.9214)
- 기준: 파일 내 스트림에 악성 키워드가 하나라도 있으면 → malware
결론 및 Discussion 요약
- 스트림 단위 학습 모델이 0.9717의 높은 정확도를 보였으며,
- 파일 단위로 통합 평가 시에도 0.9214로 우수한 성능을 보임.
- 정상 파일에도 존재할 수 있는 키워드를 제거하고 학습할 경우, 향후 더 높은 정확도도 기대할 수 있음.
Introduction
문서형 악성코드 개요 및 연구 동기 요약
: 악성코드 유포 방식
- 문서형 악성코드는 주로 웹사이트, 이메일 첨부 파일 등을 통해 유포됨.
- PDF, HWP, MS Office 문서가 주된 대상.
: 공격 방식
- 대표적인 공격 기법:
- 매크로(Macro) 삽입
- postscript, 자료 연결, 배포용 문서
- 공격 목표:
- 금융회사, 정부 기관 등 타겟으로
- 외부 URI 또는 C&C 서버에 연결되어 악성 행위 실행
문서형 악성코드 특징
- 악성코드는 종종 VBA 매크로를 통해 실행됨
- 문서 내에 악성 프로세스를 숨기거나 Sniffing 기능 삽입
- 일반 악성코드보다 탐지가 어렵고 은밀하게 동작
연구 목표 및 방법
- MS Office 문서 내부 구조 분석
- 특히 스트림(stream) 데이터에 주목
- exe, dll, PE, shellcode, URL, 키워드 등 수집
- 각 키워드 존재 여부를 기준으로 스트림 데이터를 태깅(tagging)
- 이후 CNN 모델에 적용해 학습시킴
→ 악성/정상 문서 분류 모델 제안
Proposed Model + Experiment Result
3.1 MS Office 구조 분석 (Structure Analysis)
- MS Office 파일 구조는 FAT 구조와 유사한 OLE 방식으로, 내부에 헤더 블록과 데이터 블록이 존재.
- Magic ID로 D0 CF 11 E0 A1 B1 1A E1 값을 포함 → OLE 파일임을 식별.
- OLE 데이터 블록에는 스트림(stream), 프로퍼티, BBAT, SBAT 등이 포함되며, 본 연구는 OLE 내부 스트림 데이터에 집중하여 악성코드 탐지를 수행함.
3.2 MS Office Stream 분석
- 스트림 데이터 분석을 통해:
- 파일 이름, 스트림 이름, 사이즈, 악성 키워드 존재 여부, 시작/종료 지점, 전체 데이터를 수집하여 데이터셋 구축.
악성 의심 키워드 (52개) - Table 1
- 파일 실행 관련: .exe, .dll, .jar, .bax
- 셸코드 관련: shell32, powershell, createprocess 등
- 파일 조작: filecopy, deletefolder, mkdir 등
- URL 접근: urldownloadtofile, urlmon
- 계정 탈취: admin, Password, Security 등
- 암호화/복호화: Base64, MyDecode, Encode64
- 버퍼 오버플로우: ResourceReader, StackSize 등
정상 파일에서도 나타날 수 있는 키워드는 제외하고 정제함.
3.3 제안 모델 (CNN 기반)
- CNN 구조 사용 이유:
- 악성 키워드 앞뒤의 문맥 정보를 반영하여 패턴을 학습하기 위함.
- 스트림 데이터를 수치화하고 1D 데이터처럼 처리하여 CNN에 입력
Fig. 1 설명
- 필터가 적용되는 과정을 시각적으로 설명:
- 5x5 입력 → 3x3 필터 적용 → 필터링된 feature 생성
- CNN이 직접 필터를 생성하고 학습함
Pooling 사용 이유
- CNN의 연산량을 줄이고, 의미 있는 feature를 강조
- max pooling 사용 → 특징 정보 유지 + 사이즈 축소
* 출저를 밝혀지만 혹시라도 문제가 될 경우 비공개를 하거나 바로 삭제 하겠습니다.
https://www.dbpia.co.kr/Journal/articleDetail?nodeId=NODE11056791
CNN 기반 MS Office 악성 문서 탐지 | DBpia
박현수, 강아름 | 정보보호학회논문지 | 2022.4
www.dbpia.co.kr
'악성코드 Malware > 악성 파일' 카테고리의 다른 글
악성 파일 종류 (0) | 2025.03.31 |
---|---|
악성 파일 분석 환경 구축 (0) | 2025.03.30 |