结合使用 Microsoft Sentinel 与 Azure Web 应用程序防火墙来检测新威胁
Web 应用程序面临频繁的恶意攻击,这些攻击会利用已知漏洞(例如代码注入和路径遍历攻击)。 很难在应用程序代码中防止这些攻击,因为它们需要在应用程序体系结构的多个级别持续维护、修补和监视。 Web 应用程序防火墙 (WAF) 解决方案可为所有 Web 应用程序修补已知漏洞,而不是单独保护每个应用程序,从而提供更快的集中式安全保护。 Azure Web 应用程序防火墙是云原生服务,可保护 Web 应用免受常见的网络黑客攻击技术。 它可以快速部署,以全面了解 Web 应用程序流量并阻止恶意 Web 攻击。
通过将 Azure WAF 与 Microsoft Sentinel(云原生 SIEM 解决方案)集成,可以自动检测和响应威胁/事件/警报,并节省更新 WAF 策略的时间和精力。 本文介绍如何在 Microsoft Sentinel 中针对代码注入等攻击生成分析规则/检测。
针对 Web 应用程序攻击的检测查询
Azure 网络安全 GitHub 存储库包含以下预生成的查询,可用于在 Microsoft Sentinel 中创建分析规则。 这些分析规则有助于自动检测和响应代码注入攻击、路径遍历攻击和基于扫描程序的攻击等。
代码注入攻击(应用程序网关)
代码注入攻击是一种网络攻击,涉及将恶意代码注入应用程序。 然后,应用程序会解释或运行代码,从而影响应用程序的性能和功能。
路径遍历攻击(应用程序网关)
路径遍历攻击是一种网络攻击,涉及操作应用程序的文件路径,以访问存储在 Web 根文件夹外部的文件和目录。 攻击者可以使用特殊字符序列(例如
…/
或…\
)向上层目录层次结构移动并访问敏感或机密数据,例如配置文件、源代码或系统文件。基于扫描程序的攻击(应用程序网关 WAF)
基于扫描程序的 Web 攻击是一种网络攻击,涉及使用 Web 漏洞扫描程序查找并利用 Web 应用程序中的安全漏洞。 Web 漏洞扫描程序是一种可自动扫描 Web 应用程序是否存在常见漏洞(例如 SQL 注入、XSS、CSRF 和路径遍历)的工具。 攻击者可以使用扫描程序识别易受攻击的目标,并发起攻击来入侵它们。
在 Sentinel 中针对 Web 应用程序攻击设置分析规则
需要满足以下先决条件才能设置分析规则:
- 一个工作 WAF 和一个 Log Analytics 工作区,该工作区配置为从相应的 Azure 应用程序网关接收日志。 有关详细信息,请参阅 Azure Web 应用程序防火墙的资源日志。
- 此外,应为此处使用的 Log Analytics 工作区启用 Microsoft Sentinel。 有关详细信息,请参阅快速入门:加入 Microsoft Sentinel。
使用以下步骤在 Sentinel 中配置分析规则。
导航到 Microsoft Sentinel 并选择“分析”选项卡。选择“创建”,然后选择“计划查询规则”。
此处提供的策略和技巧仅供参考,源自 MITRE 攻击知识库。此知识库中的策略和技巧基于现实观察。
可以使用分析规则向导为此事件设置严重性级别。 这些是严重攻击,因此已选择“高严重性”。
在“设置规则逻辑”页上,输入以下预生成代码注入查询:可以在 Azure 网络安全 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
注意
在创建此分析规则之前,请务必确保 WAF 日志已位于 Log Analytics 工作区中。 否则,Sentinel 将无法识别查询中的某些列,并且必须为每个给出错误的列添加额外的输入(例如
| extend action_s = column_ifexists(“action_s”, “”), transactionId_g = column_ifexists(“transactionId_g”, “”)
)。 此输入会手动创建列名,并为其分配 null 值。 若要跳过此步骤,请先将 WAF 日志发送到工作区。在“事件设置”页上,启用“通过此分析规则触发的警报创建事件”。可以根据需要配置警报分组。
最后,在“审阅并创建”选项卡上选择“保存”。
此分析规则使 Sentinel 能够基于记录任意代码注入攻击的 WAF 日志创建事件。 默认情况下,Azure WAF 会阻止这些攻击,但创建事件可以为安全分析师提供更多支持,以响应未来的威胁。
可以使用 Azure 网络安全 GitHub 存储库中提供的预建检测查询,在 Sentinel 中针对各种 Web 应用程序攻击配置分析规则。 这些查询将直接添加到 Sentinel 检测模板。 添加后,将可以直接在 Sentinel 的分析规则模板部分使用这些查询。