了解高级搜寻查询语言
- 项目
-
-
-
- 适用于:
- Microsoft Defender XDR, Microsoft Sentinel in the Microsoft Defender portal
高级搜寻基于 Kusto 查询语言。 可以使用 Kusto 运算符和语句构造在专用 架构中查找信息的查询。
观看此简短视频,了解一些方便的 Kusto 查询语言基础知识。
若要更好地了解这些概念,请运行你的第一个查询。
在Microsoft Defender门户中,转到“搜寻”以运行第一个查询。 使用以下示例:
union DeviceProcessEvents, DeviceNetworkEvents
| where Timestamp > ago(7d)
| where FileName in~ ("powershell.exe", "powershell_ise.exe")
| where ProcessCommandLine has_any("WebClient",
"DownloadFile",
"DownloadData",
"DownloadString",
"WebRequest",
"Shellcode",
"http",
"https")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp
在高级搜寻中运行此查询
查询开头添加了一个简短注释,用于描述其用途。 如果你以后决定要保存查询并与组织中的其他人共享,这将很有用。
查询本身通常以表名开头,后跟多个以管道 (|
) 开头的元素。 在此示例中,我们首先创建两个表 和 DeviceNetworkEvents
的联合,DeviceProcessEvents
并根据需要添加管道元素。
union DeviceProcessEvents, DeviceNetworkEvents
第一个管道元素是范围限定为前七天的时间筛选器。 限制时间范围有助于确保查询运行良好、返回可管理的结果,并且不会超时。
| where Timestamp > ago(7d)
备注
无论在 设置中指定的时区如何,Kusto 时间筛选器都采用 UTC 格式。
在时间范围之后,将立即搜索表示 PowerShell 应用程序的进程文件名。
| where FileName in~ ("powershell.exe", "powershell_ise.exe")
之后,查询在命令行中查找通常用于使用 PowerShell 下载文件的字符串。
| where ProcessCommandLine has_any("WebClient",
"DownloadFile",
"DownloadData",
"DownloadString",
"WebRequest",
"Shellcode",
"http",
"https")
现在,你的查询清楚地标识了要查找的数据,你可以定义结果外观。
project
返回特定列,并 top
限制结果数。 这些运算符有助于确保结果格式正确、大小合理且易于处理。
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp
选择“ 运行查询 ”以查看结果。
你刚刚运行了第一个查询,并大致了解了它的组件。 是时候稍微回溯一下并学习一些基础知识了。 高级搜寻使用的 Kusto 查询语言支持多种运算符,包括以下常见的运算符。
运算符 |
说明和用法 |
where |
从表中筛选出满足谓词的行的子集。 |
summarize |
生成聚合输入表内容的表。 |
join |
通过匹配每个表中指定列的值,合并两个表的行以形成新表。 观看 在 KQL 中联接表 以了解如何操作。 |
count |
返回输入记录集中的记录数。 |
top |
返回按指定列排序的前 N 条记录。 |
limit |
最多返回指定的行数。 |
project |
选择要包含、重命名或删除的列,然后插入新的计算列。 |
extend |
创建计算列并将其附加到结果集。 |
makeset |
返回 Expr 在组中采用的一组不同值的动态 (JSON) 数组。 |
find |
查找与一组表中的谓词匹配的行。 |
若要查看这些操作符的实时示例,请在高级搜寻的入门部分中运行它们。
高级搜寻支持 Kusto 数据类型,包括以下常见类型:
若要详细了解这些数据类型, 请阅读 Kusto 标量数据类型。
利用以下功能更快地编写查询:
-
自动建议 - 编写查询时,高级搜寻会提供 IntelliSense 的建议。
-
架构树 - 在工作区旁边提供包含表及其列列表的架构表示形式。 有关详细信息,请将鼠标悬停在某个项上。 双击某个项,将其插入到查询编辑器中。
-
架构参考 - 包含表和列说明的门户中引用,以及支持的事件类型 (
ActionType
值) 和示例查询
可以使用查询编辑器来试验多个查询。 若要使用多个查询,请执行以下操作:
使用空行分隔每个查询。
将光标置于查询的任何部分,以在运行查询之前选择该查询。 这将仅运行所选查询。 若要运行另一个查询,请相应地移动光标并选择“ 运行查询”。
为了获得更高效的工作区,还可以在同一搜寻页中使用多个选项卡。 选择“ 新建查询 ”,打开新查询的选项卡。
然后,无需打开新的浏览器选项卡即可运行不同的查询。
备注
使用具有高级搜寻功能的多个浏览器选项卡可能会导致丢失未保存的查询。 若要防止发生这种情况,请在高级搜寻中使用选项卡功能,而不是单独的浏览器选项卡。
入门部分提供了使用常用运算符的几个简单查询。 请尝试运行这些查询,并对其进行细微修改。
有关 Kusto 查询语言和受支持运算符的详细信息,请参阅 Kusto 查询语言文档。