執筆者:
- Jozsef Gegeny(シニアセキュリティリサーチャー)
- Norbert Biro(シニアセキュリティリサーチャー)
- Robert Neumann( Acronis TRU Lab ヘッド)
はじめに
デリバリーチェーンの存在は、過去 10 年間にかつてなく重要になっています。脅威アクターは、悪意のある Eメール添付ファイルやドライブバイダウンロードを介したシンプルなデリバリーから進化し、複数の中間的な手段を経て、最終的なペイロードを配置するまでになっています。これらの追加的な手段は、配置されているセキュリティソリューションを迂回し、そのようなペイロードのデリバリーを中断させないようにするためでしたが、無駄が多くあるため、追加のリスクも伴います。従来と同じように、チェーンがどこかで切れると、連続性が永遠に失われるからです。
最近では、複数のスクリプト言語を使用した、複雑なデリバリーチェーンを目にすることがあります。これらは、オープンソースを使った DCRat やインフォスティーラーの Rhadamanthys などの、注目を集めているマルウェアファミリーの配置を最終的な目標としています。
感染チェーン
私たちの調査が始まったのは、RAR アーカイブ形式のファイルが添付されている Eメールメッセージを受け取ったときでした。予想通り、このアーカイブには、「Citación por embargo de cuenta」という名称の Visual Basic スクリプト(VBS)ファイル以外に、まともなコンテンツは含まれていません。このファイル名は、明らかにスペイン語を話すユーザーをターゲットにしており、英語でさっと訳したところ、「口座差し押さえの召喚」という意味でした。これは、債務またはその他の金融債務を理由とした、銀行口座の差し押さえ、または凍結に関する法的通知を意味します。意図は明確です。この Eメールを受信したユーザーは、ためらうことなく添付ファイルを即座に開き、それによって、悪意のあるデリバリーチェーンが実行され始めます。
この悪意のある VBS ファイルは、入れ子形式になったドロッパーを使用しており、デリバリー処理が複数ステージにわたって行われます。以下の図のように、私たちは、分析を 4 つの異なったステージに分けています。

ステージ 1: Visual Basic スクリプト
この Visual Basic スクリプトはサイズが 200KB 程度になっており、内製のよくある自動化スクリプトの類いではないことを示しています。よく見ると、難読化されていることもすぐにわかります。この異常とも言えるサイズは、難読化がある程度は理由となっているものの、後の分析で明らかになるように、ステージ 3 でのみ抽出される、エンコードされたペイロードが含まれていることも理由となっています。

難読化に対処する方法はいくつかあり、手動で難読化を解除する方法、Microsoft のAMSI サポートを利用する方法、あるいは実行ステージに達したときに最終ペイロードを捕獲できると見込んで、解読化を単に無視する方法もあります。Acronisでは、マルチレイヤーのアプローチで脅威検出に取り組むことが重要であると強く信じています。そのため、私たちは、できる場合にはいつでも、実行される前に悪意のあるコンテンツを無害化するようにしています。当社自身の AMSI サポートに加え、私たちは、抽象構文木(AST)のコンセプトをベースにした、社内開発の汎用スクリプトエミュレータを利用し、類似のシナリオでの難読化解除を自動化しています。

難読化を解除すると、スクリプトはこれまでよりはるかに、人間の目で解釈しやすくなります。初期の VBS スクリプトは、Windows バッチファイル(BAT)を生成し、そこに実行ファイルを転送することを主な機能としています。悪意のある BAT ファイルは、ユーザーのプロファイルディレクトリに置かれます。
VBS スクリプトは、同じディレクトリに自分自身のコピーも作成します。
ステージ 2: バッチドロッパー
2 番目のステージのバッチスクリプトでも難読化が採用されていますが、これまでの流れを見れば、驚きではありません。

実行されたバッチファイルは、「set」コマンドを利用して、さまざまな環境変数から Base64 にエンコードされた文字列を構築します。この Base64 文字列は、コンパクトな PowerShell スクリプトのかたちをとり、Windows PowerShell コマンドプロンプトに入力されたかのように「-command」引数を使用して実行されます。

基本的には、この文字列は、ユーザープロファイルディレクトリの PowerShell スクリプトのかたちをとった、以下のような、デコードされた Base64 データをドロップし、
以下のコマンドでファイルを実行します。
ステージ 3: PowerShell ローダー
興味深いことに、脅威アクターは、このレイヤーを難読化するための努力はそれほどしていないようで、すべてのテキストはシンプルで、簡単に読むことができます。

ただし、以下のような注目すべき引用がいくつか含まれています。
すべてではありませんが、ほとんどが、ドイツの哲学者フリードリヒ・ニーチェの引用です。この引用は、コメントとして PowerShell スクリプトに追加されたもので、機能面での目的はありません。マルウェアの作者は、どちらかというと哲学的な人物なのかもしれません。
このスクリプトの主な機能は、ユーザーのプロファイルディレクトリ内にある、前のステージの aguwDl.bat ファイルを見つけ、その最後にある(非常に長い)行を読み取り、マーカーバイトを削除して、最終的にその結果として生まれたペイロードをデコードし、メモリーにロードすることです。


メモリーにロードされたペイロードは、Windows .NET 実行ファイルで、リモートアクセスでよく使われており、DCRat と呼ばれている、トロイの木馬ファミリーに属しています。
ステージ 4: 最終ペイロード
このペイロードは、カスタムの .NET パッカーを使用してパッキングされており、強力な難読化が行われています。分析において、このペイロードがリソース構造内に、暗号化された 2 つのデータ BLOB を含んでいることがわかりました。

これらのデータ BLOB は、基本的な暗号化のみを使用しており、暗号鍵 0x78 を使い、バイト単位で XOR 演算をすれば、簡単に解読することができます。これらのリソースをデコードすると、2 つの追加の実行ファイルが現れます。

1 つはメインの DCRat 実行ファイルで、もう 1 つはパッカーモジュールをサポートしており、メモリー内でディスクに書き込むことなく、DCRat サンプルを直接ロードするライブラリです。これは、ヘルパーライブラリで実行される、RunPE という手法によって可能となります。主要な DCRat バイナリはかなり古いものですが、類似のデリバリー方法を使用すれば、今でも感染させることが可能です。
結論と追加の攻撃
悪意のあるキャンペーンで使用されるデリバリーチェーンは、継続的に進化し、さらに複雑化しています。脅威アクターは最終ペイロードを隠す方法を模索しており、セキュリティ業界で長年知られている、人気のマルウェアファミリーの別の亜種を使う場合であっても、それに変わりはありません。それがうまくいけば、時代遅れのマルウェアバイナリであっても、セキュリティソリューションがメモリーを通じて、その存在を検出できない限り、介入なしでファイルを実行できるようになるでしょう。
同時に、これらのデリバリーチェーンが複雑になればなるほど、新たなステップごとに追加のリスクとともに、これらを打ち破るチャンスが生まれるようになり、最終的には、どんなペイロードであっても、作成者が意図したような方法でロードされるのを防げるようになります。
このキャンペーンの分析中に、私たちは、感染チェーンが上記のようなものと完全に一致しているものの、最終ペイロードが異なっている、類似のキャンペーンをいくつか発見しました。攻撃者は DCRat を配置する代わりに、Rhadamanthys インフォスティーラーと、これも人気のある、リモートアクセを狙ったトロイでの木馬である、Remcos を使用しました。
プロテクションのためには
Acronis Advanced Security + Extended Detection and Response (XDR) は、攻撃チェーンで使用されるコンポーネントを正しく検出します。

侵害の指標
