Docs: 新增服务端规则指南

This commit is contained in:
Fplyth0ner
2022-09-08 15:42:44 +08:00
committed by GitHub
parent 451bca454c
commit 80d3964320
3 changed files with 440 additions and 278 deletions

View File

@@ -25,6 +25,10 @@ https://key08.com/index.php/2022/08/09/1505.html
请牢记,RmEye自身定位是轻量级威胁检出工具
### 最新新闻
2022/9/8:
增加服务端规则指南: \
[doc_server_rule_manual.md](./doc_server_rule_manual.md)
2022/9/5:
增加规则编写教程:
https://github.com/RoomaSec/RmEye/blob/main/doc_day0_rule.md

View File

@@ -89,7 +89,9 @@ name: 规则名字
![](Image/12.png)
**完整的 `服务端规则指南`**
[doc_server_rule_manual.md](./doc_server_rule_manual.md)
### 测试

156
doc_server_rule_manual.md Normal file
View File

@@ -0,0 +1,156 @@
# 服务端规则指南
编写服务端规则前,请您详细阅读本文,以便了解规则背后的故事,并帮助您更好的编写 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`
已加载的映像名