マルウェア
中国語圏の攻撃グループが展開するバックドア型マルウェア「Noodle RAT」を分析
バックドア「Noodle RAT」の分析結果を詳しく解説します。本バックドアは、中国語圏のグループによる諜報活動やサイバー犯罪に利用されていると考えられます。
本稿は、セキュリティ会議「Botconf 2024」におけるトレンドマイクロの発表をベースに作成したものです。発表内容は、こちらからご視聴いただけます。
はじめに
2022年以降、ELF(実行ファイル形式の1つ)形式のバックドア型マルウェアによる標的型攻撃が、アジア太平洋地域で多発しています。本バックドアの分類について、大多数のベンダーが、既存マルウェア「Gh0st RAT」や「Rekoobe」の亜種と見なしてきました。しかし、今回トレンドマイクロが実施した調査によると、本バックドアは既存マルウェアの亜種などではなく、新型マルウェアに相当します。本マルウェアの用途はサイバー犯罪や諜報活動などであり、中国語圏の攻撃グループに利用されていると考えられます。トレンドマイクロでは、過去に文書報告されていなかった本マルウェアに対して「Noodle RAT」の呼称を割り当てました。
Noodle RAT
Noodle RAT(別称:ANGRYREBEL、Nood RAT)は比較的単純なバックドアであり、Windows版(Win.NOODLERAT)とLinux版(Linux.NOODLERAT)の双方が確認されています。下図に、本マルウェアに関する報告やインシデントの履歴を示します。
マルウェア解析サイト「VirusTotal」上でNoodle RATを調べたところ、その初期バージョンに対応するコマンドコントロール(C&C:Command and Control)用パネルが複数発見されました。各バージョンのコンパイル日時は、Win.NOODLERAT v1.0.0が2016年7月、Linux.NOODLERATのv1.0.1が2016年10月、Linux.NOODLERATのv1.0.2が2017年4月となっていました。
Noodle RATの歴史は長期に及びますが、最近まで適切に分類されていませんでした。2018年以降、Noodle RATに絡む攻撃事例が複数回に渡って報告されてきましたが、当初より、問題のELFバックドアが別々のマルウェアファミリとして誤認されていました。具体例としてNCC Groupは2018年、攻撃グループ「Iron Tiger」が用いる「Gh0st RAT」の亜種を報告しました。また、同年にTalosは攻撃グループ「Rocke(別称:Iron Cybercrime Group)」が用いるELFバックドアを、Sophosは攻撃キャンペーン「Cloud Snooper」に絡むGh0st RATのLinux型亜種を、それぞれ報告しました。続いて2019年にPositive Technology Securityは、Calypso APTが用いるCalypso RATについて報告しました。これらの報告に上がったELFバックドアは、実際には全てNoodle RATであることが、トレンドマイクロの調査によって判明しました。
トレンドマイクロのテレメトリ情報を調べたところ、Noodle RATによる諜報活動の形跡が2020年以降から確認され、標的としてタイやインド、日本、マレーシア、台湾が狙われていることが判明しました。一連の経緯を踏まえると、Noodle RATは複数の攻撃グループ間で共有され、サイバー犯罪や諜報活動に利用されていると考えられます。
以降、Noodle RATのWindows版とLinux版について、それぞれ詳しく解説します。
Win.NOODLERAT
Win.NOODLERATは、メモリ内で動作するシェルコード形式のモジュール型バックドアであり、当初、NCC GroupやPositive Technology Securityから報告されていました。他ベンダーの報告やトレンドマイクロの分析を踏まえると、本バックドアは諜報活動の目的でIron TigerやCalypso APT、その他未知のグループによって利用されています。本バックドアには、下記の簡易な機能が組み込まれています。
- ファイルのダウンロードとアップロード
- 追加モジュールのメモリ内実行
- TCPプロキシ
先述の通りWin.NOODLERATはシェルコード形式で作られているため、起動に際して専用のローダが必要となります。当該のローダとして、本調査では「MULTIDROP」と「MICROLOAD」の2種が確認されました。
インストール
トレンドマイクロでは、タイを標的とする2019年の諜報活動を調査した際に、ローダ「MULTIDROP」の存在を確認しました。当該ローダは、Positive Technology Securityが報告したドロッパと全く同一であることが判明しました。
一方、2019年から2021年にかけてインドを標的とする諜報活動を調査した際には、MULTIDROPとは異なるローダ「MICROLOAD」を発見しました。本ローダは、Microsoftによる正規のアプリケーション「Oleview.exe」を介して起動します。さらに、以下のレジストリ内に格納された暗号化済みシェルコードをRC4アルゴリズムによって復号し、これをsvchost.exeにインジェクト(埋め込み)します。
HKCR\Microsoft.System.UpdateColl\UpdateAgent
下図の通り、本シェルコードの先頭部にはデコード用スタブが格納され、その後にXORでエンコードされたデータが続きます。前者は、後者をデコードする役割を担います。この初期化処理により、中核のペイロードや設定情報が、メモリ内部でデコードされます。
C&C通信
Win.NOODLERATは、C&C通信のプロトコルとしてTCP、SSL、HTTPに対応しています。通信時のデータは全て暗号化され、そのアルゴリズムとしてRC4とXOR・AND演算を組み合わせた独自の方式が使用されます。本アルゴリズムについてはPositive Technology Securityの報告で詳説されていますが、Win.NOODLERATとLinux.NOODLERATの差異を特徴づける一要素であるため、今一度、分析結果を解説します。
下図の通り、暗号化された通信パケットは「ヘッダー」と「ペイロード」の2要素から構成されます。
Win.NOODLERATが通信パケットを送信する際、ヘッダー部を下記の手順で暗号化します。
- ヘッダー部のフィールド「cmd_id」、「payload_len」、「const_val」を初期化
- 3つのランダムなDWORD値を生成
- 「ペイロードのサイズ」と「ランダムなDWORD値」の和を算出(後にRC4鍵の一部として使用)
- ハードコーディングされたXOR鍵を使用し、手順3で生成済みの値をエンコード
- 手順3と4で生成済みの値をそれぞれ16進数文字列に変換し、両者を結合
- 手順5で生成済みの文字列をRC4鍵として、ヘッダーの先頭24バイト(フィールド「header_key」以外)を暗号化
ペイロード部の暗号化手順については、下記の通りです。
- ヘッダー部のDWORD値「cmd_id」、「const_val」をコピー
- 手順1で取得済みの各DWORD値をXORとAND演算の組み合わせによってエンコード
- 手順2で生成済みの値をそれぞれ16進数文字列に変換した上で、結合
- 手順3で生成済みのRC4鍵を使用し、ペイロードを暗号化
バックドアコマンド
Win.NOODLERATは、バックドアコマンドの実装方式に応じて複数のタイプに分けられることが判明しました。本調査では、C&Cサーバとの認証成功時に受け取るコマンドIDをベースに、2つのタイプ「0x03A2」と「0x132A」に大別しました。コマンドIDは、メインIDとサブIDの組み合わせによって表現されます。下表に、各タイプが扱うコマンドIDと、対応する機能の一覧を示します。
Win.NOODLERATの第1タイプ「0x03A2」は、「自身を削除」以外のほぼ全コマンドを実装しています。本タイプは、Iron Tigerやその他未知のグループによって諜報活動の目的で利用されています。この点より、本タイプは複数グループ向けの共有バージョンである可能性が示唆されます。
一方、第2タイプ「0x132A」は、全てのコマンドを実装しています。本タイプの利用者はCalypso APTのみであり、当該グループ向けの専用バージョンであると推測されます。
両タイプのコマンドIDを比較したところ、奇妙な類似性が見出されました。例えば、C&Cサーバにファイルをアップロードする際のコマンドID(メインID)について、第1タイプの場合は「0x390A」、第2タイプの場合は「0x590A」となっています。こうした部分一致の背景には、バージョン管理などが絡んでいる可能性がありますが、現状、確たる証拠は得られていません。
Linux.NOODLERAT
Linux.NOODLERATはNoodle RATのELFバージョンですが、Win.NOODLERATとは異なる方式で設計されています。本バックドアは、さまざまな目的で複数のグループに利用されています。具体例として、攻撃グループ「Rocke(別称:Iron Cybercrime Group)」による金銭目当ての活動、「Cloud Snooper」の名で呼ばれる諜報活動、その他未知のグループによる諜報活動などが挙げられます。先述の通り、Linux版はWindows版と設計が異なるため、バックドアとしての機能にも若干の差異があります。
- リバースシェル
- ファイルのダウンロードとアップロード
- 実行のスケジューリング
- SOCKSトンネリング
初期化
事例調査に基づくと、Linux.NOODLERATは大半の場合、外部公開サーバのアプリケーションを突く攻撃のペイロードとして配備されます。配備後、本バックドアは自身をパス「/tmp/CCCCCCCC」にコピーし、コマンドライン引数「argv」を上書きすることで、プロセス名の偽装を図ります。次いで、ハードコーディングされたRC4鍵「r0st@#$」を使用し、内部に埋め込まれた設定情報を復号します。復号済みの設定情報は、下図の形式(図の最下部)を持ちます。Linux.NOODLERATは、本設定情報に記載のC&Cサーバにアクセスします。
C&C通信
Linux.NOODLERATは、C&C通信のプロトコルとしてTCPとHTTPのみをサポートします。Linux版の特徴として、通信データの暗号化アルゴリズムが2種類存在します。1つ目は、コマンド処理を対象とするものであり、RC4とてXOR・AND演算を組み合わせたアルゴリズムが使用されます。2つ目は、リバースシェルのセッションを対象とするものであり、HMAC_SHA1やAES128-CBCが使用されます。
先述のように、コマンド処理に対する暗号化アルゴリズムでは、RC4とXOR・AND演算を組み合わせたアルゴリズムが使用されます。暗号化アルゴリズムの点についてはWin.NOODLERATの場合とほぼ同様ですが、下図の通り、ハードコーディングされた鍵データや、使用されるAPIに差異があります。
リバースシェルのセッションは、特定のバックドアコマンドを受け取ったタイミングで始まります。ここでの暗号化アルゴリズムは、後に述べるように、「Rekoobe」という既存マルウェアと全く同一です。そのため以降では、C&Cサーバの真正性(authenticity)を検証する際の仕組みについて簡単に説明します。
- バックドアは、C&Cサーバから40バイトのデータを受け取る。本データは、20バイト単位ごとに分割される。分割された各パートに対して、ハードコーディングされた文字列を付加し、SHA1ハッシュ値を算出する。こうして生成されたHMAC_SHA1のペアは、AESの暗号鍵や初期ベクトル、整合性チェックに使用される。
- C&Cサーバから追加の16バイトを受け取り、これをAESアルゴリズムによって復号する。復号に際しては、上記で生成済みの鍵データや初期ベクトルを使用する。
- 復号後のデータが、ハードコーディングされたチャレンジデータと一致するかを確認する。これにより、C&Cサーバの真正性を検証する。
バックドアコマンド
Win.NOODLERATと同様、Linux.NOODLERATについても、実装するコマンドIDに応じて2つのタイプ「0x03A2」、「0x023F8」が発見されました。
上表で「該当なし」と付されたコマンドについては、実装されているものの、メインIDが割り振られていないため、実質的に使用できません。
上表の内容は、表1で挙げたWin.NOODLERATと比べると、「認証成功」以外が大幅に異なっています。また、Linux.NOODLERATでは、一部のコマンドにオプション指定が必要となる点で特徴的です。タイプ「0x03A2」とタイプ「0x23F8」の間でサブIDを比較すると、Win.NOODLERATの時と同様、一定の類似性が見られます。例えば、タイプ「0x03A2」のサブID「0x2186」と、タイプ「0x23F8」のサブID「0x5186」が挙げられます。Windows版でも述べた通り、こうした類似性はバージョン管理に絡んでいる可能性があります。タイプ「0x03A2」の利用者として、攻撃グループ「Rocke」や諜報活動「Cloud Snooper」の実行グループ、その他未知のグループも存在します。そのため本タイプは、共有バージョンに相当すると推測されます。一方、タイプ「0x23F8」については周辺情報が不足しているため、利用グループの特定に至っていません。
Linux.NOODLERATとWin.NOODLERATの類似性
先述の通り、C&C通信の処理に関しては、Linux.NOODLERATとWin.NOODLERATの双方でほぼ同一のコードが使用されています。この他にも、いくつかの類似点や共通点が見られます。その一例がバックドアコマンドです。先に述べた通り、Linux.NOODLERATとWin.NOODLERATの双方とも、C&Cサーバからの認証成功時に同じコマンド「0x03A2」を受け取る形で設計されています。
もう1つの類似点として、設定情報の形式が挙げられます。Win.NOODLERATに「ネットワーク・キー」が含まれる点を除き、両者に間に差異は見られません。
新型マルウェアファミリに相当するかを分析
以上、すでに文書報告されているバックドアのWindows版とLinux版を取り上げ、これらが同一の新型マルウェアファミリ「Noodle RAT」に属する旨を述べてきました。しかし、ベンダーの報告によっては、Noodle RATが新型マルウェアではなく、既存マルウェア「Gh0st RAT」や「Rekoobe」の亜種であるという見解も示されています。それでは、Noodle RATは本当に新型マルウェアと呼べるのでしょうか。この疑問を解明するには、既存マルウェアとして挙がっている「Gh0st RAT」や「Rekoobe」に立ち返ってみる必要があります。
Gh0st RATはもともと中国のC. Rufus Security Teamによって開発されたものであり、2008年のリーク事案をきっかけに、そのソースコードが広範に流出しました。結果として、現在では非常に多くの亜種が存在し、複数の攻撃グループに利用されています。
Noodle RATとGh0st RATの間には、いくつかの接点があります。例えば、2018年にNCC Groupが報告したように、Win.NOODLERATはGh0st RATと同じプラグインを使用しています。また、Noodle RATが実装したパケット暗号化のアルゴリズムは、Gh0st RATの一部亜種(Gh0stCringe、HiddenGh0st、Gh0stTimes)と若干ながら類似しています。Gh0st RATの亜種は、Noodle RATと同様に、XORなどの演算を交えた独自のアルゴリズムを多用します。
しかし、Noodle RATとGh0st RATのコードを全体的に見比べると、プラグイン以外に明確な類似性は見られません。従って、当該のプラグインは再利用されただけであり、バックドア自体としては別物と見なすのが妥当と考えられます。
一方、RekoobeはTiny SHell(tsh)をベースとするバックドアであり、Tiny SHell のソースコードはGitHub上で一般公開されています。本バックドアは、数年間に渡ってLinux/Unixシステムを標的とする攻撃キャンペーンに利用されてきました。バックドアの内容についても、2015年のDr.Webによる初回報告や、2018年のIntezerによる別バージョンの報告など、すでに複数のベンダーから詳細な情報が開示されています。区別のため、以降ではDr.Webが報告したものを「Rekoobe v2015」、Intezerが報告したものを「Rekoobe v2018」と表記します。
Rekoobeは、複数の攻撃グループによって継続的に利用、更改されてきました。Dr.Webは、攻撃グループ「APT31」が「Rekoobe v2015」を利用した旨を報告しました。本バージョンでは、元のバージョンと比べ、一部機能に変更が入りました。例えば、C&CプロトコルにMAGIC値が追加されている点や、設定情報を引数ではなく外部ファイルから取り込む点などが挙げられます。一方、Rekoobe v2018については、トレンドマイクロの分析によると、複数の攻撃グループに使用されています。本バージョンでは、C&Cプロトコルが元の仕様に戻されている一方、設定情報をバイナリ内部に埋め込む方式に変更されました。さらに、コマンドライン引数「argv」を書き換えてプロセス名を偽装する機能も追加されました。
RekoobeとNoodle RATのコードを比較すると、特に「Linux.NOODLERAT」と「Rekoobe v2018」の間に類似性を見いだせるでしょう。具体例として、下図の「リバースシェル」と「プロセス名の偽装」が挙げられます。
図15のリバースシェル・セッションに関して、Linux.NOODLERATとTiny SHellのコードは完全に一致しています。この点より、Noodle RATの作成者はTiny SHellのコードをGitHubから取得し、そのまま利用した可能性があります。一方、引数「argv」を書き換えてプロセス名を偽装する機能は、Tiny SHellやRekoobe v2015にはなく、Rekoobe v2018に特有のものです。この点よりNoodle RATの作成者は、Rekoobe v2018のソースコードに対するアクセス権を有している可能性があります。
上述の類似点が見られる一方、それ以外に、Linux.NOODLERATとRekoobe/Tiny Shellの間にコード上の共通点はありません。そのため、トレンドマイクロの見解として、Linux.NOODLERATは別のマルウェアファミリに属すると考えられます。
Noodle RATのサーバ側を分析
NCC Groupは2019年、Win.NOODLERATのコントロールパネルに関する情報を開示しました。当該コントロールパネルの1つは「Noodlesv1.0.0」という名称を持ち、Win.NOODLERAT v1.0.0との繋がりが示唆されます。また、最近トレンドマイクロがVirusTotalを調べた際には、Linux.NOODLERATに対応するコントロールパネルとビルダーの新バージョンが発見されました。
コントロールパネル
今回発見したコントロールパネルは「NoodLinux v1.0.1」と名付けられていました。これを開く際には、前バージョンと同様、パスワードが要求されます。前バージョンのパスワードは「現在の年月(例:202405)」でしたが、今回はハードコーディング定義の固定文字列「hello!@#」となっています。
本バージョンのコントロールパネルは、C&C通信のプロトコルとしてTCPとHTTPをサポートし、任意指定のポート上で通信を待ち受けます。実際にLinux.NOODLERATの検体を用いて本コントロールパネルをテストしたところ、確かに動作することが確認されました。
ビルダー
Linux.NOODLERATのビルダーとして、2つのバージョン「v1.0.1」と「v1.0.2」が発見されました。本ビルダーは、Linux.NOODLERATのビルド機能を提供し、ユーザ独自の設定を取り込むことも可能です。
図19のように、アップロードされたサーバサイド用コンポーネントの中には、.doc形式のリリースノートが添えられていました。簡体字による当該ファイル名「更新说明」は、リリースノートやアップデート・ガイドを意味します。また、iniファイルの名前に含まれる「副本」は、「コピー」を意味します。
リリースノートには、テストの結果や機能強化、修正、アップデートに関する情報が、簡体字で記載されていした。こうしたファイルの存在を踏まえると、本マルウェアの背景には開発者と顧客の関係が存在し、正規なソフトウェア同然のビジネスが形成されている可能性があります。
まとめ
本調査では、マルウェア「Noodle RAT」のWindows版とLinux版を細部に渡って解析しました。結果、Gh0st RATやRekoobeといった既存マルウェアとの類似点や相違点が明らかになりました。また、Noodle RATが中国語話者からなるグループの間で共有または販売されている可能性が示されました。さらに今回は、Noodle RATのコントロールパネルやビルダーが新たに発見され、その内容からは、マルウェアのエコシステムが形成されている可能性が示唆されます。
Noodle RATは、長期に渡って既存マルウェアの亜種として誤分類され、過小評価されてきました。今回の分析結果は、本マルウェアが絡むインシデントの重大性を再認識する一助になると考えられます。
Noodle RATの検体によっては、VirusTotalへのアップロード日が2024年以降のものも見られました。そのため、本マルウェアは現在なお利用され続けていると考えられます。公開状態のアプリケーションを突いた攻撃が増加している近年の状況において、Linux/Unixシステムを狙うマルウェアは、攻撃者にとって重要かつ強力なツールとなります。Noodle RATはそうしたツールの1つとして、今後、さらに多用されていく可能性があります。
Trend Vision One™のハンティング・クエリ
Trend Vision Oneの脅威ハンティングに有用な可能性のあるクエリとして、下記が挙げられます。
Noodle RATの検知
o malName:NOODLERAT AND eventName: MALWARE_DETECTION
Noodle RATに感染している可能性
o FileFullPath:"/usr/include/sdfwex.h" OR FileFullPath:"/tmp/.llock"
侵入の痕跡(IoC:Indicators of Compromise)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
Noodle RAT: Reviewing the Backdoor Used by Chinese-Speaking Groups
By: Hara Hiroaki
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)