• 検索結果がありません。

第 7 章 関連研究 81

7.5 結言

本章では,関連研究について述べた.既存の仮想化技術を活用したマルウェア動的 解析システムと比べ,Alkanetはアンチデバッグに対する耐性と低オーバヘッドを両 立を可能としている.さらに,典型的なプロセス感染型マルウェアについても解析可 能である点で既存研究より優れている.プロセス感染型マルウェアを解析可能とする 既存研究として,スタックトレースを用いたものや細粒度の挙動観測を行うものなど がある.前者はスタックの信頼性に課題があり,後者は観測オーバヘッドが大きく短 時間での解析に向かない.BTSトレースは,既存のシステムコールトレーサに対し,

比較的低オーバヘッドかつ高信頼な呼出し元識別機能を実現可能とする点で既存研究 と異なる.また,BTSトレースと同様に分岐命令から関数呼出し階層を再現する既存 研究として,分岐命令に着目してコントロールフローを検証することで攻撃を検出す るものが挙げられるが,分岐記録の取得方法や手法の実現方法が異なる.

85

8 章 結論

コンピュータとネットワークの普及に伴い,マルウェアの目的は機密情報や金銭の 窃取,更なる攻撃への踏み台確保などへと変化し,より社会を脅かす存在となってい る.マルウェアへの対策は,まずマルウェアを解析し,その特徴を理解することから 始まる.しかし,近年のマルウェアには解析を妨害する様々な技術が組み込まれてい るため,短時間で解析することが困難になっている.すなわち,新たに出現したマル ウェアに対して対策が実現するまでに時間がかかり,被害の拡大につながっている.

マルウェアの解析手法は静的解析と動的解析に大別されるが,マルウェアのコードを 読み解く静的解析は,コードの難読化やパッキングなどの解析妨害手法の影響を受け やすく,短時間での解析に向いていない.以上から,本研究ではマルウェアを実行し て挙動を観測する動的解析をベースとし,短時間でより精度の高い解析を可能とする ことを目的としている.これにより,対策の実現までの時間を短縮させ,マルウェア に脅かされない社会の実現に寄与することを目指している.

近年のマルウェアは,下記の動的解析における本質的な課題を悪用することで挙動 観測自体を困難にする機能を持つ.

観測期間内で実行されなかった挙動は解析できない.

マルウェアによって行われた挙動のみを識別可能にする必要がある.

挙動観測の詳細度を向上させると,観測によるオーバヘッドも増加する.

動的解析を妨害する機能の1つであるアンチデバッグ機能は,自身が解析下にある ことを検出し,意図的な動作の停止や解析を妨害する活動を行うことで,本来の機能 を解析されることを防ぐ.もう1つの動的解析妨害機能であるプロセス感染機能は,

他のプロセス内に自身のコードを挿入することで,そのプロセスを隠れ蓑として悪意 ある挙動を行う.感染されたプロセス本来の挙動からマルウェアの挙動のみを識別す ることは困難である.

既存研究では,上記のような動的解析妨害機能を持つマルウェアを解析可能にする ために,解析機能の隠蔽や細粒度での挙動観測を行っているものがある.しかし,こ

れらは,マルウェアから容易に検出可能な特徴を残しているものや,オーバヘッドが 高く短時間での解析に向かないものが多い.そこで,本研究では具体的に下記の条件 を満たす動的解析手法の実現を目指した.

(1) オーバヘッドが少なく,解析速度の低下を軽減できる.

(2) 解析に耐性を持つマルウェアでも解析できる.

(3) 他のプロセスへ感染するマルウェアでも解析できる.

本論文では,軽量なVMMをベースとするシステムコールトレーサ Alkanetと,プ ロセッサの持つブランチトレース機能を活用したシステムコールの呼出し元識別手法 BTSトレースの2つの手法を提案した.Alkanetは,典型的なマルウェアについて短 時間で解析可能とするため,軽量なVMMであるBitVisorをベースとして,マルウェ アの可視範囲内に解析システム特有の特徴を出さずにシステムコールトレースを行う 機能を実現する.これにより,アンチデバッグ機能に対する耐性と低オーバヘッドで の挙動観測の両立を実現している.プロセス感染型マルウェアについては,被感染プ ロセス内に作られた感染領域を起源とする挙動を識別可能とすることが望ましいが,

高速さを優先する粗粒度の観測手法では困難である.そこで,Alkanetでは,システム コールを発行したスレッドに着目した比較的粗粒度かつ低オーバヘッドの識別手法を 実現し,典型的なプロセス感染型マルウェアを解析可能としている.呼出し元識別手 法 BTSトレースは,システムコール発行までにそのスレッドが実行したメモリ領域に 着目し,より細粒度でシステムコールの呼出し元を識別する.BTSトレースをAlkanet の拡張機能として実現することで,感染領域を起源とする挙動を識別可能にする.

4章では,Alkanet の設計と実装の詳細を述べた.評価では,PCMark05 によるベ

ンチマークテストによりAlkanetは実環境の 78%の性能であり,既存の動的解析シス テムより高速に挙動観測が可能であることを確認している.また,典型的な34種類の アンチデバッグ手法について検証し,32種類で検出されないことを確認した.検出さ れた2種類の手法についてもAlkanetの実装を改善することで回避可能である.さら に,プロセス感染型マルウェアが被感染プロセスに挿入したスレッドの挙動を観測可 能であることも確認し,その他33検体の解析結果からさまざまなマルウェアに対して 十分な動的解析が可能であることを示した.

5章では,2つ目の提案手法である呼出し元識別手法BTSトレースについて述べた.

BTSトレースと同様の機能を実現する既存手法には,スタックから戻りアドレスを取 得するスタックトレースやメモリの読書きを追跡するテイント解析をベースとした手

87 法が挙げられる.しかし,スタックはマルウェアによって改竄可能であるため信頼性 に課題があり,テイント解析はオーバヘッドが大きいという課題があった.提案手法 は,プロセッサが持つブランチトレース機能 BTSによって記録された分岐命令の情 報に基づいて関数呼出し階層を取得するBTSトレース本体と,Windowsが持つメモ リ管理情報と発行されるシステムコールの情報を用いて感染領域を識別する手法から 成る.これらにより,提案手法では,信頼性の高い情報源に基づき,感染領域を経由 してシステムコールに至ったことを既存研究と比べて低オーバヘッドで検出可能とし た.なお,BTSでは,VMMがVMを観測するために用いることは想定されておらず,

プロセスやスレッドを区別する機能を持たない.そのため,Alkanetに当該機能を実 装する上での課題として,VMMからBTSを用いてVM内のプロセスやスレッドを観 測可能とする必要があった.そこで,Windowsのページテーブルやメモリ管理データ 構造の書き換えによるBTSバッファの確保や,ハードウェアブレイクポイントを用い たスレッドスイッチの監視などを行うことで解決を図った.評価では,DLLタイプの マルウェアやスタックを偽装するプログラム,スレッド乗っ取り型マルウェアを用い て検証を行い,提案手法の有効性を確認した.

本論文で述べた提案手法の基盤となる Alkanetは,既存の多くのマルウェア動的解 析システムと同様に,x86版 Windows XP Service Pack 3 をマルウェア実行環境とし た.しかし,2015年現在ではWindows XPのサポートは既に終了し,市場シェアが新

しいWindowsへ移行しており,それに伴いマルウェアの世代交代も進んでいる.6章

では,Windows 10 x64 を対象とするプロトタイプ Alkanet10 の実装を示し,新しい

Windows でも Alkanet が適応可能であることを示した.システムコールの処理の多

くは x64 版 Windows で共通であるため,Windows 7 x64とWindows 10 x64におい てほぼ同様の手法でシステムコールトレースを実現可能であった.すなわち,今後登

場するWindowsにおいてもAlkanetは実現可能であると考えられる.

提案手法は,高速な粗粒度の挙動観測手法の1つであるシステムコールトレースを ベースとして,動的解析妨害機能を持つマルウェアに対しても高い精度での解析を可 能とした.このようなマルウェアの解析には,これまで解析に時間がかかる細粒度の 挙動観測や静的解析が必要であったため,提案手法は解析時間の短縮に寄与できたと いえる.さらに,提案手法は,新しいWindowsにおいても適応可能なため,今後登場 するマルウェアにも有効であると考えられる.

今後は,Alkanet7 や Alkanet10を新たな基盤として,最新のマルウェアの解析を継

続して行える環境を構築する.また,呼出し元識別手法についてもさらに改善するべ く,call 命令とret命令が必ずしも対応付かない場合における関数呼出し階層の取得手