RedLineの悪意ある活動の実態:悪名高い情報窃取型マルウェアのバックエンドの詳細分析
国際捜査機関によるRedLine Stealerの摘発を受け、ESETの研究者はこの情報窃取型マルウェアのバックエンドモジュールに関する調査結果を公表しました。
国際捜査機関によるRedLine Stealerの摘発を受け、ESETの研究者はこの情報窃取型マルウェアのバックエンドモジュールに関する調査結果を公表しました。
※本ブログは、2024年11月12日更新の原文を日本語に翻訳したものです。
2024年10月28日、オランダ国家警察は、FBI、欧州司法機構、および他のいくつかの法執行機関とともに、悪名高いRedLine StealerおよびMETA Stealerと呼ばれるそのクローンをサービスとして展開していたサイバー攻撃者のビジネス(サービスとしてのマルウェア:MaaS)のテイクダウン(解体作戦)を実行しました。この世界的な取り組みは、Magnus作戦と命名され、オランダでは3台のサーバーがテイクダウンされ、2つのドメインが押収されました。ベルギーでは2人が身柄を拘束され、米国では関係者の一名に対する起訴内容が公開されました。
2023年4月、ESETはRedLineマルウェアの解体作戦の一部に参加し、このマルウェアのコントロールパネルのデッドドロップリゾルバとして使用されていた複数のGitHubリポジトリを削除しました。その当時、ESETはFlareの研究者仲間と共同で、過去に特定および文書化されていなかったこのマルウェア系統のバックエンドモジュールを調査しました。これらのモジュールはマルウェアと直接やりとりはせず、認証を処理し、コントロールパネルの機能を提供しています。
RedLineは現在テイクダウンされたため、ESETは2023年から調査した結果をこのブログで公開することにしました。オランダ国家警察から共有されたソースコードと検体を最近調査および分析した結果についても公開します。
これらの分析の多くはテイクダウンの前に実施されました。まだ動作する可能性がある古くハッキングされたマルウェアのコピーが存在しているため、このブログではRedLineの運用がまだ継続的していると仮定しています。
本ブログの要点:
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パネルが発見されたため、分析が非常に簡単になりました。
マルウェア本体からバックエンドの認証サーバーまで、RedLineのすべてのコンポーネントは、.NETフレームワークを使用してC#で記述されています。ESETが分析したバージョンでは、Windows Communication Foundation(WCF)フレームワークを使用して相互に通信していました。このフレームワークでは、コントラクトを使用してAPIを定義することができます。このコントラクトとは、オブジェクトとアクションがコードでの表現とネットワーク通信の間でどのように変換されるかを指定するために、クラスとインターフェースに適用されるステートメントです。したがって、このフレームワークを使ってやりとりするプログラムは、これらのデータ構造やクラスの定義を共有しなければなりません。これらの共有モデルは、難読化されたコンポーネントの分析に有用であることがわかっています。
最新の2024 RedLineバージョンは、バックエンドとの通信にWCFではなくREST APIを使用している点に注意してください。
このコントロールパネルは、アフィリエイトがフォーラムやTelegramチャネルで購入できるものです。ライセンスは月額150ドル、生涯ライセンスは900ドルです。この金額を支払ったアフィリエイトは、キャンペーンを管理するためのGUIを手入れ、収集する情報の設定、マルウェアサンプルの作成、収集した情報の表示と管理、盗んだ情報を販売するためのTelegramボットとの統合などの機能を利用できるようになります。
ESETが調査した2023年バージョンのパネルは、有名な.NET難読化ツールであるDNGuardと、商用パッカーおよび仮想化ライブラリであるBoxedAppを使用して、厳重に難読化されていました。しかし幸運なことに、RedLineはWCFフレームワークを使用していたため、パネルは他のコンポーネントとクラスやインターフェースを共有しなければなりませんでした。保護が不十分なマルウェアやバックエンドコンポーネントの共有要素を分析できたため、保護されているにもかかわらずパネルの多くの機能を理解することができました。
2023年以降のすべてのRedLineパネルは、SectigoがAMCERT,LLCに対して発行した証明書で署名されていましたが、ESETが報告した後、この証明書は失効しました。AMCERT,LLCは、アルメニアで登録された企業ですが、オンラインでの知名度は低いようです。これはソフトウェア開発企業としてはかなり異例です。
RedLineパネルを使用するには、まずアフィリエイトの認証が必要です。図2にログインプロンプトを示します。
ESETが分析したRedLineパネルは、図3に示したようなGitHubリポジトリを認証サーバーのデッドドロップリゾルバとして使用しています。このリポジトリのアドレスはパネルにハードコードされていますが、パネルのすべてのバージョンで同じではありません。GitHubと協力してこれらのリポジトリをいくつか発見し、削除したことが、2023年4月にRedLineオペレーションを一時的に中断させることにつながりました。このときの削除はマルウェアのバックエンドには影響を与えませんでしたが、オペレーターはパネルの新バージョンの配布を余儀なくされました。Sleuthcon 2023でのFlareとの共同講演で説明したように、この中断の後しばらくの間、彼らはデッドドロップリゾルバをPastebinに移し、その後2023年5月に独自のドメインを使用することにしました。RedLineパネルの最新バージョンでは、攻撃者はデッドドロップリゾルバを完全に放棄し、ハードコードされたURL https://fivto[.]online/secure-api/を使用するようになりました。デッドドロップリゾルバの詳細については、ネットワークインフラストラクチャのセクションを参照してください。
ESETは、バックエンドサーバーコンポーネントを仮想ネットワークで実行することで、サブスクリプションを購入することなく、アフィリエイトアカウントを作成し、独自のインスタンスで認証することができました。
ログイン時にアフィリエイトに表示される最初の画面は、広告で埋め尽くされています(図4を参照)。実際の認証サーバーが配信する広告の正確な内容は不明ですが、ESETはデモを目的として、バックエンドサーバーの独自のインスタンスにいくつかの広告を作成することに成功しました。バックエンドサーバーがホストしているのは、広告に含まれる実際の画像ではなく、そのURLのみです。
Black Listsタブでは、国、IPアドレス、ビルドID、またはHWID(被害者マシンのドメイン名、ユーザー名、シリアル番号から算出される一意のID)に基づいて、受信データを無視することができます。ここで何を除外するかを選択したかにかかわらず、RedLine Stealerのサンプルはすべて、ロケールがアルメニア、アゼルバイジャン、ベラルーシ、カザフスタン、キルギス、モルドバ、タジキスタン、ウズベキスタン、ウクライナ、ロシアのいずれかの国に設定されていると実行されないようにするコードを含んでいます。
Telegramタブ(図5を参照)では、特定のチャットやチャネルに窃取したデータを投稿するTelegramボットを設定することができます。アフィリエイトは、ボットに有効なAPIトークンを提供する必要があり、その後、国、ビルドID、OSバージョン、およびCookieまたは保存されたログイン情報で見つかったドメインに基づいて、共有されるエントリを選択できます。ボットはまた、Message Formatフィールドでの定義に従って、完全なログまたは特定の情報のみを共有し、選択された受信者と統計情報を共有するように設できます(図6を参照)。
Builderタブ(図7を参照)では、アフィリエイトはRedLineパネルのサーバーアドレス、ビルドID、表示するエラーメッセージ、作成したサンプルのアイコンとして使用する画像を提供することで、新しいRedLine Stealerのサンプルを作成できます。最後の2つはオプションで、画像はRedLineがなりすましているソフトウェアのアイコンとして機能します。一方、エラーメッセージは、目的のアプリケーションが起動しなかったもっともらしい理由を被害者に表示するために使用されます。
ビルドIDはキャンペーン識別子として使用され、窃取した情報とともにサンプルから送信されます。過去にリークしたRedLineパネルのいくつかのバージョンには、ローカルにビルドを作成する実行ファイルが含まれていましたが、新しいバージョンでは、ビルドの作成はバックエンドサーバーによって実行されます。この変更により、流出またはクラッキングされたRedLineパネルは、アフィリエイトが使用するサンプルを作成できなくなり、使い物にならなくなります。ビルドプロセスについては、RedLine.Nodes.LoadBalancerセクションで説明しています。
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という単一のモジュールに置き換えられています。
DbControllerでは、アフィリエイトデータはClientDataというクラスで表されます(表1を参照)。
属性 | 説明 |
---|---|
ID | 一意の数値ID。 |
Login | ユーザー名。 |
Password | パスワード。 |
RegistrationDate | アフィリエイトアカウント作成時のタイムスタンプ。 |
Activated | アフィリエイトがライセンスを購入済みかどうか。 |
LastActive | アフィリエイトの最後の活動のタイムスタンプ。 |
LastIP | アフィリエイトの最後の活動が行われたIP。LastActiveと共に使用され、アフィリエイトのアカウントが過去5分間に他のIPアドレスからアクティブであった場合に認証を阻止します。 これはアカウントの共有を防止するためだと考えられます。 |
Premium | ESETが分析したモジュールでは使用されていません。 |
ActivateUntil | アフィリエイトのライセンスの有効期限。 |
BuildKey | アフィリエイトが作成したサンプルを識別するために使用される一意の文字列。 |
表1. ClientDataのプロパティの説明
概ね単純明快ですが、パスワードと生涯ライセンスの取り扱い方法など、いくつかの興味深い特徴があります。
アフィリエイトの認証に使用されるコードから(図8を参照)、パスワードが平文で保存されていることが分かります。送信されたパスワードは、ハッシュ関数が用いられることなく、保存されているパスワードと直接比較されます。
図9は、アフィリエイトが900ドルで購入できる生涯ライセンスで、有効期限を2025年以降の任意の日付に設定できることを示しています。これは、コードの他の場所では「Pro License」と呼ばれています。
LoadBalancerモジュールはポート8778でデータを受信します(図10を参照)。このスクリーンショットは、MainPanelServiceというWCFコントラクトで定義されたハンドラも示しています。アフィリエイトと広告データに関連するハンドラ(OnSignInInternal、OnConnect、OnCheckExpire、OnGetPartners)は、DbControllerの対応するハンドラにリクエストを委任します。OnCheckConnectハンドラは、C&Cサーバーが外部から到達可能かどうかをチェックする目的でRedlineパネルによって使用されます。その他のハンドラはすべて、マルウェアサンプルの作成に関連するものです。
2020年に初めて文書化されて以来、RedLine Stealerはネットワーク通信にWCFフレームワーク、後にはREST APIを使用するように書き換えられてきました。図11に示すように、そうした書き換えられたバージョンの内部名はRedLine.Reburnのようです。
RedLine Stealerマルウェアのサンプルを作成するために、OnCreateLastBuildハンドラ(図10を参照)は、カスタムのVSBuilderクラスのCreateBuildメソッドを使用します。CreateBuildリクエストを受け取ると、アフィリエイトのアカウントの平文パスワードがコンソールに記録されます。このことから、一般的なセキュリティ手法が無視されていることがわかります。
リクエストの中でC&Cサーバーのポートが指定されていない場合、ビルダーはデフォルトでポート6677を指定します。サンプルを作成する際、図12のコードは当該キャンペーンのビルドIDとアフィリエイトアカウントのビルドキーからトークンを導出するために使用されます。これは、サンプルとパネル間の通信で使用されるns1.Authorizationヘッダーの値に対応していると考えられます。このヘッダーは、パネルが現在のアカウントで作成されていないサンプルからの接続をフィルタリングするために使用されるようです。
VSBuilder.CreateBuildメソッドは、サンプルを作成するためにローカルのC#ソリューションを使用します。ソースファイルの一部は、特定の値を置き換えるためにメモリに読み込まれてから、ディスクに書き戻されます。プロジェクトのファイルを収集することはできませんでしたが、このメソッドのデコンパイラ出力とRedLine Stealerのサンプルの出力から、変更された値を理解するのに十分な情報を得ることができました。
これらの値が置き換えられると、Visual Studioが起動してプロジェクトが構築されます。
対応するオプションをアフィリエイトが選択していて、生涯ライセンスを所有している場合、コンパイルされた実行ファイルは市販のBabel Obfuscatorによって難読化されます。2024年バージョンでは、難読化機能はすべてのユーザーに実装され、代わりに.NET Reactorを介して行われます。
最後に、自己署名証明書が図13のコードで生成され、実行ファイルに署名するのに使用されます。その識別名(DN)のフィールドは、ランダムな辞書の単語で埋められています。この方法で生成された証明書は、ハードコードされたパスワード123321を使用し、その有効期間は生成の7日前から10年後までです。
LoadBalancerモジュールは、OnCreateClipperハンドラも提供していました。その名の通り、このハンドラはクリップボードを乗っ取るマルウェアを生成するために使用されていました。このケースでは、クリップボードのウォレットアドレスを攻撃者の管理下にあるウォレットのアドレスに置き換えることで、暗号通貨取引を乗っ取るために使用されていました。この機能は、Redlineバックエンドの最新バージョンでは削除されています。
興味深いことに、Builderクラスには、スタブ実行ファイルからマルウェアサンプルを生成するためのデッドコードも含まれていました。これは、以前のバージョンのRedLine Stealerを生成するために使用されたメソッドの名残だと考えられます。Redlineバックエンドの最新バージョンには、このコードは含まれていません。
OnSignFileという名前の別のハンドラは、生涯ライセンスを持つアフィリエイトがバックエンドサーバー上の証明書を使用して任意のファイルに署名することを可能にします。この証明書を収集することはできませんでしたが、RedLine Stealerやその他のマルウェアの多くのサンプルの署名にも使用されていることから、RedLineパネルの署名に使用された証明書と同じものである可能性があります。もう1つ可能性が高いのは、Hangil IT Co., Ltd.に発行された28F9A8E7601F5338BF6E194151A718608C0124A8のサムプリントを持つ証明書です。盗品である能性が高いこの証明書は、多くのRedLine Stealerサンプルやその他の悪意のあるファイルへの署名に使用されています。この証明書はすでに失効されています。
RedLine.MainServerモジュールは、前の2つのモジュールの機能の一部と、管理者がアフィリエイトアカウントと広告データを簡単に管理できるGUIを組み合わせたものです。この機能が追加されたにもかかわらず、複数の要素からMainServerのこのバージョンはLoadBalancerとDbControllerの後継ではなく、祖先であることが示唆されています。
RedLineバックエンドの後のバージョンでは、GUI管理パネルはMainServerという名前の独自モジュールに分割されています。
調査したバージョンのGUIからは、RedLineの管理について興味深い情報を得ることができました。このGUIは、アフィリエイトアカウントのデータを作成・編集するフォームを提供します(図14を参照)。フィールドは、前述したClientDataクラスに対応します。
広告を管理するための同様のフォームがあります(図15を参照)。
最後に、図16に示す基本的なダッシュボードに、ライセンス販売の概要が表示されます。
オランダの法執行機関から提供された検体の分析によると、最新バージョンのRedLineでは、LoadBalancerモジュールとDbControllerモジュールの機能が、Nodes.Apiという新しいモジュールに統合されています。このバックエンドモジュールは単一ファイルの.NETアプリケーションとしてパッケージ化され、パネルによって使用されるREST APIを提供するために、ASP.NETのWebApplicationクラスを使用します。図17で示しているように、このモジュールはRedLine(fivto[.]online)とMETA(spasshik[.]xyz)の両サーバーに送信されたリクエストを処理しており、2つの情報窃取型マルウェアのオペレーターが同じであることがわかります。
表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モジュールによって実行されるため、パネルのユーザーはこのモジュールを使用できません。
残り2つのエンドポイントである/edk92hd/createRandomと/edk92hd/renewは、不正アクセスを軽減するために異なる方法を使用しています。図19で示しているように、リクエストにsko3sヘッダーが一見ランダムなハードコードされた値に設定されている場合にのみ、呼び出すことができます。
他にも、興味深い機能として、アフィリエイトデータをバックアップする機能が挙げられます。これは、古いバージョンのコードにはなかった機能です。このデータはディスク上の一連のファイルに保存されているため、バックアップはファイルが含まれるディレクトリのZIPアーカイブとなります。このアーカイブは、ハードコードされたチャットIDを使ってTelegram経由で送信されます(図20を参照)。
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を参照)。
すでに述べたように、RedLineとMETAのオペレーターが同じであることを示すもう一つの証拠が、Nodes.Apiモジュールのコードに見られます。このモジュールは、RedLineとMETAの両方のサーバーに送信されるリクエストを処理します(図17を参照)。
またESETは、RedLineパネルの検体の署名にも使用された証明書で署名されたMETAパネルの検体を2つ発見しました。このパネルでは、同じデッドドロップリゾルバのスキームが用いられ、同じAESとRSAの鍵が使用されましたが、GitHubのリポジトリは異なっていました。さらに、図22で示しているように、METAとRedLineで使用されるパネルを比較すると、外観にはわずかな違いしかないことがわかります。
META Stealerは、DNGuardとBoxedAppの同じ組み合わせを使用して、パネルが分析されるのを阻止します。しかし、METAの認証プロセスは、2023年のRedLineバックエンドのインスタンスに対して実行しても完了できなかったことから、RedLineの認証プロセスから変更されているようです。
2022年11月30日から2023年3月23日の間に検出されたRedLineの検体を解析した結果、RedLineパネルのホスティングに使用された1,000を超える固有のIPアドレスを特定することができました。図23は、ホストされたこれらのパネルの地理的分布です。ロシア、ドイツ、オランダがそれぞれ全体の約20%を占め、フィンランドと米国がそれぞれ約10%を占めています。このデータは、ESETのお客様を標的とした検体からのみ取得したものですが、マルウェアの全体的な分布に関してかなり正確に状況を示していると考えています。
また、複数の異なるバックエンドサーバーも特定することができました。復号できなかったデッドドロップリゾルバには、さらに多くのバックエンドサーバーが存在していた可能性あります。地理的分布(図24を参照)に基づくと、サーバーは主にロシアに位置しており(全体の約3分の1)、英国、オランダ、チェコ共和国には、それぞれ確認されたサーバーの約15%が存在しています。
前述したように、2023年バージョンのRedLineパネルは、認証サーバーのデッドドロップリゾルバとしてGitHubのリポジトリを使用していました。これらのリポジトリにはすべて、暗号化されたサーバーアドレスのリストを含むファイルが格納されていました。このファイルは単にRSAというカスタムモジュールを使って暗号化されていました。このモジュールのあるバージョンでは(図25を参照)、リストがハードコードされたキーとIVでAES-CBCを使って暗号化され、nodesUpdate.configという名前のファイルに保存されました。
少なくとも2024年半ばまで使われていた最近のバージョンでは、代わりにRSA暗号化(図26を参照)が使われ、出力はnodes.configというファイルに書き出されます。この場合、キーは実行ファイルにハードコードされるのではなく、ファイルから読み込まれます。しかし、RSA暗号化の実行に使用されるクラスは、LoadBalancerモジュールにも存在し、公開鍵と秘密鍵のデフォルト値がハードコードされています。バックエンドサーバーを指すのに、ここでも「ノード」が使用されている点に注目してください。
ESETは、暗号化されたファイルを少なくとも1つ含むGitHubリポジトリを確認しました。上に示したキーとともに、パネルの検体からRSA秘密鍵を抽出することに成功しました。これにより、ESETは認証サーバーのリストを入手し、法執行機関と共有することができました。
Magnus作戦以前、RedLineは、そのコントロールパネルを使用するアフィリエイトが非常に多く、最も広く拡散した情報窃取型マルウェアのひとつでした。しかし、この巨大なMaaSビジネスは、ごく少数の攻撃者によって運営されていると思われ、その一部は法執行機関によってすでに特定されています。
META Stealerは、RedLine Stealerのクローンであり、おそらく同じ攻撃者が作成したもので、2022年に登場しました。両ファミリの開発が並行して継続されていることから、RedLineの後継ではないようです。RedLine Stealerとともに、このマルウェアも駆逐されました。
RedLineの裏側、つまりコントロールパネルとバックエンドをESETが徹底的に分析したことで、この脅威についてより包括的な理解が得られることを期待しています。
ESETのブログページに掲載されたリサーチに関するお問い合わせは、threatintel@eset.comまでご連絡ください。
ESET は、プライベートAPTインテリジェンスレポートとデータフィードを提供しています。サービスの詳細は、ESET 脅威インテリジェンスのページをご覧ください。
SHA-1 | ファイル名 | 検出 | 説明 |
---|---|---|---|
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フレームワークのバージョン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サーバーを実行します。 |