マルウェア分析の舞台裏 - チェック・ポイント・ソフトウェア・テクノロジーズ

2014年3月14日
チェック・ポイント・ソフトウェア・テクノロジーズ株式会社
ThreatCloudセキュリティ情報分析:
マルウェア分析の舞台裏: 使用されるツールと手法
チェック・ポイント・マルウェア調査チーム
概要
セキュリティ研究者やセキュリティ・ベンダーは、検出されたマルウェアの分析結果を随時公表しています。このような
情報はマルウェアの特性や活動の理解に役立ちますが、専門家以外の方にとってマルウェア分析は、ブラックボック
スの中で不可思議なことが行われているような、どこか謎めいた印象を与えるようです。
そこで本稿では、マルウェア分析の舞台裏と題して、セキュリティ担当者やビジネス担当者の方を対象に、プロのマル
ウェア研究者がマルウェア分析に使用しているツールや手法をご紹介することにします。ここで取り上げるツールや手
法は、経験を積んだマルウェア研究者にはおなじみですが、セキュリティ管理者やIT担当者の方が、それらについて
説明を受けたり使用場面を目にしたりする機会はほとんどないと思います。本稿では、チェック・ポイントのセキュリテ
ィ・ゲートウェイとThreat Emulation Serviceを利用するお客様環境で最近検出された実際のマルウェアを例に、具体
的な分析手順を見ていきます。
分析
2014 年 3 月 8 日、チェック・ポイントのセキュリティ・ゲートウェイとクラウド・ベースの Threat Emulation Service を
利用するお客様環境で、ある不審なファイルが検出されました。一報を受けたチェック・ポイントのマルウェア調査チー
ムは、問題のファイルをダウンロードして手動による追加の分析作業を開始しました。
このファイル(MD5: 0a56f31d1f059241d24e1814436f24da)は、VirusTotal に登録済みのいずれのアンチウ
イルス製品でもマルウェアとして検出されなかった結果を受けて、調査チームは、本当に不正なファイルなのか、それ
とも単なる未知のファイルなのかを確認するため、詳細な分析を実施することにしました。
このようなファイルを分析する際には、静的、あるいは動的な手法を採用します。
静的な分析
静的な分析では、ファイルを実行せずにファイル内の情報を抽出します。まず、問題のWord文書ファイルから、
以下のようなメタデータを抽出する作業を開始しました。




ファイルの作成に使用されたアプリケーション
作成日時
ファイルの作成ユーザ
ファイルの作成元や特性に関するその他の詳細情報
情報の抽出には、Exiftool というツールを使用します。Exiftool は、「各種ファイルのメタ情報の読み出し、書き込み、
編集を行える、プラットフォーム非依存の Perl ライブラリとコマンドライン・アプリケーション」(配布元 Web サイトより)
です。
問題のファイルに対してExiftoolを実行すると、すぐに以下のような結果が出力されます。
この出力結果から判明する情報を以下に示します。
 ファイルの作成に使用されたのは、自動ツールではなく Microsoft Office Word
 ファイルの作成日は 2014 年 3 月 8 日
 ファイルを作成した人物のマシン上のユーザ名は「user」(これはほとんど手がかりになりません)
注:
メタデータは偽造されている可能性があるため、参考レベルに留めておきます。
静的な分析では、ファイルからASCII文字列をダンプするという手法もよく利用されます。場合によっては、ファイル
に書き込まれた平文の文字列(暗号化されていない文字列)から有益な情報を入手できる可能性があります。この
作業には、Microsoftが公開しているトラブルシューティング・ツール集であるSysinternalsに含まれるStringsという
ツールを使用しました。
Strings の出力の冒頭に、「Macro」(マクロ)という単語が表示されているのが分かります。マクロとは、文書内での
操作を自動化する 1 つまたは一連の処理を意味し、多くの場合、Visual Basic で作成され文書内に埋め込まれます。
マクロは、ログイン中のユーザと同じ権限で実行されます。
注: セキュリティのベスト・プラクティスでは、マクロの自動実行をデフォルトで無効(オフ)にしておくことが推奨され
ます(Threat Emulation Service が動的な分析でこのファイルを検出できたのは、同サービスの OS サンドボックス・
イメージで Microsoft Word マクロの自動実行が有効になっていたためです)。
ここまでの静的な分析で、問題のファイルにはマクロが埋め込まれているらしいという疑いが浮上しました。しかし
マクロの動作内容を把握するには、マクロ自体を分析する必要があります。そこで、Reconstructorが公開している
OfficeMalScannerというツールを使用して、文書ファイルからマクロを抽出します。
マクロが単独のファイルとして抽出されました
マクロの Visual Basic コードを分析したところ、xx [ドット] dropboxusercontent [ドット] com から Portable
Executable(PE)形式のファイルをダウンロードして実行する処理が組み込まれていました。
ユーティリティPeIDで確認してみると、このPEファイル(MD5:
0F34211D40A7199B9709EB68231557D0)はVisual Studio C#(.NET)でコンパイルされていま
す。
このファイルは.NET Framework の開発環境で作成されています。そのため、.NET Reflector というツールを
使用して容易に逆コンパイルし、バイトストリームを元のソースコードに変換できました。
逆コンパイルしたファイル構造を以下に示します。
Reflector では、ファイルのオブジェクト、ストリーム、セクション間の情報を参照することができます
これらのオブジェクトを調べていたところ、いかにも不審な、暗号化されたリソース・オブジェクトが目にとまりました。
注: ここまでの分析で判明した事実は、問題のファイルが疑わしいということだけです。不正ファイルである証拠は
まだ何も確認できていません。先ほどの Word ファイルと同様、この PE ファイル(.NET)に対しても静的な分析を実施
し、作成日や文字列などの情報を抽出する必要があります。
しかし残念ながら、問題のペイロードは暗号化されていたため、静的な分析では有益な情報を入手できません。
先ほど逆コンパイルした元のソースコードを精査して、ペイロードを手動で復号化することもできますが、この作業は
手間がかかるうえ、正確な復号化の実行は容易ではありません。そこで代わりに、より効果的な方法である動的な分
析を実施することにします。
動的な分析
動的な分析では、ファイルを実行中にファイル内の情報を抽出します。ファイルを実行し、その間の動作を監視して、
具体的にどのような活動を行うのかを見ていきましょう。
1 回目の実行
まず、ファイルの実行時に別のファイルがシステム上に作成されるかどうかを確認するため、API Monitor というユー
ティリティを使用して CreateFile() API を監視します。
また、暗号化されたリソースはおそらくファイルに書き込まれて実行されるはずだという仮説の下に、
CreateProcess() APIも監視しました。
2 つの API を監視するよう設定したうえでファイルを実行してみましたが、何も確認できません。失敗です。
2 回目の実行
2 回目は、Dumpit などのツールを使用してマシンのメモリをダンプし、Volatility Framework を使用してメモリ上のコー
ドなどを抽出します。ここで調査チームは、ファイルを実行するといずれかの時点でリソースが復号化され、メモリに読
み込まれるだろうという仮説を立てました。
Volatility Frameworkには、新たなメモリ割り当てやコード挿入を検索できる便利なプラグインがいくつか用意されて
います。しかしこれらのプラグインをメモリ・ダンプに対して実行しても、これといった情報は見つかりません。メモリ分
析の難点は、ダンプのタイミングを間違えると不正な活動の痕跡が一切得られないことです。今回はタイミングが悪く、
試みはまたしても失敗に終わりました。
3 回目の実行
ここで 1 人の分析担当者が、別のアプローチを試してはどうかと提案しました。OllyDbg などのデバッガを使用してプ
ロセスをデバッグし、オンメモリでアクセスするためのブレークポイントを暗号化されたリソースに設定するという手順
です。
その狙いはシンプルです。暗号化されたリソースが復号化されるのであれば、プロセスはいずれかの時点でそのリソ
ースを読み込む必要があります。そのタイミングでブレークポイントをヒットさせれば、1ステップずつ実行を進め、プロ
セスが暗号化データを使用して何をしているのかを確認できるのです。
ブレークポイントを設定して実行を再開したところ、4 秒と経たないうちにブレークポイントがヒットしました。
右向きの矢印で示したコードは、下向きの矢印で示した暗号化領域から 32 ビット値を読み込み、別の場所に移動して
います。さらに同じ方法でコードの実行を進めていくと、数回ループしたところで、元の不審なファイルに含まれていた
暗号化されたリソースがメモリ内で完全に復号化されました。
復号化されたこのリソースもPEファイルです(以下の図の「MZ」は、PEファイル・ヘッダの冒頭を示しています)。
メモリから PE ファイルを抽出するため、OllyDbg で PE のバイトをコピーして 16 進エディタの 010 Editor に貼り付け、
これを新たな PE ファイル(MD5: D88D110B947B1547BB49883E3C93407F)として保存しました。
この新しい PE ファイルに対しても、同様の静的な分析と動的な分析を実施しました。
またこのファイルをVirusTotalで検査したところ、50製品中43製品でマルウェアと判断されました。Check Point
Endpoint Securityエージェントでも、このファイルはマルウェアとして検出されています。
この PE ファイルの実体は、感染先のマシンから情報を盗み出す既知のバックドア「Androm」ファミリの亜種です。
サンドボックスを搭載した環境でこのファイルを動的に分析した結果、ファイルの動作について以下の情報が得られま
した。
Andromは、複数のプロセスを開始して複数のWebサイトと通信しています。この後は上記の情報を元に、Andromが接
続するURLや、そのURLに送信しているデータについて分析を進めることになりますが、本稿では割愛します。
分析のまとめ
不審なファイルに対して静的な分析と動的な分析を行った結果、判明した事実を以下に示します。
1. Doc ファイルには Visual Basic によるマクロが埋め込まれている
2. マクロを実行すると、公開 Web サイト(Dropbox)から PE(.EXE)ファイルがダウンロードされる
3. PE ファイルは Visual Studio C#(.NET Framework)でコンパイルされており、暗号化されたリソースを含んでいる
4. 動的な分析により、暗号化されたリソースを抽出し、新しい PE ファイルとして保存できる
5. PE ファイルは、Androm という既知のマルウェア・ファミリの亜種である
本稿の分析では、既存のアンチウイルス・エンジンでは検出されない不審なファイルが、実は既知のマルウェアだった
と明らかになる課程を見てきました。このマルウェアは、ThreatCloud Central の最近の記事で解説した同様の難読
化手法を用いて、アンチウイルス・エンジンによる検出を免れていました。近頃、多くのサイバー攻撃者は暗号化を含
む難読化手法によって従来型のマルウェア対策をすり抜けようとします。この傾向は、今日の情報セキュリティ担当者
にとって最も大きな課題の 1 つと言えるでしょう。
いずれのアンチウイルス・エンジンでも検出されない一見無害な Word ファイルが、組織の重要情報を盗み出す有害
なバックドアだったとの分析結果からも明らかなように、サイバー攻撃者の手口は高度化の一途を辿っています。サイ
バー攻撃者は、検出を免れるための手段として、パッキングや難読化、暗号化、複数のコンパイラなどの手法を利用
しています。
使用ツール
今回の分析では、以下のツールを使用しました。
 Exiftool
 Strings
 OfficeMalScanner
 PeID
 .NET Reflector
 Dumpit
 Volatility Framework
 OllyDBG
 010 Editor
 Virus Total
 Malwr.com
このような攻撃への対策
チェック・ポイント製品をご利用の場合
チェック・ポイントのセキュリティ・ゲートウェイで Antivirus Software Blade および Anti-Bot Software Blade を有効に
している場合、新たに見つかった亜種に対する保護機能が ThreatCloud 経由で自動的に配信されます。未知のマル
ウェアへの対策を強化するためには、パブリックのクラウド・サービスである Threat Emulation Service のご利用やロ
ーカルで運用する専用の Theat Emulation アプライアンスの導入をお勧めします。
他社製品をご利用の場合
ゲートウェイやメール・サーバ、エンドポイントに導入する従来型のアンチマルウェアに加え、未知のマルウェアに対す
る保護強化に向けたサンドボックス・ソリューションの導入を検討してください。
すべての組織に共通する対策
この種のマルウェアへの感染リスクを低減するため、内部ユーザに対し、外部の電子メール・アドレスから送られてき
た心当たりのない添付ファイルや不審な添付ファイルを絶対に開かないよう注意を呼びかけてください。