规则语法
快速链接: <definition> , <operations>, <description>, <actions>
规则是使用基于 XML 的语言定义的一组表达式。ESET PROTECT Web 控制台已包含一组预定义的规则,但您可以添加和编辑您自己的规则。
规则的一般主体结构为:
<rule> <definition> |
Definition 标记
ancestor - 可以采用附加属性:
•distance - 指定与匹配的祖先的当前进程的实际距离,例如,1 是父进程,2 是祖父进程,依此类推。如果未指定,则该属性将对照所有进程祖先进行比较
•unique - 启用 ancestor 标记以删除祖先树中的重复进程。例如,恶意软件会为同一进程创建多个实例以逃避检测(资源管理器 -> cmd -> cmd -> cmd -> 恶意软件),而此属性将消除这些重复项(资源管理器 -> cmd -> 恶意软件)
Process 和 parentprocess
process 部分使安全工程师可以将事件范围限制在特定进程;因此,您可以编写诸如“Outlook 创建 EXE 文件”之类的规则。如果进程元素为空,则会针对所有进程评估 parentprocess 和 operations。
parentprocess 部分与进程类似,但允许安全工程师测试父进程属性。这将启用诸如“由 Word 启动的 PowerShell 连接到 Internet”之类的规则。
process、parentprocess、ancestor 和 operation 使用表达式元素来描述逻辑表达式,该逻辑表达式通过计算看看是否应触发检测。表达式由条件和逻辑运算符组成。条件检查某些属性的值,逻辑运算符将这些条件组合成逻辑表达式。
表达式示例:
<operator type="and"> |
Operations
operations 部分定义进程执行的哪些操作会引发指标。如果为空,则在进程生成事件时触发该指标。
操作是使用具有 type 属性的操作元素和表达式元素定义的。
<operation type="WriteFile">Expression</operation>
有关受支持操作的完整列表,请参阅操作主题。
Operator
支持的逻辑运算符包括:AND、OR 和 NOT。逻辑运算符可以嵌套。因此,一个逻辑运算符可以是另一个逻辑运算符的参数。除了逻辑运算符之外,条件元素也可以用作逻辑运算符的参数。可以使用 operator 标记,如以下示例所示:
<process> |
条件元素由三部分组成:
•操作的参数或进程的属性
•规则创建者指定的值
•值和属性之间的关系
属性按层次结构分组为“组件”。
严重性分为三个级别:1–39 > Info,40–69 > Warning,70–100 > Threat。
属性类型及其关系(条件属性)包括:
|
is(not)set |
is(not) |
is(not)empty |
(not)starts |
(not)contains |
(not)ends |
less, lessOrEqual, greater, greaterOrEqual |
|---|---|---|---|---|---|---|---|
String |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
Int |
✔ |
✔ |
|
|
✔ |
|
✔ |
Value |
✔ |
✔ |
✔ |
|
|
|
|
Bool |
✔ |
✔ |
|
|
|
|
|
Date |
✔ |
✔ |
|
|
|
|
✔ |
字符串集 |
✔ |
|
✔ |
|
✔ |
|
|
IPv4 地址 |
✔ |
✔ |
✔ |
|
|
|
|
IPv6 地址 |
✔ |
✔ |
✔ |
|
|
|
|
IPv4 地址集 |
✔ |
|
✔ |
|
✔ |
|
|
IPv6 地址集 |
✔ |
|
✔ |
|
✔ |
|
|
Description 标记
description 是必需的,并且必须包含名称和类别,但其余部分是可选的。它有助于定义下面列出的字段,因为它们出现在详细信息中:
name – 规则的名称。它显示在规则列表中。
category - 允许您对规则进行分类。您可以指定您自己的类别。
explanation - 解释触发规则的原因。
os - 包含要应用规则的操作系统。可能的值为:Windows, Linux, OSX, ANY.
mitreattackid - 包含 MITRE ATT&CK® 的 ID
maliciousCauses - 描述触发规则的事件或变动的恶意诱因
benignCauses - 描述触发规则的事件或变动的善意诱因
recommendedActions - 描述安全工程师要采取的建议操作。
guid - 用于内部规则。外部规则已自动生成 guid。它用于在导出/导入过程中唯一标识规则。
maliciousTarget 标记
您可以使用 maliciousTarget 标记指定默认情况下将受自定义响应操作影响的目标。例如,当您选择块可执行文件时,更改将取决于 maliciousTarget。它不会更改 Actions 标记的行为。可能的值为 current、module、none 和 parent。
maliciousProcess 标记已替换为 maliciousTarget 标记。虽然它仍获得旧有支持,但我们建议使用 maliciousTarget 标记。
Actions 标记
Actions 标记允许您指定在触发规则时执行的一组操作。
您可以将操作置于单个操作元素中:
<action name="BlockProcessExecutable"/>
或者将多个操作元素堆叠到一个操作元素中(如以下示例所示):
<actions> |
可以通过单个规则触发多个操作。