本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。 、Windows環境において、不正アクセスやログイン失敗の検知からWebcamによる自動録画、メール通知までの仕組みを安全かつ実用的に構築・管理する方法を、一次情報に基づいて整理します。手動での実行やフォルダ構成、制約事項を順に確認していきます。
本仕組みの目的と全体像
一次情報によると、本ツール(SecurityMonitor-PowerShell)は、Windowsのセキュリティイベントログを監視し、ログイン失敗(Event ID 4625)を検知すると自動的にFFmpeg経由でWebcamの録画を開始し、複数の宛先へメールアラートを送信するシステムです。
以下の図は、一次情報に記載されている監視から録画までの処理の流れを示しています。
flowchart TD
A[Windows Security Event Log] -->|Event ID 4625 detected| B(Threshold reached: 2 failed attempts in 30s)
B -->|Email alert sent| C[Gmail SMTP to multiple addresses]
B -->|Webcam recording starts| D[FFmpeg DirectShow]
D -->|Footage saved| E[C:\SecurityCam\footage\]
E --> F[Stop via Ctrl+Alt+S or stop.ps1]
前提・注意点と必要要件
本システムを利用・構成するにあたり、公式情報では以下の環境および事前準備が挙げられています。
OS: Windows 10 または Windows 11
権限: PowerShellは管理者として実行する必要がある
ツール: FFmpeg(公式サイトより取得)
通知設定: 2段階認証を有効にしたGmailアカウントおよびアプリパスワード
デバイス: 内蔵または外付けのWebcam
また、以下の制限事項が一次情報に記載されています。
ユーザーがログインしている状態でのみ動作する(PowerShellが実行されている必要がある)。
Windowsのログイン画面ではWebcamにアクセスできない(OSレベルの制限)。
DirectShowによるWebcamアクセスにはユーザーセッションコンテキストが必要。
Gmailのアプリパスワードをスクリプト内に保持するため、取り扱いに注意が必要。
フォルダ構成とファイル配置
公式情報では、以下の構造でファイルを配置することが求められています。
C:\SecurityCam\monitor.ps1: メインの監視スクリプトhotkey.ps1: ホットキーリスナー(Ctrl+Alt+S用)stop.ps1: 手動停止用スクリプトfootage\: 録画された動画ファイルの保存先logs\monitor.log: すべてのイベントログffmpeg_error.log: FFmpegのエラー出力
セットアップ手順
一次情報に沿ったセットアップの主要な流れは以下の通りです。
FFmpegのインストール 公式ビルドサイトから取得し、指定のパスに展開します。インストール確認として、以下のコマンドを検討します。
ffmpeg -version
Webcam名の確認 利用する正確なデバイス名を特定するために、以下のコマンドを実行してビデオデバイスセクションを確認します。
ffmpeg -list_devices true -f dshow -i dummy 2>&1
monitor.ps1の設定 スクリプト上部にある以下の変数を、自身の環境に合わせて更新します。$gmailFrom: 送信元メールアドレス$gmailPass: Gmailアプリパスワード$alertTo1,$alertTo2: アラート送信先アドレス$webcam: 検出されたWebcam名$ffmpegPath: FFmpegの実行ファイルパス
フォルダの作成とスクリプトの配置 PowerShellを用いて必要なディレクトリを作成します。
New-Item -ItemType Directory -Force -Path C:\SecurityCam\footage New-Item -ItemType Directory -Force -Path C:\SecurityCam\logs
運用と利用方法
【Windows環境で確認予定】のため、以下の手順や出力結果は一次情報の記載に基づく解説となります。
監視の開始には、管理者としてPowerShellを開き、作業ディレクトリへ移動して実行ポリシーを一時的に変更した上でスクリプトを起動します。
cd C:\SecurityCam Set-ExecutionPolicy Bypass -Scope Process -Force .\monitor.ps1
必要に応じて、別ウィンドウでホットキーリスナーを起動します。
.\hotkey.ps1
録画の手動停止は、stop.ps1を実行するか、hotkey.ps1実行中に Ctrl+Alt+S を押下します。
期待されるコンソール出力の例
一次情報では、正常に稼働した際のコンソール出力例として以下が示されています。
監視開始時のログ(スレッショルド、ルックバック時間、ポーリング間隔の表示)
一定期間内の失敗ログイン試行回数のポーリング
閾値(30秒間に2回の失敗)に達した際の「THRESHOLD HIT」の検出とメール送信・録画プロセスの開始(PIDの表示)
メールアラートのフォーマット
閾値を超えた場合に送信されるメールには、検出時刻、コンピュータ名、アカウント名、日付、および録画ファイルの保存先パスが含まれ、不正アクセスの可能性を通知します。
限界と今後の改善予定
一次情報では、現在のシステムにおける限界と、将来的な改善案についても言及されています。
限界: ユーザーがログイン中でPowerShellが稼働している必要がある点や、OSレベルの制限によりログイン画面でのWebcamアクセスができない点。
計画されている改善:
ログイン前監視のためのWindowsサービス化
Twilioを利用したSMSアラート
録画完了時の動画添付メール送信
ログイン時のタスクスケジューラによる自動開始
Telegramボット通知
まとめ
本記事では、PowerShellとWindowsイベントログ、FFmpegを組み合わせてセキュリティ監視を行う仕組みについて、一次情報をもとに構成要素やセットアップ、運用手順を整理しました。
実行前に確認すべき点と制約の要点は以下の通りです。
管理者権限でのPowerShell実行が必要であること
GmailのアプリパスワードやWebcam名の事前確認が必須であること
Windowsの仕様上、ログイン画面でのWebcam録画には対応していないこと
実機での動作確認は行っていないため、環境ごとの検証が必要であること
