악성코드 Malware/악성 파일

[논문 분석] CNN 기반 MS Office 악성 문서 탐지

forensic-focus 2025. 4. 9. 22:20

이번 학기부터 "머신러닝을 이용한 악성 파일 탐지 플랫폼" 이라는 주제로 프로젝트를 하게 되었다.

 

원래 논문의 순서는

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 알고리즘을 이용하여 문서의 스트림 데이터 내에 존재하는

  1. 악성키워드의 위치를 확인하고
  2. 인접 정보를 활용하여 악성으로 분류

이 방식으로 악성코드를 탐지한 결과 0.97의 정확도를 보였고, 파일 단위 악성코드 탐지한 결과 0.92의 정확도를 보였다.

 

Conclusions

문서형 악성 코드의 특징

  • 실행 파일이 직접적으로 실행되는 것이 아닌 external의 URL을 통한 C&C 서버와의 연결
  • VBA 매크로를 담아 프로세스 조작, 스니핑

탐지 방법 (숨겨져 있는 악성코드, 외부 연결 시도하는 키워드) : 

  1. 문서형 악성코드 내 인코딩, 디코딩, 암호화
  2. 스트림 데이터 수동 분석

DataSet

  • 정상 파일 : 550개
  • 악성 파일 : 550개
  • 데이터셋 만든 과정 :
    1. 스트림 데이터 저장
    2. 순차적으로 악성 키워드 여부 검사
    3. 악성 키워드 발견 
      • 악성 키워드 위치 태깅 및 존재 여부 표시

ML Algorithm

  • CNN으로 채택 -> 악성 키워드가 존재하는 위치를 특정하여 인접 이미지와 특징 효과적 인식 및 강조 됨.

  -> CNN ML Algorithm 

  1. 악성 키워드(0x00~0xFF)를 아스키 코드(0 ~ 255)로 변환하여 저장
  2. 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가지 스트림으로 구성됨:
      1. 악성 파일에서 악성 키워드 존재 스트림
      2. 악성 파일에서 악성 키워드 비존재 스트림
      3. 정상 파일에서 악성 키워드 존재 스트림
      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