Windows Sandboxのプライベートネットワークアクセスを遮断する

Windows Sandboxをご存じでしょうか。
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-overview

Windows 10で利用できるのですが、
いくつか設定をカスタマイズすることが可能です。
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file

構成ファイルを使用することでネットワーク通信の有効/無効も制御できるのですが、
ネットワーク通信を有効化するとプライベートネットワーク(192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8)へのアクセスがガバガバの状態で作られてしまいます。
(Windows Sandboxのホストマシンへの通信もできてしまいます)

Windows Sandboxを使ってフィッシングサイトへのアクセス時にマルウェアの配布ポイントを踏んでしまった場合、
せっかくのWindows Sandboxというお試し環境であっても
ホストマシンへの感染可能性があると安心できないため、
Logon時(Windows Sandbox起動時)のコマンド実行設定を使用してプライベートネットワーク宛の通信遮断を入れます。

ただこれらの設定はWindows Sandbox側から操作できる以上、
マルウェアが高権限を有した場合に無効化(或いは通信許可設定を上書き)されることもあるため、
自環境では他セキュリティソフトも同時にインストールすることによってWindows Sandbox"外"から通信制御を行っています。(記載は割愛しますが)

Windows Sandboxの構成ファイルは以下。
どうにもClipboard redirectionの無効が機能しているとは思えないところが気になる

<Configuration>
<MappedFolders>
  <MappedFolder>
    <HostFolder>C:\Temp\Installer</HostFolder>
    <ReadOnly>true</ReadOnly>
  </MappedFolder>
</MappedFolders>
<LogonCommand>
  <Command>powershell.exe -ExecutionPolicy RemoteSigned C:\users\WDAGUtilityAccount\Desktop\Installer\install.ps1</Command>
</LogonCommand>
<ProtectedClient>Enable</ProtectedClient>
<PrinterRedirection>Disable</PrinterRedirection>
<ClipboardRedirection>Disable</ClipboardRedirection>
</Configuration>

ホストマシンのC:\Temp\Installerにはinstall.ps1を配置し、
PowershellでWindows Firewallのプライベートネットワーク向けOutbound通信を遮断する設定を入れています。
install.ps1は以下。

# C:\Temp\Installer\install.ps1
New-NetFirewallRule -DisplayName "Block-Outbound-Private1" -Profile Private,Public -Direction Outbound -RemoteAddress 192.168.0.0/16 -Action Block
New-NetFirewallRule -DisplayName "Block-Outbound-Private2" -Profile Private,Public -Direction Outbound -RemoteAddress 172.16.0.0/12 -Action Block
New-NetFirewallRule -DisplayName "Block-Outbound-Private3" -Profile Private,Public -Direction Outbound -RemoteAddress 10.0.0.0/8 -Action Block

またデフォルトではホストマシンがDNS参照先として設定されるようなのでDNS参照先をPowershellでGoogle Public DNSへ変更します。

# C:\Temp\Installer\install.ps1 続き
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses 8.8.8.8

これらの設定を入れて作成したWindows Sandbox構成ファイルをダブルクリックして開くと、
設定したブロック設定が入っていることがわかります。

以下はセキュリティソフトで外部から通信遮断した(タイムアウトする)のち、Windows Firewallを有効にして(一般エラーが発生)ホストマシンへ通信できないことを確認したテスト。

これでWindows Sandboxからホストマシン、プライベートネットワーク宛の通信遮断が行えました。
(正直なところセキュリティソフトの遮断設定さえ効いていればWindows Firewallは設定する必要もないですし、通信試行履歴を残すためにはむしろ無効化にしておいたほうが都合がよい部分もありますが。)

ただしホストマシン内に存在する以上、CPUやメモリの脆弱性を突かれることも0とは言えないので、
※Windows Sandboxのアーキテクチャは以下
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-architecture
念のためホストマシンにはEDR製品をインストールしています。
(ここまでが自身で対策できる限界と考えています)

この記事が気に入ったらサポートをしてみませんか?