国際捜査機関に摘発された情報窃取型マルウェアRedLine Stealerの実態

この記事をシェア

ESET社がバックエンドモジュールの調査を行っていた情報窃取型マルウェアRedLine Stealerが国際捜査機関によって摘発されました。その調査結果について解説します。

本記事はESET Japanが提供する「ESETブログ」に掲載された「RedLineの悪意ある活動の実態:悪名高い情報窃取型マルウェアのバックエンドの詳細分析」を再編集したものです。

国際捜査機関に摘発された情報窃取型マルウェアRedLine Stealerの実態

2024年10月28日、オランダ国家警察は、FBI、欧州司法機構、およびほかのいくつかの法執行機関とともに、悪名高いRedLine StealerおよびMETA Stealerと呼ばれるそのクローンをサービスとして展開していたサイバー攻撃者のビジネス(サービスとしてのマルウェア:MaaS)のテイクダウン(解体作戦)を実行しました。この世界的な取り組みは、Magnus作戦と命名され、オランダでは3台のサーバーがテイクダウンされ、2つのドメインが押収されました。ベルギーでは2人が身柄を拘束され、米国では関係者の1名に対する起訴内容が公開されました。

2023年4月、ESET社はRedLineマルウェアの解体作戦の一部に参加し、このマルウェアのコントロールパネルのデッドドロップリゾルバとして使用されていた複数のGitHubリポジトリを削除しました。その当時、ESET社はFlareの研究者仲間と共同で、過去に特定および文書化されていなかったこのマルウェア系統のバックエンドモジュールを調査しました。これらのモジュールはマルウェアと直接やりとりはせず、認証を処理し、コントロールパネルの機能を提供しています。

RedLineは現在テイクダウンされたため、ESET社は2023年から調査した結果をこのブログで公開することにしました。オランダ国家警察から共有されたソースコードと検体を最近調査および分析した結果についても公開します。

これらの分析の多くはテイクダウンの前に実施されました。まだ動作する可能性がある古くハッキングされたマルウェアのコピーが存在しているため、このブログではRedLineの運用がまだ継続していると仮定しています。

本ブログの要点:

  • 2023年、ESET社の研究者は法執行機関と協力し、RedLine Stealerのバックエンドインフラストラクチャを実行するために使用されていた複数のモジュールを収集しました
  • ESET社は、これまで未知であったこれらのモジュールを分析し、この大規模なサービスとしてのマルウェアの内部的な構造を明らかにしました
  • ESET社は、RedLineのコントロールパネルをホストするために使用されていた1,000以上のユニークIPアドレスを特定できました
  • ESET社が詳細に調査したRedLine Stealerの2023年のバージョンでは、コンポーネント間の通信にWindows Communication Frameworkを使用していましたが、2024年の最新バージョンではREST APIを使用していました
  • ソースコードとバックエンドの検体の分析結果に基づき、Redline StealerとMETA Stealerの作成者は同じであるとESET社は判断しています

RedLine Stealerは、ProofPointが2020年に初めて発見した情報窃取型マルウェアです。RedLineは集中管理型の運用ではなく、さまざまなオンラインフォーラムやTelegramチャンネルを介して誰でも簡単に扱える情報窃取型マルウェアソリューションを購入できる、サービスとしてのマルウェア(MaaS)モデルで運用されています。アフィリエイトと呼ばれる顧客は、月額のサブスクリプションか、生涯ライセンスを選択できます。料金を支払えば、マルウェアのサンプルを生成し、C&Cサーバーとして機能するコントロールパネルを入手することができます。生成されたサンプルは、ローカルの暗号通貨ウォレット、ブラウザのCookie、保存されている認証情報、保存されているクレジットカード情報、Steam、Discord、TelegramやさまざまなデスクトップVPNアプリケーションの保存データなど、多種多様な情報を収集することができます。

既製のソリューションを使用することで、アフィリエイトはより大規模なキャンペーンにRedLine Stealerを簡単に組み込むことができます。2023年にはChatGPTの無料ダウンロードを装った例や、2024年前半にはビデオゲームの攻略法を騙った例があります。

用語に関する注記

MaaSモデルであるため、RedLineに関して包括的に議論するには、ネットワークインフラストラクチャのさまざまなコンポーネントやレイヤーについて記述する必要があります。混乱を避けるため、本文中では以下の用語を一貫して使用します。

  • RedLineマルウェア:RedLine Stealerマルウェアまたはその検体
  • RedLineパネル:情報窃取キャンペーンを管理するためのGUIコントロールパネル
  • RedLineのバックエンド:RedLineパネルの認証と機能を提供する一連のモジュール
  • RedLine:このマルウェアのオペレーション全体を指し、RedLineマルウェア、RedLineパネル、RedLineバックエンドモジュールが含まれます
  • バックエンドサーバー:RedLineバックエンドが動作するサーバー
  • 被害者:RedLineマルウェアの標的となった企業/組織
  • オペレーター:RedLineを開発し、ライセンスを販売し、ライセンス管理と関連するバックエンドのインフラストラクチャを運用する個人またはチーム
  • アフィリエイト:RedLineパネルのインスタンスを通じて情報窃取キャンペーンを行う個人または組織。アフィリエイトは通常、オペレーターからライセンスを購入していますが、ハッキングされたバージョンのパネルを使用している場合もあります

概要

本ブログ記事では、RedLineのバックエンドサーバー上で動作するモジュールを文書化し、このMaaSビジネスの構造をより深く理解できるようにしています。また、RedLineパネルに関する情報も提供しています。図1は、RedLineのオペレーター全体の概要を簡略化したものです。

通常、アフィリエイトに配布されるRedLineパネルのサンプルは、難読化の最初のレイヤーが適用された後、厳重にパッケージ化され、仮想化されます。しかし、RedLine Stealerとそのパネルに関連するアクティビティをESETテレメトリで調査したところ、.NET Reactorによって難読化されただけの古いバージョンのRedLineパネルが発見されたため、分析が非常に簡単になりました。

図1. RedLineに関与している攻撃者とコンポーネントの概要

図1. RedLineに関与している攻撃者とコンポーネントの概要

REDLINEのツールセット

マルウェア本体からバックエンドの認証サーバーまで、RedLineのすべてのコンポーネントは、.NETフレームワークを使用してC#で記述されています。ESET社が分析したバージョンでは、Windows Communication Foundation(WCF)フレームワークを使用して相互に通信していました。このフレームワークでは、コントラクトを使用してAPIを定義することができます。このコントラクトとは、オブジェクトとアクションがコードでの表現とネットワーク通信の間でどのように変換されるかを指定するために、クラスとインターフェースに適用されるステートメントです。したがって、このフレームワークを使ってやりとりするプログラムは、これらのデータ構造やクラスの定義を共有しなければなりません。これらの共有モデルは、難読化されたコンポーネントの分析に有用であることがわかっています。

最新の2024 RedLineバージョンは、バックエンドとの通信にWCFではなくREST APIを使用している点に注意してください。

RedLineパネル

このコントロールパネルは、アフィリエイトがフォーラムやTelegramチャンネルで購入できるものです。ライセンスは月額150ドル、生涯ライセンスは900ドルです。この金額を支払ったアフィリエイトは、キャンペーンを管理するためのGUIを手に入れ、収集する情報の設定、マルウェアサンプルの作成、収集した情報の表示と管理、盗んだ情報を販売するためのTelegramボットとの統合などの機能を利用できるようになります。

ESET社が調査した2023年バージョンのパネルは、有名な.NET難読化ツールであるDNGuardと、商用パッカーおよび仮想化ライブラリであるBoxedAppを使用して、厳重に難読化されていました。しかし幸運なことに、RedLineはWCFフレームワークを使用していたため、パネルはほかのコンポーネントとクラスやインターフェースを共有しなければなりませんでした。保護が不十分なマルウェアやバックエンドコンポーネントの共有要素を分析できたため、保護されているにもかかわらずパネルの多くの機能を理解することができました。

2023年以降のすべてのRedLineパネルは、SectigoがAMCERT,LLCに対して発行した証明書で署名されていましたが、ESET社が報告した後、この証明書は失効しました。AMCERT,LLCは、アルメニアで登録された企業ですが、オンラインでの知名度は低いようです。これはソフトウェア開発企業としてはかなり異例です。

認証

RedLineパネルを使用するには、まずアフィリエイトの認証が必要です。図2にログインプロンプトを示します。

図2. RedLineパネルのログインプロンプト

図2. RedLineパネルのログインプロンプト

ESET社が分析したRedLineパネルは、図3に示したようなGitHubリポジトリを認証サーバーのデッドドロップリゾルバとして使用しています。このリポジトリのアドレスはパネルにハードコードされていますが、パネルのすべてのバージョンで同じではありません。GitHubと協力してこれらのリポジトリをいくつか発見し、削除したことが、2023年4月にRedLineオペレーションを一時的に中断させることにつながりました。このときの削除はマルウェアのバックエンドには影響を与えませんでしたが、オペレーターはパネルの新バージョンの配布を余儀なくされました。Sleuthcon 2023でのFlareとの共同講演で説明したように、この中断の後しばらくの間、彼らはデッドドロップリゾルバをPastebinに移し、その後2023年5月に独自のドメインを使用することにしました。RedLineパネルの最新バージョンでは、攻撃者はデッドドロップリゾルバを完全に放棄し、ハードコードされたURL https://fivto[.]online/secure-api/を使用するようになりました。デッドドロップリゾルバの詳細については、ネットワークインフラストラクチャのセクションを参照してください。

ESET社は、バックエンドサーバーコンポーネントを仮想ネットワークで実行することで、サブスクリプションを購入することなく、アフィリエイトアカウントを作成し、独自のインスタンスで認証することができました。

図3. デッドドロップリゾルバとして使用されるGitHubリポジトリ

図3. デッドドロップリゾルバとして使用されるGitHubリポジトリ

ログイン時にアフィリエイトに表示される最初の画面は、広告で埋め尽くされています(図4を参照)。実際の認証サーバーが配信する広告の正確な内容は不明ですが、ESET社はデモを目的として、バックエンドサーバーの独自のインスタンスにいくつかの広告を作成することに成功しました。バックエンドサーバーがホストしているのは、広告に含まれる実際の画像ではなく、そのURLのみです。

図4. デモ用の偽広告が表示された、RedLineパネルのAdvertisementタブ

図4. デモ用の偽広告が表示された、RedLineパネルのAdvertisementタブ

Black Listsタブでは、国、IPアドレス、ビルドID、またはHWID(被害者マシンのドメイン名、ユーザー名、シリアル番号から算出される一意のID)に基づいて、受信データを無視することができます。ここで何を除外するかを選択したかにかかわらず、RedLine Stealerのサンプルはすべて、ロケールがアルメニア、アゼルバイジャン、ベラルーシ、カザフスタン、キルギス、モルドバ、タジキスタン、ウズベキスタン、ウクライナ、ロシアのいずれかの国に設定されていると実行されないようにするコードを含んでいます。

Telegramタブ(図5を参照)では、特定のチャットやチャンネルに窃取したデータを投稿するTelegramボットを設定することができます。アフィリエイトは、ボットに有効なAPIトークンを提供する必要があり、その後、国、ビルドID、OSバージョン、およびCookieまたは保存されたログイン情報で見つかったドメインに基づいて、共有されるエントリを選択できます。ボットはまた、Message Formatフィールドでの定義に従って、完全なログまたは特定の情報のみを共有し、選択された受信者と統計情報を共有するように設定できます(図6を参照)。

図5. RedLineパネルでのTelegramボットの設定

図5. RedLineパネルでのTelegramボットの設定

図6. 統計情報を共有するためのTelegramボットコード

図6. 統計情報を共有するためのTelegramボットコード

フロントエンドでマルウェアサンプルを作成する

Builderタブ(図7を参照)では、アフィリエイトはRedLineパネルのサーバーアドレス、ビルドID、表示するエラーメッセージ、作成したサンプルのアイコンとして使用する画像を提供することで、新しいRedLine Stealerのサンプルを作成できます。最後の2つはオプションで、画像はRedLineがなりすましているソフトウェアのアイコンとして機能します。一方、エラーメッセージは、目的のアプリケーションが起動しなかったもっともらしい理由を被害者に表示するために使用されます。

ビルドIDはキャンペーン識別子として使用され、窃取した情報とともにサンプルから送信されます。過去にリークしたRedLineパネルのいくつかのバージョンには、ローカルにビルドを作成する実行ファイルが含まれていましたが、新しいバージョンでは、ビルドの作成はバックエンドサーバーによって実行されます。この変更により、流出またはクラッキングされたRedLineパネルは、アフィリエイトが使用するサンプルを作成できなくなり、使い物にならなくなります。ビルドプロセスについては、RedLine.Nodes.LoadBalancerセクションで説明しています。

図7. RedLineパネルのBuilderタブ

図7. RedLineパネルのBuilderタブ

RedLineのバックエンド

2023年に分析したRedLineのバックエンドは、2つのモジュールで構成されています。最初のモジュールはRedLine.Nodes.DbControllerという名前で、アフィリエイトと広告のデータを管理します。その名前とは裏腹に、このモジュールは従来型のデータベースを使用せず、Protobufでエンコードされたオブジェクトとして個々のファイルにレコードを保存し、データタイプごとに特定のサブディレクトリを関連付けます。2番目のモジュールはRedLine.Nodes.LoadBalancerという名前で、サーバーとして機能し、RedLineパネルpanel.RedLineで使用される大半の機能を提供します。

また、RedLine.MainServerというモジュールも発見しました。これはおそらく、RedLine.Nodes.DbControllerとRedLine.Nodes.LoadBalancerの祖先です。後のバージョンでは、ユーザーと広告データを処理する別のモジュールとして分割されています。

バックエンドの2024年バージョンでは、DbControllerとLoadBalancerはNodes.Apiという単一のモジュールに置き換えられています。

RedLine.Nodes.DbController

DbControllerでは、アフィリエイトデータはClientDataというクラスで表されます(表1を参照)。

属性 説明
ID 一意の数値ID
Login ユーザー名
Password パスワード
RegistrationDate アフィリエイトアカウント作成時のタイムスタンプ
Activated アフィリエイトがライセンスを購入済みかどうか
LastActive アフィリエイトの最後の活動のタイムスタンプ
LastIP アフィリエイトの最後の活動が行われたIP。LastActiveと共に使用され、アフィリエイトのアカウントが過去5分間に他のIPアドレスからアクティブであった場合に認証を阻止します。
これはアカウントの共有を防止するためだと考えられます
Premium ESET社が分析したモジュールでは使用されていません
ActivateUntil アフィリエイトのライセンスの有効期限
BuildKey アフィリエイトが作成したサンプルを識別するために使用される一意の文字列

表1. ClientDataのプロパティの説明

概ね単純明快ですが、パスワードと生涯ライセンスの取り扱い方法など、いくつかの興味深い特徴があります。

アフィリエイトの認証に使用されるコードから(図8を参照)、パスワードが平文で保存されていることがわかります。送信されたパスワードは、ハッシュ関数が用いられることなく、保存されているパスワードと直接比較されます。

図8. DbControllerでアフィリエイトのログインを処理する関数の抜粋ト

図8. DbControllerでアフィリエイトのログインを処理する関数の抜粋

図9は、アフィリエイトが900ドルで購入できる生涯ライセンスで、有効期限を2025年以降の任意の日付に設定できることを示しています。これは、コードのほかの場所では「Pro License」と呼ばれています。

図9. LoadBalancerモジュールのコードは、アフィリエイトが生涯ライセンスを所有しているかどうかのチェックに使用される

図9. LoadBalancerモジュールのコードは、アフィリエイトが生涯ライセンスを所有しているかどうかのチェックに使用される

RedLine.Nodes.LoadBalancer

LoadBalancerモジュールはポート8778でデータを受信します(図10を参照)。このスクリーンショットは、MainPanelServiceというWCFコントラクトで定義されたハンドラも示しています。アフィリエイトと広告データに関連するハンドラ(OnSignInInternal、OnConnect、OnCheckExpire、OnGetPartners)は、DbControllerの対応するハンドラにリクエストを委任します。OnCheckConnectハンドラは、C&Cサーバーが外部から到達可能かどうかをチェックする目的でRedlineパネルによって使用されます。そのほかのハンドラはすべて、マルウェアサンプルの作成に関連するものです。

図10. MainPanelService WCFサービスとそのハンドラの初期化コード

図10. MainPanelService WCFサービスとそのハンドラの初期化コード

Redlineバックエンドでのサンプル作成

2020年に初めて文書化されて以来、RedLine Stealerはネットワーク通信にWCFフレームワーク、後にはREST APIを使用するように書き換えられてきました。図11に示すように、そうした書き換えられたバージョンの内部名はRedLine.Reburnのようです。

図11. RedLine.Reburnソリューションへのパスを取得するコード

図11. RedLine.Reburnソリューションへのパスを取得するコード

RedLine Stealerマルウェアのサンプルを作成するために、OnCreateLastBuildハンドラ(図10を参照)は、カスタムのVSBuilderクラスのCreateBuildメソッドを使用します。CreateBuildリクエストを受け取ると、アフィリエイトのアカウントの平文パスワードがコンソールに記録されます。このことから、一般的なセキュリティ手法が無視されていることがわかります。

リクエストの中でC&Cサーバーのポートが指定されていない場合、ビルダーはデフォルトでポート6677を指定します。サンプルを作成する際、図12のコードは当該キャンペーンのビルドIDとアフィリエイトアカウントのビルドキーからトークンを導出するために使用されます。これは、サンプルとパネル間の通信で使用されるns1.Authorizationヘッダーの値に対応していると考えられます。このヘッダーは、パネルが現在のアカウントで作成されていないサンプルからの接続をフィルタリングするために使用されるようです。

図12. RedLine Stealerのサンプルのトークン値を導出するコード

図12. RedLine Stealerのサンプルのトークン値を導出するコード

VSBuilder.CreateBuildメソッドは、サンプルを作成するためにローカルのC#ソリューションを使用します。ソースファイルの一部は、特定の値を置き換えるためにメモリに読み込まれてから、ディスクに書き戻されます。プロジェクトのファイルを収集することはできませんでしたが、このメソッドのデコンパイラ出力とRedLine Stealerのサンプルの出力から、変更された値を理解するのに十分な情報を得ることができました。

  • C&Cアドレス(暗号化済み)
  • ビルドID(暗号化済み)
  • 偽のエラーメッセージ(暗号化済み)
  • 復号鍵
  • 盗まれた情報を分割して送信するか、一度にすべて送信するかを指定するフラグ
  • 認証トークン
  • アセンブリ名

これらの値が置き換えられると、Visual Studioが起動してプロジェクトが構築されます。

対応するオプションをアフィリエイトが選択していて、生涯ライセンスを所有している場合、コンパイルされた実行ファイルは市販のBabel Obfuscatorによって難読化されます。2024年バージョンでは、難読化機能はすべてのユーザーに実装され、代わりに.NET Reactorを介して行われます。

最後に、自己署名証明書が図13のコードで生成され、実行ファイルに署名するのに使用されます。その識別名(DN)のフィールドは、ランダムな辞書の単語で埋められています。この方法で生成された証明書は、ハードコードされたパスワード123321を使用し、その有効期間は生成の7日前から10年後までです。

図13. DNにランダムな単語を含む自己署名証明書を生成する関数

図13. DNにランダムな単語を含む自己署名証明書を生成する関数

LoadBalancerモジュールは、OnCreateClipperハンドラも提供していました。その名のとおり、このハンドラはクリップボードを乗っ取るマルウェアを生成するために使用されていました。このケースでは、クリップボードのウォレットアドレスを攻撃者の管理下にあるウォレットのアドレスに置き換えることで、暗号通貨取引を乗っ取るために使用されていました。この機能は、Redlineバックエンドの最新バージョンでは削除されています。

興味深いことに、Builderクラスには、スタブ実行ファイルからマルウェアサンプルを生成するためのデッドコードも含まれていました。これは、以前のバージョンのRedLine Stealerを生成するために使用されたメソッドの名残だと考えられます。Redlineバックエンドの最新バージョンには、このコードは含まれていません。

OnSignFileという名前の別のハンドラは、生涯ライセンスを持つアフィリエイトがバックエンドサーバー上の証明書を使用して任意のファイルに署名することを可能にします。この証明書を収集することはできませんでしたが、RedLine Stealerやそのほかのマルウェアの多くのサンプルの署名にも使用されていることから、RedLineパネルの署名に使用された証明書と同じものである可能性があります。もう1つ可能性が高いのは、Hangil IT Co., Ltd.に発行された28F9A8E7601F5338BF6E194151A718608C0124A8のサムプリントを持つ証明書です。盗品である可能性が高いこの証明書は、多くのRedLine Stealerサンプルやそのほかの悪意のあるファイルへの署名に使用されています。この証明書はすでに失効されています。

RedLine.MainServer

RedLine.MainServerモジュールは、前の2つのモジュールの機能の一部と、管理者がアフィリエイトアカウントと広告データを簡単に管理できるGUIを組み合わせたものです。この機能が追加されたにもかかわらず、複数の要素からMainServerのこのバージョンはLoadBalancerとDbControllerの後継ではなく、祖先であることが示唆されています。

  • MainServerのサンプルは、.NETフレームワークの古いバージョン(4.6.2、4.8)でコンパイルされています
  • このアセンブリの著作権年は2021年ではなく2020年です
  • MainServerのサンプルの一部には、広告機能が含まれていません
  • WCFサービスの主要なコントラクト(MainPanelService)には、LoadBalancerと同じクラスに存在するIsAliveハンドラが含まれていません。このハンドラは、ESET社が分析した最新のRedLineパネルすべてで使用されています

RedLineバックエンドの後のバージョンでは、GUI管理パネルはMainServerという名前の独自モジュールに分割されています。

調査したバージョンのGUIからは、RedLineの管理について興味深い情報を得ることができました。このGUIは、アフィリエイトアカウントのデータを作成・編集するフォームを提供します(図14を参照)。フィールドは、前述したClientDataクラスに対応します。

図14. RedLineのMainServerアフィリエイトアカウント管理インターフェース

図14. RedLineのMainServerアフィリエイトアカウント管理インターフェース

広告を管理するための同様のフォームがあります(図15を参照)。

図15. RedLineのMainServer広告管理インターフェース

図15. RedLineのMainServer広告管理インターフェース

最後に、図16に示す基本的なダッシュボードに、ライセンス販売の概要が表示されます。

図16. MainServerのStatisticダッシュボード

図16. MainServerのStatisticダッシュボード

Nodes.Api

オランダの法執行機関から提供された検体の分析によると、最新バージョンのRedLineでは、LoadBalancerモジュールとDbControllerモジュールの機能が、Nodes.Apiという新しいモジュールに統合されています。このバックエンドモジュールは単一ファイルの.NETアプリケーションとしてパッケージ化され、パネルによって使用されるREST APIを提供するために、ASP.NETのWebApplicationクラスを使用します。図17で示しているように、このモジュールはRedLine(fivto[.]online)とMETA(spasshik[.]xyz)の両サーバーに送信されたリクエストを処理しており、2つの情報窃取型マルウェアのオペレーターが同じであることがわかります。

図17. RedLineとMETAの両サーバーに送信されるリクエストのリスナーを設定するコード

図17. RedLineとMETAの両サーバーに送信されるリクエストのリスナーを設定するコード

表2は、REST APIによって公開されるエンドポイントと、以前のバージョンの対応するWCFハンドラの一覧です。

エンドポイント 対応するWCFハンドラ 説明
/api/test N/A おそらく接続テストに使用されています。単に値OKを返します
/secure-api/sign-in OnSignInInternal パネルからのログインを処理します
/secure-api/getBanners OnGetPartners パネルに表示する広告を返します
/secure-api/createFile OnCreateLastBuild 情報を窃取するマルウェアのインスタンスを作成します
/secure-api/checkConnect OnCheckConnect 指定したアドレスとポートに対してpingを実行し、外部から到達可能かどうかを確認します
/secure-api/updateDb N/A バックエンドがアフィリエイトのデータを再読み込みします。これは、ループバックアドレスからのリクエストの場合のみ実行されます
/edk92hd/createRandom N/A ランダムなユーザー名とパスワードを使用して、新しいアフィリエイトエントリを作成します
/edk92hd/renew N/A 指定したアフィリエイトのライセンス有効期間を延長します
/Panel.zip N/A Panel.zip ファイルをディスクから返します。パスワードで保護されたこのアーカイブには、パネルの最新バージョンが含まれています

表2. RedLineのエンドポイント

最初に分析した2023年バージョンのバックエンドとは異なり、生涯ライセンスは新しいモジュールのコードには表示されなくなりました。このタイプのライセンスは当時販売中であったため、有効期限をずっと先の日付に設定するだけで処理された可能性が高いと考えられます。コード署名に関する機能も完全に削除されています。

Nodes.Apiモジュールによって作成されたサンプルの難読化には、.NET ReactorがハードコードされたパスC:\Program Files (x86)\Eziriz\.NET Reactor\dotNET_Reactor.exeに存在する場合、.NET Reactorが使用されます。これはデフォルトのインストールパスに対応しています。

前述の変更点以外にも、旧バージョンにあった機能は以前とほぼ同じように動作します。しかし、興味深い機能がいくつか追加されています。

アフィリエイトの管理

アフィリエイトデータの管理に使用される3つのエンドポイントが公開されています。これらのエンドポイントはオペレーターだけが使用できるように見えますが、実際には2つの異なる方法があります。/secure-api/updateDbエンドポイントにより、サーバーがディスクからユーザーデータを再読み込みします。図18は、新しいエントリが作成または修正されるたびにMainServerモジュールによって呼び出される更新メソッドを示しています。この操作は、リクエストがループバックアドレスから送信された場合にのみNodes.Apiモジュールによって実行されるため、パネルのユーザーはこのモジュールを使用できません。

図18. MainServerモジュールによって呼び出されるメソッド

図18. MainServerモジュールによって呼び出されるメソッド

残り2つのエンドポイントである/edk92hd/createRandomと/edk92hd/renewは、不正アクセスを軽減するために異なる方法を使用しています。図19で示しているように、リクエストにsko3sヘッダーが一見ランダムなハードコードされた値に設定されている場合にのみ、呼び出すことができます。

図19. リクエストが正しいsko3sヘッダーを含んでいるかチェックするコード

図19. リクエストが正しいsko3sヘッダーを含んでいるかチェックするコード

バックアップ

ほかにも、興味深い機能として、アフィリエイトデータをバックアップする機能が挙げられます。これは、古いバージョンのコードにはなかった機能です。このデータはディスク上の一連のファイルに保存されているため、バックアップはファイルが含まれるディレクトリのZIPアーカイブとなります。このアーカイブは、ハードコードされたチャットIDを使ってTelegram経由で送信されます(図20を参照)。

図20. ZIPアーカイブの作成

図20. ZIPアーカイブの作成

META Stealerとの関連性

META Stealerは、RedLine Stealerと並んで解体されたもう1つの情報窃取型マルウェアです。Kelaの記事によると、META Stealerが初めてサイバー犯罪フォーラムで発表されたのは、2022年3月のことでした。記事の筆者は、META StealerがRedLine Stealerと同じコードを使い、同じ機能とパネルを提供していると主張しています。META StealerはRedLine Stealerほど徹底的に調査されていませんが、当初の主張が正確であることがESET社の調査で明らかになっています。ソースコードから判断すると、この2つの情報窃取型マルウェアは同一人物によって作成されたものと思われます。違いはいくつかありますが、ほとんどのコードは同じで、文字列RedLineのインスタンスがMetaに置き換えられています。RedLineではコメントアウトされて非アクティブ化されているコードが、METAには存在します(図21を参照)。

図21. RedLine Stealer(左)とMETA Stealer(右)のソースコード比較

図21. RedLine Stealer(左)とMETA Stealer(右)のソースコード比較

すでに述べたように、RedLineとMETAのオペレーターが同じであることを示すもう1つの証拠が、Nodes.Apiモジュールのコードに見られます。このモジュールは、RedLineとMETAの両方のサーバーに送信されるリクエストを処理します(図17を参照)。

またESET社は、RedLineパネルの検体の署名にも使用された証明書で署名されたMETAパネルの検体を2つ発見しました。このパネルでは、同じデッドドロップリゾルバのスキームが用いられ、同じAESとRSAの鍵が使用されましたが、GitHubのリポジトリは異なっていました。さらに、図22で示しているように、METAとRedLineで使用されるパネルを比較すると、外観にはわずかな違いしかないことがわかります。

図22. RedLine(上)とMETA(下)のパネルのログインプロンプト

図22. RedLine(上)とMETA(下)のパネルのログインプロンプト

META Stealerは、DNGuardとBoxedAppの同じ組み合わせを使用して、パネルが分析されるのを阻止します。しかし、METAの認証プロセスは、2023年のRedLineバックエンドのインスタンスに対して実行しても完了できなかったことから、RedLineの認証プロセスから変更されているようです。

ネットワークインフラストラクチャ

2022年11月30日から2023年3月23日の間に検出されたRedLineの検体を解析した結果、RedLineパネルのホスティングに使用された1,000を超える固有のIPアドレスを特定することができました。図23は、ホストされたこれらのパネルの地理的分布です。ロシア、ドイツ、オランダがそれぞれ全体の約20%を占め、フィンランドと米国がそれぞれ約10%を占めています。このデータは、ESET社のお客さまを標的とした検体からのみ取得したものですが、マルウェアの全体的な分布に関してかなり正確に状況を示していると考えています。

図23. ホストされたRedLineパネルの地理的分布を示すヒートマップ

図23. ホストされたRedLineパネルの地理的分布を示すヒートマップ

また、複数の異なるバックエンドサーバーも特定することができました。復号できなかったデッドドロップリゾルバには、さらに多くのバックエンドサーバーが存在していた可能性あります。地理的分布(図24を参照)に基づくと、サーバーは主にロシアに位置しており(全体の約3分の1)、英国、オランダ、チェコ共和国には、それぞれ確認されたサーバーの約15%が存在しています。

図24. RedLineバックエンドサーバーの地理的分布を示すヒートマップ

図24. RedLineバックエンドサーバーの地理的分布を示すヒートマップ

ドロップデッドリゾルバ

前述したように、2023年バージョンのRedLineパネルは、認証サーバーのデッドドロップリゾルバとしてGitHubのリポジトリを使用していました。これらのリポジトリにはすべて、暗号化されたサーバーアドレスのリストを含むファイルが格納されていました。このファイルは単にRSAというカスタムモジュールを使って暗号化されていました。このモジュールのあるバージョンでは(図25を参照)、リストがハードコードされたキーとIVでAES-CBCを使って暗号化され、nodesUpdate.configという名前のファイルに保存されました。

図25. ハードコードされたAESキーとIVを持つncryptHosts関数

図25. ハードコードされたAESキーとIVを持つncryptHosts関数

少なくとも2024年半ばまで使われていた最近のバージョンでは、代わりにRSA暗号化(図26を参照)が使われ、出力はnodes.configというファイルに書き出されます。この場合、キーは実行ファイルにハードコードされるのではなく、ファイルから読み込まれます。しかし、RSA暗号化の実行に使用されるクラスは、LoadBalancerモジュールにも存在し、公開鍵と秘密鍵のデフォルト値がハードコードされています。バックエンドサーバーを指すのに、ここでも「ノード」が使用されている点に注目してください。

図26. ハードコードされたデフォルトキーによるRSA暗号化機能と復号機能

図26. ハードコードされたデフォルトキーによるRSA暗号化機能と復号機能

ESET社は、暗号化されたファイルを少なくとも1つ含むGitHubリポジトリを確認しました。上に示したキーとともに、パネルの検体からRSA秘密鍵を抽出することに成功しました。これにより、ESET社は認証サーバーのリストを入手し、法執行機関と共有することができました。

結論

Magnus作戦以前、RedLineは、そのコントロールパネルを使用するアフィリエイトが非常に多く、最も広く拡散した情報窃取型マルウェアの1つでした。しかし、この巨大なMaaSビジネスは、ごく少数の攻撃者によって運営されていると思われ、その一部は法執行機関によってすでに特定されています。

META Stealerは、RedLine Stealerのクローンであり、おそらく同じ攻撃者が作成したもので、2022年に登場しました。両ファミリの開発が並行して継続されていることから、RedLineの後継ではないようです。RedLine Stealerとともに、このマルウェアも駆逐されました。

RedLineの裏側、つまりコントロールパネルとバックエンドをESET社が徹底的に分析したことで、この脅威についてより包括的な理解が得られることを期待しています。

ファイル

SHA-1 ファイル名 ESETの検出名 説明
1AD92153B56FC0B39F8FCEC949241EC42C22FA54 Nodes.Api.exe N/A RedLineバックエンドの単一ファイルアプリケーション
8A0CAFE86C0774F1D9C7F198505AE15D04447DD6 MainServer.exe N/A RedLineバックエンドのユーザーおよび広告管理モジュール(2024年バージョン)
607DBA5F630A1DBFF0E13EEBA2730AB9AB2FB253 Nodes.Api.dll N/A RedLineバックエンドのメインモジュール
FB3ABAC1FAC852AE6D22B7C4843A04CE75B65663 Panel.exe MSIL/Spy.RedLine.O META Stealerパネル(2024年バージョン)
EE153B3F9B190B1492DEFBB1C70830A28F7C41B2 RedLine.MainPanel.exe MSIL/Spy.RedLine.H RedLine Stealerパネル(2024年バージョン)
1AB006B1C5403BA4648059DF93B6DAEB0E3EC43F Panel.exe MSIL/Spy.RedLine.O RedLine Stealerパネル(2024年バージョン)
DC3A236245AE8C4D5D079E429ED6B77A5B5245C2 RedLine.MainServer.exe N/A RedLineバックエンドのライセンスサーバーのGUI
06A2A900561C122F45088A5EAE9146F7675C63F6 rsa.exe N/A C&Cサーバーのリストを暗号化するツール
1626F2666782710FC28D4AFE607C7BE54F1FC67F RedLine.Nodes.LoadBalancer.exe N/A RedLineバックエンドのサーバーモジュール
37D1221CE6BB82E7AD08FD22BD13592815A23468 RedLine.SharedModels.dll MSIL/Spy.RedLine.K RedLine WCFのモデルとコントラクトの定義
66C0E7E74C593196E0925A7B654E09258E3B1FB7 Panel.exe Win32/GenCBL.ATC RedLineパネル(v22.4)
2E5D9F2ED82C81609F4C49EA31642B1FB5FC11B5 RedLine.MainPanel.exe MSIL/Spy.RedLine.H RedLineパネル(非仮想化)
47B78A5698A289C73175C5C69786DE40C7C93C12 RedLine.SharedModels.dll MSIL/Spy.RedLine.J RedLineのモデルとコントラクトの定義
49BE1D7C87AC919BB9083FA87F7B907E5F2C9835 Panel.exe MSIL/Spy.RedLine.H META Stealerパネル
4BF4D42EED7FCA8FD52863B7020AC646EC6D97E9 RedLine.Nodes.DbController.exe N/A RedLineバックエンドサーバーのユーザーと広告の管理モジュール
27BD472729439D5B8814D4A8A464AF9832198894 Panel.exe MSIL/Spy.RedLine.H RedLineパネル(v26)
A154DFAEDC237C047F419EB6884DAB1EF4E2A17D Panel.exe MSIL/Spy.RedLine.H RedLineパネル(クラッキングされ流出したバージョン)

ネットワーク

以下の表のドメインは法執行機関により押収されたものです。ESETが収集したその他のパネルとサーバーアドレスは、法執行機関の活動に役立てるため定期的に共有されていました。現在は無効になっています。

IP ドメイン ホスティングプロバイダー 最初に確認された日付 詳細
N/A spasshik[.]xyz N/A 2024-06-02 METAのバックエンドRESTサーバー
N/A fivto[.]online N/A 2024-08-03 RedLineのバックエンドRESTサーバー

MITRE ATT&CKの技術

この表は、MITRE ATT&CKフレームワークのバージョン15を使用して作成されています。

手法 ID 名前 説明
リソース開発 T1583.003 インフラストラクチャの取得:仮想プライベートサーバー RedLineのバックエンドのインスタンスは、リースされた仮想プライベートサーバー上でホストされています
T1583.004 インフラストラクチャの取得:サーバー RedLineのバックエンドのインスタンスは、RedLine専用と考えられるサーバーでホストされています
T1587.001 インフラストラクチャの取得:Webサービス RedLineのオペレーターは、すでに複数のGitHubアカウントとリポジトリを作成しています
T1587.002 能力の開発:マルウェア RedLineのオペレーターは、すでに独自のマルウェアファミリ、コントロールパネル、バックエンドサーバーを開発しています
T1588.003 能力の開発:コードサイニング証明書 RedLineのバックエンドは、サンプルを作成する際に自己署名証明書を自動的に生成します
T1608.002 機能の取得:コードサイニング証明書 RedLineパネルは、AMCERT,LLCに対して発行された有効な証明書で署名されています
T1608.001 ステージングサーバーの能力マルウェアのアップロード RedLineのバックエンドコンポーネントは、プライベートサーバーにアップロードされます
防衛機能の回避 T1622 デバッガの回避 RedLineパネルは、デバッガや解析ツールを検出すると自動的に終了します
T1027.002 ファイルや情報の難読化:ソフトウェアのパッケージ RedLineパネルのサンプルは、DNGuardとBoxedAppを使ってパッケージ化されています
C&C(コマンド&コントロール) T1132.001 データのエンコーディング:標準エンコーディング RedLineは、ネットワーク通信にbase64エンコーディングを多用しています。
ネットワーク通信は、WCFフレームワークの標準バイナリエンコーダを使用します
T1573.001 暗号化されたチャネル:対称暗号方式 パネルとバックエンドサーバー間の通信にはAES暗号を使用します。
場合によっては、デッドロップリゾルバのコンテンツはAES-CBCで暗号化されます
T1573.002 暗号化されたチャネル:非対称暗号方式 パネルとバックエンドサーバー間の通信にはRSA暗号を使用します。
場合によっては、デッドドロップリゾルバのコンテンツはRSAで暗号化されます
T1071.001 アプリケーションレイヤープロトコル:Webプロトコル 最近のバージョンでは、ネットワーク通信はHTTPS経由でREST APIを介して行われます
T1095 アプリケーションレイヤープロトコル以外の手法: ネットワーク通信は、TCP経由でWCFフレームワークで行われます
T1102.001 Webサービス:デッドドロップリゾルバ RedLineパネルは、GitHubのリポジトリをデッドドロップリゾルバとして使用して、バックエンドサーバーのアドレスを取得します
T1571 非標準ポート デフォルトでは、RedLineパネルのGuest Links機能はポート7766でHTTPサーバーを実行します
この記事をシェア

サイバー攻撃のセキュリティ対策に

サイバーセキュリティ
情報局の最新情報を
チェック!