清水理史の「イニシャルB」
使いどころは? Windows 10 May 2019 Updateの新機能「Windowsサンドボックス」の“使い捨て”環境を試す
2019年7月8日 06:00
Windows 10 May 2019 Updateで、追加された新機能「Windowsサンドボックス」。ProまたはEnterpriseでの提供となるが、ホストOSとは隔離され、起動するたびに初期化される“使い捨て”の環境だ。設定ファイルを使ったアプリのインストールなど、一通りの機能を試してみた。
テストに使える“使い捨て”環境
個人ユーザーが、どこまでこの“使い捨て”環境にメリットを見い出せるかというと、なかなか難しいかもしれない――。
Windows 10 May 2019 Updateで追加された新機能「Windowsサンドボックス」は、現在利用しているホスト側のWindows環境に影響を与えることなく、アプリの実行を試せるテスト用の環境だ。
マルウェアの混入が疑われるアプリや、動作が予測できないプログラムなど、出所のはっきりしない実行ファイルが手元に転がり込んできた経験がある人もいるかもしれない。Windowsサンドボックスは、こうしたファイルでも安心してテストを実行できる環境だ。
Windowsコンテナーをベースとした軽量の仮想環境となっており、起動すると、現在使っているWindows 10のデスクトップに加え、ウィンドウ内にもう1つのWindows 10のデスクトップが表示される。
このWindowsは、ホスト環境と隔離された環境で、次のような特徴を持っている。
- サンドボックス内のソフトウェアはサンドボックス内でのみ存在する
- サンドボックス内での設定やアプリの動作はホスト側に影響を与えない
- サンドボックスを閉じると、すべてのファイルと動作状態が削除される
- 起動するたびにクリーンな状態で利用できる
- ハードウェアベースの仮想化によりカーネルが分離されている
Windowsサンドボックスを利用するには、Windows 10 May 2019 Updateが適用されたWindows 10 ProまたはEnterpriseエディションの環境が必要だ。さらに、UEFI(あるいはBIOS)で仮想化関連の機能が有効化されていることと、4GB以上のメモリ、コア数が2以上のCPUも要求される。
ProがインストールされたPCなら、個人でも割と手軽に利用できる上、インストールもさほど難しくない(詳しくは窓の杜4月30日付記事『あやしいソフトも安全・気軽に試せる「Windows サンドボックス」』を参照)ので、テスト環境としては簡単に導入可能だ。
Windowsサンドボックスの環境を実際に使ってみる
それでは、実際にWindowsサンドボックスの環境を使ってみた印象をチェックしていこう。
起動が遅い………
実際に使って、最初に気になったのは起動の遅さだ。
テストに使ったPCは、Core i7 7700、16GBメモリ、NVMe SSD搭載で、最新ではないものの、そこそこパワーはある環境だ。
普段、Hyper-Vを使って仮想環境でWindows 10を使うこともあるが、これと比べても、起動はずいぶんと遅い。
試しに、ストップウォッチを片手に起動時間を調べてみたが、デスクトップが表示されるまでに約55秒もかかった。
しかも、起動直後は、スタートメニューを開くことすらできないビジーな状態で、そこから操作できるようになるまで、さらに待たなければならない。この待ち時間は若干ストレスだ。
OSのライセンス不要
テスト目的ならHyper-Vを使ってもいいのだが、Windowsサンドボックスのメリットは、OSのライセンスが必要ないことだ。
Windowsサンドボックスの起動後、[設定]を開くと、「Windowsがライセンス認証されていません。今すぐWindowsをライセンス認証してください。」と表示されることからも分かる通り、仮想環境側はライセンスのない状態で利用することになる。
vEthernetで自由にネットワークへ接続できる
ネットワークへの接続は、Windowsサンドボックスの環境からも可能だ。
Windowsサンドボックス側で確認すると、ホストと同じネットワークアダプターが使われているように見えるが、実際は、ホスト側のネットワークアダプターに関連付けて作成された仮想ネットワーク経由で接続されている。
ホスト側のネットワークと共有センターに、自動的に作成された「vEthernet(xxxxx)」となっているのが、Windowsサンドボックス用だ。
割り当てられるIPアドレスは、「172.17.232.202」のように172で始まるプライベートアドレスだ。既存のネットワークとはNATでつながっているが、外部ネットワークへの接続は普通に行える。インターネット接続や、LAN内にあるファイルサーバーなどへのアクセスも可能だ。
ネットワークに影響を与えるかもしれないファイルの実行を想定するなら、このあたりの動作は要注意だ。個人的には、あやしいファイルを実行するときは、vEthernetを無効化しておいた方がいいんじゃないか? とも思える。
とりあえず、ネットワークを切る、切らないは用途にもよるが、その接続のされ方と、無効化の方法は、事前に確認しておくことをお勧めする。
ホスト側とのファイルのやり取り
ホストとのファイルのやり取りには、いくつかの方法がある。
- クリップボード経由
ホストOSでファイルをコピーし、Windowsサンドボックスで貼り付ければ、ファイルがコピーされる - インターネット経由
ブラウザーを使ってウェブからファイルをダウンロードしたり、メール経由でファイルを入手することができる - LAN経由
前述したように、LANへのアクセスは可能なので、ファイルサーバー経由などでコピーする
前述したように、用途によってはネットワークを無効化したい場合もあるだろう。基本的にはクリップボード経由でコピ―&ペーストするのが簡単だが、その場合、ホストPC側にターゲットとなるファイルを保存しなければならないので、誤操作による実行などのリスクがある。
ターゲットファイルがどの状態で手元にあるかにもよるが、場合によっては、インターネット経由で直接Windowsサンドボックスにダウンロードしてから、実行時にネットワークを無効化しておくといった使い方をするといいだろう。
WordやExcelはインストールされていない
マクロ付きのOffice文書などのテストに使えるか? というと、これはNGだ。
まず、Windowsサンドボックスには、Office製品はインストールされていない。スタートメニューにはアイコンが表示されているが、これはオンライン版へのリンクとなる。
クイック実行(Click-to-Run)の形式であれば、Office 365をインストールできるかもしれないとも考えて、実際に試してみたが、最後の最後の段階で、インストールがエラーによって終了してしまった。
仮にインストールできたとしても、インストール自体に時間がかかる上、Windowsサンドボックスを閉じればインストールしたOfficeが削除されてしまうため、たった一度のテストのためだけに、これだけの操作をするのは無駄が多い。
さすがに、MicrosoftとしてOffice入りのWindowsサンドボックス環境を用意することはできないだろうから、マクロ付きファイルの実行を試したいなら、別の仮想環境を用意した方が効率的だろう。
再起動が伴うインストールはできない
実行したいファイルがインストールを伴うものだったときに、再起動が必要となる場合は、テストができない。
前述したように、Windowsサンドボックスは閉じると初期化され、起動時に毎回クリーンな環境が用意される。このため、強制的に再起動されるような場合は、テスト自体ができない。
再起動をキャンセルできる場合は、そのまま無理矢理実行してみるという手はあるが、これで正確なテスト結果が得られるとは限らないので、注意が必要だ。
Windowsサンドボックス環境かどうかは判断できてしまいそう
マルウェアの中には、セキュリティ対策をくぐり抜けて実行するための工夫として、自身がサンドボックス環境で実行されているかどうかを判断し、振る舞いを変えるという悪質なものも存在する。
では、自身が実行されている環境がWindowsサンドボックスなのか? 実環境のWindowsなのか? をマルウェアが判断できるかというと、割と簡単にできてしまいそうだ。
単純なところでは、Windowsサンドボックスは、ユーザーフォルダーが「WDAGUtilityAccount」(WDAGはWindows Defender Application Guardの略)となっているので、このフォルダーをチェックするだけでも、サンドボックスかどうかが判断できるだろう。
WSBファイルを使ってZIP展開とアプリインストールを自動化してみる
続いて、Windowsサンドボックスの特徴でもあるWSBファイルを使ったカスタマイズを試してみよう。
先に、ネットワークを無効にしたいという話題に触れたが、実は、ホスト側で仮想ネットワークを無効化するだけでなく、WSBファイルをカスタマイズすることで、Windowsサンドボックスのネットワーク機能を無効化することもできる。
具体的には、任意のフォルダーに「.wsb」という拡張子のファイルを作成し、その中に、次のように記述すればいい。
<Configuration>
<Networking>disable</Networking>
</Configuration>
このファイルをダブルクリックすると、ネットワークが無効の状態でWindowsサンドボックスが起動する。
オプションで設定できる項目は、現状以下の4つだ。
設定項目 | 設定内容 |
<VGpu> | Default/Enable/Disable |
<Networking> | Default/Enable/Disable |
<MappedFolders> | ホストのフォルダーに接続 |
<LogonCommand> | サインイン後に自動実行されるコマンドを指定 |
このうち下の2つ、MappedFoldersとLogonCommandは、さらにパラメーターを指定しなければならない。詳細は、Microsoftのこちらのブログ記事を参照して欲しい。
最後に、試しにちょっと凝ったコンフィグを書いてみたので、紹介しておく。ホストPCのフォルダー(E:\temp)をデスクトップに読み込み専用でマウントした状態で起動。サインイン後、マウントしたフォルダーに格納しておいた「install.cmd」を起動するというものだ。
install.cmdでは、curlを使って、窓の杜から「teraterm」のポータブル版をダウンロードし、ダウンロードしたZIPファイルをPowerShellを使って展開。展開したフォルダーにある実行ファイルを起動するという流れになっている。
まあ、手動でもテストできるが、こうした自動処理もできることも、Windowsサンドボックスのメリットだ。いろいろテストしてみると面白いだろう。
--------test.wsb--------
<Configuration>
<VGpu>Default</VGpu>
<Networking>Default</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder@@>E:\temp</HostFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>C:\users\WDAGUtilityAccount\Desktop\temp\install.cmd</Command>
</LogonCommand>
</Configuration>
------------------------
--------install.cmd----------
curl "https://dforest.watch.impress.co.jp/library/u/utf8teraterm/10869/teraterm-4.103.zip" -o c:\users\WDAGUtilityAccount\Downloads\teraterm-4.103.zip
powershell expand-archive -Path c:\users\WDAGUtilityAccount\Downloads\teraterm-4.103.zip -DestinationPath c:\users\WDAGUtilityAccount\Downloads
c:\users\WDAGUtilityAccount\Downloads\teraterm-4.103\ttermpro.exe
-----------------------------