RaaSへの技術的なクイック対策例として、「情報システム開発契約のセキュリティ仕様作成のためのガイドライン」から有効と考えられる Windows ポリシーを例示した。Raas 対策として、通常の運用に影響が少なく、テストも容易な項目を抽出してある。
中には、未構成でも既定値で有効もしくは無効になっているポリシーも存在するが、明示的に設定した上で定期的に監査することが重要である。万一、変更があればそれは侵害を意味するからだ。
Windows の Security 関連の Policy は着実に強化されているが、後方互換性のためにあえて緩く設定されている部分もあり、その意味では既定値を悪用する攻撃ベクトルも存在することから、初期設定は運用スタイルに併せて変更することを強く推奨する。
なお、攻撃側はレジストリーの変更やポリシーの変更を試みるため、Windows Group Policyの再読み込み と ログとレジストリの保護 の設定を必ず行って頂きたい。今後、レジストリ値などの情報を適宜追加した上で、簡易監査ツールを提供する予定である。
最小特権の適用
- 標準ユーザーでの運用の徹底し、初期侵入時のセキュリティコンテキストを最小にしておく
初期侵入時のユーザー権限が管理者であると、OSの設定変更やセキュリティソフトウェアの無効化されれる恐れがある。
ランサムウェアのリスクを享受できない場合は、すべての運用は「標準ユーザー」で行うこと。ソフトウェアのインストール、OSの設定変更などは、必要に応じて、管理者でログオンし実施する。
PCの「管理者 - ローカルアカウント」にドメインユーザーを追加しない 特に、Built-In Administrators にドメインユーザーを所属させない
- 管理業務では Administrator を使用しない
Administrator を共同で使用すると、誰が何をしたのか、例えば、設定ミスなのか、攻撃なのかの判別がつかなくなる。
Administrator への攻撃がなされた場合に備え、通常の管理では Administrators に所属する ID を使用する。万一、Administrator でログオン失敗(Security EventID 4625/4776)が検出された場合に侵害行為がなされていることが検知できる。
- Administrators に属するアカウントは管理業務のみ実施する
管理者権限でのインターネットに接続する行為を最小限にとどめる。
電子メールや Web の閲覧など、侵入ベクトルに関わる業務は規則で禁止する。
- Administrators に所属するメンバーが特定できるようにする
Administrators メンバーの操作を明確化するとともに否認を防止する。
例えば標準業務の ID が tanaka の場合、Administrators には、 tanaka-admin などの ID を設定する。
- Built-In Administrator アカウントのための管理者承認モードを有効にする
ローカル管理者アカウントは標準ユーザーのように機能させ、昇格の際はユーザーアクセス制御 (UAC)を表示させる。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ユーザーアカウント制御]>[管理者承認モードですべての管理者を実行する] 値を [有効] に設定する
- 管理者承認モードでの管理者に対する昇格時のプロンプトの動作を設定する
昇格時の UAC の動作を決定する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ユーザーアカウント制御]>[管理者承認モードでの管理者に対する昇格時のプロンプトの動作] 値を [有効]>[セキュリティで保護されたデスクトップで同意を要求する] もしくは、[有効]>[セキュリティで保護されたデスクトップで資格情報を要求する] に設定する
※ UAC は様々なバイパス方法が研究されており POC も多数あるに留意する。
- 管理者のアカウントロックアウトを許可する
2023年1月にリリースされたセキュリティ更新プログラムKB5020282をインストールすると、[管理者のアカウントロックアウトを許可する]ポリシーが追加される。 [ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[アカウント ポリシー]>[管理者のアカウントロックアウトを許可する] 値を[有効]に設定する
資格情報参照の抑制
- SAM アカウントおよび共有の匿名の列挙を許可しない
匿名ユーザーは、ドメイン アカウントやネットワーク共有の名前の列挙などを実行できるため、明示的に制限する。
[ポリシー]>コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ネットワークアクセス]>[SAM アカウントおよび共有の匿名の列挙を許可しない] 値を [有効] に設定する
- SAM アカウントの匿名の列挙を許可しない
SAMRPC プロトコルを使うと、ローカル管理者やドメイン管理者などの特権アカウントを含めてユーザーを列挙したり、ローカル SAM や Active Directory からグループとグループ メンバーシップを列挙できるため、明示的に制限する。
[ポリシー]>コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ネットワークアクセス]>>[SAM アカウントの匿名の列挙を許可しない] 値を [有効] に設定する
- SAMへのリモート呼び出しを許可されたクライアントを制限する
Windows 匿名ユーザーは、デバイスへの匿名接続でドメイン アカウントやネットワーク共有の名前の列挙ができるため、明示的に制限する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ネットワークアクセス]>[SAMへのリモート呼び出しを許可されたクライアントを制限する] [このポリシーの設定を定義する] をチェックし、[セキュリティの編集]をクリックし、[Domain\Administrators] のアクセス許可で [リモートアクセス] の [許可] がチェックされていることを確認する [OK] をクリックすると自動的にセキュリティ記述子 [O:BAG:BAD:(A;;RC;;;BA)] が追加される
- 匿名の SID と名前の変換を許可する
管理者の SID は、[S-1-5-ドメイン-500] であることから、 Windows 匿名ユーザーによる管理者の ID 取得を制限する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ネットワークアクセス]>[匿名の SID と名前の変換を許可する] 値を [無効] に設定する
- 名前付きパイプと共有への匿名のアクセスを制限する
Windows 匿名ユーザーによる共有及びパイプへのアクセスを制限する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ネットワークアクセス]>[名前付きパイプと共有への匿名のアクセスを制限する] 値を [有効] に設定する
悪意あるプログラムの実行とインストールの阻止
- PowerShell スクリプトの実行を有効にする
インターネットゾーンの PowerShell スクリプトに対して、電子署名を要求する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[Windows PowerShell] 値を [有効] に設定し、オプションで [ローカルスクリプト及びリモートの署名済みスクリプトを許可する] を選択する
- Windows Script Host の制御設定
VBScript に対して、電子署名を要求する。
「情報システム開発契約のセキュリティ仕様作成のためのガイドライン」 の「Windows Script Hostの制御設定」を参照。
- アプリケーションのインストールを検出し、昇格をプロンプトする
アプリケーションインストールの際に、UAC を表示する。
[コンピュータの構成]>[ポリシー]>[Windows の設定]>[セキュリティの設定]>[ローカルポリシー]>[セキュリティ オプション]>[ユーザーアカウント制御]>[アプリケーションのインストールを検出し、昇格をプロンプトする] 値を [有効] に設定する
自動再生の阻止
- 自動再生機能をオフにする
未構成の場合、自動再生が有効であることから、自動再生をオフにする。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[自動再生機能をオフにする] 値を [有効] に設定する [自動再生機能をオフにする] を [すべてのドライブ] に設定する
- 自動実行の停止
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[自動実行の既定の動作を設定する] 値を [有効] に設定する [既定の自動実行の動作] を [自動実行コマンドを実行しない] に設定する
- ボリューム以外のデバイスの自動再生を許可しない
このポリシーを有効にすることで、カメラや電話などのMTPデバイス雄自動再生を許可しない。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[ボリューム以外のデバイスの自動再生を許可しない] 値を [有効] に設定する
水平展開の阻止
- PCの Built-In Administrator のパスワードをユニークにする
Built-In Administrator のパスワードが共通であると、容易に水平展開されてしまうため、一台ずつ、パスワードをユニークにする必要がある。PCの台数が多い場合は、Microsoft Local Administrator Solution の使用を検討する。
命名規則として、コンピュータ名+部門名や部門コード+フレーズ などが考えられる。推測および総当たりが困難な20桁以上のパスフレーズが望ましい。
- ネットワーク経由でコンピュータへアクセス許可されるユーザーを設定する
既定値では、Everyone が含まれるため制限する。
[ポリシー]>[コンピュータの構成]>[ポリシー]> [Windows の設定]>[セキュリティの設定]> [ローカルポリシー]>[ユーザー権利の割り当て]>[ネットワーク経由でのアクセス] 値を [Administrators; Remote Desktop Users] に設定する
- ネットワーク経由でコンピュータへアクセス許可されないユーザーを設定する
ローカルアカウントに対して、水平展開のリスクを減らすために制限する。
[ポリシー]>[コンピュータの構成]>[ポリシー]> [Windows の設定]>[セキュリティの設定]> [ローカルポリシー]>[ユーザー権利の割り当て]>[ネットワーク経由のアクセスを拒否] 値を [Guests; Local account] に設定する
- ネットワークログオン時のローカルアカウントへのUAC制限の適用
ネットワーク経由でローカルアカウントがロングオンする際に、UAC を適用する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[MS Security Guide]>[Apply UAC restrictions to local accounts on network logons] 値を [有効] にする
- リモートデスクトップサービスを使ったログオンを許可
リモートデスクトップサービスを利用可能な限定ユーザーを設定する。
[ポリシー]>[コンピュータの構成]>[ポリシー]> [Windows の設定]>[セキュリティの設定]> [ローカルポリシー]>[ユーザー権利の割り当て]>[リモートデスクトップサービスを使ったログオンを許可] [これらのポリシーの設定を定義する] にチェックを入れ、RDP専用アカウントを登録する。
- リモートデスクトップのロックアウト
リモートデスクトップへの総当たり攻撃、辞書攻撃を防ぐため、ロックアウトを設定する。
以下のレジストリを設定する
Registry Hive | HKEY_LOCAL_MACHINE |
Registry Path | SYSTEM\CurrentControlSet\Services\RemoteAccess\Parameters \AccountLockout |
Value Name | MaxDenials |
Value Type | REG_DWORD |
MaxDenials | RDPロックアウト回数 (DEC) |
ResetTime(min) | RDPロックアウトを解除する分数 (DEC) |
- リモートデスクトップのポートの変更
リモートデスクトップへの攻撃を遅延させるため、ポートを変更する。
以下のレジストリを設定する
Registry Hive | HKEY_LOCAL_MACHINE |
Registry Path | System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp |
Value Name | PortNumber |
Value Type | REG_DWORD |
Value | 49152から65535 までのいずれかを指定する(DEC) |
RDP接続の際、コンピュータ名の後ろに " : " で区切って、設定したポート番号を記述する
サーバー名がSV01DC01で、設定したポートが65530の場合 → SV01DC01:65530
検出
- PowerShell スクリプトブロックのログを有効にする
侵害の分析、攻撃の検出のために、PowerShell コマンドとスクリプトの詳細情報を記録する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[Windows PowerShell]>[PowerShell スクリプトブロックのログを有効にする] 値を [有効] にする
- モジュールログを有効にする
モジュールのパイプライン実行イベントを PowerShell ログに記録する。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[Windows PowerShell]>[モジュールログを有効にする] 値を [有効] にする
- PowerShellトランススクリプションを有効にする
PowerShell コマンドの入出力をテキスト ベースのトランスクリプトにキャプチャする。
[ポリシー]>[コンピュータの構成]>[ポリシー]>[Windows の設定]>[管理用テンプレート]>[Windows コンポーネント]>[Windows PowerShell]>[PowerShellトランススクリプションを有効にする] 値を [有効] にする
- PowerShell v2 のアンインストール
PowerShell v2 はログを残せないため、ダウングレード攻撃された場合に、検出が不可能となる。Default で PowerShell v2 はインストールされていないが、もし、PowerShell v2 がインストールされている場合は、アンインストールする。
[コントロールパネル]>[プログラム]>[プログラムと機能]>[Windows の機能の有効化または無効化]>[Windows PowerShell 2.0] を展開し、[Windows PowerShell 2.0] と [Windows PowerShell 2.0 エンジン] のチェックボックスが入っていないことを確認する。 もしくは、PowerShell(管理者) で以下のコマンドを実行する。 Get-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2 State が Disable であることを確認する。 無効化するには、PowerShell(管理者) で以下のコマンドを実行する。 Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2Root
- コマンドラインインターフェースの監査
・監査ポリシー カテゴリの設定を上書きする
既定値で有効であるが、明示的に設定する。カテゴリレベルでイベントが取得されていない場合、レジストリが変更されていることが考えられる。
[コンピューターの構成]>[ポリシー]>[Windows の設定]>[セキュリティ設定]>[ローカルポリシー]>[セキュリティオプション]>[監査: 監査ポリシー サブカテゴリの設定 (Windows Vista 以降) を強制して、監査ポリシー カテゴリの設定を上書きする] [このポリシーの設定を定義する] をチェックし、値を [有効] にする
・監査プロセス作成の監査
プロセスの作成または開始時に生成されるイベントと、プロセスを作成したアプリケーションまたはユーザーの名前を監査する。
[コンピューターの構成]>[ポリシー]>[Windows の設定]>[セキュリティ設定]>[監査ポリシーの詳細な構成]>[監査ポリシー]>[詳細追跡]>[プロセス作成の監査] [次の監査イベントを構成する] をチェックし、 [成功]、[失敗] をチェックする
・プロセス作成の監査にコマンドラインを含める
コマンドラインの実行を監査する。なお、バッチ処理等において、資格情報をハードコードすると逆に情報漏洩やプライバシー侵害の恐れがあるため、留意する。
[コンピューターの構成]>[管理用テンプレート]>[システム]>[プロセス作成の監査]>[プロセス作成イベントにコマンドラインを含める] 値を [有効] にする
- その他
IPAガイドラインの「・L1 監査ポリシーの詳細な構成」を構成する。