マルウェア
攻撃グループ「Earth Lusca」が新型バックドアによってLinuxを攻撃:水平移動・内部活動にCobalt Strikeを利用
Earth Luscaが用いるサーバ上で、Windows用バックドア「Trochilus」から派生したと考えられるLinuxを標的とするバックドア型マルウェアを発見しました。その迅速な動作や、SOCKSの実装を踏まえ、本マルウェアを「SprySOCKS」と名付けました。
トレンドマイクロは2021年、中国と繋がりのある攻撃グループ「Earth Lusca」について調査を行い、そのリサーチペーパーを公開しました。初期調査以降も当該グループの活動が止むことはなく、2023年上半期には、攻撃対象が世界各地の国々にまで拡大しました。
追跡調査においてEarth Luscaの配信サーバを分析した際、特殊な性質を持つ暗号化ファイルが発見されました。さらに、その呼び出し元ローダがマルウェア解析サイト「VirusTotal」から発見されました。これをもとに、当該の暗号化ファイルを復号することに成功しました。復号後のペイロードは、Linuxを標的とするバックドア型マルウェアであり、当時はまだ未発見のものでした。その処理内容や内部文字列から判断すると、本ペイロードは、オープンソースによるWindows用バックドア「Trochilus」の改変版に相当し、一部機能をLinuxシステム向けに移植したものと考えられます。Trochilusの迅速な動作を受け継ぎ、さらに通信プロトコル「SOCKS(Socket Secure)」が新たに実装されている点を踏まえ、トレンドマイクロでは、このLinux向け新型亜種を「SprySOCKS」と名付けました。
バックドア「SprySOCKS」を解析したところ、いくつかの注目すべき性質が見出されました。まず本バックドアには、バーション番号に相当するデータが埋め込まれています。調査時には、2つの異なるバージョン番号を持つペイロードが確認されました。この点より、本バックドアの開発は現在なお進行中であると推測されます。また、本バックドアに組み込まれた対話型シェルは、マルウェア「Derusbi」のLinux版から着想を得て作成されたものと考えられます。
一方、SprySOCKSが用いるコマンドコントロール(C&C:Command and Control)のプロトコルを調べたところ、構造的には、Windowsを標的とするバックドア「RedLeaves」のそれに近いことが判明しました。RedLeavesはトロイの木馬型リモートアクセスツール(RAT:Remote Access Trojan)に相当し、「ローダ」と「暗号化されたメイン・ペイロード」の2コンポーネントから構成されています。このうちローダ側では、メイン・ペイロードの読み込み、復号、起動を担います。
本稿で述べるLinux版の「SprySOCKS」も、Windows版の「RedLeaves」と同様に、2種のコンポーネントから構成されています。また、RedLeavesに関しては、公開されているTrochilusのソースコードを土台に作られている旨が、以前から報告されています。
現在のところ、SprySOCKSの利用者として確認されているのは、攻撃グループ「Earth Lusca」に限られます。本稿では、Earth LuscaによるSprySOCKSを用いた攻撃活動の状況や背景について述べた上で、SprySOCKSに属する各コンポーネントやその機能について詳しく解説します。
近年のEarth Luscaによる攻撃活動
2023年前半においてもEarth Luscaの活動を継続し、主に東南アジア、中央アジア、バルカン半島の国々が狙われました。また、ラテンアメリカやアフリカ圏に対する攻撃も、散発的ながら確認されました。標的とされた組織として、主に外交、技術、電気通信事業に関わる政府機関が挙げられます。
現在、Earth Luscaは標的組織に対する攻勢を強め、特にインターネット上に公開されたサーバを狙う動きが見られます。この際、サーバ側のNデイ脆弱性を突いた手口が頻繁に確認されています。下表に、該当する脆弱性の代表例を挙げます。
表1:Earth Luscaが不正利用する脆弱性の代表例
こちらのPDFファイルを参照ください。
サーバの脆弱性を突いて標的ネットワークに侵入したEarth Luscaは、Webシェルを配備し、水平移動・内部活動のためにCobalt Strikeをインストールします。本グループの主な目的は、メールアカウントの認証情報や文書情報を窃取することにあります。また、標的システム内で長期的に諜報活動を継続できるように、高度なバックドア「ShadowPad」や「Winnti」のLinux版を追加で配備します。
ローダ用コンポーネント「mandibule」
初期調査において、Earth Luscaの配信サーバから「libmonitor.so.2」という名前のファイルが発見されました。本ファイルの中身はランダムなバイト列のように見え、暗号化されたペイロードの一種であると予想されました。さらに情報を得るため、VirusTotal上で当該ファイル名を検索したところ、Linuxの実行形式「ELF」に相当する以下の関連ファイルが発見されました。
mkmon(SHA256値:65b27e84d9f22b41949e42e8c0b1e4b88c75211cbf94d5fd66edc4ebe21b7359)
解析の結果、本ELFファイルは「libmonitor.so.2」を復号し、そのペイロードを抽出できることが判明しました。従って、「mkmon」は「libmonitor.so.2」のローダであると考えられます。
このローダはスクラッチから開発されたものではなく、公開されているLinux用ELFインジェクタ「mandibule(フランス語で下顎の意味)」を元手に作成されていることが判明しました。大元のELFインジェクタはコマンドライン型ツールであり、ペイロードを自身または他のプロジェクトにインジェクトする(埋め込む)機能を提供します。また、一般的なコマンドライン型ツールと同様に、利用法やパラメータに関する説明がテキスト形式で用意されています。さらに、インジェクションの状況をユーザに伝えるため、さまざまなデバッグメッセージを出力します。
先述の通り、Earth Luscaはmandibuleのプロジェクトを元手にマルウェア用ローダを作成しました。この際、元のmandibuleにあった利用法の説明文や他のプロセスへのインジェクト機能は削除し、第二段階で用いるコードの読み込み、復号機能を新規に追加しました。しかし、デバッグメッセージやデバッグシンボルはそのまま残した状態で配布するなど、かなり杜撰な方針の元で開発を行っていたと見受けられます。実際に攻撃者は、ペイロードの読み込みと復号さえできれば良いという発想に基づき、大元のインジェクタに対する修正を最小限に抑え込んだものと考えられます。
図2のデバッグメッセージには、各行の先頭に2種類のマーカーが記されています。マーカー「>」は、大元のmandibuleプロジェクトに用意されていたメッセージに対応します。一方、マーカー「[+]」と「[-]」は、攻撃者によってローダに追加されたメッセージに対応します。
攻撃者は、コマンド「prctl」を利用し、本ローダのプロセス名を「kworker/0:22」に設定しました。一般に、「kworker」という名前のプロセスは、カーネルのワーカースレッドを稼働させるプレースホルダ・プロセスに相当します。しかし、今回の「kworker/0:22」は、カーネルのワーカースレッドとは一切関係がありません。攻撃者があえて当該名を利用した理由は、ユーザがコマンド「ps」や「top」を用いて稼働中のタスク一覧を確認した際に、疑いの目を持たないようにするためです。
本ローダは、コマンドライン・パラメータとして、「暗号化された第二段階用ファイルへのパス」と「自己削除フラグ」の2種を受け取ります。第二段階用ファイルは「AES-ECB」の方式で暗号化され、その復号鍵はローダ内部にハードコーディングで定義されています。
以上の他、本ローダは永続化の処理を実行します。具体的には、ローダ自身と、暗号化された第二段階用ファイルを、ディレクトリ「/usr/sbin/」の配下に複製します(図2のデバッグメッセージ「[+] rename loader ok」や「[+] rename server ok」が該当します)。次に、コマンド「chkconfig」や「systemd」を利用し、複製版のローダをサービスとして稼働させます。先述の自己削除フラグが「1」に設定されている場合は、複製元のローダと暗号化された第二段階用ファイルの双方を削除します。
バックドア用コンポーネント「SprySOCKS」
復号後の第二段階用ファイルを調査した際、読み取り可能な文字列が検出されました。この文字列を解析した結果、本ファイルには中国由来の高性能なネットワーク・フレームワーク「HP-Socket」が組み込まれ、静的コンパイルされていることが判明しました。
初期化処理を解析したところ、C&Cサーバとの通信データをAES-ECBで暗号化するための鍵データが、ハードコーディングされた状態で発見されました。
C&Cサーバのアドレスやポート番号も、モジュール内に平文でハードコーディングされていました。
C&Cとの通信には、TCP(Transmission Control Protocol)パケットが使用されます。本パケットでは、0x12バイトのヘッダー部に続き、AES-ECBの暗号化とBase64のエンコードを経たメッセージが付加されます。マルウェア「RedLeaves」に関する報告中に記載された表B-2と同様、ヘッダー部には、ハードコーディングで定義されたランダム値と、ペイロードの長さが格納されます(図9の選択箇所)。
SprySOCKSのRAT機能は、標準的なバックドア用コマンドをサポートしています。例えば、システム情報の収集、対話型シェルの起動、ネットワーク接続リストの取得、SOCKSプロキシの作成、ファイルのアップロードやダウンロード、基本的なファイル操作(一覧の取得、ファイル名の変更、ディレクトリの作成)などが挙げられます。表2に、メッセージIDと、対応する処理の大まかな内容を記載します。
端末情報の取得
SprySOCKSが扱う端末情報は、Trochilusが用いた構造体「CLIENT_INFO」と類似した構成を持ち、一部のパラメータは一致しています。下図のパラメータ「cpufrep」については、「cpufreq(CPU周波数)」の誤植と考えられます。
さらに、図13に挙げるTrochilus RATのコード「ClientInfoManager.cpp」より、構造体「CLIENT_INFO」に属するパラメータの内部名称を確認できます。これらパラメータの大半は、表3に示すSprySOCKS側でのパラメータ一覧に含まれ、特に「cn」、「ip」、「groups」、「vercode」、「priv」、「lang」、「mem」、「os」、「x64」、「cpufrep」は、名前を含めて一致しています。
表3:SprySOCKS側での構造体「CLIENT_INFO」に属するフィールド一覧
こちらのPDFをご参照ください。
対話型シェル
被害端末が対話型シェルの作成指示を受けると、はじめに、擬似端末(PTY:Pseudo-Terminal)のサブシステム(/dev/ptmx)を通して、マスター用エンドポイントとのやり取りを行います。次に、ディレクトリ「/dev/pts」配下に、一意なデバイスノード名を用いてスレーブ用PTYを作成します。
続いて、起動パラメータ「[diskio]」付きでコマンド「execve」を実行します。この際、環境変数として以下をを指定し、セッション履歴が保存されないようにします。
HISTFILE=/dev/null
さらに、以下を指定し、プロンプト文字列(PS1:Prompt String)として現在のユーザ名(u)、端末のホスト名(h)、作業ディレクトリ(w)が表示されるように設定します。
PS1=\\u@\\h:\\w \\$
上述の文字列を検索すると、マルウェア「Derusbi」のLinux版を検知する「YARAルール」にヒットする可能性があります。今回の攻撃者は、対話型シェルの作成にあたり、Derusbiの手法を参考にしたか、または、Derusbiのコード自体を何らかの手段で入手したものと考えられます。
クライアントIDの生成
クライアントIDは、2つの要素から構成されます。1つ目の要素は、インターフェース・リストの第一番目から取得される6バイト分のMACアドレスに相当します(第一番目が「ループバック・インターフェース」の場合は、次のインターフェースを用いる)。この6バイトを16進数の文字列として表記すると、その長さは12バイトになります。2つ目の要素は、プロセッサに関連する情報であり、機械語命令「CPUID」をパラメータ「CPUID_GETFEATURES」付きで呼び出すことで取得されます。本データの長さは8バイトであり、16進数の文字列で表記すると、16バイトになります。従って、生成されるクライアントIDのデータ長は計14バイトであり、16進数の文字列で表記した場合は28バイトとなります。
攻撃グループの特定
2023年の6月初頭、暗号化されたSprySOCKSのペイロードを配信するサーバとして、「207[.]148[.]75[.]122」が特定されました。本サーバは、攻撃グループ「Earth Lusca」が運用するものであり、そこではCobalt Strikeの実行ファイルや、マルウェア「Winnti」のLinux版も配信されていました。
今回調査したSprySOCKSのペイロードには、バージョン番号として「1.3.6」が、C&Cドメインとして以下が設定されていました。
lt76ux[.]confenos[.]shop
一方、別のユーザがVirusTotalにアップロードしたペイロードには、バージョン番号として「1.1」が、C&Cドメインとして以下が設定されていました。
2e6veme8xs[.]bmssystemg188[.]us
その兄弟関係にあたるドメインとして、以下が存在します。
rvxzn49eghqj[.]bmssystemg188[.]us
これに対応するIPアドレスは「38[.]60[.]199[.]208」ですが、さらに、同じIPアドレスを持つ別ドメインとして以下が存在します。
793tggz7mw91[.]itcom666[.]live
本ドメインもまた、Earth Luscaが用いるC&C用ドメインとして知られています。
まとめ
本稿では、Linux系システムを標的とする新たなバックドア「SprySOCKS」について解説しました。本バックドアは、Earth Luscaの攻撃手段をさらに増強させるものです。Earth Luscaは近年に入って勢いを強め、既存の脆弱性を不正利用して標的組織の公開サーバに対する攻撃を展開しています。
企業や組織においては、侵入に利用されそうな経路を塞ぎ、侵害のリスクを最小限に抑え込むなど、先手を打ってアタックサーフェス(攻撃対象領域)を的確に管理していくことが重要です。また、セキュリティ、機能、全体的なパフォーマンスを維持するため、使用するツールやソフトウェア、システムに対するアップデートや修正パッチを定常的に適用することを推奨します。
企業や組織がEarth Luscaをはじめとする攻撃グループの脅威に対抗する上では、「Trend Micro XDR」のように、最先端の技術と適応性を備えたセキュリティソリューションが特に有効です。これらのソリューションは、メールやエンドポイント、サーバ、クラウド・ワークロード、ネットワークなどのさまざまなチャネルを通してデータや挙動を監視し、的確に分析する機能を備えています。こうした包括的なアプローチにより、企業や組織では、従来型のソリューションとは一線を画する高度なセキュリティ検知や調査を行うことが可能となります。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)について、こちらで確認してください。
参考記事:
Earth Lusca Employs New Linux Backdoor, Uses Cobalt Strike for Lateral Movement
By: Joseph C Chen, Jaromir Horejsi
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)