【分析レポート】 バンキングマルウェア (Bebloh, Ursnif)
01. 概要
分析対象のサンプルは [表1] のとおりである。ハッシュを含む各ファイルのさらに詳細な情報は、[04. 対応と予防] で確認できる。

[表1] サンプル情報
02. 流布方法
Ursnif をダウンロードする Bebloh は、[図1] のとおり、ソーシャルエンジニアリングの手法によりユーザーを騙すために、偽装された注文書、申込書、報告書、納品書、請求書などの内容が含まれる件名や本文を使用している。
このようなメールは、主に悪意あるマクロを含む Excel ファイルを添付した形で流布される。

[図1] Bebloh を流布するスパムメール
ソーシャルエンジニアリングの手法を用いたスパムメールは、正常なメールを装って作成されているため、送信元が明らかでないメールや添付ファイルは開かないよう、特に注意する必要がある。
マルウェアの流布および感染の流れは [図2] のとおりである。

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

[図3] 添付された Excel
ファイル実行画面
文書プログラムのセキュリティ設定が低く設定されている場合、警告ウィンドウが表示されずにマクロが実行されるため、セキュリティ設定を「高」レベルに保ち、意図しない機能が実行されないよう注意する必要がある。
Excel ファイル内のマクロが実行されると、[図4] のように、システムのロケール情報を照会する
GetLocaleInfo 関数を呼び出す。
日本語環境の場合には赤枠の条件を満たし、マクロ内の vector() 関数が呼び出されると、マルウェアのダウンロードを試みる。

[図4] Excel ファイルに含まれるマクロ
なお、システムのロケール情報が日本でない場合も、[図5] のように、画像ファイル上にブランクのオブジェクトを表示して、ユーザーがマウスを動かすように誘導する方法が用いられている。こうすることで、[図4] の2つ目の赤枠の条件を満たすため、同様に
vector() 関数が呼び出される。

[図5] ユーザーのマウス操作を誘導するように作成された機能
vector() 関数が実行されると、[図6] のように、マルウェアをダウンロードするために、難読化された文字列を結合する関数が実行される。

[図6] cmd.exe コマンド引数の結合

[図7] 難読化を解除するコード
[図8] は、ダウンロードを実行する際のプロセス一覧であり、各コマンドの引数の値は [表2] のとおりである。

[図8] ダウンロード実行時のプロセス一覧

[表2] CMD/POWERSHELL
コマンド
cmd.exe によって実行される難読化されたコマンドを簡単にまとめると [表3] のようになる。

[表3] コマンドの要約
このコマンドが実行されると、[表3] の関数を呼び出すことにより、[図9] のように .NETWebClient().DownloaderString(url) 関数を実行し、赤字で示された URL からファイルをダウンロードする。

[図9] ダウンロード関数の呼出
PowerShell によってダウンロードされるファイルは難読化されたスクリプトであり、その内容は [表4] のとおりである。

[表4] ダウンロードされた PowerShell スクリプト (audio.7z)
このスクリプトは、複数の難読化段階を経ており、PowerShell の Get-Culture 関数を呼び出し、日本語環境であるか再度検証して、条件を満たす場合にのみ以降の動作を実行する。
日本語環境であるか検証する段階のスクリプトは [表5] のとおりである。

[表5] 日本語環境であるか検証するスクリプト
スクリプトの中で、暗号化されたデータを抽出するためのキー値として、(Get-Culture).NumberFormat.CurrencySymbol 関数を呼び出して返された値を使用しているため、動作中のシステムが日本語環境でない場合、以降の動作は失敗する。
[図10] は、日本語環境の場合の (Get-Culture).NumberFormat の出力画面であるが、結果値では、CurrentSymbol(\) を復号化キーとして使用している。

[図10] (Get-Culture).NumberFormat
次の段階では[表6]のスクリプトが実行され、Get-Culture関数を再度呼び出し、(Get-Culture).LCID (=1041), (Get-Culture).NAME(=ja-JP)の値が、日本語環境を示す場合にのみ最終的なデコードを行う。

[表6] 最後に実行されるスクリプト
最後にダウンロードされる実行ファイルは Bebloh と呼ばれるマルウェアであり、主に Ursnif を流布する際の中間段階で使用されるものである。Bebloh の主な機能は、EXPLORER.EXE、iexplore.exe プロセスのインジェクションによる Ursnif のダウンロードであり、次の動作のためのC&Cを行って、攻撃者からの命令を実行する。
Bebloh は実行されると、システムの環境情報を確認し、[表7] の条件に当てはまる場合には実行を終了する。これは、自動分析システムや分析担当者によってファイルのデバッグが行われている環境を回避する目的で追加されたものである。

[表7] アンチデバッグ確認リスト
インジェクションに成功すると、下記の C&C アドレスへの接続を試み、システム情報やユーザー名などを送信する。そして、攻撃者の命令に従って Ursnif をダウンロードする。
- benistora.com/auth/
上記の C&C アドレスへの接続に失敗すると、自ら新たに URL を作成して接続を試みる。この時に作成される URL のフォーマットは下記のとおりであり、[表8] の文字列をランダムな順序で組み合わせて作られる。
- <ランダムな文字列>.<netまたはcom>/auth/

[表8] URL をランダムに作成するための文字列リスト
このマルウェアに感染したシステムは、[表9] の例のようなさまざまな URL への接続を試みる。そして、接続に成功したアドレスから Ursnif をダウンロードする。

[表9] ランダムな URL の例
分析時点において、これらの C&C アドレスには接続不可になっており、Ursnif を入手することはできなかった。
情報の搾取を行うマルウェア 「Ursnif」 の一般的な機能については、「05. 解説-Ursnif の一般的な機能」 をご参照いただきたい。
04.対応と予防
1)アンラボでの診断

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

05. 解説-Ursnif の一般的な機能
1) 要約
Dreambot、Cozi、ISFB、Beblohなどとも呼ばれる Trojan/Win32.Ursnif (以下、「Ursnif」) は、ユーザー情報を搾取し、C&C からデータを受信して悪性行為を行うマルウェアである。この分析時点において、新たなデータは確認されていないが、主たる目的は、金融に関するアカウント情報を搾取することである。Ursnif は、主にスパムメールによって流布されるが、メールに添付された文書ファイルやスクリプトファイルに含まれる悪性 URL から Ursnif のペイロードがダウンロードされ、動作する。
Ursnif は、暗号化された DLL をメモリ上で復号化した後、正常な explorer.exe プロセスにインジェクションして動作させる。そのため、正常な explorer.exe プロセスによって悪意ある機能が実行されているように見えるが、実際はメモリ上で、インジェクションされた DLL が悪意ある機能を実行している。このような動作手法は、既存の亜種と同様である。
インジェクションされた DLL の主な機能には、C&C サーバーからコマンドまたは Config ファイルを受信して、スクリプトベースの Web ページ改ざん、Web インジェクション、フォームグラビング (キーロギング、スニッフィングなど個人情報の搾取)、スクリーンキャプチャー & ビデオグラビング、VNC のリモート制御、ソケットプロキシ攻撃などがある。金融情報を搾取するためのターゲットとなる URL の情報も、Config ファイルに保存されていることがわかっている。
Ursnif の全体的な動作手法は [図11] のとおりであり、Explorer.exe プロセスに DLL をインジェクションした後の動作は 2017 年の亜種サンプルと同様である。

2) 主な機能および特徴
A) 遅延実行
― サンドボックスによる検知を回避するため、遅延実行の手法を利用
Ursnif は、%temp% パスに [ランダムな 4 文字].tmp ファイルを作成するが、この時に作成したファイルの作成時間情報を、暗号化した .bss セクションの復号化キーとして使用する。復号化できる正しいキー値 (作成時間) を探し出すために、%temp% パス内に多数のファイルが作成され、削除される。

[図12] 遅延実行と .bss セクションの復号化ルーティン
B) Anti-VM
― 仮想マシンが使用するレジストリキーを参照するために、SetupDiGetDeviceRegistryPropertyA API を活用
亜種によって Ursnif は、SetupDiGetDeviceRegistryPropertyA API を活用し、仮想マシン上で使用するハードウェアの情報を確認する。API を呼び出した後、仮想マシンに関連するハードウェア名があった場合は自ら終了し、それ以上の悪性行為を行わない。

[図13] Ursnifに使用された Anti-VM 技法
Ursnif は、SetupDiGetDeviceRegistryPropertyA API を呼び出し、ハードウェア情報の中に vbox、qemu、vmware、virtualhd という文字列が含まれない場合にのみ悪性行為を行う。
C) レジストリ登録
― 自動実行レジストリに自らを追加し、リブート時にマルウェアを実行


[表11] 自動実行レジストリへの登録
D) DLL インジェクション
― Ursnif の主な悪性行為に必要な DLL を、Explorer.exe や Iexplore.exe などのWeb ブラウザプロセスにインジェクションする。
Ursnif のリソースセクションには暗号化された PE ファイルのバイナリが含まれている。このバイナリは、Ursnif の復号化ルーティンによって復号化され、実行中の Explorer.exe プロセスまたは Iexplore.exe、chrome.exe などにインジェクションされる。以下、便宜的に、インジェクションされた DLL ファイルを Decoded DLL と呼ぶことにする。
最初に Powershell によってダウンロードされた Bebloh ファイルと、後からダウンロードする実行ファイルでは、共通して上記のような方式でDLL をインジェクションする。悪性行為に必要なデータも、この DLL 内部にエンコードされて保存されている。
Decoded DLL は、単独のファイルとして作成されるのではなく、インジェクションされてメモリ内に常駐する。Decoded DLL は実行中のプロセス名に対して CRC 演算を行ってインジェクション対象を探る。

[図14] プロセス名に対応する CRC 値からインジェクション対象の有無を確認する
各 CRC 値の意味について確認した結果、インジェクションの対象となるプロセスは下記の [表12] のとおりである。

そのため、最初に Ursnif に感染した時点で Internet Explorer や chlome などの Web ブラウザが実行されていると、Decoded DLL がそれぞれのプロセスにインジェクションされ、さらに別の悪性行為を行うこととなる。
E) API フック
― Decoded DLL は、インジェクションされたプロセスの API をフックして、さらなる悪性行為を行う。
Decoded DLL のフック対象となるAPIは、インジェクションされたプロセスごとに異なり、プロセス名別に分けると以下のようになる。




Explorer.exe にインジェクションされると、CreateProcessA、CreateProcessW、CreateProcessAsUserA、CreateProcessAsUserW をフックし、Explorer.exe を親プロセスとするプロセスが実行された時に、Decoded DLL がインジェクションされる。
つまり、Ursnif に感染した状態で新たなWebブラウザプロセスが実行された場合に、Explorer.exe の CreateProcess 系 API が
フックされ、それにより、Decoded DLL が実行された時にインジェクションされる。
Iexplore.exe、Chrome.exe、Opera.exe、FireFox.exe に対する API フックは、Config ファイルに保存された特定のサイトに接続された時に、Web ページを改ざんしたり、あるいは閲覧したサイトの情報を %temp% パスに保存するために行われる。
F) 接続するネットワークの情報
― Explorer.exe に対するインジェクションと API フックを行った Decoded DLL は、C&C サーバーからコマンドと Config ファイルを受信して、各種の悪性行為を行う。
Ursnif により、下記のアドレスに接続して Config ファイルをダウンロードし、攻撃者からのコマンドを受信することがわかっている。

[表13] 接続するネットワークの情報
なお、C&C サーバーと通信を行う際の主な特徴は、下位の URL に images、bmp 文字列を含むということである。特に、bmp 拡張子はjpeg や gif に変換される可能性があり、それぞれの拡張子が意味するものは [表14] のとおりであることがわかっている。

[図15] は、%temp%[ランダムな 4 文字].bin パスに CAB ファイルとして作成されるユーザーシステム情報のデータファイルである。このファイルは、最終的な .bmp 拡張子として C&C に送信される。

流出するユーザー情報には以下の内容が含まれる。
-
Systeminfo : OS 名、OS インストール日、システムの種類、メモリの情報、ネットワークIPなどのシステム情報
-
Tasklist/svc : 各プロセスにホストされたサービスのリスト
-
Driverquery : インストールされたデバイスのドライバのリスト
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall レジストリ情報
なお、分析時点において、既に C&C サーバーが遮断されており、以降の動作の分析に必要な Config データは入手できなかった。