一瞬で開いて閉じるコンソールウィンドウで何が実行されたのか?
「Windows」を利用していると、いきなりコンソールウィンドウが開き、瞬時にコンソールウィンドウが閉じる現象が発生することがあります。割と多くのユーザーが経験していることだと思います。
以前の「WSL」では、バックグラウンドで「Ubuntu」のパッケージキャッシュを更新するタスクがスケジューリングされており、タスク実行時にいきなりコンソールウィンドウが開き、タスクを実行していました。
「WSL」の件に限らず知らないユーザーからすれば、一瞬でコンソールウィンドウが閉じてしまうため何が起きたのか把握できず、怪しいソフトが動いているのではないかと不安になることもあるでしょう。
公式サイトにて、コンソールウィンドウで何が実行されたのかを把握する方法が紹介されています。
新しいプロセスを起動した時にイベントが生成される
コマンドラインアプリケーション実行時、コンソールウィンドウは「ConHost.exe」の実行により開かれ、コマンドラインアプリケーションにアタッチされます。そしてWindowsは、新しいプロセスを起動する時にID 4688イベントを生成します。
このイベントを追跡することでコンソールウィンドウで何が実行されたのかを把握することができます。
ただしこのイベントの生成はデフォルトで無効にされており、まずこのイベントの生成を有効にする必要があります。
注意
ID 4688イベントの生成を有効にするには、コマンドラインプロセスの監査を有効にする必要があります。この機能を有効にすると、大量のセキュリティーイベントが生成されます。
もし「ArcSight」や「Splunk」、「OMS」や「SCOM」といったツールを利用してイベントの収集や解析を行っている場合、大量のイベントによりこれらのツールに大きな負荷がかかる可能性があります。
そのためコマンドラインプロセスの監査の有効化によりどの程度の負荷がかかるのか、ツール側の設定含め段階的に負荷を確認しながら作業を行うことをお勧めします。
またセキュリティーイベントには何らかの機密情報が含まれる可能性があります。
そのためセキュリティーイベントを読める権限を持つユーザーにその情報が漏洩する可能性があります。
例えばコマンドラインに何らかのパスワードを指定して実行した場合、そのパスワード(コマンドラインオプション)がログに残るため、機密情報が他のユーザーに漏洩する可能性があります。
詳細は以下を参照してください。
コマンドラインプロセスの監査を有効にする
まずコマンドラインプロセスの監査を有効にします。1.グループポリシーエディターの起動
「コントロールパネル」を起動し、「グループ」で検索します。「グループポリシーの編集」が見つかるので、「グループポリシーの編集」をクリックします。
2.詳細追跡を開く
「グループポリシーエディター」が起動するので、左側のペインから「詳細追跡」をクリックします。「詳細追跡」は、以下のようにサブアイテムを展開していけば、見つかります。
- ローカルコンピューターポリシー
- コンピューターの構成
- Windowsの設定
- セキュリティの設定
- 監査ポリシーの詳細な構成
- 詳細追跡
3.プロセス作成の監視のプロパティを開く
右側の「プロセス作成の監視」をダブルクリックします。4.イベント構成の設定
以下の画面が表示されるので、「成功」にチェックを入れ「OK」ボタンをクリックします。5.プロセス作成の監視を開く
次に左側のペインから「プロセス作成の監視」をクリックします。「プロセス作成の監視」は、以下のようにサブアイテムを展開していけば、見つかります。
- ローカルコンピューターポリシー
- コンピューターの構成
- 管理用テンプレート
- システム
- プロセス作成の監視
6.プロセス作成イベントにコマンドラインを含めるを開く
右側の「プロセス作成イベントにコマンドラインを含める」をダブルクリックします。7.ポリシーの有効化
以下の画面が表示されるので、「有効」を選択し「OK」ボタンをクリックします。以上で作業は完了です。
8.PCの再起動
設定を反映するため、PCを再起動します。コンソールウィンドウの作成ログを調べるには
コマンドラインプロセスの監査を有効にすると、コンソールウィンドウの作成ログが生成されます。コンソールウィンドウの作成ログを調べる方法です。
この方法には、「PowerShell」からログを抽出する方法と、イベントビューワーでログを調べる方法があります。
PowerShellからログを抽出する方法
「PowerShell」からログを抽出する方法です。1.PowerShellの起動
「PowerShell」を管理者権限で起動します。2.ログの抽出
「PowerShell」が起動したら、以下のコマンドを実行します。
Get-WinEvent Security | ? id -eq 4688 | ? { $_.Properties[5].Value -match 'conhost' } | Select TimeCreated,@{ Label = "ParentProcess"; Expression = { $_.Properties[13].Value } } | Select -First 10
最新のログ10件分を表示します。
最後の数値を変更すれば、抽出するログの件数を変更できます。
イベントビューワーでログを調べる方法
イベントビューワーでログを調べる方法です。1.イベントビューワーの起動
「イベントビューワー」を起動します。2.カスタムビューの作成
「イベントビューワー」が起動したら、右側のペインから「カスタムビューの作成」をクリックします。3.カスタムビューの設定
以下の画面が表示されるので、「XML」タブをクリックし、「手動でクエリを編集する」をオンにします。クエリを自分で入力できるようになるので、以下のクエリを入力し、「OK」ボタンをクリックします。
<QueryList> <Query Id="0" Path="Security"> <Select Path="Security"> *[System[(EventID=4688)] and EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\conhost.exe')]] </Select> </Query> </QueryList>
4.カスタムビューの保存
以下の画面が表示されるので、任意の名称を「名前」に入力し、「OK」ボタンをクリックします。5.ログの表示
作成したカスタムビューを左側のペインから選択します。中央のペインにコンソールウィンドウのログが表示されます。