【分析レポート】 悪意あるマクロが含まれた Excel ファイル (「Bebloh」、「Ursnif」、「Dreambot」)
01. 概要
分析対象のサンプルは [表 1] のとおりである。ハッシュを含む各ファイルに関するより詳細な情報は、[04. 対応と予防] で確認できる。
[表 1] サンプル情報
02. 流布方法
Ursnif をダウンロードする Bebloh は、[図 1] のとおり、ソーシャルエンジニアリング手法によりユーザーを騙すために、偽装された注文書、申込書、報告書、納品書、請求書などの内容が含まれる件名や本文を使用する。
このようなメールは、主に悪意あるマクロを含む Excel ファイルを添付した形で流布される。
[図 1] Bebloh を流布するスパムメール
ソーシャルエンジニアリング手法を用いたスパムメールは、正常なメールを装って作成されているため、送信元が不明なメールや添付ファイルは開かないように注意する必要がある。
マルウェアの流布および感染の流れは [図 2] のとおりである。

03. 機能の分析
スパムメールに添付された文書は、[図 3] のように、日本語で作成された画像ファイルを含んでおり、[コンテンツの有効化] ボタンをクリックするように誘導する。

[図 3] 添付された Excel ファイルの実行画面
文書プログラムのセキュリティ設定が低く設定されている場合、警告ウィンドウが表示されずにマクロが実行されるため、セキュリティ設定を 「高」 レベルに保ち、意図しない機能が実行されないように注意する必要がある。
Excel ファイル内のマクロが実行されると、[図 4] のように 「xlXmlExportValidationFailed」 の値を確認した後、メイン機能を遂行する oceran 関数を呼び出す。

[図 4] xlXmlExportValidationFailed 変数の確認
この値は xml データの形式を検査する変数であり、Office プログラムのうち、Excel 内でのみ値が定義されるため、当該スクリプトを外部で実行するなどの人為的な操作が行われると、マクロが実行されずに終了する。これは、攻撃者の意図に従ってマクロが実行されるようにするための装置である。

[図 5] Excel の xlXmlExportValidationFailed 値
[図 6] の oceran 内部の lowsharts 関数を通じて Excel 本文の A1 セルにアクセスし、該当データは難読化されたスクリプトバイナリに複数の段階を経て復号化された後、VBA の Shell 関数により実行される。


[図 7] 本文内の A1 セルの難読化データ
復号化関数のうち、Welcome の因子として与えられる Beta1 値は、[図 8] のような関数呼び出しの戻り値として設定されるが、この過程で1回目の日本語システムスキャンが行われる。

[図 8] Beta1 値の設定関数
因子として与えられる LittlePeace の xlDate 値は 2 であり、現在国設定関連の情報を返す関数の Application.International を通じて最終的に 81 値に設定される。これは、日本語システム環境をスキャンする方法で、意図された値でない場合、実行を終了する。[図 9] で、環境によって別の値が設定されることが確認できる。

[図 9] システム環境による設定値の違い
復号化関数の主な機能は、以下のとおりである。

[表 2] 復号化関数および演算
[表 2] の関数により生成されるスクリプトは以下のとおりであり、WMIC (Windows Management Instrumentation Command-line) を利用して Powershell を実行する。
Powershell により遂行されるコードもスクリプト内部に難読化されており、詳細な復号化の過程は [表 4] のとおりである。



復号化コードが実行されると、2回目の日本語システムスキャンが実行され、同時に Bebloh をダウンロードする。

[表 5] の日本語システムスキャンは、Powershell の Get-WmiObject コマンドを利用した OS バージョンの文字列の確認により行われる。
$[X] 変数の 16進数値 30 D3 は、日本語カタカナの 「ビ」 に該当する。
[図 10] Get-WmiObject コマンドを利用した OS アーキテクチャバージョン
その後、以下のアドレスに接続を試みて実行ファイルをダウンロードし、%appdata%\outlook.srss.exe に保存した後、実行する。
- https://berdiset.top/uploads/QuotaManager
ダウンロードされた実行ファイルは Bebloh であり、主に Ursnif の流布過程の中間段階として用いられる。Bebloh の主な機能は explore.exe プロセスのインジェクションによる Ursnif のダウンロードであり、追加動作のために別途 C&C サーバーを運営しながら攻撃者のコマンドを遂行する。
Bebloh の動作の流れは、[図 11] のとおりである。
[図 11] Bebloh 動作の流れ

Bebloh が実行されると、システム環境情報を確認して [表 7] の条件を満たす場合は実行を終了する。これは、自動分析システムや分析家によるファイルデバッグ環境を迂回するための目的で追加されたものである。

インジェクションに成功したら、以下の C&C サーバーアドレスに接続を試みて、収集した情報を転送する。その後、攻撃者のコマンドに従ってUrsnif をダウンロードする。
- berdiset.top/auth/
収集情報は、CPU、OS、キーボードなどのシステム情報、ユーザー名、IP アドレスなどさまざまであり、主に特定のレジストリ情報と WMI を利用する。このうちの一部をまとめたものが [表 8] である。

[表 8] 収集情報 (一部)
定義された C&C サーバーアドレスに接続できなかった場合は、独自で追加の URL を生成して接続を行う。この際に生成される URL フォーマットは以下のとおりであり、[表 9] の文字列をランダム順に組み合わせる。
- <ランダムな文字列>.<net または com>/auth/

[表 9] ランダムな URL を生成するための文字列一覧
当該マルウェアに感染したシステムは [表 10] のようにさまざまな URL へのネットワーク接続を試みて、接続に成功した URL から Ursnif をダウンロードする。

分析の時点では、C&C サーバーへの接続ができなかったため、Ursnif を確保することが不可能であった。
04.対応と予防
1)アンラボにおける検知情報

2)予防
Ursnif に限らず、マルウェアに対する完璧な予防策は存在しないが、以下のような対策により感染の可能性を最小限に抑えることができる。
