theSecHunter/Hades-Windows
GitHub: theSecHunter/Hades-Windows
一款 Windows 主机入侵检测与防御系统,通过内核态回调、ETW 和 MiniFilter 实现终端行为监控,并具备基于黑白名单的主动拦截与流量管控能力。
Stars: 307 | Forks: 105
v2.0
https://github.com/huoji120/CobaltStrikeDetected/ | ### HIPS **服务端管理规则随着插件下发,HadesSvc.exe解析规则写入内核. 支持规则热更新(Hboat下发). 开发中预计v2.4之前全部完成。** **白名单模式:启动规则后(不包含已存在进程),只允许白名单定义的规则操作。** **黑名单模式:启动规则后(不包含已存在进程),不允许黑名单定义的规则操作。** #### 进程黑白名单模式(内核规则匹配) { // 1白名单,2黑名单 "processRuleMod": 2, // 白名单: 生效后只允许执行cmd.exe|powershell.exe等进程 // 黑名单: 生效后不允许执行cmd.exe|powershell.exe等进程 "processName": "cmd.exe|powershell.exe|vbs.exe|wscript.exe" } **See Rule: config/processRuleConfig.json**  #### 注册表黑白名单模式(应用规则匹配) **引擎工作方式:匹配 processName 和 registerValuse 二元组。多组规则情况下,命中某条规则成功后不继续匹配,以命中规则为准。** - 举例1) 2) cmd.exe配置冲突,1) 允许cmd.exe访问Run, 2) 不允许cmd.exe规则访问 Run,配置冲突,冲突时顺序靠前为准(1为准)。 - 举例2) 3) cmd.exe既可以是白名单-又可以是黑名单,比如Run注册表不允许cmd.exe访问(黑名单),Settings允许cmd.exe访问(白名单),registerValuse键值不冲突即可。 - 注:打开是 "删除-创建-设置-查询-重命名操作" 前提,比如修改,必须配置成打开修改(1000100),删除则是打开删除(1010000),如果open为0意味着这个过程中有key_access or key_read标志都会失败。 { { 1) // 仅允许cmd.exe|powershell.exe对regusterValuse打开和修改. "registerRuleMod": 1, "processName": "cmd.exe|powershell.exe", "registerValuse": "\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run|\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOne", // 1000000打开(Create/Open),100000关闭(Close),10000删除(Delete),1000创建(CreteNew), 100设置(SetValue),10查询(QueryValue),1重命名(Rename) "permissions": 1000100(打开和修改) } { 2) // 不允许cmd.exe|vbs.exe|wscript.exe对regusterValuse进行全部操作, 也可以只配禁止打开,这样修改 删除 查询都不可用. "registerRuleMod": 2, "processName": "cmd.exe|vbs.exe|wscript.exe", "registerValuse": "\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run|\REGISTRY\MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOne", "permissions": 1111111(判定KEY_ALL_ACCESS) } { 3) // 仅允许svchost.exe|cmd.exe对regusterValuse修改重命名操作 "registerRuleMod": 1, "processName": "cmd.exe|svchost.exe", "registerValuse": "\Registry\Machine\Software\WOW6432Node\Policies\Microsoft\MUI\Settings", "permissions": 1000101(打开修改重命名操作) } } **See Rule: config/registerRuleConfig.json** #### 目录访问黑白名单模式(内核规则匹配) { { // 仅允许word.exe|wps.exe访问Directory "FileIORuleMod": 1, "processName": "word.exe|wps.exe", "Directory": "D:\\Document|C:\\System\\AppData", } { // 不允许word.exe|wps.exe访问Directory "FileIORuleMod": 2, "processName": "word.exe|wps.exe", "Directory": "D:\\Document1|C:\\System\\AppData1", } } **See Rule: config/DirectoryRuleConfig.json** **应用规则匹配:内核先会根据模式对进程过滤,过滤后上抛至应用层规则逻辑处理,根据引擎结果内核做出拦截或放行。处理方式会牺牲性能,不过对于系统来说可以忽略不计。** ### GRPC/Protobuf v2.0 **考虑 GRPC 编译复杂性和移植成本,v2.0 VS2019 工程默认不编译 HadesSvc 内的 grpc.cpp/grpc.h,GoAgent 负责 GRPC 统一管理;HadesSvc 当前保留 Protobuf 协议和 C++ lib 链接。** Windows对于很多第三方生态逐步容纳,Grpc github cmake编译会出现很多问题,如果使用推荐方式: vcpkg install grpc 配置vs2019 工具 --> 选项 --> NuGet管理即可,详细可以参考网上教程,连接程序使用MD编译。 C++ Grpc请参考官方文档:https://grpc.io/docs/languages/cpp/basics/ **GRPC配置文件: config/client_config** **当前 VS2019 工程默认只编译 transfer.pb.cc,grpc.cpp/grpc.h 为历史保留代码。** #### Minifilter v3.0 | 任务 | 优先级 |状态| | ------------------------------------------------------------ | ------ |------| | 文件备份: 进程文件落地隔离,脚本命令和IE下载文件备份.
不局限于curl/cmd/powershell/vbs/js等形式. | 中 |待定| | 勒索病毒行为检测:minifilter监控, 诱饵 + 访问控制 + 行为判定 | 高 |待定| #### WFP v2.0 | 网络层 | 描述 | | :------------ | :-------------- | | Established层 | ProcessInfo | | 传输层 | TCP - UDP | | 网络层 | IP | | 数据链路层 | OS >= Windows10 | **v2.0基于WFP流量隔离** | 任务 | 优先级 |状态| | ------------------------------------------------------------ | ------ |------| | 进程/IP:PORT Deny和Redirect | 高 |完成| | DNS访问控制 | 高 |完成| Yaml配置流量规则, 支持基于TCP/UDP协议拦截和重定向, 重定向指定或全局进程, 详细请看示例, DNS优先级大于UDP, Deny优先级大于Redirect. tc: - name: "eguard_egress_test_project" address: "192.168.1.1/24" protocol: TCP # ALL/TCP/UDP ports: # empty means all ports. 32(single port like 80), 16(range like 8079-8080) - 80 - 8079-8080 action: DENY # DENY/LOG level: INFO - name: "test_tcp_redirect" #address: "" protocol: TCP # TCP #ports: # empty means all ports. # - 80 # - 8079-8080 processname: "1.exe|2.exe" # empty means all process. redirectip: "192.168.188.188" # redirect to ipaddress redirectport: "88" # redirect to port action: REDIRECT level: INFO dns: - name: "eguard_egress_test_dns" action: DENY domain: "grpc.hades.store" - name: "eguard_egress_test_dns_1" action: DENY domain: "*.baidu.com" ### 规划: #### v2.x |版本 | 任务 | 优先级 | 状态 | |--------| --------------------------------------------------------- | -------------- |-------------- | |v2.0~v2.3| Duilib终端界面| 中|完成 | |v2.0~v2.3| ETW和内核态回调监控兼容Win7/Win11 x32/x64版本,稳定性测试|高|完成 | |v2.0~v2.3| 采集Lib接口更改为订阅-发布者模式 | 中 |完成| |v2.0~v2.3| 插件模式改造 | 高 |完成| |v2.3.2| 数据采集粒度完善 | 高 |完成| |v2.3.4| 进程保护 | 高 |完成| |v2.3.4| 注册表键值保护 | 高 |完成| |v2.3.5| 目录访问保护|高 |完成| |v2.3.6.1| TCP/UDP流量拦截/重定向|高 |完成| |- | | | | |v2.3.7| 注入拦截|高 |进行中| |v2.3.7| 内核回调枚举|高 |进行中| |v2.3.7| 内核钩子检测|高 |进行中| |- | | | | |v2.x| ETW GUID LOG方式注册,非"NT KERNEL LOG",复杂环境注册冲突被覆盖 | 中 |待定| **致力于提升稳定性和健壮性,以插件形式提供 lib/dll,便于集成至 Windows 终端三方产品,提升软件的安全能力和质量。** ### 历史版本: #### v1.0 实现:主要实现引擎探针和上层数据-上报流程打通。 #### v2.0 重构:代码质量优化,包括win7 - win11等平台的兼容性,局部Edr。 ### 参考: - 看雪论坛 & OpenEdr & Netfilter SDK & Sandboxie - 项目将零散代码组织在一起,业余投入精力有限。 部分cpp早期学习编写,也有引用代码cpp中有标注。 ## Contact Input `Hades` to get the QR code
## 404Starlink
Hades has joined [404Starlink](https://github.com/knownsec/404StarLink)
## Stargazers over time
[](https://starchart.cc/theSecHunter/Hades-Windows)标签:AMSI绕过, Duilib, EDR, ETW, Go, Golang, gRPC, HIDS, HIPS, HTTP工具, JSON, minifilter, Protobuf, Python工具, Ruby工具, Rust, UML, Windows 11, Windows 7, x64, x86, 主机入侵检测, 主机响应, 事件跟踪, 内核态, 内核驱动, 可视化界面, 命令控制, 威胁检测, 子域名变形, 安全产品, 安全编程, 微过滤驱动, 数据采集, 日志审计, 用户态, 端点安全, 系统回调, 系统防护, 网络协议, 网络安全, 网络安全审计, 网络流量审计, 脆弱性评估, 补丁管理, 隐私保护