Skip to content

Commit fe5a22e

Browse files
committed
v2.3.4
1 parent 541bcc7 commit fe5a22e

File tree

4 files changed

+36
-31
lines changed

4 files changed

+36
-31
lines changed

MonitorEvent/sysmondrv/register.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ static NTSTATUS Process_NotifyRegister(
240240
if (g_reg_ips_monitorprocess && bProcFlt)
241241
{
242242
ExAcquireResourceExclusiveLite(&g_resourcelock, TRUE);
243-
int replaybuflen = sizeof(HADES_REPLY);
244-
int sendbuflen = sizeof(HADES_NOTIFICATION);
243+
const int replaybuflen = sizeof(HADES_REPLY);
244+
const int sendbuflen = sizeof(HADES_NOTIFICATION);
245245
PHADES_NOTIFICATION const notification = (char*)ExAllocatePoolWithTag(NonPagedPool, sendbuflen, 'IPSR');
246246
if (notification)
247247
{

README.md

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
单独引擎版本.
99

10-
### v2.0
10+
### v2.x
1111
v1.0引擎重构,采集器分离用户态和内核态lib,HadesSvc数据引擎消费lib生产数据,组织格式(json和protobuf)。Duilib界面完善,WWin7/Win11系统兼容性完善。
1212

13-
Hboat支持Windows插件上报数据解析,GoAgent统一管理和上报(部分数据未清洗),可作为插件下发。
13+
Hboat支持Windows插件上报数据解析,GoAgent统一管理和上报,可作为插件下发。
1414

1515
GoAgent负责GRPC和WIN下插件管理(跨平台):https://github.com/theSecHunter/Hades-Linux/tree/main
1616

@@ -133,43 +133,44 @@ GoServer已合并新项目Hboat(跨平台): https://github.com/theSecHunter/Hboa
133133
| -------- | ------------------------------- |-------- | -------- |-------- |
134134
| 进程拦截| 自定义进程 |完成| 基于回调过滤| |
135135
| 注册表拦截| 自定义注册表 |完成| 基于回调过滤 | |
136-
| 远程注入检测 | 远程线程注入 |完成| 基于回调过滤 | https://bbs.pediy.com/thread-193437.htm |
137-
| 非远程线程注入检测 | 映射内存或非CreteRemote方式执行 |开发中| 回调中VAD | https://github.com/huoji120/CobaltStrikeDetected/ |
136+
| 远程注入检测 | 远程线程注入 |完成(未启动)| 基于回调过滤 | https://bbs.pediy.com/thread-193437.htm |
137+
| 非远程线程注入检测 | 映射内存或非CreteRemote方式执行 |完成(未启动)| 基于回调VAD | https://github.com/huoji120/CobaltStrikeDetected/ |
138138

139139

140-
**基于回调行为拦截,服务端管理配置随着插件下发,HadesSvc.exe解析下发规则写入内核,支持规则热更新。**
140+
### HIPS
141141

142-
**白名单模式:启动规则后(不包含已存在进程),只允许白名单定义的规则操作。黑名单模式:启动规则后(不包含已存在进程),不允许黑名单定义的规则操作。**
142+
**服务端管理规则随着插件下发,HadesSvc.exe解析规则写入内核. 支持规则热更新,Hboat下发407/408热更新规则指令. 开发中预计v2.4之前全部完成。**
143+
144+
**白名单模式:启动规则后(不包含已存在进程),只允许白名单定义的规则操作。**
145+
146+
**黑名单模式:启动规则后(不包含已存在进程),不允许黑名单定义的规则操作。**
143147

144-
**开发中,预计v2.4 release版本完成**
145148
#### 进程黑/白名单模式(内核规则匹配)
146149
```
147150
{
148151
// 1白名单,2黑名单
149152
"processRuleMod": 2,
150-
// 一般配置黑名单,白名单如果配置不全可能会存在问题
151-
// 如果白名单,规则生效后只允许执行cmd.exe|powershell.exe等进程
152-
// 如果黑名单,规则生效后不允许执行cmd.exe|powershell.exe等进程
153+
// 白名单: 生效后只允许执行cmd.exe|powershell.exe等进程
154+
// 黑名单: 生效后不允许执行cmd.exe|powershell.exe等进程
153155
"processName": "cmd.exe|powershell.exe|vbs.exe|wscript.exe"
154156
}
155157
```
156158
**See Rule: config/processRuleConfig.json**
157159

158160
#### 注册表黑/白名单模式(应用规则匹配)
159-
**引擎工作方式:匹配processName和registerValuse二元组,成功不继续匹配当前规则为准**
161+
**引擎工作方式:匹配processName和registerValuse二元组,多组规则情况下,命中某条成功后不继续匹配,命中规则为准**
160162

161-
**举例1) 2) cmd.exe配置冲突,1) 允许cmd.exe访问Run, 2) 不允许cmd.exe规则访问 Run,配置冲突,冲突时顺序靠前为准(1为准)。**
163+
- 举例1) 2) cmd.exe配置冲突,1) 允许cmd.exe访问Run, 2) 不允许cmd.exe规则访问 Run,配置冲突,冲突时顺序靠前为准(1为准)。
162164

163-
**举列2) 3) cmd.exe既可以是白名单-又可以是黑名单,比如Run注册表不允许cmd.exe访问(黑名单),Settings允许cmd.exe访问(白名单),registerValuse键值不冲突即可。**
165+
- 举列2) 3) cmd.exe既可以是白名单-又可以是黑名单,比如Run注册表不允许cmd.exe访问(黑名单),Settings允许cmd.exe访问(白名单),registerValuse键值不冲突即可。
164166

165-
**白名单情况下:100000打开是删除-创建-设置-查询-重命名操作的前提,比如修改,必须配置成打开修改(100100),删除则是打开删除(110000)**
167+
- 注:打开是 "删除-创建-设置-查询-重命名操作" 前提,比如修改,必须配置成打开修改(1000100),删除则是打开删除(1010000),如果open为0意味着这个过程中有key_access or key_read标志都会失败。
166168

167169
```
168170
{
169171
170172
{ 1)
171173
// 仅允许cmd.exe|powershell.exe对regusterValuse打开和修改.
172-
// 1白名单,2黑名单
173174
"registerRuleMod": 1,
174175
"processName": "cmd.exe|powershell.exe",
175176
"registerValuse": "\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run|\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOne",
@@ -199,9 +200,7 @@ GoServer已合并新项目Hboat(跨平台): https://github.com/theSecHunter/Hboa
199200
```
200201
{
201202
{
202-
// 仅允许word.exe|wps.exe对规则的目录/文件/后缀规则进行读写执行操作
203-
// 如果文件规则包含在某目录下,以目录规则为准。
204-
// 1白名单,2黑名单
203+
// 仅允许word.exe|wps.exe对规则的目录/文件/后缀规则进行读写执行操作,如果文件规则包含在某目录下,以目录规则为准。
205204
"FileIORuleMod": 1,
206205
"processName": "word.exe|wps.exe",
207206
"Directory": "|",
@@ -211,8 +210,10 @@ GoServer已合并新项目Hboat(跨平台): https://github.com/theSecHunter/Hboa
211210
"permissions": 1110(ALL),
212211
}
213212
{
213+
214214
}
215215
{
216+
216217
}
217218
}
218219
```
@@ -247,23 +248,23 @@ C++ Grpc请参考官方文档:https://grpc.io/docs/languages/cpp/basics/
247248
|v2.0~v2.3| ETW和内核态回调监控兼容Win7/Win11 x32/x64版本,稳定性测试||完成 |
248249
|v2.0~v2.3| 采集Lib接口更改为订阅-发布者模式 ||完成|
249250
|v2.0~v2.3| 插件模式改造 ||完成|
250-
|v2.4| 数据采集粒度完善 ||完成|
251-
|v2.4| HIPS规则配置,进程(黑名单) - 注册表(特殊键值保护_进程白名单) - 进程目录访问保护(进程白名单) ||进行中|
251+
|v2.3.2| 数据采集粒度完善 ||完成|
252+
|v2.3.4| 进程(黑名单) - 注册表(特殊键值保护_进程白名单) ||完成|
253+
|v2.3.6| 进程目录访问保护(进程白名单)||进行中|
252254
|v2.5| ETW GUID LOG方式注册,非"NT KERNEL LOG",很多环境下容易冲突,注册被覆盖 ||待定|
253255

254-
#### v3.x
255256

256257
**从v3.0开始,流量和文件不局限于监控分析,有更多的玩法扩展。**
257258

259+
#### Minifilter v3.x
260+
258261
| 任务 | 优先级 |状态|
259262
| ------------------------------------------------------------ | ------ |------|
260-
| 流量隔离:基于WFP对进程/IP:PORT重定向和bypass. ||未开始|
261-
| 文件备份:基于Minfilter对进程文件rwx隔离,对脚本命令和IE下载文件备份.<br>命令不局限于curl/cmd/powershell/vbs/js等形式. ||未开始|
262-
| 指定进程授权非隔离分析 - 类沙箱做inlinehook来监控运行周期(待定) ||未开发 |
263+
| 文件备份:基于Minfilter对进程文件rwx隔离,对脚本命令和IE下载文件备份.<br>命令不局限于curl/cmd/powershell/vbs/js等形式. ||未开始|
263264
| Rootkit优化/完善||进行中 |
264-
| 勒索病毒行为检测 | minifilter监控,设置诱饵文件来判定 |待定|
265+
| 勒索病毒行为检测:minifilter监控,设置诱饵文件 + v2.3.6 进程访问控制 + 行为判定 | |未开始|
265266

266-
#### WFP v3.0
267+
#### WFP v3.x
267268

268269
| 网络层 | 描述 |
269270
| :------------ | :-------------- |
@@ -273,6 +274,10 @@ C++ Grpc请参考官方文档:https://grpc.io/docs/languages/cpp/basics/
273274
| 数据链路层 | OS >= Windows10 |
274275

275276
**v3.0引入WFP流量隔离**
277+
| 任务 | 优先级 |状态|
278+
| ------------------------------------------------------------ | ------ |------|
279+
| 流量隔离:基于WFP对进程/IP:PORT重定向和bypass. ||未开始|
280+
276281

277282
Json配置流量规则(未生效):
278283

RuleEngineSvc/RegisterRuleAssist.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ bool FindRegisterRuleHitEx(const int opearType, const int permissions, const int
215215
{// 修改Key
216216
if (_setvaluse)
217217
nRet = true;
218-
OutputDebugString((L"[HadesSvc] RegNtSetValueKey Object 2:" + to_wstring((ULONG64)object)).c_str());
218+
OutputDebugString((L"[HadesSvc] RegNtSetValueKey Object :" + to_wstring((ULONG64)object)).c_str());
219219
}
220220
break;
221221
case RegNtPreDeleteKey:

config/registerRuleConfig.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
{
33
"registerRuleMod": 2,
44
"processName": "cmd.exe|powershell.exe",
5-
"registerValuse": "\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run|\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOne",
5+
"registerValuse": "\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run|\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
66
"permissions": "0000000"
77
},
88

99
{
1010
"registerRuleMod": 1,
1111
"processName": "AddRegister.exe|cmd.exe",
12-
"registerValuse": "\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run|\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOne",
12+
"registerValuse": "\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run|\\REGISTRY\\MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
1313
"permissions": "1111111"
1414
},
1515

0 commit comments

Comments
 (0)