none
スクリプト言語を実行する実行ファイル(プリインストールされているもの)の起動を禁じる RRS feed

  • 質問

  • 下記サイトの方法で特定のユーザー(非管理者)にスクリプト言語を扱う実行ファイルの起動を禁じようと思います。

    https://www.winhelponline.com/blog/block-command-prompt-particular-user-permissions/

    windowsでc:\Windows c:\Program files c:\Program Files(x86)のディレクトリで
    プリインストールされているスクリプト言語実行を行う実行ファイルはcmd.(syswow,system32),powershell,powershell(x86),powershell ISE,powershell ISE (x86) powershell (ISE),wscript,cscript

    その他はございますでしょうか。

    また、システムが不安定性についてもご回答お願いします。

    環境はwindows10 pro 1803です。


    2019年7月24日 14:13

回答

  • Windows が既定で利用可能にしているスクリプト実行環境をすべて動作できなくした場合、Windows 自体の動作や機能が正常に行えなくなる可能性が考えられますが、それは構わないのでしょうか?

    まずはその辺りをよく検討/検証された方が良いでしょう。少なくとも私はそういう無謀なことは考えないので、これ以上この話には興味がありません。


    Hebikuzure aka Murachi Akira

    2019年7月27日 1:49

すべての返信

  • そもそも非管理者であればそれらのスクリプトを実行したとしてもシステム全体に影響が及ぶような操作はできないのですが、それでも明示的に「禁止」しなければならない理由はなんでしょう。

    ちなみにスクリプトも含めて「Windows に含まれているファイルの網羅的な情報」というものは無いと思います。


    Hebikuzure aka Murachi Akira

    2019年7月25日 3:23
  • 回答ありがとうございます。

    以下が

    スクリプト言語を全面的に禁止にしようと思った理由です。

    スクリプトを全面禁止にし、新規作成した実行ファイルを実行されると何かしらイベントを起こす

    (今回の場合は強制ログアウトをおこなう)監視アプリを作成しようとおもっています。

    監視アプリは強制終了されるかどうかは考えないものとします。

    Managementeventwatcherクラスを用いてプロセスの生成を監視しています。

    c:\Windows c:\Program files c:\Program Files(x86)配下の実行ファイルかどうかを下のようにして調べます。

    if (Regex.IsMatch(exepath, @"^C:\\Program Files (x86)", RegexOptions.IgnoreCase)||

    Regex.IsMatch(exepath, @"^C:\\Program Files", RegexOptions.IgnoreCase)|| Regex.IsMatch(exepath, @"^C:\\Windows", RegexOptions.IgnoreCase) ) { return true; }


    先ほどのディレクトリ以外で実行されている実行ファイルは

    jsonファイルに格納されている許可リストにあるかどうかで判断して

    含まれていない場合は実行ファイルを強制終了します。判断基準は実行ファイルのハッシュ値(crc32)です。

    スクリプトの場合はManagementeventwatcherにおいてはスクリプトを実行する実行ファイルのパスが表示されてしまい、先ほどのフィルターには引っかからないので

    スクリプト言語を実行する実行ファイルの実行を先ほどのリンクに記載されてある方法でブロックしようと思っています。

    たとえば、pythonの環境構築を行うと考えても、

    c:\Windows c:\Program files c:\Program Files(x86)配下にpythonのディレクトリを入れようとしても

    管理者権限が必要ですし、他のディレクトリにいれれば、先ほどの監視アプリにスクリプトを起動したことを検知されます。

    windowsにプリインストールされているスクリプト言語のファイルは先ほどのフィルターには引っかからないので

    先ほどのユーザーにたいしてアクセス制限をかけてブロックします。

    よって、以上の理由でスクリプト言語を全面的に禁止にしようと思った理由です。



    2019年7月25日 9:22
  • 済みませんが

    よって、以上の理由でスクリプト言語を全面的に禁止にしようと思った理由です

    何が「よって」なのか理解できませんでした。どなたか読解力のある方のコメントが付くのを待ってください。


    Hebikuzure aka Murachi Akira

    2019年7月25日 12:09
  • 実行ファイル(exe)はファイルごとにブロックできますが、

    スクリプトファイルの場合、スクリプトファイルごとにブロックすることができません。

    新規で作成したプログラム(実行ファイルおよびスクリプト)の起動を禁止しようとすると、

    スクリプトファイルの場合はスクリプトファイルの実行を担う実行ファイルの起動を禁止しなければなりません。

    なので、スクリプトファイルの実行を担う実行ファイルは全て起動禁止に使用と思いました。

    2019年7月26日 9:29
  • Windows が既定で利用可能にしているスクリプト実行環境をすべて動作できなくした場合、Windows 自体の動作や機能が正常に行えなくなる可能性が考えられますが、それは構わないのでしょうか?

    まずはその辺りをよく検討/検証された方が良いでしょう。少なくとも私はそういう無謀なことは考えないので、これ以上この話には興味がありません。


    Hebikuzure aka Murachi Akira

    2019年7月27日 1:49