APT&標的型攻撃
汎用性の高いLOLBin悪用フレームワーク「PeckBirdy」:中国系の攻撃グループが利用
PeckBirdyは、中国系APTグループが用いるJScript型のLOLBin悪用フレームワークです。多くの環境に適応できることから、ギャンブル組織や行政機関に対するバックドア攻撃に利用されています。
- PeckBirdyは、JScript言語をベースとするC&C(Command and Control:遠隔操作)フレームワークであり、2023年より中国系APT(Advanced Persistent Threat:標的型攻撃)グループの間で利用されています。さまざまな環境で動くことが可能であり、高い柔軟性を備えています。
- PeckBirdyの攻撃機能は、2つのモジュラー型バックドア「HOLODONUT」、「MKDOOR」によってさらに拡張されます。
- PeckBirdyを悪用した攻撃キャンペーンとして、「SHADOW-VOID-044」と「SHADOW-EARTH-045」の2種があります。いずれも、中国系グループによる綿密な作戦や、PeckBirdyを駆使した多経路攻撃を特徴づけるものです。
- この攻撃キャンペーンでは、盗まれたコード署名証明書をCobalt Strikeのペイロードに付与する他、脆弱性「CVE-2020-16040」を狙ったコードを多数のC&Cドメインに配備することで、アクセス経路を保持します。
- セキュリティプラットフォーム「TrendAI Vision One™」は、本稿で挙げた侵入の痕跡(IoC)を的確に検知、ブロックします。また、専用の脅威ハンティングクエリや、最新の脅威分析レポートを提供します。
はじめに
2023年よりトレンドマイクロは、スクリプト型のC&C(Command and Control:遠隔操作)用フレームワーク「PeckBirdy」を発見し、その活動を追跡してきました。PeckBirdyは、中国のギャンブル産業やアジアの行政機関、民間組織を狙った攻撃に利用されています。調査中、PeckBirdyによる攻撃キャンペーンが少なくとも2件発見され、その背後では複数の中国系APT(Advanced Persistent Threat:標的型攻撃)グループが絡んでいました。なお、これらの攻撃キャンペーンについては2025年8月のセキュリティ会議「HitCon」でも発表しましたが、本稿では、より多くの方に向けて調査結果を共有します。
PeckBirdyはスクリプト型のフレームワークであり、高度な機能を持つにも関わらず、古い開発言語「JScript」で作られています。これは、多様な環境からLOLBin(Living Off the Land Binary:環境内にはじめから存在するツール)経由で起動できるようにして、柔軟性を確保するためです。その柔軟性も相まって、攻撃のさまざまな過程でPeckBirdyの動きが確認されました。例えば、初期侵入時には水飲み場型攻撃の制御サーバとして、水平移動・内部活動(Lateral Movement)ではリバースシェルサーバとして、最終段階ではバックドア用C&Cサーバとして稼働していました。
本稿では、PeckBirdyの動作詳細や攻撃キャンペーンの実態、関連する2種の新型バックドア「HOLODONUT」、「MKDOOR」について解説します。また、各攻撃キャンペーンの背後にいる実行グループについて分析します。
2023年より、複数の中国系ギャンブルWebサイトが改ざんされ、不正なスクリプトやリモートサーバへのリンクを埋め込まれる事例が発生しました。対象サーバやスクリプトを分析したところ、PeckBirdyのフレームワークに行き着きました。被害者が改ざん後のギャンブルWebサイトにアクセスすると、問題のスクリプトが発動し、PeckBirdyのメインスクリプトがダウンロード、実行されます。その後、攻撃者側では、リモートから被害者にJavaScriptを送りつけ、実行できるようになります。
ここでの攻撃者の目的は、Google Chromeの更新画面を装って被害者を騙し、不正なアップデートファイルをダウンロード、実行させることです。そのアップデートファイルには、バックドアが仕込まれています。一連の手口は、トレンドマイクロが最初に確認した攻撃キャンペーン「SHADOW-VOID-044(弊社による呼称)」に対応します。
2024年7月には、アジアの行政機関や民間組織を標的とする別の攻撃キャンペーン「SHADOW-EARTH-045(弊社による呼称)」が確認されました。背後にいる実行グループは、標的の行政関連WebサイトにPeckBirdyへのリンクを埋め込み、認証情報を窃取するためのスクリプトを配信していたと考えられます。
ある事例では、行政システムのログインページに不正なコードが埋め込まれていました。別の事例では、攻撃者がMSHTAを通してPeckBirdyを起動し、民間組織内で水平移動・内部活動を行うためのリモートアクセス経路として悪用しました。さらに別の事例では、攻撃者が.NETの実行ファイルを独自に開発し、ScriptControl経由でPeckBirdyを起動していました。このようにPeckBirdyは、さまざまな用途を想定し、柔軟な設計に基づいて作られています。
フレームワーク「PeckBirdy」を解析
先述のようにPeckBirdyは、ブラウザやMSHTA、WScript、クラシックASP、Node JS、.NET(ScriptControl)など、さまざまな環境で動作します。また、環境に応じて、機能や用途も変化します。
例えばブラウザ環境では、サンドボックス機構の制約により、Webページの枠に収まる操作しか実行できません。一方、MSHTAを含む他の環境では、より直接的にローカル端末を操作することが可能です。また、PeckBirdyのサーバはクライアント向けにAPIを提供しており、簡単なHTTP/HTTPSクエリを通してランディング・スクリプトを配布します。本調査で確認されたAPIの一覧を、下表に示します。
「攻撃ID」としては、あらかじめ定義された 32 桁のランダム文字列が使用されます。PeckBirdyサーバ側で生成する個々のスクリプトには、攻撃IDに応じた設定情報が埋め込まれます。この設定情報は、PeckBirdyの挙動を調整するものであり、下記の内容を含みます。
PeckBirdyの開発者は、古いスクリプト言語「JScript(ECMAScript 3の仕様に準拠)」を採用し、複数の通信プロトコルをサポートすることで、さまざまな実行環境への適応力を高めています。また、実行環境が新しいバージョンであると判定した場合、「ECMAScript 5」で追加されたJSONなどの組み込み機能も利用します。一方、古い環境の場合は、フレームワーク内で独自に実装したJScript版の代替機能を使用します。
PeckBirdyは、起動後にまず、実行環境の種別を判定するため、特定の環境にしか存在しないオブジェクトをチェックします。例えば、ブラウザ環境に存在するwindowオブジェクト、NodeJS環境に存在するprocessオブジェクト、ASP環境に存在するresponseオブジェクト、HTA環境に存在するHTML内APPLICATIONタグを、それぞれチェックします。
続いてPeckBirdyは、特定した環境別の方式で「被害者ID」を生成します。HTAのようなローカルホスト環境の場合、被害端末のマザーボードやハードディスクドライブからハードウェア情報を収集し、それをMD5でハッシュ化し、結果として得られた文字列を被害者IDとして扱います。本方式に失敗した場合、またはハードウェア情報を取得できない他環境の場合、32桁のランダムな文字列を直接生成し、被害者IDとして利用します。
ブラウザ環境の場合、正規サービスでよく利用されるプレフィクス「Hm_lvt_」を被害者IDに付加し、ブラウザクッキーに保存します。ブラウザ以外の場合、被害者IDをWindowsの一時フォルダ配下に「__unique_id__」というファイル名で保存します。これにより、後で必要に応じて被害者IDを取り出せるようにします。
初期化処理の後、PeckBirdyは、実行環境で利用可能な通信手段を判別します。デフォルトでは、WebSocketのプロトコルによってPeckBirdyサーバと通信します。WebSocketが利用できない場合、Adobe Flashが存在するかをチェックします。存在するならば、 Flash ActiveXのオブジェクトを作成して、TCPソケット通信を確立します(Flash自体は2020年にサポート終了しているが、古い環境との互換性を確保するためと見られる)。
いずれの手段も有効でない場合、HTTP/HTTPS やAJAXをベースとした「Comet」または「LocalComet」を利用します。Cometは効率こそ低いものの、多くの環境で動作できるなど、高い互換性を保持しています。
ブラウザ環境でWebSocket通信を行うケースを例にとると、はじめにPeckBirdyは、通信開始のための初期リクエスト(init)をサーバに送信します。このリクエストには、現在のWebサイト・ドメインやURL、先述した被害者ID、攻撃IDに加え、新規作成したセッションID(32桁のランダム文字列)も含まれます。
これに対してサーバは、第2段階のスクリプトを返却します。本スクリプトは、AESによる暗号化や復号の機能を含みます。以降の通信は、AESで暗号化され、さらにBase64でエンコードされるようになります。AESの暗号鍵としては、設定情報内の「攻撃ID」が用いられます。
本調査では残念ながら、PeckBirdyサーバから配布されるスクリプトの多くを取得するに至りませんでした。ただ一つ取得できた短いスクリプトには、侵害済みWebサイトのクッキーをブラウザ上で窃取する機能が含まれていました。
攻撃キャンペーン「SHADOW-VOID-044」に関連するPeckBirdyサーバを調べたところ、PeckBirdy経由で配信、実行されたと見られる追加スクリプトが発見されました。これらのスクリプトより、攻撃者がどのようにPeckBirdyを運用しているのかが明確になりました。以下に、スクリプトの例を示します。
- Google Chromeに影響のある脆弱性「CVE-2020-16040」を悪用したスクリプト
- ソーシャルエンジニアリングの手口を盛り込んだポップアップによって利用者を騙し、不正なファイルをダウンロード、実行させるスクリプト
- Electron JSで動く追加のバックドアを配信、実行するためのスクリプト
- TCPソケット経由でリバースシェルを確立するためのスクリプト
バックドア解析
攻撃者が保有するインフラを分析した結果、2つのモジュラー型バックドア「HOLODONUT」、「MKDOOR」が発見されました。両バックドアとも、攻撃キャンペーン「SHADOW-VOID-044」と関連があります。
HOLODONUT
HOLODONUTは、.NETによるモジュラー型バックドアであり、攻撃者のインフラから発見されました。HOLODONUTの流入経路は、攻撃者が独自に用意した簡易なダウンローダ(トレンドマイクロは「NEXLOAD」の名称で追跡)であり、これを通して被害環境に配備、実行されます。NEXLOADは、初回通信時に下記形式の特殊な文字列を送信します。サーバからHOLODONUTのペイロードを取得した後は、XOR(排他的論理和)で復号し、それをコールバック関数「EnumWindows」経由で実行します。
{文字列}#{文字列}
HOLODONUTのペイロードは、防御回避を意図してAMSI(マルウェア対策スキャンインターフェース)やETW(Event Tracing for Windows)のイベント記録を無効化します。また、オープンソース・ツール「Donut」を利用し、.NETのアセンブリを秘匿状態で実行します。結果としてHOLODONUTは、プロセスメモリ内で展開、起動する形を取り、外部からの監視や検知を避けようとします。
HOLODONUTのコードを分析した結果、サポート対象のパケット種別や、組み込みコマンドの内容が判明しました。
これらのパケットは「プラグインハンドラ」と呼べるものであり、C&Cサーバからのプラグイン受信、実行、解除に利用されます。この他にも本マルウェアには、情報収集やスリープ、終了用のコマンドが組み込まれています。
MKDOOR
攻撃キャンペーン「SHADOW-VOID-044」を長期的に追跡した結果、フィッシングページによってユーザを騙し、偽のGoogle Chrome更新プログラムをダウンロードさせる仕掛けが特定されました。偽プログラムを解析したところ、新たなモジュラー型バックドア「MKDOOR」が発見されました。このMKDOOR は、2つのモジュール「ダウンローダ」と「バックドア本体」によって構成されます。初回実行時は、「ダウンローダ」がC&C サーバに接続し、「バックドア本体」をダウンロードします。また、防御回避の手段として、Microsoft Defenderの除外リストに自身を追加してスキャンの回避を図る他、アクセス先URL(下記参照)をMicrosoftサポートページのように見せかけます。
https://{C&Cサーバのアドレス}/en-us/howtotell/default[.]aspx
バックドア本体のモジュールは、初期化処理の後、ダウンローダモジュールから提供されたネットワーク設定情報を取得し、C&Cサーバとの間に新たな接続を確立します。バックドア本体が使用するURLも、Windowsアクティベーションに扮したものとなっています。
https://{C&Cサーバのアドレス}/en-us/windows/activate-windows-c39005d4-95ee-b91e-b399-2820fda32227
MKDOORはモジュラー型バックドアとして、C&Cサーバから受信したモジュールに大きく依存します。今回の調査では残念ながら、実際のモジュールを取得、確認するに至りませんでした。しかし、MKDOORがサポートするコマンドの種別が、以下のように判明しました。
攻撃グループの特定
先述の通り、PeckBirdyを悪用した活動として、2種の攻撃キャンペーンが確認されました。被害分布やTTPs(Tactics:戦略、Techniques:技術、Procedures:手順)に基づき、トレンドマイクロでは、それぞれを一時的な侵入セット「SHADOW-VOID-044」、「SHADOW-EARTH-045」として分類しています。調査の結果、それぞれ異なる中国系APTグループに繋がっている可能性も示されました。
「SHADOW-VOID-044」のケースでは、その攻撃キャンペーンで運用されたサーバ(47[.]238[.]219[.]111)上に、バックドア「GRAYRABBIT(過去にUNC3569が利用したと報告されている)」が配備されていました。今回トレンドマイクロが確認したGRAYRABBITの検体は、UNC3569のものとわずかに異なっており、DLLサイドローディングの手口にPowerShellの関数「UuidFromStringA」を組み合わせることで、バックドアペイロードの読み込み、デコード、起動を行います。こうした実行方式に違いはあるものの、C&Cサーバのドメイン(下記参照)はUNC3569が用いたものに一致しています。
center[.]myrnicrosoft[.]com
また、SHADOW-VOID-044とUNC3569の双方とも、中国のギャンブル業界を標的にしています。以上を踏まえると、中程度から高程度の確信度で、SHADOW-VOID-044はUNC3569による活動であると見られます。
次に、SHADOW-VOID-044が利用するバックドア「HOLODONUT」は、別のバックドア「WizardNet」に繋がっている可能性があります。このWizardNetは、APTグループ「TheWizard」が用いたバックドアとして報告されています。そして、今回SHADOW-VOID-044が用いたHOLODONUT検体の一部は、TheWizardと同じC&Cサーバ「mkdmcdn[.]com」に接続していました。しかし、それ以上の直接的な繋がりを示す証跡は、得られていません。なお、TheWizardは、以前報告した攻撃グループ「Earth Minotaur」が開発したバックドア「DarkNimbus」を利用していたことも判明しており、この点も、関連性を紐解く上での判断材料として注目できます。
もう一つの発見事項は、「SHADOW-VOID-044」のサーバ「oss-cdn[.]com」に配備されていたCobalt Strikeの検体です。当該検体の署名に使用された証明書は、韓国のゲーム関連企業から盗まれたものであることが判明しました。また、この証明書は、以前トレンドマイクロが報告した攻撃キャンペーン「BIOPASS RAT」でも利用されていました。
Cobalt Strike検体のSHA256値:162cc325ab7b6e70edb6f4d0bc0e52130c56903f
証明書のフィンガープリント(SHA1値):bbd2b9b87f968ed88210d4261a1fe30711e8365b
分析に基づくと、BIOPASS RATとMKDOORの双方とも、ローカル端末上に高い数値のポート番号でHTTPサーバを開き、受信を待ち受けます。これは、水飲み場型攻撃のスクリプトを通してローカル端末のポートをスキャンし、バックドアに感染済みであるかを判定するための仕掛けです。なお、BIOPASS RATの攻撃キャンペーンは、別の攻撃グループ「Earth Lusca」とも繋がっています。
別の攻撃キャンペーン「SHADOW-EARTH-045」については、2024年7月、フィリピンの教育機関を狙った活動が確認されています。この攻撃者は、侵害したIIS(Internet Information Service)サーバ上でMSHTAコマンドを実行し、下記ドメインに接続した後に、PeckBirdyを起動させました。
github[.]githubassets[.]net
また、同攻撃者は、IPアドレス「47[.]238[.]184[.]9」からさまざまなファイルをダウンロードしていました。このアドレスは、以前Earth Baxiaに繋がっていたものです。しかし、IPアドレスの重複だけでは、SHADOW-EARTH-045とEarth Baxiaの繋がりに関する確信度は、「低い」と見られます。この他、SHADOW-EARTH-045が用いたPeckBirdyのドメインやIPアドレスが、アフリカの行政関連IT組織を狙った攻撃にも利用されていたことは、注目に値します。
まとめ
本稿で挙げた2つの攻撃キャンペーンから示される通り、中国系の攻撃グループは近年ますます高度化し、多様な環境への適応力を高めています。今回の攻撃キャンペーンは、柔軟かつ動的に稼働するJavaScriptベースのフレームワーク「PeckBirdy」やLOLBin(Living Off the Land Binary:環境内にはじめから存在するツール)を駆使することで、モジュラー型バックドア「MKDOOR」や「HOLODONUT」を標的環境に送り込みます。PeckBirdyのようなJavaScriptフレームワークは、動的生成によるコードや実行時注入型スクリプトを多用し、ファイルの痕跡を極力残さないように設計されています。そのため、従来型エンドポイントセキュリティでは検知できない可能性があります。このようにデジタル環境での攻勢が多様化、進化していく中では、防御側でもセキュリティ戦略を柔軟に刷新していくことが重要です。それは、もはや「選択肢」ではなく、組織の運用体制を堅持する上での必須条件となっています。
TrendAI Vision One™を活用したプロアクティブなセキュリティ対策
「TrendAI Vision One™」は、AIを駆動したエンタープライズ・サイバーセキュリティプラットフォームであり、サイバーリスク露出管理やセキュリティ運用を一元化することで、多層かつ堅牢な防衛体制を実現します。
TrendAI Vision One™ Threat Intelligence Hub
「TrendAI Vision One™」の「Threat Intelligence Hub」は、あらたな脅威や攻撃者に関する最新情報、「TrendAI™ Research」による独自の戦略レポート、そして「TrendAI Vision One™ - Threat Intelligence Feed」を提供します。
高まる脅威:PeckBirdy: A Versatile Script Framework for LOLBins Exploitation Used by China-aligned Threat Groups (汎用性の高いLOLBin悪用フレームワーク「PeckBirdy」:中国系攻撃グループが利用)
TrendAI Vision One™ Intelligence Reports (IOC Sweeping)
PeckBirdy: A Versatile Script Framework for LOLBins Exploitation Used by China-aligned Threat Groups (汎用性の高いLOLBin悪用フレームワーク「PeckBirdy」:中国系攻撃グループが利用)
関連する攻撃グループ情報
スレットハンティングのクエリ
TrendAI Vision One™のアプリ「Search」
TrendAI Vision One™をご利用のお客様は、アプリ「Search」の機能を用いることで、ご利用中の環境を解析し、本稿で挙げた不正な活動の兆候を検知、照合できます。
malName: (*MKDOOR* OR *HOLODONUT* OR *GRAYRABBIT* OR *PECKBIRDY*) AND eventName: MALWARE_DETECTION
TrendAI Vision One™で「Threat Intelligence Hub」を適用済みの場合は、さらに多くのクエリをご参照いただけます。
侵入の痕跡(IoC:Indicators of Compromise)
本事例に関連するIoCについて、こちらからご参照いただけます。
参考記事:
PeckBirdy: A Versatile Script Framework for LOLBins Exploitation Used by China-aligned Threat Groups
By: Ted Lee, Joseph C Chen
翻訳:清水 浩平(Platform Marketing, Trend Micro™ Research)