From d3907bb4273d4daeaaa00c59a08a327f46ae1749 Mon Sep 17 00:00:00 2001 From: huoji Date: Mon, 29 Aug 2022 18:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0uac=E6=8F=90=E6=9D=83?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Image/7.png | Bin 0 -> 72996 bytes README.md | 12 ++++- Server/plugins/helloworld/helloworld.py | 4 +- .../uac_bypass_detect/prcoess_chain_detect.py | 49 ++++++++++++++++++ Server/process.py | 4 +- Server/rules/py/process.py | 15 ++++++ 6 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 Image/7.png create mode 100644 Server/plugins/uac_bypass_detect/prcoess_chain_detect.py diff --git a/Image/7.png b/Image/7.png new file mode 100644 index 0000000000000000000000000000000000000000..466337a8408d5f266211e56fec6db9786b2ba57c GIT binary patch literal 72996 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%0AP$o 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 RvrZl^%#5!AB}NY6{{n%>sd)eZ literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 3c0eec0..38cdcc8 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ 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因为懒惰) @@ -21,6 +23,10 @@ RmEye是一个window上的基于att&ck现代EDR设计思想的威胁响应工具 7. 受限于Sysmon,很多att&ck的T没有覆盖,也无法覆盖. 请牢记,RmEye自身定位是轻量级威胁检出工具 +### 最新新闻 +2022/8/29: +增加uac提权检测插件`uac_bypass_detect`,但是受限于sysmon,没有办法获取RPC信息,因此只能检测一部分的UAC提权行为.并且有误报,请酌情考虑 + ### 检出截图 威胁列表: ![image](Image/1.png) @@ -34,6 +40,8 @@ apt样本: ![image](Image/5.png) offic宏钓鱼: ![image](Image/6.png) +uac提权检测: +![image](Image/7.png) ### 待做列表 1. 更好的前端(目前是VUE-CDN模式,不太好,想换成VUE-CLI) 已经完成 @@ -47,7 +55,7 @@ offic宏钓鱼: 9. 完善目前的插件系统【目前重点】 10. 云日志检测能力【目前重点】 ### 安装 -下载release( https://github.com/RoomaSec/RmEye/releases/tag/pre-release ),里面有客户端,服务端自行clone本项目 +下载release( https://github.com/RoomaSec/RmEye/releases ),里面有客户端,服务端自行clone本项目 服务端是python3编写,安装完依赖库后输入 ``` python webserver.py @@ -108,7 +116,7 @@ sysmon /uninstall 2. 规则目前只支持rule_engine与yara的规则,其中yara的规则支持是以插件的形式支持 3. 目前的规则字段完全依赖sysmon的字段,sysmon的字段请检查根目录下的provider.json(但是请记住纯小写,自行做大小写转换) -规则目前有两种规则: +规则目前在`Server/rules`目录规则目前有两种规则: rule_engine: 如检测由CMD启动的ipconfig: ``` diff --git a/Server/plugins/helloworld/helloworld.py b/Server/plugins/helloworld/helloworld.py index 4796b98..8a4d267 100644 --- a/Server/plugins/helloworld/helloworld.py +++ b/Server/plugins/helloworld/helloworld.py @@ -1,7 +1,5 @@ import global_vars -import yara -import glob -from pathlib import Path +#import yara rm_plugs_config = { "enable": False, diff --git a/Server/plugins/uac_bypass_detect/prcoess_chain_detect.py b/Server/plugins/uac_bypass_detect/prcoess_chain_detect.py new file mode 100644 index 0000000..0133c7e --- /dev/null +++ b/Server/plugins/uac_bypass_detect/prcoess_chain_detect.py @@ -0,0 +1,49 @@ +import global_vars +import process +#import yara + +rm_plugs_config = { + "enable": True, + "author": "huoji", + "description": "基于进程链的uac提权检测", + "version": "0.0.1" +} + + +def intergritylevel_to_int(str_name): + if str_name == 'high': + return 3 + elif str_name == 'medium': + return 2 + return 1 + + +def rule_new_process_create(current_process: process.Process, host, raw_log_data, json_log_data): + if 'integritylevel' in json_log_data['data']: + integritylevel = intergritylevel_to_int( + json_log_data['data']['integritylevel']) + current_process.plugin_var['uac_flag'] = integritylevel + + if 'uac_flag' not in current_process.chain.root_process.plugin_var: + current_process.chain.root_process.plugin_var['uac_flag'] = integritylevel + if integritylevel > current_process.chain.root_process.plugin_var['uac_flag']: + print('[uac bypass detect] detect uac bypass in process chain {}'.format( + current_process.path)) + current_process.chain.root_process.plugin_var['uac_flag'] = integritylevel + current_process.set_score(300, "[UAC提权]进程权限等级变动") + return global_vars.THREAT_TYPE_PROCESS + # print('process chain: {} path: {} level: {} log level: {}'.format( + # current_process.chain_hash, current_process.path, integritylevel, current_process.chain.root_process.plugin_var['uac_flag'])) + return global_vars.THREAT_TYPE_NONE + + +def rule_new_process_action(current_process, host, raw_log_data, json_log_data): + return global_vars.THREAT_TYPE_NONE + + +def rule_init(): + print('[helloworld plugin] rule init') + + +def plugin_init(): + print('[helloworld plugin] plugin init') diff --git a/Server/process.py b/Server/process.py index ae5c489..614ba7a 100644 --- a/Server/process.py +++ b/Server/process.py @@ -1,8 +1,6 @@ import json -from sqlalchemy import false import tools -import time skip_process_path = ['c:\\program files\\rivet networks\\smartbyte\\raps.exe', 'c:\\program files (x86)\\sogouinput\\11.5.0.5352\\pinyinup.exe', @@ -102,6 +100,7 @@ class Process: self.time = time self.rmppid = "" self.root_rmpid = "" + self.plugin_var = {} self.md5 = md5 self.user = user self.chain: ProcessChain = None @@ -150,6 +149,7 @@ class ProcessChain: self.rpc_process_chain = "" self.time = root_process.time self.host = root_process.host + self.plugin_var = {} self.add_root_process(root_process) def get_operationlist(self): diff --git a/Server/rules/py/process.py b/Server/rules/py/process.py index e7b8f96..f8b937b 100644 --- a/Server/rules/py/process.py +++ b/Server/rules/py/process.py @@ -306,6 +306,21 @@ rule = [ 'score': 30, 'name': '从服务创建的进程' }, + { + 'rules': [ + 'parentimage =~ ".*svchost.exe"', + 'originalfilename =~ ".*werfault.exe"' + ], + 'score': 60, + 'name': 'svchost.exe启动了werfault' + }, + { + 'rules': [ + 'parentimage =~ ".*werfault.exe"', + ], + 'score': 30, + 'name': '从werfault创建的进程' + }, { 'rules': [ 'originalfilename =~ ".*wscript.exe"',