Files
RmEye/doc_server_rule_manual.md
2022-09-08 15:42:44 +08:00

156 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 服务端规则指南
编写服务端规则前,请您详细阅读本文,以便了解规则背后的故事,并帮助您更好的编写 RmEye 规则。
# 规则在何时被应用
RmEye 通过本地部署的客户端,向服务器传输行为事件。 \
服务器在收集并解析了行为事件日志后,会立即调用规则匹配函数检测该行为是否被某条规则命中。
# 规则分类
基于 RmEye 的设计思想,一切动作都基于其进程载体,所以,规则被分为 动作action和 进程process两种类型。
- [`进程规则`]
用于在进程启动事件日志中,检测新进程的启动上下文,判断其是否为可疑行为。
- [`动作规则`]
用于在非进程启动事件日志中,检测其特定行为上下文,判断其是否为可疑行为。
RmEye 动作规则列表编写于 `/Server/rules/py/action.py` 文件中;进程规则列表编写于 `/Server/rules/py/process.py` 文件中。
# 规则单元数据结构
```json
{
'rules': [
'originalfilename =~ ".*wbadmin.exe.*" and commandline =~ ".*delete.*"',
],
'score': 70,
'name': 'wbadmin'
}
```
这是一个 进程process类型的示例规则单元它是一个 dict 数据,包含有三个 item\
分别是:`rules`, `score`, `name`
- [`rules`]-> `list`:
其中包含一个或多个使用 `rule_engine` 语法的规则匹配表达式,每个表达式间的关系为 `或`,即任何一个表达式被匹配,都认为该规则已命中。
- [`score`]-> `int`:
由一个整数表示的规则匹配分值
- [`name`]-> `str`:
规则名称
# 适用于 RmEye 的 `rule_engine` 规则匹配表达式
`rule_engine` 表达式是服务端规则的核心,它允许用户定义一个 key-value 类型的 Query 表达式,以匹配一个 dict 数据;\
表达式的左值匹配 dict 数据中的特定键名key\
右值允许适用通配符、数字、字符串等进行完全匹配或模糊匹配 dict 数据中对应左值键名的值value。\
需要特别注意的是,必须定义 RmEye 数据源事件日志中存在的左值,才可以使规则完全按照预期工作。
# 进程规则已支持的通用左值定义
- `processid`
进程 PID
- `image`
进程文件路径
- `originalfilename`
进程原始文件名
- `hashes`
进程 MD5 哈希
- `commandline`
进程命令行
- `user`
进程用户名
- `integritylevel`
进程权限等级
- `parentprocessid`
父进程 PID
- `parentimage`
父进程文件路径
- `parentcommandline`
父进程命令行
- `parentuser`
父进程用户
# 动作规则已支持的特有左值定义
- `action`
动作类型,包括:
| action | 描述 |
| ---- | ---- |
| processaccess | 进程句柄访问 |
| pipecreate | 命名管道创建 |
| createremotethread | 远程线程创建 |
| filecreatestreamhash | 文件流创建 |
| registryadd | 注册表项新建 |
| registryvalueSet | 注册表值项设置 |
| registryobjectSet | 注册表对象设置 |
| dnsquery | DNS 查询 |
| networkconnect | 网络连接建立 |
| clipboardchange | 剪贴板访问 |
| processtampering | 进程执行流劫持 |
| filedeletedetected | 可执行文件删除 |
| filecreate | 文件创建 |
| imageload | DLL 加载 |
| processcreate | 进程创建(已分离为进程规则)|
| processterminal | 进程退出(内部保留)|
- `sourceimage` - 仅适用于动作 `processaccess`
源进程文件路径
- `targetimage` - 仅适用于动作 `processaccess`
目标进程文件路径
- `grantedaccess` - 仅适用于动作 `processaccess`
访问权限
- `calltrace` - 仅适用于动作 `processaccess`
调用栈Call Stack
- `pipename` - 仅适用于动作 `pipecreate`
管道名称
- `targetfilename` - 仅适用于动作 `filecreate`
目标文件名
- `imageloaded` - 仅适用于动作 `imageload`
已加载的映像名