XFiles : 新型パッケージの大規模分析
NTTセキュリティ・ジャパン
野村和也 吉川照規 元田匡哉

About Us
野村和也
NTTセキュリティ・ジャパンのSOCアナリスト。昨年度はJSAC2023、CODEBLUEに登壇。
今年度はHITCON 2023 CMTに登壇。作曲家。
吉川照規
NTTセキュリティ・ジャパンのSOCアナリスト。SOCではNW/EDRのアラート監視の他、内製システムの開発に従事。
元田匡哉
NTTセキュリティ・ジャパンのSOCアナリスト。セキュリティ・ミニキャンプ in 山梨 2023 講師。
自動車技術会 サイバーセキュリティ講座 企画委員。パワーリフター。
©

NTT Security Holdings All Rights Reserved2Agenda1. Introduction
2. Inside of XFiles
3. Analytics of “Wild” XFiles
4. Clustering PowerShell Scripts
5. Case StudiesAppendix©

NTT Security Holdings All Rights Reserved31. Introduction©

NTT Security Holdings All Rights Reserved

MSIX/APPX• MSIX : マイクロソフトの新しいアプリケーションパッケージ形式• MSIXはAPPXの拡張、構造はほぼ類似• 主な特徴•C:¥Program Files¥WindowsApps¥
以下にインストールされる•

セキュリティ機構がある•›

VFS等による仮想化›

実行にコード署名が必須

過去のアプリケーションと互換性を保持する仕組み›©

PSF (Package Support Framework)

NTT Security Holdings All Rights Reserved

5Timeline• 主な攻撃キャンペーン
•Emotet : 2022年2月頃にMSIXプロトコルを悪用•

SteelClover : 著名なソフトウェアを装った偽のインストーラを配布するキャンペーン

•ClearFake : 改ざんされたページから偽のブラウザアップデートを促すキャンペーン

•GhostPulse : 2023年10月末に報告された比較的新しいキャンペーン

2022/2
Emotet2023/2
SteelClover[1]2023/6
SteelClover[2]2023/10
ClearFake[3]2023/10GhostPulse[4]MSIX/APPXによる攻撃は今後も増加する見込み[1]nao_sec, #SteelClover is now testing MSIX file… , https://twitter.com/nao_sec/status/1630435399905705986[2]Rintaro Koike, “SteelCloverが使用する新たなマルウェアPowerHarborについて”, https://jp.security.ntt/tech_blog/102ignh[3]Sekoia.io, “ClearFake: a newcomer to the “fake updates” threats landscape”, https://blog.sekoia.io/clearfake-a-newcomer-to-the-fake-updatesthreats-landscape/[4]Elastic Security Labs, “GHOSTPULSE haunts victims using defense evasion bag o' trick”, https://www.elastic.co/security-labs/ghostpulsehaunts-victims-using-defense-evasion-bag-o-tricks©

NTT Security Holdings All Rights Reserved

6Motivation & Goals• MSIX/APPXパッケージ (以下：新型パッケージ/XFiles) ファイルによる攻撃が増加• ファイルサイズが大きい場合も多く、効率的な解析手法の確立が急務

実際の悪用状況を踏まえ• 新型パッケージファイルの構造＆解析の要点を整理• 解析の効率化を図るツール制作＆大規模分析• PSFで動作するPowerShellスクリプトのクラスタリング&解析©

NTT Security Holdings All Rights Reserved

7Difference Between Previous Presentation• 過去我々のリサーチチームでは、新型パッケージを悪用したSteelCloverキャンペーンに着目•

SANS DFIR Summit, Hack.lu 2023 : 「The rise of malicious MSIX file」•AVAR2023：「Rebrand to X?: SteelClover Cornucopia」• 本講演では以下の点に着目©

1.

新型パッケージファイルについて、実際にパッケージを作成しながらその構造や動作を明らかにする2.

悪性パッケージファイル解析のポイントを、実際に10,000件弱の検体の統計を取りながら明らかにする

3.

明らかになったポイントを踏まえて、解析ツールを開発する

4.

パッケージファイルのPSFから収集された300件弱のPowerShellスクリプトについて、クラスタリングを用いて効率的な解析を試みる

NTT Security Holdings All Rights Reserved8

2. Inside of XFiles©

NTT Security Holdings All Rights ReservedStructures of XFiles
新型パッケージファイルの構造
AppxManifest.xml
AppxSignature.p7x
AppxBlockMap.xml
Resources.pri

XFilesに必要なファイル

config.json
PsfRunDll{32,64}.{exe,dll}
StartingScriptWrapper.ps1

PSFに必要なファイル

VFS/VFS←実際の悪性APPXファイルの中身©

NTT Security Holdings All Rights Reserved

10AppContainer / mediumIL• MSIXでパッケージされるアプリケーションには複数の種類が存在• AppxManifest.xmlの記述 (EntryPoint, TrustLevel, RuntimeBehavior) で定義•

Windows10のアップデート で定義の仕方が変化

AppContainer / partialTrustApplication
アプリ動作はコンテナ内 (AppContainer) で仮想化される
クロスプラットフォームなUWPアプリケーションはこちら
mediumIL / fullTrustApplication
アプリ動作は完全信頼 (Full Trusted Application) として一部のみ仮想化
従来のデスクトップアプリとの互換性が高く、マルウェアはほぼこちらを利用©

NTT Security Holdings All Rights Reserved

11Structures of XFiles• AppxManifest.xml

o コードサイニング証明書
o PKCS(Public-Key Cryptography Standards) #7o MSIXパッケージの署名に利用• AppxBlockMap.xml
o アプリ内のファイル一覧を記載

Application
Files
AppxManifest

Files• AppxSignature.p7x

Footprint

o アプリ名、開発者、証明書の情報などパッケージ全般の情報

Package
Payload

MSIX Package

AppxSignature
AppxBlockMapo ファイル内のデータをブロック(byte)単位で区切り、そのハッシュ値とサイズを記載§ Windowsは、アプリインストール時このハッシュ値を利用して整合性を検証
画像：「MSIX パッケージの内部」の画像を基に作成
https://learn.microsoft.com/ja-jp/windows/msix/overview©

NTT Security Holdings All Rights Reserved

12Structures of XFiles
AppxManifest.xml• 新型パッケージファイルの構成やメタ情報を記述©

•

アプリの名前•

実際に動作するアプリの定義•

コード署名証明書の発行元

NTT Security Holdings All Rights Reserved13

Structures of XFiles
AppxManifest.xml• アプリの機能の宣言（Capability）• アプリの拡張的な機能の宣言（Extensions）©

NTT Security Holdings All Rights Reserved

14Structures of XFiles©

タグ

説明Identity

パッケージの一意な識別子を指定（名前やバージョン、発行元等）
Publisher要素に署名に使用する証明書情報と同じものを記載

Properties

パッケージの追加メタデータを指定（表示名、概要、ロゴ等）

Resources

言語や表示スケール等を指定

Dependencies

パッケージが依存する他のパッケージを指定

Capabilities

パッケージがアクセスを必要とするシステムリソースを定義

Applications

パッケージで提供されるアプリの構成を定義

NTT Security Holdings All Rights Reserved

15Structures of XFiles
AppxSignature.p7x• コードサイニング証明書• p7x：PKCX(¥50¥4b¥43¥58) + PKCK#7• 先頭の「PKCX」を除けば、PKCK#7証明書を復元可能• OpenSSL等で検証が可能

p7xのバイト列©

NTT Security Holdings All Rights Reserved

16Structures of XFiles
VFS (Virtual File System)• OSのディレクトリ階層構造を仮想化し、互換性を維持する仕組み• %AppData%などのサブディレクトリを内包• 実際はC:¥Program Files¥WindowsApps¥<各アプリのディレクトリ>¥VFS¥ 以下に配置©

C:¥Windows¥System32¥vc10.dll…

リダイレクトする…¥VFS¥ System32¥vc10.dll

MSIX(アプリ)

OS(Win)VFSディレクトリ

NTT Security Holdings All Rights Reserved

17Structures of XFiles
PSF（Package Support Framework）• VFSと同様、互換性維持の仕組み。MSIXのみ対応• 修正プログラムの構成ファイル（config.json）といくつかの実行ファイルで構成• PowerShellスクリプトとDLL (FixUp) が実行可能[5]Microsoft, “パッケージ サポート フレームワークの使用を開始する”,
https://learn.microsoft.com/ja-jp/windows/msix/psf/package-support-framework©

NTT Security Holdings All Rights Reserved

18Creating XFiles• MakeAppx.exe コマンドラインツール• Visual Studio• MSIX Packaging Toolo 既存のインストーラ（MSI、EXE、App-V 等）をMSIXに変換• Advanced Installero サードパーティツールo GUIベースでパッケージングを簡略化

show_message.exeをアプリの本体としてMSIXパッケージの制作例を解説©

NTT Security Holdings All Rights Reserved

19Creating XFiles
CLIツールでの作成例• AppxManifest.xmlを記述• makepri.exeでresources.priを作成• MakeAppxでパッケージ化• SignToolsで署名• 必要に応じてPSFの設定©

NTT Security Holdings All Rights Reserved20Creating XFiles
Advanced Installerでの作成例• AiStubX64.exe経由で実行©

NTT Security Holdings All Rights Reserved

21Creating XFiles
Advanced Installerでの作成例• AiStubX64.exe経由で実行©

NTT Security Holdings All Rights Reserved

22Creating XFiles
PSFの設定例• PSFでPowerShell実行 or DLL呼び出し (Fixup)•

Fixupで呼び出すDLLでは、PSFInitialize と PSFUninitialize関数をエクスポートする必要•なかった場合、通常のエントリポイントから起動されるが、その後アプリは起動せず落ちる

PSFでPowerShellを起動する例©

NTT Security Holdings All Rights Reserved

23Creating XFilesconfig.json (PSFに必要なファイル) の記述例

AppxManifest.xml
AppxSignature.p7x

Fixup

AppxBlockMap.xml
Resources.pri
config.json
PsfRunDll{32,64}.{exe,dll}
StartingScriptWrapper.ps1

start / endScript©

NTT Security Holdings All Rights Reserved

VFS/
24

Installing XFiles
証明書の検証に失敗するケース①• 自己署名証明書• 証明書チェーンが成立しない©

•証明書を信頼されたルート証明機関のストアにインストールすれば、MSIXがインストール可能•

つまり、自己署名証明書でのコードサイニングでマルウェアの配布はほぼ不可能

NTT Security Holdings All Rights Reserved

25Installing XFiles
証明書の検証に失敗するケース②• 証明書の失効©

•

CRL (Certificate Revocation List)に該当の証明書のシリアルナンバーが掲載•

攻撃者が悪用する証明書の報告は一定の効果があると考えられる

NTT Security Holdings All Rights Reserved26

Installing MSIX/APPX• 正常起動する例• Capabilityの内容などが表示される

実際のコード©

NTT Security Holdings All Rights Reserved27

Abusing XFiles
新型パッケージの悪用観点• アプリとして悪性EXEを仕込むo 例）ClearFake• PSFで悪性PowerShellスクリプトを仕込む
o MSIXアプリの実行前後に、PowerShellを実行することが可能o 例）SteelClover，GhostPulse• PSFで悪性DLLを仕込む
o MSIXアプリの実行前後に、DLLを実行することが可能
o 観測していない©

NTT Security Holdings All Rights Reserved

28

Example of Malicious XFiles
MSIX(アプリ)

PSF
config.json

MalwareMalicious PowerShell
run.ps1©

NTT Security Holdings All Rights Reserved

29

“ms-appinstaller:” URL Scheme
ms-appinstaller: URIスキームが既定で無効化された[6]・Webから直接MSIXインストーラが起動せず、インストーラをダウンロードするステップが追加

インストーラを保存する段階でセキュリティ機能が介在できるように• Webブラウザ内蔵の警告システム• Microsoft Defender SmartScreen• その他アンチウイルスによる検知[6]MSRC, “Microsoftは アプリ インストーラー の悪用に対処します”,
https://msrc.microsoft.com/blog/2024/01/microsoft-addresses-app-installer-abuse-ja/©

NTT Security Holdings All Rights Reserved30

3. Analytics of “Wild” XFiles©

NTT Security Holdings All Rights ReservedMass Analytics of XFiles• 新型パッケージファイルの大規模分析を実施•2022/11/24〜2023/11/23に初投稿された検体9,457件を調査•

VTの悪性判定２件以上 (183検体) を疑わしいファイルとした

rule hunting_msix_appx {strings:$a00 = "AppxManifest.xml"$a01 = "AppxBlockMap.xml"$a03 = "AppxSignature.p7x"
condition:
uint16(0) == 0x4b50 and all of them}©

NTT Security Holdings All Rights Reserved

32

Digital Signature
攻撃者が証明書を悪用→CRLで失効
多くの検体で失効するまで証明書が使いまわされている©

NTT Security Holdings All Rights Reserved

33

Digital Signature
CRLのrevocation date→発行日が入る。いつ失効したかではない
VTの解析結果からいつごろ失効したかを推定•

VTでは検体を解析した時点の証明書の有効性が保存されている悪性証明書:Fruity Designs Ltdの例
一番早い投稿日時
2023/10/11 15:55
2023/9/21
署名の有効期限開始
2023/9/21 7:37

2023/10/10
署名の日時が一番早い検体
2023/10/10 6:50

署名が有効な最後の解析
2023/10/26 11:23

署名が無効な最初の解析
2023/10/26 21:23

2023/10/26

VTからの情報

署名の日時が一番遅い検体
2023/10/25 10:11

失効まで二週間ほど悪用©

NTT Security Holdings All Rights Reserved

検体からの情報34

Digital Signature
半年以上失効していない証明書も存在•

悪性証明書:SOTUL SOLUTIONS LIMITEDの例
一番早い投稿日時
2023/3/24 8:57

2023/3/21
署名の有効期限開始
2023/3/21 12:00

2023/3/24

署名が有効な最後の解析
2023/9/29 1:10

署名が無効な最初の解析
2023/9/29 6:13

2023/9/29

署名の日時が一番早い検体
2023/3/23 5:32

VTからの情報

署名の日時が一番遅い検体
2023/9/28 23:31

失効まで半年以上悪用

検体からの情報←最初に投稿された検体 (amadey)
複数のキャンペーンで証明書が悪用されていた可能性©

NTT Security Holdings All Rights Reserved35

Mass Analytics of XFiles• ファイルサイズ : 全体の一割弱 (819検体 / 9,165検体) が1MB超•

最大104.8MB• 悪性インストーラはファイルサイズが肥大化する傾向が見られる
•

解析が困難

マルウェア

©

NTT Security Holdings All Rights Reserved36Advanced Installer• Advanced Installer製の新型パッケージは、ほぼ悪性•©

EDR等の実運用では、Advanced Installerを無条件で検出+必要なものをホワイトリスト化が現実的？

NTT Security Holdings All Rights Reserved

37

PSF
• パッケージ内にconfig.jsonが含まれているか / 否か
• パッケージ内に含まれるPowerShellスクリプトファイル (.PS1) の数•

PSFが悪用され、PowerShellスクリプトが実行される傾向がみられる

内包しない

©

NTT Security Holdings All Rights Reserved

内包する

38

VFS
• VFSディレクトリ内に含まれるファイルの数•

マルウェアは、１個以上の少数のファイルをVFSディレクトリ内に含む傾向がある

ファイル数0個はグラフから省略
良性検体の大多数がファイル数0

ファイル数が多いと良性検体の可能性が高い©

NTT Security Holdings All Rights Reserved

39Capability• 定義されている数•©

悪性 / 良性検体で大きな傾向の差は見られない

NTT Security Holdings All Rights Reserved

40Capability• 定義されている内容•

悪性 / 良性検体で大きな傾向の差は見られない

良性悪性

rescap:allowElevationが多いが良性検体にも複数存在©

NTT Security Holdings All Rights Reserved

41Capability• 分析した内容のまとめ
悪性・良性検体の傾向差がみられる••

ファイルサイズ (悪性：大きい)

Advanced Installer (悪性 : Advanced Installerを使用)•

PSF (悪性 : config.json / PS1ファイルを含む)•

VFS (悪性 : 一つ以上の少数のファイルを含む)

悪性・良性検体の傾向差が少ない•©

NTT Security Holdings All Rights Reserved

Capability

42

XFiles Tool
• MSIXを解析するコマンドラインツールを制作•

これまでの知見を基に、着目すべきファイルを素早く検知、抽出可能•

自動化・複数ファイルの効率化のためにPythonパッケージを提供›©

証明書の抽出、報告などを自動化可能

NTT Security Holdings All Rights Reserved

43

Tool Demo©

NTT Security Holdings All Rights Reserved

4. Clustering PowerShell Scripts©

NTT Security Holdings All Rights ReservedClustering PS1• 収集した検体から277ファイルのPS1スクリプトを抽出• 大まかにカテゴライズした後、スクリプトの解析やキャンペーンへの帰結を行いたい• 効率的な解析手法を考える
•

動的解析

•

クラスタリング

PS1©

NTT Security Holdings All Rights Reserved

特徴量抽出

クラスタリング

解析

46

動的解析
• 静的（表層）解析のデメリット•

多様な難読化がされているので、限界がある•

実行されるコマンドにも複数の種類がある （コマンドレット）• VMを利用し動的解析するデメリット•©

高々PS1ファイル (コマンドライン) の実行なのでそこまでリッチな環境は必要ない

NTT Security Holdings All Rights Reserved

47

動的解析
• DockerのWindowsコンテナ(Hyper-V)を利用し動的解析•

OSのスナップショット作成→復元よりも負荷が小さく軽量•

環境の使い捨てが容易•

LinuxのPowerShellでは.NET等の動作の再現が難しい•

コマンドラインで完結し、複数ファイルを機械的に解析することが容易

windows:servercore
悪性活動を記録• PowerShellその他イベントログを収集可能•

Module Logging、Script Block Logging、transcript•

通信のログやプロセス作成などログ回収

ボリューム
マウント

PS1
©

NTT Security Holdings All Rights Reserved

PowerShell
実行
48

動的解析
• 実際にPowerShellスクリプトの難読化を解読できることを確認©

NTT Security Holdings All Rights Reserved49Extracting Features from .PS1
• PowerShellスクリプトから特徴量を抽出• Palo AltoのPowerShellProfiler[8]をベースに使用•

文字列の連結など、基本的な難読化を解除可能•

マルウェアや正規ソフトウェアそれぞれに特徴的なコマンドを抽出可能•

単純なパターンマッチのため比較的高速に動作•

4年前のスクリプトなので一部検出パターン追加

特徴量抽出

PS1

©

クラスタリング[8]pan-unit42, “PowerShellProfiler”, https://github.com/panunit42/public_tools/tree/master/powershellprofiler

NTT Security Holdings All Rights Reserved

解析50Clustering
外れ値 (灰色)は-1として• DBSCANを用いる•

密度ベースのクラスタリング•

クラスタ数が自動決定できる

ラベル付けされる• 22クラスタ+外れ値に分類

PS1©

NTT Security Holdings All Rights Reserved

特徴量抽出

クラスタ

クラスタ

クラスタリング

解析51

Clustering Results• PSFで実行されるスクリプトは、MS正規のMSIXにも含まれる•©

もちろんPSFは正規の目的でも利用されている

NTT Security Holdings All Rights Reserved52

Clustering Results• 最大クラスタでは、以下の挙動が類似•

端末上のAVの収集、送信•

マルウェアのインストール状況の送信•

Webでダウンロードしたバイトデータを実行• SteelClover、ClearFakeで悪用されるダウンローダーと類似©

NTT Security Holdings All Rights Reserved

53Clustering Results

WMIクエリによるAVの列挙

情報の送信

Reflectionによるマルウェア実行©

NTT Security Holdings All Rights Reserved54

5. Case Studies©

NTT Security Holdings All Rights Reserved

PSF• Advanced Installer + PSFはAVの誤検知を誘発する•

PSFでスクリプトを実行する無害なパッケージを作成し、VTに投稿•

アンチウイルスで検知• VFSに無害なExeが置かれている場合は特に検知しない©

NTT Security Holdings All Rights Reserved

56

PSF
• PSF、Advanced Installer関連ファイルは、それ単体で検知されることがある©

NTT Security Holdings All Rights Reserved57バージョン更新• MSIXはバージョン更新をサポート• 自動更新機能によりPSFの追加、実行が可能であることを確認•

Powershell… 更新時の初回起動時に実行•

DLL (Fixup)… 更新時の初回起動以降も毎回起動• T1546.016 Event Triggered Execution: Installer Packages[9]今後自動更新機能が攻撃に悪用される可能性がある• 一度信頼して使用しているアプリに対して人は寛容• ユーザがアプリを少なくとも3回使う必要がある[9]MITRE, ATT&CK, “Event Triggered Execution: Installer Packages”,
https://attack.mitre.org/techniques/T1546/016/©

NTT Security Holdings All Rights Reserved

58

Conclusion©

NTT Security Holdings All Rights Reserved

Conclusion• MSIX/APPXパッケージ (以下：新型パッケージ/XFiles) ファイルによる攻撃が増加• ファイルサイズが大きい場合も多く、効率的な解析手法の確立が急務

実際の悪用状況を踏まえ• 新型パッケージファイルの構造＆解析の要点を整理• 解析の効率化を図るツール制作＆大規模分析• PSFで動作するPowerShellスクリプトのクラスタリング&解析©

NTT Security Holdings All Rights Reserved

60Appendix©

NTT Security Holdings All Rights Reserved

UWP

https://learn.microsoft.com/ja-jp/uwp/schemas/appxpackage/uapmanifestschema/element-application©

NTT Security Holdings All Rights Reserved62