導入:なぜ今、ファイル共有ソフトの対策が重要なのか
業務端末におけるファイル共有ソフト(P2Pソフト)の利用は、意図しない機密情報の流出や、ウイルス感染の入り口となる重大なセキュリティリスクです。IPAが提供していた「情報漏えい対策ツール」の配布終了に伴い、今後は各企業が自力で「端末内に不正なソフトがインストールされていないか」を監視・管理する体制を構築しなければなりません。本稿では、PowerShellを活用して特定の実行ファイルを監視・検知する仕組みの考え方を解説します。
基礎知識:ファイル共有ソフト検知の仕組み
ファイル共有ソフト対策の基本は、以下の2点です。
1. アプリケーション実行の禁止: 特定の実行ファイル(exe)の起動をOSレベルでブロックする。
2. 定期的なインベントリ管理: 端末内のファイルリストをスキャンし、禁止ソフトが混入していないか確認する。
これらを自動化することで、人的ミスを防ぎ、管理コストを大幅に削減できます。
実装/解決策:PowerShellによる検知スクリプト
Windows環境では、PowerShellを使用することで、インストール済みのプログラムリストを効率的に取得できます。以下は、特定のプロセスを監視し、存在を検知した場合に管理者に通知を行うためのサンプルコードです。
サンプルプログラム
以下のコードは、指定したファイル名がシステム内に存在するかを検索し、結果をCSVログに出力する実用的なスクリプトです。
検知対象のファイル名をリスト化(例として代表的なソフト名を列挙)
$TargetFiles = @(“Winny.exe”, “Share.exe”, “Cabos.exe”)
ログ保存先
$LogPath = “C:\SecurityLogs\AuditReport.csv”
検索対象ディレクトリ(全ドライブをスキャン)
$SearchPaths = Get-PSDrive -PSProvider FileSystem | Where-Object { $_.DisplayRoot -ne $null } | Select-Object -ExpandProperty Root
$Result = foreach ($Path in $SearchPaths) {
Write-Host “$Path をスキャン中…” -ForegroundColor Cyan
foreach ($File in $TargetFiles) {
# 再帰的に検索し、ファイルが存在すれば情報を取得
Get-ChildItem -Path $Path -Filter $File -Recurse -ErrorAction SilentlyContinue |
Select-Object Name, FullName, CreationTime
}
}
結果をCSVに出力
if ($Result) {
$Result | Export-Csv -Path $LogPath -Encoding UTF8 -NoTypeInformation
Write-Warning “注意: 禁止ソフトが検出されました。詳細は $LogPath を確認してください。”
} else {
Write-Host “禁止ソフトは検出されませんでした。” -ForegroundColor Green
}
応用・注意点:現場での運用におけるヒント
1. 管理者権限の確保: 上記スクリプトは、システム全体をスキャンするために管理者権限で実行する必要があります。タスクスケジューラを活用して、週1回の定期実行を自動化することをお勧めします。
2. 誤検知への対応: ファイル名だけで判断すると、正規の業務アプリを誤検知する可能性があります。ハッシュ値(SHA256等)で照合するロジックを追加することで、検知精度を飛躍的に高めることができます。
3. 「削除」より「隔離」を優先: もし禁止ソフトが検出された場合、すぐに削除せず、まずはネットワークから切り離してください。その後の調査で、情報漏えいの有無や被害範囲を特定する証拠が必要になるためです。
4. Windows 11への対応: 古いツールを無理に利用しようとせず、AppLockerやWindows Defender Application Control (WDAC) といったOS標準のセキュリティ機能を活用した「実行制御」へ移行することが、現在のセキュリティ運用のベストプラクティスです。

コメント