最佳做法
•首先在测试环境中测试新规则,或者在一小组计算机上测试新规则。
•切勿设计会产生许多警报的规则,例如“任何进程已启动”。
•创建新规则时,记录监控的内容和原因。
•在创建新规则时定义规则严重性。如果 <severity> 标记不存在,系统会自动为规则分配警告严重性,而这可能并不适合该特定规则。
•ESET Inspect 不使用 CurrentControlSet 注册表项,因为该注册表项是一个备用符号链接,由操作系统动态评估并且指向 ControlSet%number%。请通过规则示例了解如何匹配 CurrentControlSet 内的注册表项/值。
•由于 x86 仿真在 x64 Windows 操作系统上的工作方式,许多注册表项/值在 Wow6432Node 下也具有存在类似功能的对应项,因此您需要监控此位置。同样的概念也适用于 %windir%\SysWOW64 和 %PROGRAMFILES(X86)% 文件夹。
•由于注册表路径在 Windows 中的实现方式,匹配特定注册表值的最佳方法是使用条件值 ends。
•在 Windows NTFS 上匹配备用数据流 (ADS) 的最佳方法是使用以下条件:
<condition component="FileItem" property="Extension" condition="contains" value=":" />
“contains”比较器对性能的要求相当高。如果可能,请改用“starts”或“ends”。 |
•可以使用特殊值条件“isnotempty”,该条件指示任何值都应触发检测 - 例如,可用于匹配来自特定进程的任何网络连接。示例用例:
<condition component="FileItem" property="FileNameWithoutExtension" condition="isnotempty" />
•注册表配置单元通过其缩写名称进行匹配,具体来说,HKCU 表示 HKEY_CURRENT_USER,HKLM 表示 HKEY_LOCAL_MACHINE。
•条件路径在匹配时不区分大小写。
•创建规则时,需要规划如何过滤误报(过多不相关的警报)。一般而言,在第一次迭代中,应尽可能具有通用性(例如,此注册表值的任何更改),仅在后续迭代中添加过滤器(例如,如果通用规则生成许多不相关的检测)。之后,您可以添加过滤器(例如,ESET LiveGrid 流行度/声誉、进程名称)以减少不相关检测的数量。过滤器应尽可能具体,以免丢失相关或值得注意的检测。
•您已实现了逻辑运算符(标记 <operator>)的短路求值,因此在创建规则时,可以考虑优化规则逻辑表达式,以提高规则匹配性能。实际示例 - 逻辑表达式 (A | B) & C 可以重写为 C & (A | B),如果 C 不为真,则不会计算该表达式的其余部分。