
快速上手KQL-threat-hunting-queries5分钟学会编写第一个威胁狩猎查询【免费下载链接】KQL-threat-hunting-queriesA repository of KQL queries focused on threat hunting and threat detecting for Microsoft Sentinel Microsoft XDR (Former Microsoft 365 Defender).项目地址: https://gitcode.com/gh_mirrors/kq/KQL-threat-hunting-queries想要在Microsoft安全生态系统中快速提升威胁检测能力吗KQL-threat-hunting-queries项目为你提供了丰富的Kusto查询语言KQL威胁狩猎查询库让你能够快速上手并开始编写专业的威胁检测查询。本文将为你提供一个完整的快速入门指南帮助你在5分钟内掌握编写第一个威胁狩猎查询的技巧。 什么是KQL-threat-hunting-queriesKQL-threat-hunting-queries是一个专门为Microsoft Sentinel和Microsoft XDR原Microsoft 365 Defender设计的KQL查询库。这个开源项目汇集了大量现成的威胁检测和狩猎查询涵盖了从基础检测到高级威胁分析的各个方面。项目的核心价值在于为安全分析师和威胁猎人提供了即用型的查询模板大大减少了从零开始编写查询的时间。无论你是刚接触KQL的新手还是经验丰富的安全专家这个项目都能为你提供宝贵的参考和起点。 项目结构概览项目按照功能模块进行了清晰的分类让你能够快速找到所需的查询类型01.ThreatHunting/- 威胁狩猎查询专注于主动寻找潜在威胁02.ThreatDetection/- 威胁检测查询用于识别已知攻击模式03.SecOps/- 安全运维相关查询包括设备管理和风险评估Azure/- Azure相关安全查询Defender For Endpoint/- 终端防护查询Defender for Office365/- Office 365安全查询Sentinel/- Microsoft Sentinel专用查询每个查询文件都遵循标准化的模板格式包含描述、参考链接、KQL查询代码和MITRE ATTCK映射确保查询的完整性和可追溯性。 你的第一个KQL威胁狩猎查询让我们从一个简单的例子开始。假设你想检测环境中可能存在的PowerShell Base64编码命令执行这是攻击者常用的混淆技术之一。基础查询结构打开文件 01.ThreatHunting/powershell-base64-encoding.md你会看到以下查询DeviceProcessEvents // 定义时间范围 | where Timestamp ago(1d) | where FileName has_any (powershell.exe, pwsh.exe, powershell_ise.exe) | where ProcessCommandLine contains base64 | summarize arg_max(Timestamp, *) by DeviceName这个查询的逻辑非常清晰选择数据表从DeviceProcessEvents表开始过滤时间范围只查看过去1天的数据筛选进程查找PowerShell相关进程检测特征查找包含base64的命令行聚合结果按设备名汇总最新记录查询分解说明DeviceProcessEvents这是Microsoft Defender XDR中的一个标准表包含设备进程事件数据| where Timestamp ago(1d)限制查询时间范围为过去1天has_any操作符高效匹配多个值比contains性能更好summarize arg_max获取每个设备的最新记录 如何自定义查询1. 调整时间范围根据你的需求可以轻松调整时间范围// 查看过去7天的数据 | where Timestamp ago(7d) // 查看过去1小时的数据 | where Timestamp ago(1h) // 查看过去30分钟的数据 | where Timestamp ago(30m)2. 添加更多过滤条件你可以根据具体场景添加额外的过滤条件DeviceProcessEvents | where Timestamp ago(1d) | where FileName has_any (powershell.exe, pwsh.exe, powershell_ise.exe) | where ProcessCommandLine contains base64 | where ProcessCommandLine contains IEX // 添加IEX检测 | where ProcessCommandLine contains Invoke- // 添加Invoke命令检测 | summarize arg_max(Timestamp, *) by DeviceName3. 优化查询性能为了提高查询性能建议使用has代替contains进行精确匹配尽早过滤数据以减少处理量合理使用时间范围限制 实际应用案例案例1检测CVE漏洞利用查看 01.ThreatHunting/CVE-2023-36884-dropped-file.md这是一个针对特定CVE漏洞的检测查询DeviceFileEvents | where ActionType FileCreated | where FolderPath startswith C:\Users\ | where FolderPath contains \AppData\Roaming\Microsoft\Office\Recent\ | where FolderPath endswith \file001.url这个查询专门检测CVE-2023-36884漏洞利用中创建的特殊文件展示了如何结合文件路径特征进行精准检测。案例2网络威胁检测在 01.ThreatHunting/dns-requests-to-suspicious-tlds.md 中你可以学习如何检测到可疑顶级域名的DNS请求DeviceNetworkEvents | where Timestamp ago(7d) | where ActionType DnsQuery | where RemoteUrl has_any (.xyz, .top, .club, .win, .bid) | summarize Count count() by DeviceName, RemoteUrl | where Count 5️ 最佳实践指南1. 理解数据表结构在编写查询前首先要了解Microsoft安全产品中的数据表结构。每个表都有特定的字段和数据类型正确理解这些是编写有效查询的基础。2. 使用项目模板项目提供了标准化的模板文件 threat-hunting-template.md建议在创建新查询时使用这个模板确保格式统一和内容完整。3. 测试和验证在将查询投入生产环境前在测试环境中验证查询逻辑检查查询性能避免影响系统验证结果准确性避免误报4. 持续优化威胁环境不断变化建议定期更新查询以适应新的攻击技术根据实际检测效果调整阈值和条件参考社区的最新发现和最佳实践 进阶学习路径1. 学习KQL基础语法掌握KQL的基础语法是编写有效查询的前提。项目README中提供了基础语法介绍包括where操作符数据过滤contains/has字符串匹配ago时间范围计算project字段选择2. 探索高级查询技巧随着技能提升可以学习数据聚合和分析函数多表关联查询复杂条件判断性能优化技巧3. 参与社区贡献KQL-threat-hunting-queries是一个开源项目欢迎贡献你的查询。通过参与贡献你不仅可以帮助社区还能在实践中提升自己的技能。 开始你的威胁狩猎之旅现在你已经掌握了编写第一个KQL威胁狩猎查询的基础知识。建议从以下步骤开始克隆项目获取最新的查询库浏览示例学习现有的查询模式修改测试基于现有查询进行修改和测试创建新查询针对你的特定需求编写新查询分享贡献将有效的查询分享给社区记住威胁狩猎是一个持续的过程需要不断学习和实践。KQL-threat-hunting-queries项目为你提供了丰富的起点和参考帮助你在这个旅程中快速成长。通过这个项目你将能够快速检测常见的威胁模式学习行业最佳实践提升安全运营效率建立系统的威胁检测能力现在就开始你的KQL威胁狩猎之旅吧从第一个简单的查询开始逐步构建你的威胁检测体系为组织的安全防护贡献力量。【免费下载链接】KQL-threat-hunting-queriesA repository of KQL queries focused on threat hunting and threat detecting for Microsoft Sentinel Microsoft XDR (Former Microsoft 365 Defender).项目地址: https://gitcode.com/gh_mirrors/kq/KQL-threat-hunting-queries创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考