ISFB)というトロイの木馬は、サイバー犯罪の犯行現場において広く使用されている、情報窃取を狙ったトロイの木馬の1つです。2013年初頭にあらためて出現して以来、このトロイの木馬は絶えず進化を続けています。2015年にはそのソースコードが流出して、Github上で誰もが入手できるようになり、その結果、さまざまな攻撃者が改良を加えて新たな機能を追加したコードが開発されるようになっています。Ursnifを操る攻撃者の標的として上位にランクする国のなかに、ここ数年、日本の名前があります。2018年には、サイバーリーズンやほかのセキュリティ企業が、Ursnif(主にDreambotの変種)とBebloh(別名:URLZoneおよびShiotob)を組み合わせた攻撃についてレポートしています。2つのマルウェアを組み合わせたこの攻撃では、一連のチェックを実行するダウンローダーとしてBeblohが使用されています。Beblohはこれらのチェックを通じ、自身がいま活動している環境が、マルウェアの調査行う仮想マシンなどのアンチマルウェアの環境でないかどうかを確認します。攻撃の邪魔になる存在のいないことが明らかになると、BeblohはUrsnifをダウンロードし、Ursnifが、コアとなる情報窃取の機能を実行します。新たに見つかったUrsnifの変種には、強化された情報窃取用のモジュールが実装されていました。このモジュールは、メールクライアントのデータや、ブラウザに格納されているメールの認証情報を盗み出すことに特化しています。改良された新たなメールスティーラーモジュールが導入された結果、業務用のアカウントが侵害を受けたときにトロイの木馬が企業にもたらすリスクが重要視されるようになっています。ユーザーのメールアカウントや、メールの受信トレイの中身、デジタルウォレットのデータなど、金銭に換えることができたり、ほかの攻撃に利用できたりするようなデータの収集へと、トロイの木馬による攻撃はその主眼を移しつつありますが、銀行の利用方法がモバイルバンキングに移行するようになり、金融機関のシステムが常に強化されている状況を考えれば、これは当然のことと言えるでしょう。新旧の機能を併せ持つ新たな変種2019年の初め以降、複数の顧客環境にわたり日本人のユーザーだけを標的にした標的型攻撃(APT攻撃)が発生しているのを、サイバーリーズンの研究者は確認しています。この攻撃では、新たなUrsnifの変種と、標的を定めBeblohを利用した改良型のデリバリーメソッドが導入されています。DLLをコンパイルして日本語の言語設定を抽出するPowerShellIPの位置情報をチェックする機能の追加。以下の図に、最新の攻撃で確認された感染チェーンを示します。Officeドキュメントをフィッシングメールに添付するところから始まります。ユーザーがドキュメントを開くと、[コンテンツの有効化]ボタンをクリックするよう指示する内容が日本語で表示されます。これに疑いを抱かず、ドキュメントのプレビューが表示されるものと期待してボタンをクリックすると、プレビューが表示される代わりに、ドキュメントに埋め込まれたマクロコードが実行されます。[コンテンツの有効化]ボタンをクリックするようユーザーに促す、武器化されたExcelドキュメント日本人のユーザーを標的とする改良されたVBAマクロマクロコードには難読化の処理が施されており、このコードはいくつかのPowerShellコマンドを実行します。PowerShellコマンドの暗号を解除してコマンドを実行する前に、VBAマクロは、標的のマシンの国の設定が日本になっているかどうかをチェックします。この手法は2018年の時点ですでに確認されていましたが、この新しいバージョンで攻撃者はコードに変更を加えてコードをわかりにくくし、簡単にはその内容を見破られないようにしています。従来のVBAでの国のチェックNao_Secによりドキュメント化されている従来のチェックでは、日本を表す「81」の値を国の設定と比較するほか、関数の「xlCountrySetting」を使用しています。標的のマシンの国の設定が日本になっていない場合、マクロコードは終了します。新しいVBAでの国のチェック変種のマルウェアに組み込まれている、国のチェックを行う新しい関数には、標的としている国を簡単に悟られないよう工夫が施されていますが、それでも必要最低限の計算をいくつかすれば、標的となっている国を簡単に推測できます。この新しいコードでは、国の設定をチェックしてその値に「960」を付加し、得られた新しい値をパラメータに格納します。1041)になります。「opa」の値が「1039.93」よりも大きいかどうかをSensitiveLine()関数がチェックし、値が大きい場合、マクロコードは処理を続行します。値が「1039.93」よりも大きくない場合には、マクロコードは終了します。計算は以下のように行われます。1,039.93注:同様の手法はイタリアのユーザーを標的とした攻撃にも実装されていますが、デリバリーされるUrsnifの変種は別のものとなっています。PowerShellダウンローダーマクロコードは、マシンの国の設定が日本になっていることを確認すると、PowerShellペイロードの暗号を解除し、ペイロードを環境変数として設定して、そのコードを実行します。環境変数に隠されたPowerShellのコード断片化されたPowerShellのコードコードには徹底した難読化が施されており、一連の新たなチェックが組み込まれています。標的のマシンの設定が日本語になっていることに加え、マシンの物理的なロケーションが日本であることを、Beblohのペイロードをダウンロードする前に、新たなチェックを通じて確認します。言語設定に関する追加のチェックペイロードをダウンロードする前にPowerShellのコードは最終の言語チェックを行い、標的が間違いなく日本人であることを確認します。確認にあたっては、Omk()関数の結果を、日本語を表す「j」と照合します。この内容を以下に示します。ファイルがコンパイルされ、%temp%フォルダに投下されます。コードを逆コンパイルすると、[CultureInfo.CurrentCulture]プロパティをチェックするOmk()関数の存在を確認できます。IPの位置情報のチェックダウンローダーは最後のチェックとして位置情報の確認を行います。APIを使用してIPアドレスが日本のものであることを確認します。IPの位置情報により国を特定ステガノグラフィを用いて、ありふれたイメージのなかにペイロードを隠蔽すべてのチェックが完了すると、PowerShellのコードは、Imgurやpostimage.ccなどのイメージ共有サイトにホストされているイメージファイルをダウンロードします。組み込まれているコンテンツの暗号が、以下の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は、以下のようなチェックを行います。CPUのチェック:ローダーがサーバー上で実行されているのか、あるいは、ラップトップやPCで実行されているのかを判断します。仮想化ベンダーチェック:VirtualBoxやQEMU、VMware、仮想ハードディスクなどの環境でローダーが実行されていないかどうかをチェックします。タイミングチェック(CPUIDのあるRDTSCは仮想マシンを強制終了し、デバッガやサンドボックスの処理を妨害します)以下の仮想化のチェックの例では、SetupDiGetClassDevsA()のAPIとSetupDiGetDeviceRegistryPropertyA()のAPIを使用して、Windowsのレジストリに保管されているハードウェア情報を照会しています。上記のチェックのいずれかで問題が見つかると、ローダーはエラーメッセージを表示してプロセスを終了します。仮想マシンを検知した際に表示されるエラーメッセージ問題が見つかることなくすべてのチェックが完了すると、ローダーは処理を続行し、UrsnifのコアのDLLをexplorer.exeのメインプロセスにインジェクションします。ステージ4:Ursnifのコアペイロード(client.dll)インジェクションされたDLLペイロードには、興味深いclient64.dllのPDBパスが存在します。あることを示しています。PDBのパス:c:\isfb3\x64\Release\client.pdb.メモリから抽出したビルド番号(バージョン番号)を確認すると、以下のように、バージョンが「300035」であることがわかります。以下のように、コンパイル日付は「02/22/2019」となっており、コンパイルが最近行われたことがわかります。これ以前に出現した同じ変種のサンプルのコンパイル日付は2018年7月になっていました。これは、この変種が最初に姿を現したのが2018年であることを意味します。数年をかけてUrsnifのオリジナルのコードは変化を遂げ、さまざまなマルウェアの機能や新たな機能を取り込んできました。Kotowiczによる記事に、詳しい分析が記載されています。弊社のコード分析によれば、新たに確認された変種には、Dreambotの変種と多くの類似点があります。この新しい変種には、TorクライアントやVNCのモジュールなど、広く確認されているいくつかの組み込みの機能が欠如しています。この変種には、以下のようないくつかの改良された機能や新たな機能が搭載されています。新たなパーシステンスメカニズム(Dridexのパーシステンスに類似した「ラストミニットパーシステンス」)改良された新たなスティーラーモジュール(IEスティーラー、Outlookスティーラー、Thunderbirdスティーラー)暗号通貨モジュールとディスク暗号化ソフトウェアのモジュール日本製のセキュリティ製品、「PhishWall」に対処するためのアンチPhishWallモジュールステルス性の高い新たなパーシステンスメカニズムこの新たな変種で特に注目すべき変更の1つは、検知を逃れるために新たなパーシステンスメカニズムが実装されている点です。新たに確認されたこのパーシステンスメカニズムは、ラストミニットパーシステンスモデルをベースにしています。このモデルでは、システムがシャットダウンする直前にパーシステンスが生成されます。システムのリブート後、ローダーはコアのDLLをexplorer.exeにインジェクションすると、すぐにレジストリのAutorunのキーを、%appdata%に格納されているファイルとともに削除します。同様の実装は、銀行を標的としたDridexやBeblohのトロイの木馬でも過去に使用されています。興味深いのは、このパーシステンスメカニズムが、シスコなどの研究者が2018年12月から2019年2月にかけて報告しているファイルレスのパーシステンスメカニズムとは異なる点です。これまでの手法はレジストリに格納されているPowerShellスクリプトを利用していました。システムが起動すると、QueueUserAPCのインジェクション手法を用いて動的に、コアのDLLがロードされexplorer.exeにインジェクションされます。以下の図では、「ラストミニットパーシステンス」を生成する流れと、そのロジックを標的のマシンから削除する流れを説明しています。パーシステンス生成の詳細なロジックこのマルウェアは、トロイの木馬の個々のコンポーネントのあいだで内部の通信に使用する非表示のウィンドウを生成します。Ursnifはこのウィンドウなどを使用して、WM_QUERYENDSESSIONのメッセージをキャッチします。メッセージは通常、システムがシャットダウンしようとするときに送信されます。それゆえこのメッセージは、システムが間もなくシャットダウンすることをマルウェアに知らせるアラームの役割を果たします。Ursnifはシャットダウンのメッセージを確認すると、HKCU\Software\AppDataLow\Software\Microsoft\{GUID}\Install内のインストールキーの情報をもとにAutorunのレジストリキーとファイルを生成し、ファイルを%appdata%のフォルダに格納します。マシンをセーフモードで起動すると、作成されたパーシステンスを確認することができます。セーフモードでは、ユーザーがログオンしたときにどのプログラムも自動的に実行されないようにするからです。システムがシャットダウンする直前に%appdata%に作成される.lnkファイルと.exeファイルシステムがシャットダウンする前に作成された、レジストリのAutorunキーパーシステンスを削除するロジックの詳細システムが起動し、ユーザーがログオンすると、ローダーが実行され、ローダーはexplorer.exeにコアのDLLをインジェクションします。トロイの木馬のコードが実行されると、以下の処理が行われます。「ProgMan」ウィンドウの有無がチェックされます。このウィンドウが存在する場合、explorer.exeのプロセスが実行されています。マルウェアのコードがexplorer.exeと同じプロセスから実行されているかどうかがチェックされます。これはおそらく、デバッグに対処するための処理と考えられます。レジストリと、%appdata%のフォルダが削除されます。このフォルダには、HKCU\Software\AppDataLow\Software\Microsoft\{GUID}\Install内のインストールキーに基づき生成された.lnkファイルと.exeファイルが格納されています。新たな変種(バージョン3)では、以下と比較した場合、スティーラーモジュールのコードに変更があります。新しい変種のメールスティーラーでは、機能の強化や、いくつかの新たな機能の追加など、メジャーアップデートが行われているようです。ThunderBirdを標的とするスティーラーの機能があります。以下の比較チャートでは、メール窃取のメイン関数について最近の変種で変更になった点を説明しています。新しいOutlookスティーラーモジュールは、標的となるマシンに格納されているOutlookのアカウントを以下のように列挙します。Outlookの複数のバージョンに対応できるようになっています。Outlookの1つまたは2つのバージョンしか対応できませんでした。Outlookの.PSTや.OSTのファイル拡張子も特定できるようになっています。ThunderBirdのメールクライアントから以下のようなデータを窃取することができます。Explorerに保管されている以下のようなデータを窃取します。新しい変種には以下のように、ディスク暗号化のソフトウェアや、暗号通貨のウォレットからデータを窃取する機能が追加されているようです。Armoryウォレットディスク暗号化ツールVeraCryptディスク暗号化ソフトウェア、TrueCryptディスク暗号化ユーティリティ(このユーティリティはすでに終息)セキュリティ製品の動作を妨害するモジュールアンチPhishWallモジュール新しい変種の機能には、組み込みのアンチPhishWallモジュールが追加されています。PhishWallは、日本のサイバーセキュリティ企業、セキュアブレインが開発したアンチフィッシング、アンチMITB(Man-in-the-Browser)の製品です。この製品は日本できわめて広く利用されており、銀行を標的としたトロイの木馬、具体的にはGoziの対策ソリューションとして、複数の銀行や金融機関が推奨さえしています。PhishWallが日本において普及していることを考えれば、新しいUrsnifの変種がShifuやBeblohなどの過去のトロイの木馬と同様にアンチPhishWallモジュールを実装するようになったのは、当然と言えるでしょう。このモジュールは以下に示すように広範なチェックを行い、PhishWall製品や、ブラウザのプラグインを検出して、それらの機能を無効化します。レジストリをチェックし、PhishWallのキーが存在しないか確認します。存在する場合は、sbpwu.exeプロセスを見つけ出し、これを停止します。2つ目のプロセス、「PhishWall5.1.exe」を特定し、このプロセスの停止を試みます。Firefoxのブラウザ拡張機能を列挙して、「\extensions\info.asia@securebrain.co.jp.xpi」にPhishWallの拡張機能が存在しないかチェックを行います。拡張機能が見つかった場合は、Firefoxの停止を試みます。最後にこのモジュールは、PhishWallと関係のある以下のCLSIDがレジストリ内に存在しないかチェックを試みます。a.8CA7E745-EF75-4E7B-BB86-8065C0CE29CAb.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などのトロイの木馬からアイデアを得たり、コードを借用することさえしたりしているようです。企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。ホワイトペーパー等を公開しております。CONTACTus_製品/サービスに関する資料請求、お見積もり、ご購入や導入についてのご相談、その他のお問い合わせはこちらで承っております。Inc.の米国、日本およびその他の国における登録商標または商標です。※その他製品名等はそれぞれ各社の登録商標または商標です。