Microsoft Sentinel と Azure Web Application Firewall を使用して新しい脅威を検出する
Web アプリケーションは、コード インジェクションやパス トラバーサル攻撃など、よく知られている脆弱性を悪用する悪意のある攻撃に頻繁に直面します。 これらの攻撃は、アプリケーション アーキテクチャの複数のレベルで常にメンテナンス、修正プログラムの適用、監視が必要であるため、アプリケーション コードで防ぐのは困難です。 Web アプリケーション ファイアウォール (WAF) ソリューションでは、各 Web アプリケーションを個別にセキュリティで保護するのではなく、すべての Web アプリケーションの既知の脆弱性にパッチを適用して、より迅速かつ一元的なセキュリティを提供できます。 Azure Web Application Firewall は、一般的な Web ハッキング手法から Web アプリを保護するクラウドネイティブ サービスです。 Web アプリケーション トラフィックを完全に可視化し、悪意のある Web 攻撃をブロックするために、迅速にデプロイできます。
Azure WAF と Microsoft Sentinel (クラウド ネイティブ SIEM ソリューション) を統合すると、脅威/インシデント/アラートに対する検出と対応を自動化し、WAF ポリシーの更新にかかる時間と労力を節約できます。 この記事では、コード インジェクションなどの攻撃に対して Microsoft Sentinel で分析ルールと検出を構築する方法について説明します。
Web アプリケーション攻撃の検出クエリ
Azure Network Security GitHub リポジトリ には、Microsoft Sentinel で分析ルールを作成するために使用できる、次の事前構築済みクエリが含まれています。 これらの分析ルールは、コード インジェクション、パス トラバーサル、スキャナーベース攻撃などの攻撃に対する自動検出と対応に役立ちます。
コード インジェクション攻撃 (Application Gateway と Front Door WAF)
コード インジェクション攻撃は、悪意のあるコードをアプリケーションに挿入するサイバー攻撃の一種です。 その後、アプリケーションはコードを解釈または実行し、アプリケーションのパフォーマンスと機能に影響を与えます。
パス トラバーサル攻撃 (Application Gateway と Front Door WAF)
パス トラバーサル攻撃とは、Web ルート フォルダーの外部に格納されているファイルやディレクトリにアクセスするためにアプリケーションのファイル パスを操作するサイバー攻撃の一種です。 攻撃者は、ディレクトリ階層を上に移動したり、構成ファイル、ソース コード、システム ファイルなどの機密データにアクセスしたりするために、
…/
や…\
などの特殊文字シーケンスを使用できます。スキャナーベースの攻撃 (Application Gateway WAF)
スキャナーベースの Web 攻撃は、Web 脆弱性スキャナーを使用して Web アプリケーションのセキュリティの弱点を見つけて悪用するサイバー攻撃の一種です。 Web 脆弱性スキャナーは、SQL インジェクション、XSS、CSRF、パス トラバーサルなどの一般的な脆弱性について Web アプリケーションを自動的にスキャンするツールです。 攻撃者はスキャナーを使用して脆弱なターゲットを特定し、攻撃を開始して侵害することができます。
Sentinel で Web アプリケーション攻撃の分析ルールを設定する
分析ルールを設定するには、次の前提条件が必要です。
- 動作している WAF と、それぞれの Azure Application Gateway または Azure Front Door からログを受信するように構成されている Log Analytics ワークスペース。 詳細については、「Azure Web Application Firewall のリソース ログ」を参照してください。
- さらに、ここで使われている Log Analytics ワークスペースに対して Microsoft Sentinel を有効にする必要があります。 詳細については、「クイック スタート: Microsoft Sentinel をオンボードする」を参照してください。
Sentinel で分析ルールを構成するには、次の手順に沿ってください。
Microsoft Sentinel に移動し、[分析] タブを選んでください。[作成] を選び、[スケジュールされたクエリ ルール] を選んでください。
ここで提供される戦術と手法は情報提供のみであり、「MITRE 攻撃ナレッジ ベース」が出典です。これは、実際の観測に基づく敵対者の戦術と手法のナレッジ ベースです。
分析ルール ウィザードを使用して、このインシデントの重大度レベルを設定できます。 これらは主要な攻撃であるため、[重要度レベル高] が選択されます。
[ルール ロジックを設定] ページで、次の事前構築済みのコード インジェクション クエリを入力してください。このクエリは、Azure Network Security GitHub リポジトリにあります。 同様に、リポジトリで入手できる他のクエリを使用して、分析ルールを作成し、それぞれの攻撃パターンを検出できます。
let Threshold = 3; AzureDiagnostics | where Category == "ApplicationGatewayFirewallLog" | where action_s == "Matched" | where Message has "Injection" or Message has "File Inclusion" | where ruleGroup_s == "REQUEST-932-APPLICATION-ATTACK-RCE" or ruleGroup_s == "REQUEST-931-APPLICATION-ATTACK-RFI" or ruleGroup_s == "REQUEST-932-APPLICATION-ATTACK-RCE" or ruleGroup_s == "REQUEST-933-APPLICATION-ATTACK-PHP" or ruleGroup_s == "REQUEST-942-APPLICATION-ATTACK-SQLI" or ruleGroup_s == "REQUEST-921-PROTOCOL-ATTACK" or ruleGroup_s == "REQUEST-941-APPLICATION-ATTACK-XSS" | project transactionId_g, hostname_s, requestUri_s, TimeGenerated, clientIp_s, Message, details_message_s, details_data_s | join kind = inner( AzureDiagnostics | where Category == "ApplicationGatewayFirewallLog" | where action_s == "Blocked") on transactionId_g | extend Uri = strcat(hostname_s,requestUri_s) | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), TransactionID = make_set (transactionId_g,100), Message = make_set(Message,100), Detail_Message = make_set(details_message_s, 100), Detail_Data = make_set(details_data_s,100), Total_TransactionId = dcount(transactionId_g) by clientIp_s, Uri, action_s | where Total_TransactionId >= Threshold
Note
この分析ルールを作成する前に、WAF ログが Log Analytics ワークスペースに既に存在していることを確認することが重要です。 それ以外の場合、Sentinel はクエリ内の列の一部を認識せず、エラーが発生する列ごとに
| extend action_s = column_ifexists(“action_s”, “”), transactionId_g = column_ifexists(“transactionId_g”, “”)
などの追加の入力を追加する必要があります。 この入力により列名が手動で作成され、それらに NULL 値が割り当てられます。 この手順をスキップするには、最初に WAF ログをワークスペースに送信してください。[インシデントの設定] タブで、[この分析ルールによってトリガーされるアラートからインシデントを作成する] を有効にしてください。アラートのグループ化は、必要に応じて構成できます。
オプションで、必要に応じてインシデントへの自動応答を追加することもできます。 自動応答構成の詳細については、「Microsoft Sentinel による Azure WAF の自動検出と応答」のページを参照してください。
最後に、[確認と作成] タブで [保存] を選んでください。
この分析ルールにより、Sentinel はコード インジェクション攻撃を記録する WAF ログに基づいてインシデントを作成できます。 Azure WAF により既定でこれらの攻撃がブロックされますが、インシデントの作成によって、セキュリティ アナリストが今後の脅威に対応するためのより多くのサポートが提供されます。
Azure Network Security GitHub リポジトリで入手できる事前構築済みの検出クエリを使用して、さまざまな Web アプリケーション攻撃に対して Sentinel で分析ルールを構成できます。 これらのクエリは、Sentinel 検出テンプレートに直接追加されます。 追加すると、これらのクエリは Sentinel の [分析ルール テンプレート] セクションから直接使用できるようになります。