ファイル構造検査による悪性MS文書ファイルの検知手法の評価
大坪 雄平
三村守
田中 英彦
1

目次

１ はじめに２ 関連研究３ 悪性MS文書ファイルのファイル構造
４ 試験プログラムの実装
５ 実験
６ 考察
７ おわりに2

１．はじめに標的型攻撃の脅威① マルウェア付き③

メールを送信マルウェアに感染② 添付ファイルを開く

機密情報

攻撃者

④

機密情報の漏えい

受信者

特定の企業や個人のネットワーク実行ファイルが文書ファイルに埋め込まれた場合受信者がマルウェアに気づくことは難しい
3

１．はじめに実行ファイルが埋め込まれた悪性文書ファイルの構造
文書ファイル
閲覧ソフトの脆弱性を突くコード
実行ファイル・表示用ファイルのデコードし出力
実行・表示

様々な方式でエンコード
文書ファイルの表示内容と関係のない部分

exploit
不正なコードshell code

RAT（実行ファイル）

表示用（ダミー）ファイル

4

２．関連研究

関連研究
静的解析
特徴課題

文書ファイルに不正なコードや実行ファイルが埋め込まれているか否かを判定

不正なコードや実行ファイルは様々な方式でエンコードされている

動的解析
特徴

課題

文書ファイルを実際に閲覧して挙動を解析。

悪性文書ファイルが動作する環境を整備する必要がある

我々の提案
文書ファイルの仕様はエンコードに依存しないことに着目し悪性文書ファイルの特徴を検知する手法を提案

IOT22で発表

本研究

提案した手法の評価

5３．悪性MS文書ファイルのファイル構造

Rich Text形式のファイルの基本構造
RTFのデータはテキスト形式を用いており、プレーンテキストに装飾やレイアウトのための制御用の文字列を付加した形式となっている※
RTFファイルであることを示すシグネチャ{¥rtf
Hello!¥parThis is some {¥b bold} text.¥par}
図：Rich Text形式のファイルの例

最初の‘{‘に対応する’}’がファイルの最後（EOF）

6※：wikipediaより引用

３．悪性MS文書ファイルのファイル構造

特徴１：EOF違反

EOFの後にデータが存在表示に影響を与えないファイ
ル末尾に実行ファイルを挿入{¥rtf
Hello!¥parThis is some {¥b bold} text.¥par}MZ・ｸ・ｺ ｴ
ﾍ!ｸL!This program cannot be run inDOS mode.$猝t讀ｫｵ､ｫｵ､ｫｵｭﾓ
招ｦｫｵｭﾓ楫喚ｵ､ｫｵ0ｪｵｭﾓ卸・ｵｭﾓ匏ｳｫRich､ｫｵ
PE d・ ﾔﾉ[J・ "図：実行ファイルを埋め込まれたRich Text形式のファイルの例
7

３．悪性MS文書ファイルのファイル構造

CFB（Compound File Binary）形式のファイル（doc、xls、ppt）

複数のデータを階層構造で１つのファイルに格納できる
Microsoft社が作成したアーカイブ形式
Micrsoft Word等で使用されている
doc,ppt,xls,jtd/jtdc
Root Storage

Storage 1

Stream B

Storage 2

Stream C

Stream A

Storage 3

ファイルシステムでいうとStream → ファイル
Storage → フォルダ

8
引用：[MS-CFB] – v20130118 Compound File Binary Format （http://msdn.microsoft.com/en-us/library/dd942138.aspx）

３．悪性MS文書ファイルのファイル構造

CFB（doc、xls、ppt）のファイル構造

FATsector

Physical Structure

Directory Entry

headerStream Name : ”a.txt”
Size : 696, Index : 20

File Allocation Table-2

1

Directory Entry

32

Stream A-2

3

Stream A-1

4

Free Sector-25Stream B-2

Stream Name : ”b.txt”
Size : 318, Index : 5
Storage Name : ”root”
Size : -, Index : -index

9

３．悪性MS文書ファイルのファイル構造

特徴２：ファイルサイズ違反

FAT

Physical Structure

Directory Entry

headerStream Name : ”a.txt”
Size : 696, Index : 2-20

File Allocation Table-2

1

Directory Entry

32

Stream A-2

3

Stream A-1

4Free Sector-25Stream B

6malwareStream Name : ”b.txt”
Size : 318, Index : 5
Storage Name : ”root”
Size : -, Index : -7

ヘッダを除いたファイルサイズがsectorサイズ単位でない
10

３．悪性MS文書ファイルのファイル構造

特徴３：FAT参照不可領域

FAT

Physical Structure

Directory Entry

headerStream Name : ”a.txt”
Size : 696, Index : 2-20File Allocation Table-2

1

Directory Entry

32

Stream A-2

3

Stream A-1

4Free Sector-25Stream B-1

6malwareStream Name : ”b.txt”
Size : 318, Index : 5
Storage Name : ”root”
Size : -, Index : -7
FATで参照可能な領域
通常はFATセクタ数×128×512 (Byte)

FATで参照可能な領域にファイルが収まっていない
11

３．悪性MS文書ファイルのファイル構造

特徴４：Free Sector位置違反

FATn

Physical Structure

Directory Entry

headerStream Name : ”a.txt”
Size : 696, Index : 2-20File Allocation Table-2

1

Directory Entry

3

2

Stream A-2

3

Stream A-1

4

Free Sector-25Stream B-1

6malwareStream Name : ”b.txt”
Size : 318, Index : 5
Storage Name : ”root”
Size : -, Index : -sectorサイズが512バイトの場合ファイルの最後に対応するsectorn = (ファイルサイズ-512)/512（n番目のsector）がFree Sector

12

３．悪性MS文書ファイルのファイル構造

特徴５：使途不明のsector

FAT

Physical Structure

Directory Entry

headerStream Name : ”a.txt”
Size : 696, Index : 2-20File Allocation Table-2

1

Directory Entry

32

Stream A-2

3

Stream A-1

4

Free Sector-25Stream B-2

6malwareStream Name : ”b.txt”
Size : 318, Index : 5
Storage Name : ”root”
Size : -, Index : -FAT（DI-FAT、miniFATを含む）、DE、Stream、FreeSectorに分類できないsectorがある
13

４．試験プログラムの実装

ファイル構造の検査による悪性MS文書ファイルの検知検知名

検知内容

手法１

特徴１：EOF違反

手法２

特徴２：ファイルサイズ違反

手法３

特徴３：FAT参照不可領域

手法４

特徴４：Free Sector位置違反

手法５

特徴５：使途不明のsector

対象ファイルRich Text(rtf)CFB（doc,xls,ppt,jtd/jtdc)

実行ファイルが埋め込まれた場所に現れる特徴
exploitやshellcodeの場所には現れない

14

５．実験

検体の概要
2009年から2012年までに複数の組織において受信した不審なメールに添付されたもの
実行ファイルが埋め込まれていることが確認されている文書
ファイル

悪性MS文書ファイル
拡張子

検体数

平均容量（KB）

rtf

98

266.5

doc

36252.2

xls

49

180.4

Jtd/jtdc

17268.5

合計

200243.0※docに拡張子が偽装されたRich Textはrtfでカウント

15

５．実験

実験環境

CPU

Core i5-3450 3.1GHz

Memory8.0GB

OS

Windows 7 SP1Memory(VM)

2.0GB

OS(VM)

Windows XP SP3

Interpreter(VM)

Python 2.7.3

16５．実験

試験プログラムの検知率

拡張子

検知数

検知率

平均実行時間rtf

97 / 98

99.0%

0.021sdoc

35 / 3697.2%

0.062sxls

48 / 49

98.0%

0.051sJtd/jtdc

17 / 17100.0%

0.201s合計

197 / 20098.5%

0.051s17

５．実験

試験プログラムの検知率（特徴別）

検知数

検知率

特徴１

97 / 98

99.0%

特徴２79 / 102

77.5%

特徴３92 / 102

90.2%

特徴４99 / 102

97.1%

特徴５98 / 102

96.1%

18

５．実験

ウイルス対策ソフト等との検知率の比較

各社AV

検知数

検知率

試験プログラム

197 / 200

98.5%

T社AV

42 / 200

21.0%

S社AV

40 / 200

20.0%

M社AV

42 /200

21.0%

T,S,M社AV

86 / 200

43.0%:検体入手時点での最新のパターンファイルを適用したもの

19

５．実験

ウイルス対策ソフト等との検知率の比較

検知数

検知率

試験プログラム

197 / 200

98.5%

OfficeMalScanner（RTFScan）

182 / 200

91.0%

Officeファイル検証機能

33 / 85

38.8%

OfficeMalScanner
Officeファイル検証機能:v0.58、MS文書ファイル専用の解析ツール:Office 2010から導入された正常なファイルか検証する機能

20

６．考察

考察

検知に失敗した原因
原因はexploitやshellcodeに連結する形で実行ファイルが埋め込まれていたdoc:flashの中に実行ファイルが埋め込まれているもの
xls:VBAの中に実行ファイルが埋め込まれているもの
rtf:rtfのexploit部分と一体化（CVE-2010-3333）
今回の検知方式では検知不可能

21

６．考察

試験プログラムの効果

・ 実用性検知率
平均実行時間98.5%
0.051s・ 検知プログラムの更新頻度が低い
検査対象

更新頻度

マルウェア

高

１日あたり２０万個の新種エンコード方式中

マルウェア埋め込みツールの更新頻度に依存ファイル構造低文書ファイル形式の更新頻度に依存

攻撃者の意志でコントロール可能
攻撃者の意志ではコントロールできない

・ 暗号化された圧縮ファイルへの適用
拡張子とファイルサイズの情報のみで77.5%の検知率
パスワード付きzipは復号しなくても書庫のディレクトリ構造は復元可能
22

７．おわりにまとめ• 実行ファイルが埋め込まれた文書ファイルのファイル構造上の特徴を調査し検知法を考察• 上記検知法を実装した試験プログラムを作成し、検知率を評価• 試験プログラムの効果について考察23

７．おわりに今後の課題• より詳細に構造検査する検知手法の考案、実装• 他の文書ファイル形式への対応

24