WinFE based on WinPE for Windows 10

WinFEを使うとターゲットをWindowsベースで起動してからディスクの保全や調査が可能となります。以下のサイトで関連情報がまとめられています。

Winfe : the forensic winpe made in windows 8 , windows 7 and vista
https://gverswijvel.wordpress.com/tag/waik-for-windows-10/

上記を参考にしつつ、Windows 10 1809ベースのWinodows PEでWinFEを作成する手順を確認しました。以下の機能を搭載したWinFEのDVD/USBブートメディアを作成できています。

  • UEFI/セキュアブートが有効な環境で起動可能
  • USB 3.0対応
  • 日本語表示可能

Windows 10ベースのWinFE作成手順

WinFEは32bit版/64bit版両方で作成することができますが、以下の注意点があります。

  • WinFEに32bitバイナリを含める場合、64bit版のWinFEでは動作しない
  • UEFI 64bit版の環境では64bit版のWinFEを使う必要がある

32bit版が動作すればそのまま進め、動作しない場合に64bit版で試す流れが妥当といえます。したがって両方とも必要になる可能性があるため、それぞれの作成手順を記載します。

32bit版WinFE

  1. MicrosoftのサイトからWindows 10用のWindows ADKを入手してインストールします。
    Windows ADK のダウンロード (https://msdn.microsoft.com/ja-jp/windows/hardware/dn913721.aspx)
    (バージョン1809からWindows PEはアドオンの扱いで提供されているため、同じくインストールします)
  2. WinFE環境で使いたいプログラムを入手します。今回は以下のツールを組み込みます。
  3. 入手後、Explorer++は32bitバイナリをExplorer.exeにリネームしてC:¥winfe_system_x86フォルダ配下に配置し、それ以外はC:\winfe_tools_x86\配下にWinFE内に含めたいフォルダ構造にして保存します。
  4. 管理者権限でコマンドプロンプトを起動します。
  5. 以下のコマンドを実行します。
    cmd /k "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"
    
  6. 不要なファイル類を削除しておきます。
    Dism /Cleanup-Wim
    rmdir c:\winfe_x86 /s
    
  7. 必要なファイルを作業場所にコピーして起動用イメージをマウントします。
    copype x86 c:\winfe_x86
    Dism /mount-image /imagefile:C:\winfe_x86\media\sources\boot.wim /index:1 /mountdir:C:\winfe_x86\mount
    
  8. 追加したいドライバがあればここで追加しておきます。以下はC:\Drivers\にドライバがある場合の例です。
    Dism /image:c:\winfe_x86\mount /Add-Driver /driver:C:\Drivers\ /recurse
    

    * 未署名のドライバを追加したい場合は/ForceUnsignedオプションを追記します。

  9. 必要なパッケージを追加します。
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-WMI.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-EnhancedStorage.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-EnhancedStorage_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-NetFx.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-NetFx_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-Scripting.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-PowerShell.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-MDAC.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\en-us\WinPE-MDAC_en-us.cab"
    Dism /image:C:\winfe_x86\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"
    
  10. Scratch Space(詳細は不明ですがWinPEのシステムイメージに設定するサイズ)を設定します。
    Dism /image:C:\winfe_x86\mount /Set-ScratchSpace:256
        
  11. 作成対象イメージのレジストリ値を変更します。以下は自動マウントをしない設定とTrim等に影響する削除通知を無効にする設定にします。
    REG LOAD HKLM\WINFE2 C:\winfe_x86\mount\Windows\System32\config\SYSTEM
    REG ADD HKLM\WINFE2\ControlSet001\Services\MountMgr /v NoAutoMount /t REG_DWORD /d 1 /f
    REG ADD HKLM\WINFE2\ControlSet001\Services\partmgr\Parameters /v SanPolicy /t REG_DWORD /d 4 /f
    REG ADD HKLM\WINFE2\ControlSet001\Control\FileSystem /v DisableDeleteNotification /t REG_DWORD /d 1 /f
    REG UNLOAD HKLM\WINFE2
    

    SanPolicyの4はWindows 8で追加された値であり、内蔵ディスクをオフライン、外付け/ブートディスクはオンラインにする設定です。
    (参考 - https://msdn.microsoft.com/ja-jp/library/hh825063.aspx)

  12. Explorer++.exeをシステムディレクトリにリネームして配置します。
    xcopy /s /e "C:\winfe_system_x86\explorer.exe" "C:\winfe_x86\mount\Windows\System32\"
    
  13. プログラム類をルートフォルダ直下に配置します。
    xcopy /s /e /i "C:\winfe_tools_x86\*" "C:\winfe_x86\mount\"
    
  14. 上記作業による変更を反映してアンマウントします。
    Dism /unmount-image /mountdir:C:\winfe_x86\mount\ /commit
    
  15. isoイメージを作成する場合は以下のコマンドを実行します。
    MakeWinPEMedia /iso C:\winfe_x86 C:\winfe_x86\winfe_x86.iso
    
  16. USBブートのUSBメモリを作成したい場合には、以下のコマンドを実行します。
    MakeWinPEMedia /UFD C:\winfe_x86 USBメモリのドライブレター:
    

ドライブレターに指定するパーティションは32GB以下に設定する必要があります。

64bit版WinFE

32bit版と異なる箇所のみ記載します。WinHexとWinShotは動作しなかったため、以下のツールのみが対象となります。

Explorer++は64bitバイナリをExplorer.exeにリネームしてC:¥winfe_system_amd64フォルダ配下に配置し、それ以外はC:\winfe_tools_amd64フォルダ配下に配置します。その後管理者権限でコマンドプロンプトを起動して以下の順に実行します。

cmd /k "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"
Dism /Cleanup-Wim
rmdir c:\winfe_amd64 /s
copype amd64 c:\winfe_amd64
Dism /mount-image /imagefile:C:\winfe_amd64\media\sources\boot.wim /index:1 /mountdir:C:\winfe_amd64\mount
Dism /image:c:\winfe_amd64\mount /Add-Driver /driver:C:\Drivers\ /recurse
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-EnhancedStorage.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-EnhancedStorage_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-NetFx.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-NetFx_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-Scripting.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-Scripting_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-PowerShell.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-PowerShell_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-MDAC.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-MDAC_en-us.cab"
Dism /image:C:\winfe_amd64\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"
Dism /image:C:\winfe_amd64\mount /Set-ScratchSpace:256
REG LOAD HKLM\WINFE2 C:\winfe_amd64\mount\Windows\System32\config\SYSTEM
REG ADD HKLM\WINFE2\ControlSet001\Services\MountMgr /v NoAutoMount /t REG_DWORD /d 1 /f
REG ADD HKLM\WINFE2\ControlSet001\Services\partmgr\Parameters /v SanPolicy /t REG_DWORD /d 4 /f
REG ADD HKLM\WINFE2\ControlSet001\Control\FileSystem /v DisableDeleteNotification /t REG_DWORD /d 1 /f
REG UNLOAD HKLM\WINFE2
xcopy /s /e "C:\winfe_system_amd64\explorer.exe" "C:\winfe_amd64\mount\Windows\System32\"
xcopy /s /e /i "C:\winfe_tools_amd64\*" "C:\winfe_amd64\mount\"
Dism /unmount-image /mountdir:C:\winfe_amd64\mount\ /commit
MakeWinPEMedia /iso C:\winfe_amd64 C:\winfe_amd64\winfe_amd64.iso
MakeWinPEMedia /UFD C:\winfe_amd64 USBメモリのドライブレター:

 

Windows 10ベースのWinFE実行画面

CD/USBのどちらからでも、UEFIとセキュアブートが有効な状態のまま起動できています。

ブートしたシステムはXドライブとして認識されていて、X:\Windows\System32をカレントディレクトリとしたコマンドプロンプトが立ち上がっています。Explorer.exeを実行すると配置しておいたExplorer++のウインドウが現れます。この後はExplorer++を操作することにより、X:\以下のツールを簡単に実行することができます。

Xドライブ直下にあるHWiNFOを使えば、USBポートに接続したストレージがUSB 3.0で認識されているか確認することができます。

WinFE01

以下はEnCase Forensic Imagerを起動した画面です。

WinFE02

覚えておきたいコマンド

起動後、内蔵ディスク(Fixed)として認識されるディスクは、USB経由で接続しても自動マウントしないため、diskpartで以下のようにディスク、ボリュームを選択してドライブレターを割り当てる必要があります。

> diskpart
LIST DISK
SELECT DISK 数字
LIST VOLUME
SELECT VOLUME 数字
ASSIGN LETTER=ドライブレター

補足

ここでは動作確認できたツールを含めましたが、今回紹介した手順で作成したWinFE環境下では、FTK ImagerやOSForensicsは動作しませんでした。

その他、Windows PEの利用については以下のサイトの「制限事項」で触れられています。

Windows PE (WinPE)
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn938389(v=vs.85).aspx

Windows PE は、汎用的なオペレーティング システムではありません。展開と回復以外の目的に使うことはできません。シン クライアントや組み込みオペレーティング システムとして使わないでください。このような目的に使うことができる Microsoft 製品として、Windows Embedded CE などが用意されています。

運用オペレーティング システムとしての使用を防ぐために、Windows PE は、連続して 72 時間使用すると自動的にシェルの実行を終了して再起動します。この時間は変更できません。

Windows PE が再起動すると、ドライバー、ドライブ文字、Windows PE のレジストリに対する変更など、すべての変更が失われます。永続的な変更を行うには、「WinPE: マウントとカスタマイズ」をご覧ください。

既定の Windows PE のインストールでは、FAT32 ファイル形式を使っているため、ファイル サイズが最大 4GB、ドライブ サイズが最大 32 GB といった制限があります。詳しくは、「WinPE: WinPE と WIM ファイル (.wim) への単一 USB キーの使用」をご覧ください。

フォレンジック技術を活用するシーンではディスクの保全や調査が考えられます。上記の回復という範疇で解釈することができそうですが、厳密に問題がないかは私も確認していません。そのためMicrosoft社による利用制限を理解した上で、自己責任での利用をお願いします。

参考

管理者必携のトラブルシューティングツール「Windows PE 5.0」の起動用USBメモリを作成する (2/2)
http://www.atmarkit.co.jp/ait/articles/1402/13/news133_2.html

更新履歴

2018/11/10 Windows 10 1809の内容に更新

2016/05/08 作成