調査・研究者:Assaf Dahan

Ursnif(別名:Gozi ISFB)というトロイの木馬は、サイバー犯罪の犯行現場において広く使用されている、情報窃取を狙ったトロイの木馬の1つです。2013年初頭にあらためて出現して以来、このトロイの木馬は絶えず進化を続けています。さらに、2015年にはそのソースコードが流出して、Github上で誰もが入手できるようになり、その結果、さまざまな攻撃者が改良を加えて新たな機能を追加したコードが開発されるようになっています。

Ursnifを操る攻撃者の標的として上位にランクする国のなかに、ここ数年、日本の名前があります。2018年には、サイバーリーズンほかのセキュリティ企業が、Ursnif(主にDreambotの変種)とBebloh(別名:URLZoneおよびShiotob)を組み合わせた攻撃についてレポートしています。

2つのマルウェアを組み合わせたこの攻撃では、一連のチェックを実行するダウンローダーとしてBeblohが使用されています。Beblohはこれらのチェックを通じ、自身がいま活動している環境が、マルウェアの調査行う仮想マシンなどのアンチマルウェアの環境でないかどうかを確認します。攻撃の邪魔になる存在のいないことが明らかになると、BeblohはUrsnifをダウンロードし、Ursnifが、コアとなる情報窃取の機能を実行します。

新たに見つかったUrsnifの変種には、強化された情報窃取用のモジュールが実装されていました。このモジュールは、メールクライアントのデータや、ブラウザに格納されているメールの認証情報を盗み出すことに特化しています。改良された新たなメールスティーラーモジュールが導入された結果、業務用のアカウントが侵害を受けたときにトロイの木馬が企業にもたらすリスクが重要視されるようになっています。

ユーザーのメールアカウントや、メールの受信トレイの中身、デジタルウォレットのデータなど、金銭に換えることができたり、ほかの攻撃に利用できたりするようなデータの収集へと、トロイの木馬による攻撃はその主眼を移しつつありますが、銀行の利用方法がモバイルバンキングに移行するようになり、金融機関のシステムが常に強化されている状況を考えれば、これは当然のことと言えるでしょう。

新旧の機能を併せ持つ新たな変種

2019年の初め以降、複数の顧客環境にわたり日本人のユーザーだけを標的にした標的型攻撃(APT攻撃)が発生しているのを、サイバーリーズンの研究者は確認しています。この攻撃では、新たなUrsnifの変種と、標的を定めBeblohを利用した改良型のデリバリーメソッドが導入されています。

Ursnifの新たな変種に加えられた主な変更
  • ステルス性の高い新たなパーシステンスメカニズム(「ラストミニットパーシステンス」)
  • 改良が施された情報窃取用の新たなモジュール(「IEスティーラー」、「Outlookスティーラー」、「Thunderbirdスティーラー」)の実装
  • ビットコインなどに対応する暗号通貨モジュールと、TrueCryptなど、ディスク暗号化ソフトウェアのモジュールの実装
  • 日本製のセキュリティ製品、「PhishWall」に対処するためのアンチPhishWallモジュールの実装
特定の国を標的とする強化されたBeblohのデリバリーメソッド
  • 標的のマシン上の日本語設定に狙いを定めチェックを行うよう改良されたVBAコード
  • NET DLLをコンパイルして日本語の言語設定を抽出するPowerShell
  • IPの位置情報をチェックする機能の追加。この機能により、標的のマシンが日本国内のものであるかどうかを識別

以下の図に、最新の攻撃で確認された感染チェーンを示します。

ステージ1:Officeドキュメントを通じたフィッシング攻撃

攻撃の第1段階は、以下のように、武器化したMicrosoft Officeドキュメントをフィッシングメールに添付するところから始まります。

ユーザーがドキュメントを開くと、[コンテンツの有効化]ボタンをクリックするよう指示する内容が日本語で表示されます。これに疑いを抱かず、ドキュメントのプレビューが表示されるものと期待してボタンをクリックすると、プレビューが表示される代わりに、ドキュメントに埋め込まれたマクロコードが実行されます。


[コンテンツの有効化]ボタンをクリックするようユーザーに促す、武器化されたExcelドキュメント

日本人のユーザーを標的とする改良されたVBAマクロ

マクロコードには難読化の処理が施されており、このコードはいくつかのPowerShellコマンドを実行します。ただし、PowerShellコマンドの暗号を解除してコマンドを実行する前に、VBAマクロは、標的のマシンの国の設定が日本になっているかどうかをチェックします。この手法は2018年の時点ですでに確認されていましたが、この新しいバージョンで攻撃者はコードに変更を加えてコードをわかりにくくし、簡単にはその内容を見破られないようにしています。

従来のVBAでの国のチェック

Nao_Secによりドキュメント化されている従来のチェックでは、日本を表す「81」の値を国の設定と比較するほか、関数の「xlCountrySetting」を使用しています。標的のマシンの国の設定が日本になっていない場合、マクロコードは終了します。

新しいVBAでの国のチェック

変種のマルウェアに組み込まれている、国のチェックを行う新しい関数には、標的としている国を簡単に悟られないよう工夫が施されていますが、それでも必要最低限の計算をいくつかすれば、標的となっている国を簡単に推測できます。この新しいコードでは、国の設定をチェックしてその値に「960」を付加し、得られた新しい値をパラメータに格納します。以下の例では、パラメータはopa (81 + 960 = 1041)になります。

「opa」の値が「1039.93」よりも大きいかどうかをSensitiveLine()関数がチェックし、値が大きい場合、マクロコードは処理を続行します。一方、値が「1039.93」よりも大きくない場合には、マクロコードは終了します。計算は以下のように行われます。

「xlBinsTypeBinSize」の値(「3」) × 347 – 1.07 = 1,039.93

注:同様の手法はイタリアのユーザーを標的とした攻撃にも実装されていますが、デリバリーされるUrsnifの変種は別のものとなっています。

ステージ2:Paranoid PowerShellダウンローダー

マクロコードは、マシンの国の設定が日本になっていることを確認すると、PowerShellペイロードの暗号を解除し、ペイロードを環境変数として設定して、そのコードを実行します。


環境変数に隠されたPowerShellのコード


断片化されたPowerShellのコード

コードには徹底した難読化が施されており、一連の新たなチェックが組み込まれています。標的のマシンの設定が日本語になっていることに加え、マシンの物理的なロケーションが日本であることを、Beblohのペイロードをダウンロードする前に、新たなチェックを通じて確認します。

言語設定に関する追加のチェック

ペイロードをダウンロードする前にPowerShellのコードは最終の言語チェックを行い、標的が間違いなく日本人であることを確認します。確認にあたっては、Omk()関数の結果を、日本語を表す「j」と照合します。この内容を以下に示します。

ファイルがコンパイルされ、%temp%フォルダに投下されます。

コードを逆コンパイルすると、[CultureInfo.CurrentCulture]プロパティをチェックするOmk()関数の存在を確認できます。

IPの位置情報のチェック

ダウンローダーは最後のチェックとして位置情報の確認を行います。ここでは、ipinfo.io APIを使用してIPアドレスが日本のものであることを確認します。


IPの位置情報により国を特定

ステガノグラフィを用いて、ありふれたイメージのなかにペイロードを隠蔽

すべてのチェックが完了すると、PowerShellのコードは、Imgurpostimage.ccなどのイメージ共有サイトにホストされているイメージファイルをダウンロードします。

hxxps://i.imgur[.]com/96vV0YR[.]png


日本の物を表す画像も存在

組み込まれているコンテンツの暗号が、以下のPowerShellのコードを用いて解除されます。このコンテンツは、Invoke-PSImageのステガノグラフィプロジェクトをベースにしています。

PowerSploitが反射的にBeblohをロード

画像に埋め込まれているPowerShellのコードの暗号が解除されます。このコードは、PowerSploitフレームワークをベースにしており、このフレームワークでは、「Invoke-ReflectivePEInjection」という反射式PEインジェクションモジュールを使用して、Beblohのコードをメモリにロードし、実行します。この内容を以下に示します。


ダウンロードされたイメージに隠されているコンテンツの暗号を解除した結果の一部

インジェクションされたexplorer.exeからダンプしたペイロードを解凍すると、以下のように、実際にはそのペイロードがBeblohであることがわかります

Beblohがexplorer.exeにインジェクションされると、BeblohはUrsnifのローダーペイロードをC2サーバーからダウンロードします。この内容を以下に示します。


BeblohがUrsnifを投下

ステージ3:Ursnifのローダー

Ursnifのローダーはメインのペイロード(client.dllおよびclient64.dll)を解凍します。このペイロードはローダーのPEリソースセクション(RT_RCDATA)に組み込まれています。この内容を以下に示します。


32ビットバージョンと64ビットバージョンのclient.dll

ローダーは暗号の解除に先立ち、一連のチェックを行い、自身がアンチマルウェアの環境、すなわち、デバッグ環境やサンドボックス、仮想マシンで実行されていないかどうかを確認します。たとえば、Beblohは、以下のようなチェックを行います。

  • Xeon CPUのチェック:ローダーがサーバー上で実行されているのか、あるいは、ラップトップやPCで実行されているのかを判断します。
  • 仮想化ベンダーチェック:VirtualBoxやQEMU、VMware、仮想ハードディスクなどの環境でローダーが実行されていないかどうかをチェックします。
  • タイミングチェック(CPUIDのあるRDTSCは仮想マシンを強制終了し、デバッガやサンドボックスの処理を妨害します)

以下の仮想化のチェックの例では、SetupDiGetClassDevsA()のAPIとSetupDiGetDeviceRegistryPropertyA()のAPIを使用して、Windowsのレジストリに保管されているハードウェア情報を照会しています。

上記のチェックのいずれかで問題が見つかると、ローダーはエラーメッセージを表示してプロセスを終了します。


仮想マシンを検知した際に表示されるエラーメッセージ

問題が見つかることなくすべてのチェックが完了すると、ローダーは処理を続行し、UrsnifのコアのDLLをexplorer.exeのメインプロセスにインジェクションします。

ステージ4:Ursnifのコアペイロード(client.dll)

インジェクションされたDLLペイロードには、興味深いclient64.dllのPDBパスが存在します。これは、このペイロードがGozi ISFBのバージョン 3 であることを示しています。


PDBのパス:c:\isfb3\x64\Release\client.pdb.

メモリから抽出したビルド番号(バージョン番号)を確認すると、以下のように、バージョンが「300035」であることがわかります。

また以下のように、コンパイル日付は「02/22/2019」となっており、コンパイルが最近行われたことがわかります。

これ以前に出現した同じ変種のサンプルのコンパイル日付は2018年7月になっていました。これは、この変種が最初に姿を現したのが2018年であることを意味します。

コア機能の注目すべき変更点

数年をかけてUrsnifのオリジナルのコードは変化を遂げ、さまざまなマルウェアの機能や新たな機能を取り込んできました。Ursnifの以前のバージョンや機能については、Vitali Kremezマモル・サイトウMaciej Kotowiczによる記事に、詳しい分析が記載されています。

弊社のコード分析によれば、新たに確認された変種には、Dreambotの変種と多くの類似点があります。ただし、この新しい変種には、TorクライアントやVNCのモジュールなど、広く確認されているいくつかの組み込みの機能が欠如しています。一方、この変種には、以下のようないくつかの改良された機能や新たな機能が搭載されています。

  • 新たなパーシステンスメカニズム(Dridexのパーシステンスに類似した「ラストミニットパーシステンス」)
  • 改良された新たなスティーラーモジュール(IEスティーラー、Outlookスティーラー、Thunderbirdスティーラー)
  • 暗号通貨モジュールとディスク暗号化ソフトウェアのモジュール
  • 日本製のセキュリティ製品、「PhishWall」に対処するためのアンチPhishWallモジュール
ステルス性の高い新たなパーシステンスメカニズム

この新たな変種で特に注目すべき変更の1つは、検知を逃れるために新たなパーシステンスメカニズムが実装されている点です。

新たに確認されたこのパーシステンスメカニズムは、ラストミニットパーシステンスモデルをベースにしています。このモデルでは、システムがシャットダウンする直前にパーシステンスが生成されます。システムのリブート後、ローダーはコアのDLLをexplorer.exeにインジェクションすると、すぐにレジストリのAutorunのキーを、%appdata%に格納されているファイルとともに削除します。同様の実装は、銀行を標的としたDridexBeblohのトロイの木馬でも過去に使用されています。

興味深いのは、このパーシステンスメカニズムが、シスコなどの研究者が2018年12月から2019年2月にかけて報告しているファイルレスのパーシステンスメカニズムとは異なる点です。これまでの手法はレジストリに格納されているPowerShellスクリプトを利用していました。システムが起動すると、QueueUserAPCのインジェクション手法を用いて動的に、コアのDLLがロードされexplorer.exeにインジェクションされます。

以下の図では、「ラストミニットパーシステンス」を生成する流れと、そのロジックを標的のマシンから削除する流れを説明しています。

パーシステンス生成の詳細なロジック
  1. このマルウェアは、トロイの木馬の個々のコンポーネントのあいだで内部の通信に使用する非表示のウィンドウを生成します。

  2. Ursnifはこのウィンドウなどを使用して、WM_QUERYENDSESSIONのメッセージをキャッチします。メッセージは通常、システムがシャットダウンしようとするときに送信されます。それゆえこのメッセージは、システムが間もなくシャットダウンすることをマルウェアに知らせるアラームの役割を果たします。

  3. Ursnifはシャットダウンのメッセージを確認すると、HKCU\Software\AppDataLow\Software\Microsoft\{GUID}\Install内のインストールキーの情報をもとにAutorunのレジストリキーとファイルを生成し、ファイルを%appdata%のフォルダに格納します。

マシンをセーフモードで起動すると、作成されたパーシステンスを確認することができます。セーフモードでは、ユーザーがログオンしたときにどのプログラムも自動的に実行されないようにするからです。

システムがシャットダウンする直前に%appdata%に作成される.lnkファイルと.exeファイル


システムがシャットダウンする前に作成された、レジストリのAutorunキー

パーシステンスを削除するロジックの詳細

システムが起動し、ユーザーがログオンすると、ローダーが実行され、ローダーはexplorer.exeにコアのDLLをインジェクションします。トロイの木馬のコードが実行されると、以下の処理が行われます。

  1. 「ProgMan」ウィンドウの有無がチェックされます。このウィンドウが存在する場合、explorer.exeのプロセスが実行されています。

  2. マルウェアのコードがexplorer.exeと同じプロセスから実行されているかどうかがチェックされます。これはおそらく、デバッグに対処するための処理と考えられます。

  3. レジストリと、%appdata%のフォルダが削除されます。このフォルダには、HKCU\Software\AppDataLow\Software\Microsoft\{GUID}\Install内のインストールキーに基づき生成された.lnkファイルと.exeファイルが格納されています。

情報スティーラーモジュールに関する変更点

新たな変種(バージョン3)では、以下と比較した場合、スティーラーモジュールのコードに変更があります。

  • Dreambot(解凍されるclient.dll – 2bcb80182ed4ca4701ab0bcd750d5aacac83d77)
  • Gozi ISFB 2.16 / 2.17(解凍されるclient.dll – 74e7453b33119de1862294e03bf86cc7623d558b)
メールスティーラーの関数に関する変更点

新しい変種のメールスティーラーでは、機能の強化や、いくつかの新たな機能の追加など、メジャーアップデートが行われているようです。具体的な新機能としては、Microsoft Outlookを標的とするスティーラー、Internet Explorerを標的とするスティーラー、Mozilla ThunderBirdを標的とするスティーラーの機能があります。


メールスティーラーのメインの関数の一部

以下の比較チャートでは、メール窃取のメイン関数について最近の変種で変更になった点を説明しています。

Outlookスティーラー – Outlookを標的とする改良されたスティーラー

新しいOutlookスティーラーモジュールは、標的となるマシンに格納されているOutlookのアカウントを以下のように列挙します。

この新しい変種では、従来とは異なり、Microsoft Outlookの複数のバージョンに対応できるようになっています。これまでの変種では、通常、Microsoft Outlookの1つまたは2つのバージョンしか対応できませんでした。

さらに、この変種は、Microsoft Outlookの.PSTや.OSTのファイル拡張子も特定できるようになっています。

Thunderbirdスティーラー – Mozilla ThunderBirdを標的とするスティーラー

この変種はMozilla ThunderBirdのメールクライアントから以下のようなデータを窃取することができます。

  • Thunderbirdに保管されている認証情報(logins.json)
  • ThunderBirdのパーソナルアドレス帳(abook.mab)


ThunderBirdのユーザー認証情報の窃取

IEスティーラー – Internet Explorerを標的とするスティーラー

新たに追加された組み込みのモジュールは、Internet Explorerに保管されている以下のようなデータを窃取します。

  • HKCU\Software\Microsoft\Internet Explorer\TypedURLs(AutocompleteタイプのURL)
  • HKCU\Software\Microsoft\Internet Explorer\IntelliForms\Storage2(保管されている認証情報などのAutoCompleteデータ)
  • CLSID_CUrlHistory(閲覧履歴)

暗号通貨と暗号化ドライブを標的とするスティーラー

新しい変種には以下のように、ディスク暗号化のソフトウェアや、暗号通貨のウォレットからデータを窃取する機能が追加されているようです。

対象となるデジタル通貨のウォレット

ディスク暗号化ツール

  • VeraCryptディスク暗号化ソフトウェア、TrueCryptディスク暗号化ユーティリティ(このユーティリティはすでに終息)

セキュリティ製品の動作を妨害するモジュール

アンチPhishWallモジュール

新しい変種の機能には、組み込みのアンチPhishWallモジュールが追加されています。PhishWallは、日本のサイバーセキュリティ企業、セキュアブレインが開発したアンチフィッシング、アンチMITB(Man-in-the-Browser)の製品です。この製品は日本できわめて広く利用されており、銀行を標的としたトロイの木馬、具体的にはGoziの対策ソリューションとして、複数の銀行や金融機関が推奨さえしています。

PhishWallが日本において普及していることを考えれば、新しいUrsnifの変種がShifuBeblohなどの過去のトロイの木馬と同様にアンチPhishWallモジュールを実装するようになったのは、当然と言えるでしょう。

このモジュールは以下に示すように広範なチェックを行い、PhishWall製品や、ブラウザのプラグインを検出して、それらの機能を無効化します。

  1. レジストリをチェックし、PhishWallのキーが存在しないか確認します。存在する場合は、sbpwu.exeプロセスを見つけ出し、これを停止します。

  2. 2つ目のプロセス、「PhishWall5.1.exe」を特定し、このプロセスの停止を試みます。

  3. Firefoxのブラウザ拡張機能を列挙して、「\extensions\info.asia@securebrain.co.jp.xpi」にPhishWallの拡張機能が存在しないかチェックを行います。拡張機能が見つかった場合は、Firefoxの停止を試みます。

  4. そして最後にこのモジュールは、PhishWallと関係のある以下のCLSIDがレジストリ内に存在しないかチェックを試みます。
    a.8CA7E745-EF75-4E7B-BB86-8065C0CE29CA
    b.BB62FFF4-41CB-4AFC-BB8C-2A4D4B42BBDC

重要なポイント:この記事の著者はアンチPhishWallのコードをテストしていません。そのため、その効力や品質を証明することはできません。

アンチRapportモジュール

Ursnifに実装されているというアンチRapportモジュールは特に新しいものではありませんが、ここ最近日本を攻撃したマルウェアの変種のなかにこのモジュールが見つかることは滅多にありませんでした。Rapportは、IBMの子会社Trusteerが提供しているエンドポイント保護製品です。Rapportをバイパスしたり無効にしたりするという複数のマルウェアの型がここ数年にわたり出現しています。

ここで取り上げたUrsnifの変種には、アンチRapportモジュールが実装されています。このモジュールは、コピー&ペーストではないものの、CarberpのアンチRapportコードを多く利用しているようです。このコードは2013年に流出し、現在では誰もがGithubで入手できるようになっています

新たな変種で見つかったアンチRapportのコードの一部を以下に示します。

この変種のコードは以下のように、GithubにあるCarberpのコードと非常に似通っています。

重要なポイント:この記事の著者はアンチRapportのコードをテストしていません。そのため、その効力や品質を証明することはできません。

まとめ

UrsnifとBeblohは依然として、日本のユーザーを標的とする情報窃取で最も多く使用されているトロイの木馬です。日本で確認された標的型のデリバリー手法やマルウェアの変種の場合、それらの開発サイクルは短く、またそれらは頻繁に利用されています。また、攻撃の手口は1か月から2か月ごとに変わり、その結果、従来のセキュリティ製品やサンドボックスによる検知を逃れています。

これらの攻撃で特に目立つのは、攻撃者が日本のユーザーを標的とするうえで多大な労力をかけている点です。攻撃者は複数のチェックを行い、標的が日本人のユーザーであることを確かめています。多くの被害をもたらしているほかのトロイの木馬や情報スティーラーが標的の対象をずっと広げているのとは対照的です。

このUrsnifの新しい変種はきわめて独特であり、日本を標的としてカスタマイズされています。また、過去に日本を標的としたことが知られているBeblohやShifuなどのトロイの木馬からアイデアを得たり、コードを借用することさえしたりしているようです。

セキュリティ侵害の痕跡

Excel Document (Macro)

DA85A7DE0B48881EF09179B800D033F27E8F6A01
6BEF7B72A0D314393FAE5F7915A5440DF2ABCF5F
A1CC4B824A35B5E1A016AA9AC0FAC0866C66BFFC
12E6EEA2EC60AC530CB6F683619ED4F571558C3F
F23EDE071D9F0274430D06E2C6E33FF1B1803C5F
B4707DA9396F1BBD3179A10F58815F1E58AC02FA

.NET language checker

Ettivyph.dll – 14181A8F9ACF8B3C55076BEF21217EAF83062B5A

Ursnif Loader (1st Stage):

gyehtuegg.exe – 2B21C3237105DEE871C252633AE65125E78AC23E
Ewwhuptgfq.exe – 99882D848ADF3818AD758B951303F12649967247
Ehuwowstsg.exe – 6EABB986CBA048EE1B81BD884F6ABDD38B7CB5DA
Iiwrghesya.exe – F1F6E136EEAC66278359EB6DAF406FD8504107DB
Bthcan32.exe – C8488A58B5ECE9104AEFBBBB0334199E2E3C3D56
Awerwyae.exe – 610B9128E56D488C7C2C700BD6C45A0250312129
Winklogon.exe – 1D78AA605450C5C02D23BD065996A028A59DE365
FEWPSQUUST.EXE – 8BB7240A38534881FDE3ADD2179EF9E908A09BE8
1770BE655DB3AC9B6561F2CC91DD9CD5DEA3D69B
0147FCC93C78A823BE94191FAE8A105549390C03

Unpacked Loader (dumped from memory)

1BB1BDA50D3C7BAD92872C4FE334203FB706E7C3

Client64.dll (dumped from memory)

8F6536397DC5E0D7699A1B2FDE87220C5D364A20
B6CB96E57951C123B9A5F5D6E75455AFF9648BCB

Client.dll (dumped from memory)

35F7AD2300690E0EB95F6F327ACA57354D8103FF

Domains

baderson[.]com
Mopscat[.]com
Gorsedog[.]com
Pintodoc[.]com
Ropitana[.]com
Pirenaso[.]com
Papirosn[.]com
delcapen[.]com

Steganography URLs

hxxps://i.imgur[.]com/96vV0YR[.]png
hxxp://oi65[.]tinypic[.]com/2z8thcz[.]jp

ホワイトペーパー「すべての組織が狙われている」

企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。
https://www.cybereason.co.jp/product-documents/input/?post_id=606

ホワイトペーパー「すべての組織が狙われている」