HollowFrameローダー、偽のPython DLLでDefenderの検知を回避

これまで報告されたことのないローダーフレームワークが、偽のPythonランタイムの中にGoコードを隠していたことが判明しました。攻撃者はまず、Microsoft Defenderに対して対象ディレクトリと悪用予定のプロセスを無視するよう指示していました。

Blackpoint CyberのAdversary Pursuit Group(APG)が7月30日に公開した新たな調査結果によると、この侵入は法律事務所の2台のエンドポイントを襲い、2つの未報告のマルウェアファミリーを展開していました。GoベースのローダーであるHollowFrameと、Rust製バックドアの一群であるMatryoshkaです。

ペイロード投下前の除外設定

この攻撃連鎖は、複数の従業員に送られたスピアフィッシングメールから始まりました。メール内のリンクは受信者を攻撃者が管理するリダイレクターへと誘導し、Megaでホストされている暗号化アーカイブに導きます。このアーカイブにはCase Documents.lnkという名前のショートカットファイルが含まれていました。

このファイルを実行するとBase64形式のコンテンツが一時ファイルに書き込まれ、組み込みのcertutilユーティリティを使ってスクリプトが再構築されます。その後、難読化されたPowerShellの連鎖処理が起動し、ユーザーに管理者権限を要求します。

権限昇格に成功すると、そのステージはステージング用ディレクトリとプロセス名python.exeの両方を対象とするDefenderの除外設定を作成し、その後になって初めて実行可能コンテンツのダウンロードを開始します。Blackpointは、攻撃者がローダー到達前に「信頼された実行環境であるかのように見せかける経路を事実上準備していた」と指摘しています。

取得されたアーカイブは、公式のPython組み込みディストリビューションに似せた名前が付けられていましたが、ファイル名は本来のamd64ではなくamd96となっていました。

名ばかりのPython

スクリプトやモジュール引数を指定せずに同梱のpython.exeを実行すると、処理はDLLサイドローディングの段階へと移行します。

同梱されていたpython311.dllは、本物のCPythonではありませんでした。これは64ビットのGoライブラリであり、Python互換の関数名をわずか4つだけエクスポートしていました。それはホスト側のインポート要件を満たし、悪意あるGoコードに実行を引き渡すのに十分な数でした。

そのコードこそがHollowFrameであり、プロセスゴースティング、モジュールストンピング、手動でのPEマッピングを含む複数の実行手法を備えたモジュール式ローダーでした。同じフレームワークでありながら、エンドポイントごとに異なるテレメトリを生成できる仕組みになっています。

実行前には稼働時間、搭載メモリ、カーソルの動きも確認しており、永続化の手段としてスケジュールタスク、新規ログオンセッションに紐づくWMIイベントサブスクリプション、スタートアップフォルダの3種類を用意していました。

GitHub上のデッドドロップ

HollowFrameはネイティブローダーを投下し、正規のOneDrive更新プログラムと並べて悪意あるversion.dllをサイドローディングしました。これにより、最初のMatryoshkaバックドアのコマンド実行とネットワーク通信は、信頼されたMicrosoftプロセスの内側に隠されることになります。

2つ目の亜種は、Windows Terminal Servicesのエクスポート関数41個をプロキシするRust製のwtsapi32.dllで、こちらはGitHubを利用していました。被害者ごとにプライベートリポジトリ内にディレクトリが割り当てられ、そこにビーコン、コマンド、結果の各ファイルが保存されます。これにより、独自のC2サーバーを持たずとも指令の伝達とファイル転送が可能になっていました。

シェルアクセスに加え、この亜種はドメインコントローラーの特定、ドメイン内コンピューターや特権グループメンバーシップの列挙、ネットワーク構成・ローカル権限・インストール済みソフトウェアの棚卸しも行うことができました。そのリクエストにはOneDriveのユーザーエージェントが付与されており、Blackpointはこれを検知指標の一つとして挙げています。

GitHubを悪用したC2についてさらに読む: GitHub Used as Covert Channel in Multi-Stage Malware Campaign

Blackpointの推奨事項には、ブラウザ以外のプロセスからの予期しないGitHub API接続と、タスクファイルへのリクエストとの相関分析を行うこと、そしてユーザー書き込み可能なパスから隣接DLLを読み込む署名済みバイナリにフラグを立てることが含まれています。

同社はまた、開発業務を持たないエンドポインドからのGitHub APIアクセスを制限すること、更新をテーマにした名前のスケジュールタスクやWMIサブスクリプションを見直すこと、そしてパスワード保護されたアーカイブやショートカットファイルは制御された環境内で実行して検証することも勧めています。

翻訳元: https://www.infosecurity-magazine.com/news/hollowframe-fake-python-dll/

ソース: infosecurity-magazine.com