廃止予定のVBScriptが組織のどこで使われているのかを見つける方法あれこれ
この記事の内容
- Microsoftが発表したVBScript廃止の3フェーズのタイムラインを解説します
- Sysmonを使ってVBScriptの実行をリアルタイムで検知する方法を紹介します
- グループポリシーやタスクスケジューラなど管理者設定箇所の確認方法を説明します
- PowerShellを使ったファイルシステム全体への
.vbsファイル検索方法を紹介します - 組織がVBScript廃止に向けて今すぐ取るべきアクションを整理します
はじめに:VBScript廃止の足音が聞こえる
かつてWindows環境の自動化で広く利用されたVBScriptが、ついに廃止の途をたどることが正式にアナウンスされました。多くの組織では、今もなおログオンスクリプトや日常的なタスク処理などでVBScriptが使われているケースが少なくありません。
本記事では、Microsoftから発表されたVBScript廃止のタイムラインを再確認し、組織内に潜むVBScriptを効率的に見つけ出すための具体的な方法を解説します。
VBScript廃止の公式タイムライン
Microsoftは2024年5月22日の記事で、VBScriptの段階的な廃止計画を明らかにしました。この計画は、大きく3つのフェーズで進行します。
フェーズ1(Windows 11 バージョン24H2〜):オンデマンド機能化
VBScriptはOSの標準機能から「オンデマンド機能(Features on Demand)」へと移行します。この段階ではデフォルトで有効化されていますが、必要に応じて手動で無効化することが可能な状態になります。
フェーズ2(2027年頃〜):デフォルトで無効化
この時期にリリースされるWindowsバージョンでは、VBScriptがデフォルトで「無効」になります。VBScriptを引き続き利用する必要がある組織は、手動で機能を有効化する対応が求められます。このタイミングで、移行が完了していない多くの組織で問題が表面化する可能性があります。
フェーズ3(時期未定):OSから完全削除
最終的に、VBScriptに関連するDLLファイルなどがOSから完全に削除され、VBScriptは一切利用できなくなります。このフェーズの正確な時期はまだ決まっていませんが、いずれ訪れる未来です。
廃止の背景には、よりモダンで高機能なPowerShellやJavaScriptといった代替技術が普及したことがあります。古い技術を維持し続けることは、互換性やセキュリティの観点からリスクが伴うため、Microsoftは移行を強く推奨しています。
このタイムラインを考慮すると、新規でVBScriptを用いた開発を行うことは避けるべきです。ただし、「1年間限定で使う」といった明確な利用期間が定まっている短期的な仕組みであれば、選択肢として考えられるかもしれません。しかし、長期的に利用される見込みのあるシステムでは、PowerShellなどへの移行が必須です。
戦略1:システムモニター(Sysmon)でDLLのロードを追跡する
組織内でVBScriptがいつ、どのプロセスで実行されているかを突き止める最も確実な方法の一つが、システムモニター(Sysmon)を利用することです。vbscript.dllがメモリにロードされるイベントを検知し、イベントログに記録することで、利用状況を正確に把握できます。
設定ファイルの作成
以下の内容でsysmon_config.xmlのような設定ファイルを作成します。
<Sysmon schemaversion="4.82">
<EventFiltering>
<RuleGroup name="" groupRelation="or">
<ImageLoad onmatch="include">
<Image condition="is">C:\Windows\System32\vbscript.dll</Image>
</ImageLoad>
</RuleGroup>
</EventFiltering>
</Sysmon>
Sysmonへの設定適用
次に、管理者権限のコマンドプロンプトで以下のコマンドを実行し、Sysmonに設定を読み込ませます。
これにより、vbscript.dllがロードされるたびに、イベントログの「アプリケーションとサービス ログ/Microsoft/Windows/Sysmon/Operational」にイベントID 7として記録されます。イベントID 1を併せて確認すれば親プロセスも特定でき、誰が何のためにVBScriptを実行したのかを追跡できます。
注意点
- IIS(インターネット インフォメーション サービス)でVBScriptを使用している環境では、大量のログが生成される可能性があります。IISのアクセスログと突き合わせ、不要なログを除外する工夫が必要です。
- 大規模な環境へ一斉に展開すると、PCのパフォーマンスやログ収集基盤に大きな負荷がかかる恐れがあります。まずは小規模なグループでテストし、影響を見ながら段階的に展開することをお勧めします。
戦略2:集中管理されているスクリプトを確認する
システム管理者が設定する箇所には、VBScriptが多用されている傾向があります。以下の場所を重点的に確認しましょう。
グループポリシーのスクリプト
ログオン、ログオフ、スタートアップ、シャットダウン時に実行されるスクリプトです。これらは多くの場合、Sysvolフォルダ内に格納されています。
タスクスケジューラ
定期的に実行されるタスクにVBScriptが登録されている可能性があります。PowerShellを使ってタスクの一覧を取得し、内容を精査することができます。
Intuneで展開されるスクリプト
Intuneを通じて配布されたPowerShellスクリプトが、間接的にVBScriptを呼び出しているケースも考えられます。配布済みのスクリプトの内容を確認する必要があります。
これらの箇所は管理者が一元的に管理しているため、比較的調査しやすい領域です。
戦略3:ファイルシステムを直接検索する
最もシンプルで直接的な方法が、拡張子が.vbsのファイルをファイルシステム全体から検索することです。特に、ユーザープロファイルフォルダや共有フォルダなどは重点的に探すべき場所です。
以下のPowerShellスクリプトは、特定のパス配下にある.vbsファイルを検索する一例です。
$pathsToScan = @(
"$env:USERPROFILE",
"$env:ALLUSERSPROFILE",
"$env:ProgramFiles",
"$env:ProgramFiles(x86)"
)
Get-ChildItem -Path $pathsToScan -Filter "*.vbs" -Recurse -ErrorAction SilentlyContinue
このスクリプトを実行することで、よく使われるディレクトリ配下に存在する.vbsファイルをまとめて一覧化できます。共有フォルダやネットワークドライブも検索対象として追加すると、より網羅的な調査が可能です。
まとめ
VBScriptの廃止は避けられない流れであり、特に2027年頃に予定されているデフォルト無効化のフェーズは、多くの組織に影響を与える可能性があります。今のうちから組織内のVBScript利用状況を把握しておくことが重要です。
本記事では、以下の3つの調査戦略を紹介しました。
- Sysmonによる監視:実際にVBScriptが実行されているタイミングを検知できる最も確実な方法です
- 集中管理箇所の確認:グループポリシー、タスクスケジューラ、Intuneなど管理者が設定する箇所を優先的に調べます
- ファイルシステム検索:PowerShellで
.vbsファイルを網羅的に検索します
これらの方法を組み合わせることで、組織内に潜むVBScriptの全体像を把握できます。発見したスクリプトは、PowerShellなどのモダンな代替技術へと計画的に移行していくことをお勧めします。廃止のデッドラインを迎えてから慌てないよう、今すぐ調査を始めましょう。