トップ回答者
WMICで、セキュリティログが取得できない

質問
-
こちらにはいつも困ったときに有用な情報の宝庫で、解決のお世話になっております。。。
表題の件で質問です。
Windows7で運用しているシステムで、ファイルの削除を検出するため、オブジェクト監査の設定をしました。イベントログでは、削除が行われたことは検出されています。バッチで簡単に、ある期間で発生しているか確認しようと
wmic ntevent where "(logfile='security' and eventcode='4660')"
とすると、「利用できるインスタンスがありません」と出ます。ネット上をいろいろ見ているのですが、どうもアクセス権の問題のようですが、ぴったりとくるケースが見つかっていません。
wevtutil gl security
では、「ログsecurityの構成を読み取れませんでした。アクセスが拒否されました」とくるので、どうもアクセス権の問題のようです。(上記いずれも、systemとかは普通にとれます。)
Administratorsのメンバであっても、WMI関係はwmimgmt.mscで、名前空間rootにグループでなくてユーザでアクセス権がなければならない、という記載を見つけて、rootにつけてやってみましたが、結果は同じでした。
何かヒントがあれば助かります。。。よろしくお願い申し上げます。
2016年10月21日 9:07
回答
-
チャブーンです。
まず、wmic ntevent whereで「利用できるインスタンスがありません。」の意味ですが、これは「要素がありません」ということで、実際に該当要素がないときに表示されます(アクセス不可の時も要素が探せないため、同じように表示されます。)
アクセス不可という意味ではないようです。「4660」というコード(イベントID)がログに存在しないので、このように表示されることを、簡単に確認しました。(したがってwevtutilコマンドのエラーとは別物です)ひとまず、以下のコマンドを実行してみてはどうでしょうか?EventCodeが違う(4648)を使っていること、すぐ検索できるように日付指定を行っていますが、切り分けにはなると思います。
wmic ntevent where "(logfile='security' and timegenerated >= '20161024000000.0+540' and eventcode='4648')"
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
2016年10月24日 3:32
すべての返信
-
チャブーンです。
WMICを含め、イベントログにコマンドでアクセスする際、セキュリティログだけ不可となるケースは、UACが絡んでいることがほとんどです。
ひとまず、WMICを実行する「コマンドプロンプト」または「Powershell」を[管理者として実行]で起動し、UAC昇格を完了した状態で実施してみてください。
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答の候補に設定 佐伯玲 2016年10月24日 1:44
2016年10月23日 10:27 -
チャブーンさん、早速のコメント有難うございます。質問後も色々検索して、トライアルしてみていたのですが、その中でUACを無効にしてやってみたのですがダメでした。ユーザを昇格させてもダメで、バッチ処理を最終的にはめざしているものの、まず動作確認の意図で、wmicを、管理者として実行して、インタラクティブでみたのですが、それでもダメでした。最後は、あまりやりたくなかったのですが、レジストリでUACを完全に止めてみたのですが、結果は同じでした。明日、再度サイトを訪問予定なので、ビルトインのAdministratorを有効にさせてもらって、runasも試してみる予定です。週末以降は手元に無いので手をこまねいている状態ですが、引き続きよろしくお願い申し上げます。 ps その他やってみたのはVBSで¥¥.¥root¥cimv2をimpersonationLevel=impersonate,(Security)}!で実施してもダメでした。エラーが出ないのでどう動いているかまで見てないですが。この辺は読みきれてないので、もうちょっと資料を読んでみます。2016年10月24日 2:31
-
チャブーンです。
まず、wmic ntevent whereで「利用できるインスタンスがありません。」の意味ですが、これは「要素がありません」ということで、実際に該当要素がないときに表示されます(アクセス不可の時も要素が探せないため、同じように表示されます。)
アクセス不可という意味ではないようです。「4660」というコード(イベントID)がログに存在しないので、このように表示されることを、簡単に確認しました。(したがってwevtutilコマンドのエラーとは別物です)ひとまず、以下のコマンドを実行してみてはどうでしょうか?EventCodeが違う(4648)を使っていること、すぐ検索できるように日付指定を行っていますが、切り分けにはなると思います。
wmic ntevent where "(logfile='security' and timegenerated >= '20161024000000.0+540' and eventcode='4648')"
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
2016年10月24日 3:32 -
ありがとうございます!
検証までいただいて、恐縮です。
手元の環境(Win10)で試してみたところ、うまくいくようなので、明日実機で試してみます。実は、手元のマシンは、週末作業時にも帯同し、検証にも使っていたのですが、そちらでも、管理者でwmic起動して、かつ、4660(ファイル削除)のイベントを作ったうえで試しても駄目だった(インスタンスがない)のですが、その後、win10は何もしていなかったのですが、全く同じ操作をしたら今度は動きました。狐につままれたような感じです。
もう少し落ち着いて検証すべきでした。申し訳ございません。最後に頂いたコメント、時間を絞ること、これも加えることにいたします。また、要素がなくても同じメッセージというのも理解いたしました。
ありがとうございました。今後ともよろしくお願い申し上げます。
# 先ほど、iPadからコメントをいれたら、改行がなくなり読みにくくなってしまい申し訳ございませんでした。
2016年10月24日 11:58