diff --git a/README.md b/README.md index 67de6bf..68558aa 100644 --- a/README.md +++ b/README.md @@ -1,174 +1,178 @@ -![image](Image/logo.png) - -# RmEye -RmEye是一个window上的基于att&ck现代EDR设计思想的威胁响应工具. -不同于EDR,它轻量、高效.自身定位是轻量级威胁检出工具. -而不是繁重的、需要付费的、效果不明的所谓的EDR -RmEye基于att&ck模型,如果您对att&ck模型不熟悉,请先阅读相关文章后再使用: -https://key08.com/index.php/2022/08/09/1505.html - -### 功能特点 -1. 基于att&ck设计.所有设计只是为了符合att&ck的攻击路径、攻击链(虽然规则里面没有标注T因为懒惰) -2. 轻量、高效.为了不适用繁重超占内存的ELK设计思路,而且要保证检出的同时保证不会太重,agent端使用了大量规则过滤,这样才使得后端使用sqlite作为数据库成为可能.单机日志平均一天4M.此外轻量级别的客户端一天只占40-400KB的内存. -3. 行为检出,让免杀成为过去式.基于att&ck设计,只看行为不看文件.文件类免杀已经成为过去式. -4. 高扩展性.可随需求定制功能 - -### RmEye 之所以不是 Edr/Xdr/Mdr/Ndr/XXXXXdr -1. RmEye没有流量监控 -2. RmEye仅覆盖20%左右的datasource -3. RmEye没有联动WAF、IPS/IDS -4. RmEye没有实时拦截功能 -5. 对RPC、COM、ALPC基本无能为力 -6. 不支持更高级的扩展检测,如检测脚本、下发规则,主机链 -7. 受限于Sysmon,很多att&ck的T没有覆盖,也无法覆盖. -8. 没有响应能力,只能被动记录. -请牢记,RmEye自身定位是轻量级威胁检出工具 - -### 最新新闻 -2022/9/5: -增加规则编写教程: -https://github.com/RoomaSec/RmEye/blob/main/doc_day0_rule.md -增加`mimikatz`检测 - -2022/8/31: -增加进程白名单系统,现在能给进程加白名单了.在打开进程链后,点击某个进程加入白名单即可 - -2022/8/29: -增加uac提权检测插件`uac_bypass_detect`,但是受限于sysmon,没有办法获取RPC信息,因此只能检测一部分的UAC提权行为.并且有误报,请酌情考虑 - -### 检出截图 -威胁列表: -![image](Image/1.png) -进程链行为回溯 -![image](Image/8.png) -powershell恶意执行: -![image](Image/2.png) -apt样本: -![image](Image/3.png) -勒索软件: -![image](Image/4.png) -网站入侵提权到执行cobalt strike: -![image](Image/5.png) -offic宏钓鱼: -![image](Image/6.png) -uac提权检测: -![image](Image/7.png) -mimikatz检测: -![image](Image/14.png) - -### 待做列表 -1. 更好的前端(目前是VUE-CDN模式,不太好,想换成VUE-CLI) 已经完成 -2. 日志回放【目前重点】 -3. 威胁狩猎【目前重点】 -4. att&ck热力图 -5. 在线规则编辑器 -6. 内网横向检测 -7. iis、apache、nginx日志搜集分析(aka: XDR的实现) -8. 集成反病毒引擎 -9. 完善目前的插件系统【目前重点】 -10. 云日志检测能力【目前重点】 -### 安装 -下载release( https://github.com/RoomaSec/RmEye/releases ),里面有客户端,服务端自行clone本项目 -服务端是python3编写,安装完依赖库后输入 -``` -python webserver.py -``` -即可部署 -服务端部署后,修改config.py里面的 -``` -# 检出阈值,越高越难检出但是也会越准确 -MAX_THREAT_SCORE = 170 - -# 授权访问主站的IP列表.如果不在后台里面则不能访问后台 -ALLOW_ACCESS_IP = ['127.0.0.1'] -``` -MAX_THREAT_SCORE代表报警分数,意思为进程链总分超过此分数则报警,越高越准但是也会漏报 -ALLOW_ACCESS_IP代表允许的IP,只有在此名单里面的IP才能访问后台.请增加自己的IP地址 - -客户端则编辑config.ini -``` -[communication] -server = http://192.168.111.189:5000 -``` -其中server改成你的服务端的地址 -然后分发三个文件给客户端并且放在同一目录: -config.ini、install.cmd、RmEye.exe、sysmon.xml、Sysmon64.exe -之后管理员身份运行install.cmd安装sysmon与RmEye -访问 http://服务器ip:5000(flask默认端口) 查看后台 -当然一开始啥数据也没有,为了确认是否安装成功可以将webserver.py中的 -``` - flask_log = logging.getLogger('werkzeug') - flask_log.setLevel(logging.ERROR) -``` -注释掉,检查有没有客户端的请求即可 -手动安装(cmd脚本其实执行了这些命令): -``` -//安装sysmon: -sysmon -i -//sysmon加载配置项 -sysmon -c sysmon.xml -//安装RmEye -RmEye /install -``` - -### 卸载 -卸载RmEye: -在RmEye目录下执行 -``` -SysEye /uninstall -``` -如果您需要卸载sysmon -执行 -``` -sysmon /uninstall -``` -即可干净卫生的卸载掉RmEye - -### 规则相关的问题 -1. 规则目前仅120条,很多攻击面没有覆盖,其他规则请访问《社区》 -2. 规则目前只支持rule_engine与yara的规则,其中yara的规则支持是以插件的形式支持 -3. 目前的规则字段完全依赖sysmon的字段,sysmon的字段请检查根目录下的provider.json(但是请记住纯小写,自行做大小写转换) - -规则目前在`Server/rules`目录规则目前有两种规则: -rule_engine: -如检测由CMD启动的ipconfig: -``` -{ - 'rules': [ - 'originalfilename =~ ".*cmd.exe" and commandline =~ ".*ipconfig.*"', - ], - 'score': 80, - 'name': 'cmd启动ipconfig' -}, -``` -分数代表的是本次规则给进程链所增加的分数,报警是根据前面的MAX_THREAT_SCORE设置的 - -规则编写教程请移步: -https://github.com/RoomaSec/RmEye/blob/main/doc_day0_rule.md - -规则引擎的语法请移步: -https://github.com/zeroSteiner/rule-engine - -yara,需要安装插件,具体请看交流部分 - -### 第三方引用库 -1. sysmon -https://docs.microsoft.com/zh-cn/sysinternals/downloads/sysmon -2. rule_engine -https://github.com/zeroSteiner/rule-engine -3. yara -https://github.com/VirusTotal/yara -4. sysmon-config(客户端使用的默认的规则,但是我做了一些修改) -https://github.com/SwiftOnSecurity/sysmon-config -请遵守相关库的开源协议.相关法律风险本项目不负任何责任 - -### 交流 -开源的目的不是为了免费填鸭式教学,或者被免费拿去发公众号引流、去拿去集成产品方案去赚钱,而是要一起完善这个工具,从而实现共赢. -扫一扫加入这个工具的交流群,这样就能获取实时动态.参与开发、参与交流规则编写等等.欢迎加入 -最近进群的人有点多,所以不活跃的哥们暂时清理掉,但是微信太不好使了.要是t错了或者还想在群待着不发言的重新加群吧 -![image](Image/group2.png) - -### 特别感谢 -@Pwn0x01 yara插件 -@zeroSteiner 规则引擎插件 -@SwiftOnSecurity 客户端规则 +![image](Image/logo.png) + +# RmEye +RmEye是一个window上的基于att&ck现代EDR设计思想的威胁响应工具. +不同于EDR,它轻量、高效.自身定位是轻量级威胁检出工具. +而不是繁重的、需要付费的、效果不明的所谓的EDR +RmEye基于att&ck模型,如果您对att&ck模型不熟悉,请先阅读相关文章后再使用: +https://key08.com/index.php/2022/08/09/1505.html + +### 功能特点 +1. 基于att&ck设计.所有设计只是为了符合att&ck的攻击路径、攻击链(虽然规则里面没有标注T因为懒惰) +2. 轻量、高效.为了不适用繁重超占内存的ELK设计思路,而且要保证检出的同时保证不会太重,agent端使用了大量规则过滤,这样才使得后端使用sqlite作为数据库成为可能.单机日志平均一天4M.此外轻量级别的客户端一天只占40-400KB的内存. +3. 行为检出,让免杀成为过去式.基于att&ck设计,只看行为不看文件.文件类免杀已经成为过去式. +4. 高扩展性.可随需求定制功能 + +### RmEye 之所以不是 Edr/Xdr/Mdr/Ndr/XXXXXdr +1. RmEye没有流量监控 +2. RmEye仅覆盖20%左右的datasource +3. RmEye没有联动WAF、IPS/IDS +4. RmEye没有实时拦截功能 +5. 对RPC、COM、ALPC基本无能为力 +6. 不支持更高级的扩展检测,如检测脚本、下发规则,主机链 +7. 受限于Sysmon,很多att&ck的T没有覆盖,也无法覆盖. +8. 没有响应能力,只能被动记录. +请牢记,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 +增加`mimikatz`检测 + +2022/8/31: +增加进程白名单系统,现在能给进程加白名单了.在打开进程链后,点击某个进程加入白名单即可 + +2022/8/29: +增加uac提权检测插件`uac_bypass_detect`,但是受限于sysmon,没有办法获取RPC信息,因此只能检测一部分的UAC提权行为.并且有误报,请酌情考虑 + +### 检出截图 +威胁列表: +![image](Image/1.png) +进程链行为回溯 +![image](Image/8.png) +powershell恶意执行: +![image](Image/2.png) +apt样本: +![image](Image/3.png) +勒索软件: +![image](Image/4.png) +网站入侵提权到执行cobalt strike: +![image](Image/5.png) +offic宏钓鱼: +![image](Image/6.png) +uac提权检测: +![image](Image/7.png) +mimikatz检测: +![image](Image/14.png) + +### 待做列表 +1. 更好的前端(目前是VUE-CDN模式,不太好,想换成VUE-CLI) 已经完成 +2. 日志回放【目前重点】 +3. 威胁狩猎【目前重点】 +4. att&ck热力图 +5. 在线规则编辑器 +6. 内网横向检测 +7. iis、apache、nginx日志搜集分析(aka: XDR的实现) +8. 集成反病毒引擎 +9. 完善目前的插件系统【目前重点】 +10. 云日志检测能力【目前重点】 +### 安装 +下载release( https://github.com/RoomaSec/RmEye/releases ),里面有客户端,服务端自行clone本项目 +服务端是python3编写,安装完依赖库后输入 +``` +python webserver.py +``` +即可部署 +服务端部署后,修改config.py里面的 +``` +# 检出阈值,越高越难检出但是也会越准确 +MAX_THREAT_SCORE = 170 + +# 授权访问主站的IP列表.如果不在后台里面则不能访问后台 +ALLOW_ACCESS_IP = ['127.0.0.1'] +``` +MAX_THREAT_SCORE代表报警分数,意思为进程链总分超过此分数则报警,越高越准但是也会漏报 +ALLOW_ACCESS_IP代表允许的IP,只有在此名单里面的IP才能访问后台.请增加自己的IP地址 + +客户端则编辑config.ini +``` +[communication] +server = http://192.168.111.189:5000 +``` +其中server改成你的服务端的地址 +然后分发三个文件给客户端并且放在同一目录: +config.ini、install.cmd、RmEye.exe、sysmon.xml、Sysmon64.exe +之后管理员身份运行install.cmd安装sysmon与RmEye +访问 http://服务器ip:5000(flask默认端口) 查看后台 +当然一开始啥数据也没有,为了确认是否安装成功可以将webserver.py中的 +``` + flask_log = logging.getLogger('werkzeug') + flask_log.setLevel(logging.ERROR) +``` +注释掉,检查有没有客户端的请求即可 +手动安装(cmd脚本其实执行了这些命令): +``` +//安装sysmon: +sysmon -i +//sysmon加载配置项 +sysmon -c sysmon.xml +//安装RmEye +RmEye /install +``` + +### 卸载 +卸载RmEye: +在RmEye目录下执行 +``` +SysEye /uninstall +``` +如果您需要卸载sysmon +执行 +``` +sysmon /uninstall +``` +即可干净卫生的卸载掉RmEye + +### 规则相关的问题 +1. 规则目前仅120条,很多攻击面没有覆盖,其他规则请访问《社区》 +2. 规则目前只支持rule_engine与yara的规则,其中yara的规则支持是以插件的形式支持 +3. 目前的规则字段完全依赖sysmon的字段,sysmon的字段请检查根目录下的provider.json(但是请记住纯小写,自行做大小写转换) + +规则目前在`Server/rules`目录规则目前有两种规则: +rule_engine: +如检测由CMD启动的ipconfig: +``` +{ + 'rules': [ + 'originalfilename =~ ".*cmd.exe" and commandline =~ ".*ipconfig.*"', + ], + 'score': 80, + 'name': 'cmd启动ipconfig' +}, +``` +分数代表的是本次规则给进程链所增加的分数,报警是根据前面的MAX_THREAT_SCORE设置的 + +规则编写教程请移步: +https://github.com/RoomaSec/RmEye/blob/main/doc_day0_rule.md + +规则引擎的语法请移步: +https://github.com/zeroSteiner/rule-engine + +yara,需要安装插件,具体请看交流部分 + +### 第三方引用库 +1. sysmon +https://docs.microsoft.com/zh-cn/sysinternals/downloads/sysmon +2. rule_engine +https://github.com/zeroSteiner/rule-engine +3. yara +https://github.com/VirusTotal/yara +4. sysmon-config(客户端使用的默认的规则,但是我做了一些修改) +https://github.com/SwiftOnSecurity/sysmon-config +请遵守相关库的开源协议.相关法律风险本项目不负任何责任 + +### 交流 +开源的目的不是为了免费填鸭式教学,或者被免费拿去发公众号引流、去拿去集成产品方案去赚钱,而是要一起完善这个工具,从而实现共赢. +扫一扫加入这个工具的交流群,这样就能获取实时动态.参与开发、参与交流规则编写等等.欢迎加入 +最近进群的人有点多,所以不活跃的哥们暂时清理掉,但是微信太不好使了.要是t错了或者还想在群待着不发言的重新加群吧 +![image](Image/group2.png) + +### 特别感谢 +@Pwn0x01 yara插件 +@zeroSteiner 规则引擎插件 +@SwiftOnSecurity 客户端规则 diff --git a/doc_day0_rule.md b/doc_day0_rule.md index f531cf4..f55c654 100644 --- a/doc_day0_rule.md +++ b/doc_day0_rule.md @@ -1,104 +1,106 @@ -### 规则编写教程 - -首先明确一点,rmeye有绝大部分威胁的检出能力,但是受限于规则,这些能力相当于只记录但是没生效.因此编写规则是一件重要的事情.在一切的开始,请您阅读ATT&CK的思想: - -https://key08.com/index.php/2022/08/09/1505.html - -本文以检测`mimikatz的关键dll加载`为例 - -`mimikatz`会加载: `C:\\Windows\\System32\\samlib.dll` 本文以他为例 - -### sysmon客户端规则 - -在编写服务端规则之前,请确保`sysmon`有相关配置.因为`rmeye`依赖于`sysmon`,得有客户端规则,才有服务端规则: - -打开客户端安装目录下的`sysmon.xml`: - -![9](Image/9.png) - -我们需要检测`dll`加载,所以请把目光看到`ImageLoad` - -其他的`sysmon`字段请自行谷歌或者百度了解.本项目有个`provider.json`那个是`sysmon`的所有字段.可以参考,打开`provider.json` ,找到`ImageLoad` - -![10](Image/10.png) - -可以看到`sysmon`记录了非常多有用的字段,对于我们来说,我们只需要`ImageLoaded` - -在`sysmon.xml`找到`Imageload`这个block, - -```c - - - - - -``` - -我们给他增加一个,接受加载`C:\\Windows\\System32\\samlib.dll`的日志: - -```c - - - C:\Windows\System32\samlib.dll - - -``` - - - -保存,更新`sysmon`的配置文件,在`rmeye`的安装目录或者在`sysmon`的安装目录执行: - -``` -sysmon -c sysmon.xml -``` - -![11](Image/11.png) - -看到这个,说明你成功了,其他的说明规则有错误,检查一下你写的规则. - - - -### 服务端规则编写 - -客户端有了搜集日志能力后,是时候编写服务端的了: - -打开服务端目录下的`server/rules/action.py` - -在末尾添加: - -``` - { - 'rules': [ - 'action == "imageload" and imageloaded == "c:\\windows\\system32\\samlib.dll"', - ], - 'score': 50, - 'name': 'samlib的dll被加载' - } -``` - -其中 - -``` -rules: 规则的列表,可以是多个规则,是and关系 -score: 是分数,跟config.py里面的报警分数有关系 -name: 规则名字 -规则全部小写,==代表正常匹配,如果是=~代表使用python正则 -``` - -保存,重启服务端,如果不出意外您应该看得到最新的刚刚增加的规则: - -![](Image/12.png) - - - -### 测试 - -找个mimikatz运行一下看看: - -![](Image/13.png) - -(为了测试,将分数设置高一点准没错) - -至此,您就具备的检测mimikatz的一些行为的能力,当然这行为是不全的而且容易产生很多误报的,很多时候为了减少误报或者实现更精准的检测,您需要高级检出能力,这将在下一章插件检测中介绍. -下一章: -https://github.com/RoomaSec/RmEye/blob/main/doc_day1_plugin.md +### 规则编写教程 + +首先明确一点,rmeye有绝大部分威胁的检出能力,但是受限于规则,这些能力相当于只记录但是没生效.因此编写规则是一件重要的事情.在一切的开始,请您阅读ATT&CK的思想: + +https://key08.com/index.php/2022/08/09/1505.html + +本文以检测`mimikatz的关键dll加载`为例 + +`mimikatz`会加载: `C:\\Windows\\System32\\samlib.dll` 本文以他为例 + +### sysmon客户端规则 + +在编写服务端规则之前,请确保`sysmon`有相关配置.因为`rmeye`依赖于`sysmon`,得有客户端规则,才有服务端规则: + +打开客户端安装目录下的`sysmon.xml`: + +![9](Image/9.png) + +我们需要检测`dll`加载,所以请把目光看到`ImageLoad` + +其他的`sysmon`字段请自行谷歌或者百度了解.本项目有个`provider.json`那个是`sysmon`的所有字段.可以参考,打开`provider.json` ,找到`ImageLoad` + +![10](Image/10.png) + +可以看到`sysmon`记录了非常多有用的字段,对于我们来说,我们只需要`ImageLoaded` + +在`sysmon.xml`找到`Imageload`这个block, + +```c + + + + + +``` + +我们给他增加一个,接受加载`C:\\Windows\\System32\\samlib.dll`的日志: + +```c + + + C:\Windows\System32\samlib.dll + + +``` + + + +保存,更新`sysmon`的配置文件,在`rmeye`的安装目录或者在`sysmon`的安装目录执行: + +``` +sysmon -c sysmon.xml +``` + +![11](Image/11.png) + +看到这个,说明你成功了,其他的说明规则有错误,检查一下你写的规则. + + + +### 服务端规则编写 + +客户端有了搜集日志能力后,是时候编写服务端的了: + +打开服务端目录下的`server/rules/action.py` + +在末尾添加: + +``` + { + 'rules': [ + 'action == "imageload" and imageloaded == "c:\\windows\\system32\\samlib.dll"', + ], + 'score': 50, + 'name': 'samlib的dll被加载' + } +``` + +其中 + +``` +rules: 规则的列表,可以是多个规则,是and关系 +score: 是分数,跟config.py里面的报警分数有关系 +name: 规则名字 +规则全部小写,==代表正常匹配,如果是=~代表使用python正则 +``` + +保存,重启服务端,如果不出意外您应该看得到最新的刚刚增加的规则: + +![](Image/12.png) + +**完整的 `服务端规则指南`** + +[doc_server_rule_manual.md](./doc_server_rule_manual.md) + +### 测试 + +找个mimikatz运行一下看看: + +![](Image/13.png) + +(为了测试,将分数设置高一点准没错) + +至此,您就具备的检测mimikatz的一些行为的能力,当然这行为是不全的而且容易产生很多误报的,很多时候为了减少误报或者实现更精准的检测,您需要高级检出能力,这将在下一章插件检测中介绍. +下一章: +https://github.com/RoomaSec/RmEye/blob/main/doc_day1_plugin.md diff --git a/doc_server_rule_manual.md b/doc_server_rule_manual.md new file mode 100644 index 0000000..c7dcd46 --- /dev/null +++ b/doc_server_rule_manual.md @@ -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` + + 已加载的映像名 \ No newline at end of file