「SLUB」の新しいバージョンを確認、「GitHub」の利用を停止し「Slack」のみをC&C通信に利用

トレンドマイクロは2019年2月下旬、新種のバックドア型マルウェアを確認し、「SLUB」と名付けて3月14日の記事で解説しました。当時確認されたバージョンのSLUBは、VBScriptエンジンの脆弱性「CVE-2018-8174」を利用した水飲み場型攻撃で拡散し、リポジトリホスティングサービス「GitHub」とコミュニケーションプラットフォーム「Slack」を悪用してコマンド&コントロール(C&C)通信を行っていました。

2019年7月9日、新しいバージョンのSLUBが別のWebサイトを利用した水飲み場型攻撃によって拡散されていることが確認されました。この水飲み場型攻撃サイトは、Internet Explorer(IE)の遠隔からのコード実行(Remote Code Execution、RCE)脆弱性「CVE-2019-0752」を利用します。CVE-2019-0752はトレンドマイクロが運営する脆弱性発見・研究コミュニティ「Zero Day Initiative(ZDI)」によって発見された脆弱性で、2019年4月に修正プログラムが公開されています。今回の攻撃はCVE-2019-0752の利用が確認された初めての事例です。

新しいバージョンのSLUBは、GitHubの利用を停止し、Slackのみを利用してC&C通信を行うようになりました。Slackは、Internet Relay Chat(IRC)に似たシステムで、ユーザは作成したワークスペース内のチャンネルを通してメッセージをやり取りすることができます。問題のワークスペースはSlackによって既に停止されています。

偶然の一致かどうかは不明ですが、SLUBの拡散に利用されたWebサイトは両方とも北朝鮮政府を支持しているサイトでした。

■感染の流れ

今回確認されたSLUBは脆弱性「CVE-2018-8174」または「CVE-2019-0752」を利用する脆弱性攻撃コードが注入されたWebサイトを通した水飲み場型攻撃によって拡散します。ユーザが修正プログラムを適用していない環境から問題のWebサイトにアクセスするとSLUBのローダに感染します。

このローダは以下の手順で実行されます。感染の流れは前回のバージョンのSLUBに似ていますが、今回のバージョンは、アンチウイルスソフトウェアによるふるまい検知と機械学習による検出を回避するために以下のような手口を採用しています。

  1. SLUBをダウンロードするために、「WindowsStyle」オプションに「Hidden」を指定し非表示でPowerShellを開く。
  2. 「Rundll32」関数を使用し、C++ランタイムDLLに偽装した不正なDLL「mfcm14u.dll」を実行。不正なDLLは水飲み場型攻撃サイトからダウンロードされる。
  3. 不正なDLLはWindowsの命名規則に従ったエクスポートシンボルを実装し、実際のWindows API名「AfxmReleaseManagedReferences」を使用。この命名により機械学習アルゴリズムによる検出を回避できる可能性がある。

図1:「SLUB」のローダをダウンロードして起動するPowerShellスクリプト

図1:「SLUB」のローダをダウンロードして起動するPowerShellスクリプト

この不正なDLLはWindowsにおける権限昇格脆弱性「CVE-2019-0808」を利用するSLUBのローダです。この比較的新しい脆弱性に対処する修正プログラムは2019年3月に公開されています。このローダはアーキテクチャがx86であるかx64であるかをチェックし、対応したバージョンのSLUBに感染させます。すべての脆弱性攻撃コード、ローダ、およびSLUBは、問題の水飲み場型攻撃サイトに直接ホストされています。

図2:「SLUB」の感染の流れ

図2:「SLUB」の感染の流れ

図3:感染の流れにおけるトラフィックのパターン

図3:感染の流れにおけるトラフィックのパターン

■バックドア機能

SLUBに関する前回の記事の公開以来、このバックドア型マルウェアにはいくつかの変更が加えられています。もっとも特筆すべき点は、感染PCを管理しコマンドを送信するためにSlackのみを利用するようになったことです。

変更点の詳細は以下の通りです。

  • Githubの利用を停止
  • 攻撃者はSlackにワークスペースを作成
  • 感染PCがワークスペースに参加、感染PCごとに「<ユーザ名>-<PC名>」という名前の専用チャンネルが作成される
  • C&C通信にはこれらのチャンネルのみを利用、攻撃者は個別のチャンネルにメッセージを投稿しピン止めすることでコマンドを実行
  • 感染PCが専用チャンネルにピン止めされたメッセージを構文解析し、要求されたコマンドを実行

Slackの認証トークンが2つ、前回のバージョンと同様にバイナリファイルにハードコードされていました。

図4:認証トークン

図4:認証トークン

これらのトークンはSlack APIに対してメタデータを問い合わせるために利用可能です。メタデータには、チーム情報、ユーザ一覧、チャンネル一覧のような情報が含まれます。今回の事例の場合、チャンネル一覧が感染PCに対応しています。これらの情報を調査した結果、攻撃者のワークスペースは遅くとも2019年5月末には活動に利用されており、ユーザの1つのタイムゾーンは韓国標準時に設定されていました。

2つのトークンのレスポンスヘッダには相違点があり、C&C通信に使用するOAuth認証トークンのスコープにはワークスペースの管理が可能な「admin」が含まれていました。

図5:C&C通信に使用するトークン
図5:通知に使用するトークン

図5:C&C通信に使用するトークン(上)と通知に使用するトークン(下)

攻撃者がこれらのトークンを変更する必要がある場合、シンプルなWebページを簡単に作成することができるサービス「pen.io」で作成したWebページ「<省略>[.]pen[.]io」を更新します。このWebページのソースコードの中から「HELLO^」、「WHAT^」、「!!!」のような特定の文字列を検索します。これらの文字列が含まれていた場合、コードからトークンを取り出し更新します。

図6:トークンの更新に利用するWebページ

図6:トークンの更新に利用するWebページ

■コマンド&コントロール(C&C)通信

攻撃者(ユーザ一覧に含まれるユーザの1人)は、Slackにメッセージを投稿することでC&C通信を行います。感染PCの1つにコマンドを送信したい場合、対応するチャンネルにメッセージを投稿しピン止めします。実行するコマンドはメッセージのテキストの値によって指定します。以下は、コマンドを実行するメッセージの例です。

図7:スクリーンショットを取得する「capture」コマンドを実行するメッセージ

図7:スクリーンショットを取得する「capture」コマンドを実行するメッセージ

図8:指定したディレクトリのファイル一覧を取得するメッセージ

図8:指定したディレクトリのファイル一覧を取得するメッセージ

図9:デスクトップのファイル一覧を取得するメッセージ

図9:デスクトップのファイル一覧を取得するメッセージ

感染PCはコマンドを読み取って実行し、結果を返します。例えば、スクリーンショットを取得するコマンドを実行した場合、取得したスクリーンショットのファイルへのリンクを共有します。下図で「upload」の値が「true」に設定されていることに留意してください。

図10:スクリーンショットを取得しファイルをアップロード

図10:スクリーンショットを取得しファイルをアップロード

「exec」、「dnexec」、「capture」、「file」、「drive」、「reg」、そして「tmout」のような前回のバージョンに似たコマンドが確認されています。また、コマンドの実行結果も前回と同様にファイル共有サービス「file.io」にアップロードされます。

今回の攻撃の間、トレンドマイクロは、SLUBが2つのSlackチーム「sales-yww9809」および「marketing-pwx7789」を使用していることを確認しました。ワークスペースの作成日時は不明です。「sales-yww9809」チームには2人のユーザ「Lomin(lomio<省略>@cumallover[.]me)」と「Yolo(yolo<省略>@cumallover[.]me)」が参加しています。これら2人のユーザはどちらも2019年5月23日に作成されていますが、Lominのタイムゾーンはグリニッジ標準時(Africa/Monrovia)に設定され、Yoloのタイムゾーンは韓国標準時(Asia/Seoul)に設定されていました。もう1つのチーム「marketing-pwx7789」にも2人のユーザ「Boshe (boshe<省略>@firemail[.]cc)」と「Forth(misforth<省略>@cock[.]li)」が参加していました。これら2人のユーザは2019年4月17日に作成され、Bosheのタイムゾーンはグリニッジ標準時(Africa/Monrovia)、Forthのタイムゾーンは韓国標準時(Asia/Seoul)に設定されていました。

メールアドレスは「cock.li」のような無料の匿名メールサービスを使用しており、攻撃者に関する追加の情報は得られませんでした。

■まとめ

今回の攻撃は、日常業務上のセキュリティ対策「OpSec」に対して専門的なレベルにあり、Slack、cock.li、pen.ioのような正規オンラインサービスの利用により攻撃者の追跡は困難です。

前回の亜種と同様に、今回の亜種も極めて慎重に利用され広範囲には拡散されていませんでした。また、その他の亜種も、同じ攻撃者による別の活動も確認されていません。このことから、この攻撃の最終目的は、水飲み場型攻撃に利用したWebサイトを訪問するユーザを標的として監視することにあると考えられます。

今回の事例を受け、Slackは以下のように回答しています。

前回の記事で述べられ、今回の記事でさらに詳細が解説されているように、Trend MicroはSLUBとして知られる標的型のマルウェアとSlackを使用する攻撃者を確認し積極的に追跡してきました。Trend Microの調査によって、私たちは無料のワークスペースがこのような方法で利用されていることを認識しました。私たちは報告されたSlackのワークスペースを直ちに調査し、サービス利用規約違反により停止しました。この事例においてSlackは侵害されていないことを確認しています。私たちは責任を持ってSlackの悪用防止に取り組んでおり、サービス利用規約に違反するどのような者に対しても行動を起こします。

■トレンドマイクロの対策

サーバ向け総合セキュリティ製品「Trend Micro Deep Security™」をご利用のお客様は以下のルールによりこの脅威から保護されています。

  • 1009067-Microsoft Windows VBScript Engine Remote Code Execution Vulnerability (CVE-2018-8174)
  • 1009655-Microsoft Internet Explorer Scripting Engine Memory Corruption Vulnerability (CVE-2019-0752)
  • 1009647-Microsoft Windows GDI Elevation Of Privilege Vulnerability (CVE-2019-0803)
  • 1009582-Microsoft Windows Win32k Elevation Of Privilege Vulnerability (CVE-2019-0808)

■侵入の痕跡(Indicators of compromise、IoCs)

侵入の痕跡はこちらを参照してください。

参考記事:

翻訳: 澤山 高士(Core Technology Marketing, Trend Micro™ Research)