演習の概要

あなたは、Microsoft Sentinel を実装した企業で働いているセキュリティ運用アナリストです。 Azure Sentinel を使って脅威を検出および軽減する方法を学習する必要があります。 データ ソースを Microsoft Sentinel に接続した後、環境内の脅威や異常な動作を検出するのに役立つカスタム分析ルールを作成します。

脅威の捜索クエリを使用すると、SOC アナリストは、開発中または着手前に潜在的な攻撃を事前対応的に監視および調査できます。 Microsoft Sentinel 内で捜索を行うと、分析ルールに似たクエリを使用して、悪意のある可能性のあるアクティビティの環境を監査しつつ、アナリストは必要に応じて結果をインシデントにエスカレーションできます。 脅威の捜索では、分析 (高) レベルの保持期間を超えるデータが必要になる場合がありますが、検索/復元ジョブなどの機能を使用して、SOC が必要なデータを確実に所有するようにすることができます。

演習の手順

タスク 1: シミュレートされた特権エスカレーション攻撃を実行する

このタスクでは、VM1 Azure 仮想マシンに対してシミュレートされた攻撃を実行します。

  1. Edge ブラウザーで、Azure portal (https://portal.azure.com ) に移動します。

  2. 検索バーに「仮想マシン」と入力し、[仮想マシン] を選択します。

  3. VM1 仮想マシンを選択します。

  4. 左側のナビゲーション メニューで、[操作] セクションを展開し、[コマンドの実行] を選択します。

  5. [コマンドの実行] ペインで、[RunPowerShellScript] を選択します。

  6. [PowerShell スクリプト] ボックスで、前のコマンドをクリアしてから、これらのコマンドをコピーおよび実行して、管理者アカウントの作成をシミュレートします。 最後の行の後で、忘れずに Enter キーを押してください。

     net user theusernametoadd /add
     net user theusernametoadd ThePassword1!
     net localgroup administrators theusernametoadd /add
    
  7. [出力] セクションを監視して、コマンドが正常に完了したことを確認します。

タスク 2: KQL ハンティング クエリを作成する

このタスクでは、捜索クエリを作成し、結果をブックマークします。

  1. 管理者として WIN1 仮想マシンにログインします。パスワードはPa55w.rd

  2. Edge ブラウザーで、Azure portal (https://portal.azure.com ) に移動します。

  3. [サインイン] ダイアログ ボックスで、ラボ ホスティング プロバイダーから提供されたテナントの電子メール アカウントをコピーして貼り付け、 [次へ] を選択します。

  4. [パスワードの入力] ダイアログ ボックスで、ラボ ホスティング プロバイダーから提供されたテナントのパスワードをコピーして貼り付け、 [サインイン] を選択します。

  5. Azure portal の検索バーに「Sentinel」と入力してから、[Microsoft Sentinel] を選択します。

  6. Microsoft Sentinel ワークスペースを選択します。

  7. [ログ] を選択します。

  8. [新しいクエリ 1] スペースに次の KQL ステートメントを入力して、実行します。

    重要: 最初に KQL クエリをメモ帳に貼り付けて、そこから [新しいクエリ 1] ログ ウィンドウにコピーしてエラーを回避してください。

     search "administrators" 
     | summarize count() by $table
    

    注: イベントの結果が表示されるまでに最大 5 分かかる場合があります。 完了するまで待ちます。

  9. 結果には異なるテーブルからのイベントが表示される場合がありますが、ここでは、SecurityEvent テーブルを調査する必要があります。 目的の EventID および Event は “4732 - セキュリティが有効なローカル グループにメンバーが追加されました” です。 これを使用して、特権グループへのメンバーの追加を特定します。 次の KQL クエリを実行して確認します。

     SecurityEvent 
     | where EventID == 4732
     | where TargetAccount == "Builtin\\Administrators"
    
  10. 行を展開して、レコードに関連するすべての列を表示します。 Administrator として追加されたアカウントのユーザー名は表示されません。 問題は、ユーザー名ではなく、セキュリティ識別子 (SID) が格納されることです。 次の KQL を実行して、SID と、Administrators グループに追加されたユーザー名を照合します。

     SecurityEvent 
     | where EventID == 4732
     | where TargetAccount == "Builtin\\Administrators"
     | extend Acct = MemberSid, MachId = SourceComputerId  
     | join kind=leftouter (
         SecurityEvent 
         | summarize count() by TargetSid, SourceComputerId, TargetUserName 
         | project Acct1 = TargetSid, MachId1 = SourceComputerId, UserName1 = TargetUserName) on $left.MachId == $right.MachId1, $left.Acct == $right.Acct1
    
  11. 行を拡張して、結果の列を表示します。最後のものには、KQL クエリ内で ‘‘投影’’ する UserName1 列の下に追加されたユーザーの名前が示されます。 アラートについてできるだけ多くのコンテキストを提供することにより、セキュリティ運用アナリストを支援することが重要です。 これには、調査グラフで使用するエンティティの投影が含まれます。 次のクエリを実行します。

     SecurityEvent 
     | where EventID == 4732
     | where TargetAccount == "Builtin\\Administrators"
     | extend Acct = MemberSid, MachId = SourceComputerId  
     | join kind=leftouter (
         SecurityEvent 
         | summarize count() by TargetSid, SourceComputerId, TargetUserName 
         | project Acct1 = TargetSid, MachId1 = SourceComputerId, UserName1 = TargetUserName) on $left.MachId == $right.MachId1, $left.Acct == $right.Acct1
     | extend timestamp = TimeGenerated, HostCustomEntity = Computer, AccountCustomEntity = UserName1
    
  12. 適切な検出ルールができたので、[ログ] ウィンドウで、コマンド バーの [+ 新しいアラート ルール] を選んでから、 [Microsoft Sentinel アラートの作成] を選びます。 ヒント: コマンド バーの省略記号 (…) ボタンを選択する必要がある場合があります。

  13. これで [分析ルール ウィザード] が起動します。 [全般] タブで、次のように入力します。

    設定
    名前 SecurityEvent Local Administrators User Add
    説明 ローカル管理者グループに追加されたユーザー
    方針 特権エスカレーション
    Severity
  14. [次へ: ルール ロジックを設定] ボタンを選択します。

  15. [ルール ロジックの設定] タブの [ルール クエリ] には、[アラートの強化 - エンティティ マッピング] の下のエンティティだけでなく、KQL クエリが既に設定されているはずです。**

    エンティティ 識別子 [データ フィールド]
    Account FullName AccountCustomEntity
    Host Hostname (ホスト名) HostCustomEntity
  16. [ホスト] エンティティに Hostname が選択されていない場合は、ドロップダウン リストからそれを選択し、前の表のパラメーターを使用してフィールドを設定します。**

  17. [クエリのスケジュール設定] では、次のように設定します。

    設定
    クエリの実行間隔 5 分
    次の時間分の過去のデータを参照します 1 日

    注: 同じデータに対して意図的に多くのインシデントを生成しています。 これにより、ラボはこれらのアラートを使用できるようになります。

  18. 残りのオプションは既定値のままにします。 [次へ: インシデント設定>] ボタンを選択します。

  19. [インシデント設定] タブについては、既定値のままにし、 [次へ: 自動応答 >] ボタンを選択します。

    1. [自動応答] タブで、[次へ: 確認と作成 >] ボタンを選択します。
  1. [確認と作成] タブで、 [作成] ボタンを選択して新しいスケジュール化された分析ルールを作成します。