動的解析における検体動作時間に関する検討
青木 一史 †

川古谷 裕平 †岩村 誠 †伊藤 光恭 ††NTT 情報流通プラットフォーム研究所
180-8585 東京都武蔵野市緑町 3-9-11{aoki.kazufumi,kawakoya.yuhei,iwamura.makoto,itoh.mitsutaka}@lab.ntt.co.jp
あらまし マルウェアは日々多数の亜種が出現するため，効率よく解析し挙動を明らかにするには，動作させることで解析結果を取得できる動的解析が有効な手段となる．しかしながら，動的解析は解析中に動作した箇所の解析結果しか得られないため，解析時間を十分長く設定しなければ，得られる解析結果は不十分なものとなってしまう．本研究では、動的解析結果がどの程度得られたかの指標として，解析時に実行されたコード量に着目し，CCC DATAset 2010 マルウェア
検体と D3M 2010 マルウェア検体を閉環境/開環境で動的解析したときに実行されたコード量と解析時間の推移を分析する．また，分析結果をもとに，動的解析を行う際に設定するマルウェアの動作時間に関する検討を行う．

Investigation about Malware Execution Timein Dynamic Analysis
Kazufumi Aoki†

Yuhei Kawakoya †Makoto Iwamura†

Mitsutaka Itoh††NTT Information Sharing Platform Laboratories
3-9-11 Midori-Cho, Musashino-Shi, Tokyo 180-8585 JAPAN{aoki.kazufumi,kawakoya.yuhei,iwamura.makoto,itoh.mitsutaka}@lab.ntt.co.jp

Abstract Since there are many malware in the wild, dynamic analysis, which executes themalware to obtain its behavior, is one of the most useful approach to analyze their behavioreﬃciently. In dynamic analysis, however, we can only obtain the behavior that was performed
during the analysis time frame, it is necessary to execute the malware with suﬃcient time frameto obtain its activities well. In this paper, we investigate the relationship between executed
malware code volume and analysis time frame on the CCC DATAset 2010 and the D3M 2010
based on open/closed dynamic analysis system and we consider the analysis time frame to set
in malware dynamic analysis.

1

はじめに

DDoS 攻撃やスパムメールの送信といった攻撃の多くは，マルウェアに感染したコンピュータによってもたらされている．したがって，マルウェア対策を行うことで，インターネットにおけるこれらの脅威を低減させることができる．

効果的なマルウェア対策を講じる上では，マルウェアに感染した端末がどのような振る舞いをするのかを把握することが効果的である．そのため，マルウェアの挙動を解析する技術が重要となる．
マルウェアの解析方法は，“静的解析（ホワイAgentGateKeeper
トボックス解析）” と “動的解析（ブラックボッ
fake HTTPd
Guest OSクス解析）” に大別される．静的解析は，解析
fake SMTPd
To Internetpeek
者が逆アセンブラやデバッガなどを利用し，マ
fake IRCd
VMM
daemonfake DNSd
ルウェアの機能を解明する方法である [1]．マル
Host OSfake NTPd
ウェアの全コードを解析すれば，解析対象のマルウェアがどのような脅威をもたらすのかを詳Controller
細に把握することができる．しかしながら，静的解析には高度な技術力が必要であり，また，
図 1: Botnet Watcher の概要
複雑なマルウェアであれば，解析の難易度が高くなり，解析にかかる時間も長くなってしまう． れた閉環境と，インターネットに接続可能な開一方の動的解析は，マルウェアを実際に動作さ環境の 2 パターンを用いて実験を行った．
せ，その挙動を監視することで解析結果を取得する解析方法である．静的解析のように，解析者がマルウェアを個別に解析せずとも，自動的2 解析手法に解析を行うことができるため，解析自体にか動的解析中に実行されたコード量を観測するかる労力を大きく減らすことができる．昨今は，ために，Botnet Watcher[6] と Stealth Debugger[7]マルウェアの新種や亜種が日々出現しており，静を用いた．以下で，本稿で用いたこれらの技術的解析ではマルウェアの網羅的な解析は困難でについて説明する．
ある．そこで，比較的容易に解析結果を取得できる動的解析が注目されている [2, 3, 4]．
しかしながら，動的解析の場合は，解析中に2.1 Botnet Watcher実行されたコードに基づく解析結果しか得られBotnet Watcher は，マルウェアからの通信にない．したがって，動的解析を行う際には，各対する応答を生成する．図 1 は Botnet Watcher
検体の解析時間を適切に設定しなければ，マルの概略図である．Botnet Watcher は，マルウェウェアのコードが十分に実行されず，得られる解析結果が不十分なものとなる可能性がある． アを動作させる Agent，Agent からの通信に対する応答を行う GateKeeper，Agent 及び Gateマルウェアは，外部への通信や内部リソースKeeper の制御を行う Controller で構成される．
へのアクセスなど，様々な挙動を示す．これら
Agent は，ホスト OS と VMM1 ，ゲスト OSの挙動は，それらのためのプログラムコードをから構成される．解析を行う際は，Agent 内の実行することで行われる．よって，動的解析でどの程度マルウェアの挙動を把握できたのかは， ゲスト OS にマルウェアをインストールし，挙動を監視する．
解析中に実行されたコード量に依存すると考えAgent からの通信は GateKeeper で終端する．
られる．つまり，解析時間と実行されたコード
GateKeeper は，Agent から受け取った通信の量の関係性を明らかにすることは，動的解析をペイロードを解析し，HTTP / SMTP / IRC /行う際に設定すべき解析時間を決める上での有DNS / NTP のいずれのプロトコルであったか用な手がかりとなる．
を判定する．
本稿では，動的解析によりマルウェアの挙動開環境での解析を行う場合には，IRC / HTTPをどの程度把握できたのかの指標として，解析中に実行されたコード量に着目し，解析時間と （GET リクエストのみ）と判定された通信は，マルウェアからのペイロードを実際のインター実行されたコード量の関連性について，CCCネットに転送する．インターネットから取得した
DATAset 2010 マルウェア検体 [5] と D3M 2010
応答は，そのままマルウェアに転送する．DNS
マルウェア検体 [5] を対象に分析した．解析環と判定された通信は，ペイロードから問い合わ
境については，インターネット環境から隔離さ
1

VMM：Virtual Machine Monitor

Guest OS(Windows XP SP2)

うことがあるため，実行トレースの取得に時間がかかってしまうとセッションがタイムアウト
child.exe
Ring 3
Ring 0
してしまい，インターネット上のサーバとのやBackdoor.sys
り取りを踏まえた実行トレースが取得できなく
Stealth Debugger pid, eip, disasm time Parent PID, PID, Procname(VMM)なってしまう．
Stealth Debugger の場合，マルウェアが動作
Trace Log
Process Log
しているレイヤと異なるレイヤで監視するため，
T=10sec
ParentPID, PID, procname
344, 0x00401fd3, je
0x401fd7
1066, 344, C:¥WINDOWS¥system32¥malware.exe
T=20sec
344, 0x00401fd7, push 0x401fb4
マルウェアが有する種々のアンチデバッグ機能を
344, 421, C:¥WINDOWS¥system32¥child.exe
344, 0x00401fd3, je
0x401fd7
344, 0x00401fdc,
T=30sec mov eax,0x401040
344, 0x00401fd7, push 0x401fb4
344, 0x00401fe1,
call eax
344, 0x00401fd3,
je0x401fd7
344, 0x00401fdc, mov eax,0x401040
回避しながら実行トレースを取得することがで344, 0x00401fe3,
jmp eax
344, 0x00401fd7,
push 0x401fb4
344, 0x00401fe1, call eax
344, 0x00401fdc, mov eax,0x401040
344, 0x00401fe3, jmp eax
344, 0x00401fe1, call eax
きる．また，ゲスト OS が実行した命令を VMM
344, 0x00401fe3, jmp eax
で監視するため，実行トレースの収集に伴うコンテキストスイッチの発生を抑えることができ，
図 2: Stealth Debugger を用いた実行トレース
実 OS の動作時間とほぼ同じ速度でマルウェア収集システムの概要を動作させることができる．
Stealth Debugger を利用した実行トレース収
せ FQDN を抽出し，GateKeeper が外部の DNS
集システムの概略図を図 2 に示す．マルウェアにサーバに問い合わせ，その結果を Agent に送信
よっては，自身を別のディレクトリにコピーし，する．NTP と判定された通信は，GateKeeper
コピーされたマルウェアを実行した後，最初にで実時刻に相当する応答を生成し，Agent に送実行されたマルウェアの動作を停止させるもの
信する．
が存在する．そこで，解析対象のマルウェアと，閉環境での解析を行う場合には，TCP の通マルウェアによって生成された子プロセスを実信についてはセッションの確立までは行うが， 行トレースの取得対象とした．なお，起動及びその後のマルウェアからのリクエストに対する終了したプロセスの PID，プロセス名，親子関応答は行わない．また，DNS に対する応答は係については，ゲスト OS にインストールしたGateKeeper 内部で擬似応答を生成し，マルウェ カーネルモジュールにより Stealth Debugger にアに送信する．なお，NTP に対する応答は，開通知し，ログを出力できるようにしている．
環境での場合と同様に，実時刻に相当する応答
コードが実行された時刻の取得には，ゲストを生成し，Agent に送信する．
OS 内にインストールしたカーネルモジュール用いた．ゲスト OS の動作は，ホスト OS と比べてわずかに速度が低下するため，正確なマル2.2 Stealth Debugger
ウェアの動作時間を計測するには，ゲスト OS解析時に実行された命令（実行トレース）の内の時刻を用いる必要がある．そのため，ゲス収集には，Stealth Debugger を用いた．Stealthト OS 内で動作するカーネルモジュールから時Debugger は，仮想マシンを利用し，ゲスト OS
刻を Stealth Debugger に通知し，実行トレースの外側からデバッグ機能を提供するツールであのログがいつ実行されたものであるかを識別でる．
きるようにした．
マルウェアには種々のアンチデバッグ機能が存在するため，通常のデバッガでは実行トレースを十分に取得できない可能性が高い．また， 3
マルウェア検体を用いた実験
アンチデバッグ機能が存在しないマルウェアで
3.1 実験環境あっても，ユーザモードのデバッガで実行トレースの取得を試みると，コンテキストスイッチが解析環境で CCC DATAset 2010 マルウェア
多発し，実行トレースの取得に時間がかかって検体を動作させたところ，SHA1 のハッシュ値
しまう [8]．マルウェアは他のサーバと通信を行が 43A5*のものは正常に動作しなかった．そこ
malware.exe

Process Creation

図 3: CCC DATAset 2010 マルウェア検体における動的解析時間と実行コード割合の関係（閉環境）

図 4: CCC DATAset 2010 マルウェア検体における動的解析時間と実行コード割合の関係（開環境）で，このハッシュ値を持つ検体を除いた 49 検体と，D3M 2010 マルウェア検体である 3 検体を対象に，前述の手法を用いて実行トレースの収集を行った．Botnet Watcher の Agent では，VMM として Stealth Debugger を用い，ゲストOS として Windows XP SP2 をインストールした．各検体の解析では，ゲスト OS 内でマルウェ
アを 1800 秒間（30 分間）動作させ，通信が発生した場合には，Botnet Watcher により閉環境または開環境で応答を行うようにした．なお，各環境における動的解析については，2010 年 8月 23 日から 2010 年 8 月 24 日の期間に行った．
実行された命令のカウントでは，命令実行時の EIP と命令の逆アセンブリをペアとしてカウントした．ただし，EIP と逆アセンブリのペアが同一のものが繰り返し出現した場合には，最初に出現した時点でのみカウントした．また，実行トレースログの肥大化を防ぐために，Windows がデフォルトで備えている cmd.exe や ipconﬁg.exe のような正規プログラムをマルウェ
アが子プロセスとして生成した場合，これらの正規プログラムに対するトレースは取得しなかった．

3.2

実験結果

設定した解析時間を tmax ，解析開始からの経過時間を t，t までに実行されたコード量を Vtとしたとき，t における実行コード割合 Pt を式1 のように定義する．

Pt =

Vt
Vtmax

(1)

また，tmax でコードが十分実行され，Vt =Vtmax × p となったときに解析が完了したものとみなすとき，t で解析が完了した検体の割合
Mf in を式 2 のように定義する．

Mf in =

Mt
Mall(2)

なお，Mall は解析対象の全マルウェア検体数，
Mt は t で解析が完了したマルウェア検体数，pは解析が完了したとみなす際の閾値を設定するための定数（0.0〜1.0）である．
CCC DATAset 2010 マルウェア検体と D3M
2010 マルウェア検体を対象に，閉環境及び開環境で動的解析を行い，解析時間に対する Pt とMf in の変化について分析を行った．

3.2.1

CCC DATAset 2010 マルウェア検体での実験結果

CCC DATAset 2010 マルウェア検体を閉環境及び開環境で動的解析を行った際の t と Pt の図 5: Mf in の時間変化（p = 0.9, p = 1.0）
関係を，それぞれ図 3 及び図 4 に示す．閉環境及び開環境のいずれの結果でも，解析直後に多くのコードを実行し，以降では実行コード量の変化が少なくなる検体が多数確認された．一方で，解析開始から数分間が経過してから，実行コード量が増加するような検体も確認された．
このような検体の場合，しばらくは実行コード量に変化が見られないが，ある時点で急激に実行コード量が増加するような様子が確認された．
また，Vt = Vtmax × p（p = 0.9 または 1.0）となった検体数の推移を図 5 に示す．p = 1.0 とした場合，つまり Vt = Vtmax となった時点で解析が完了したと判定する場合には，60 秒間の解析
では，閉環境だと約 30%，開環境だと約 37%のマルウェアについて解析が行えたとみなせる．
また，p = 0.9 とした場合には，閉環境の場合は約 120 秒，開環境の場合は約 100 秒を解析時間と設定すると，データセットの約 80%の検体の解析を十分に行うことができたとみなせる．

図 6: D3M 2010 マルウェア検体における動的解析時間と実行コード割合の関係（閉環境）

図 7: D3M 2010 マルウェア検体における動的解析時間と実行コード割合の関係（開環境）
析環境が閉環境か開環境かの如何に関わらず同様であった．

4
3.2.2

D3M 2010 マルウェア検体での実験
結果

D3M 2010 マルウェア検体について，閉環境及び開環境で動的解析を行ったときの t と Pt の関係を，それぞれ図 6 及び図 7 に示す．D3M
2010 マルウェア検体のの全てにおいて，解析実施直後にコードを実行した後，新たなコードを実行する様子は確認されなかった．これは，解考察実行コード量の分析の結果，CCC DATAset
2010 のマルウェアの約 8 割については，100 秒から 120 秒を解析時間と設定すれば，1800 秒間で実行されるコードの約 90%を実行した挙動を確認できるという結果が得られた．ただし，マルウェアの挙動が変化する要因として，動作している日時やユーザインタラクションなども考えられるため，動的解析中に実行されるコード量を増加させる，解析時間以外についても検討を進める必要がある．
また，今回の解析では，解析時間の上限を 1800秒と設定している．この時間で全てのマルウェアが十分に動作するのかは，静的解析を行って明らかにする必要がある．仮に，1800 秒では不十分であったとしても，全てのマルウェアについて非常に長い時間をかけて解析を行うのは，昨今のマルウェア数に見られる増加傾向を踏まえると難しいと考えられる．したがって，動的解析では短時間でできるだけ多くの挙動を分析できるようにし，分析ができていない箇所については，動的解析で取得した実行トレースを活用して，静的解析にかかる時間を削減するという手段が効果的ではないかと考えられる．

5まとめ

本稿では，CCC DATAset 2010 マルウェア検体と D3M 2010 マルウェア検体を用いて，動的解析時の解析時間と実行コード量の関連性を分析した．
実験では，CCC DATAset 2010 マルウェア
検体の約 8 割については，100 秒から 120 秒程度を解析時間と設定すれば，1800 秒間で動作するコードの約 90%を実行したときの解析結果が得られるという結果が得られた．しかしながら，動的解析で全てのマルウェアを十分に動作させるには，それ以上に長い解析時間を設定しなければならない．また，マルウェアの挙動に変化をもたらす契機には，特定の日時であることや，ユーザによる操作なども考えられるため，動的解析により多くの挙動を把握するには更なる検討が必要である．
本稿では，データセットとして提供された 50検体程度のマルウェアのみを解析対象とした．
そのため，今回得られた結果が世の中の全マルウェアを網羅した結果であるとは言いがたい．
今後は，能動的攻撃や受動的攻撃により拡散するマルウェア幅広く収集し，それらを対象として実験を行い，動的解析における解析時間の推定を行う．

参考文献[1] Konstantin Rozinov. Reverse code engineering: An in-depth analysis of the baglevirus. 6th Annual IEEE SMC Information
Assurance Workshop, 2005.
[2] Norman.
Norman sandbox.
//www.norman.com/technology/
norman sandbox/, 2009.

http:[3] Anubis.
Anubis - analyzing unknown
binaries. http://anubis.iseclab.org/,
2009.
[4] Carsten Willems, Thorsten Holz, and Felix Freiling. Toward automated dynamic
malware analysis using cwsandbox. IEEE
Security and Privacy, Vol. 5, No. 2, pp.
32–39, 2007.
[5] 畑田充弘, 他. マルウェア対策のための研究用データセット〜MWS 2010 Datasets〜.
マルウェア対策研究人材育成ワークショップ
2010, 2010.
[6] 青木一史, 川古谷裕平, 岩村誠, 伊藤光恭. 半
透性仮想インターネットによるマルウェアの動的解析. マルウェア対策研究人材育成
ワークショップ 2009, 2009.
[7] 川古谷裕平, 岩村誠, 伊藤光恭. ステルス
デバッガを利用したマルウェア解析手法の提案. マルウェア対策研究人材育成ワーク
ショップ 2008, 2008.
[8] Rafal Wojtczuk.
umss:
eﬃcient
singlesteppingonWin32.
http://www.avertlabs.com/research/blog/index.php/2006/11/29/
umss-efficient-single-stepping-on-win32/,
2006.