# Hades-Windows **Repository Path**: lliuyang/Hades-Windows ## Basic Information - **Project Name**: Hades-Windows - **Description**: Windows HIDS/EDR - **Primary Language**: C - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-21 - **Last Updated**: 2022-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![image](https://github.com/theSecHunter/Hades-Windows/blob/main/Image/HadesWin_v2.0.png) ![image](https://github.com/theSecHunter/Hades-Windows/blob/main/Image/HadesWin_v2.0_Response.jpg) **适用Win7/Win10 x32/x64用户态和内核态数据采集,XP未做兼容测试.** - v1.0单独引擎版本,存在许多问题,Rootkit接口Win10 1909进行测试。 - v2.0开发中,对v1.0的引擎重构,采集器构建用户态和内核态lib,Svc业务剥离灵活,如Server使用epoll/asio,少量代码就可以同将采集数据推送至不同的Server。 - v2.0修正v1.0存在的诸多问题,添加Duilib界面和完善Win7/Win8/WIn10系统兼容性。 - v2.0 Hades_Win兼容Linux数据上报,添加Go_Server完整数据格式解析处理,采集数据目前通过Grpc上报至Go_server进行解析即可,发布者数据还有很多未清洗。支持Server主动下发采集任务,Rootkit数据采集平台有待完善。支持Server管理Client监控/开启,Go_Server还未引入主分支详细见: https://github.com/theSecHunter/Hades-Linux #### 方案: ##### Kernel   x64内核探针粗糙分为两类技术方案: - 第一种基于Intel-x/d虚拟化技术,绕过PG保护做花式Hook,功能强大-系统无痕。 - 第二种基于微型过滤框架和注册回调,兼容性好/快速开发/接口完善。   项目采用过滤驱动+注册回调,这种方案中规中矩。有想过将以前写的VT Hook移植进来,但是不可控因素较多(不完善),有兴趣的可以跳转:https://github.com/TimelifeCzy/kHypervisor_MsrEpt_Hook ##### User   System数据采集和ETW事件采集。 #### 文档 | 文档 | 文件名 | 版本| | ---------------- | ---------------------------------- |----| | 内核文档 | win_kernel_event.md |v1.0| | 应用层文档 | win_user_event.md |v1.0| | WFP文档 | win_wfp_event.md |v1.0| | Grpc 传输结构(c) | windows struct_c.md(see sysinfo.h) |v1.0| #### 框架: ![image](https://github.com/theSecHunter/Hades-Windows/blob/main/Image/image-windows.png)

v2.0

##### 内核回调上抛事件 v2.0 | 事件 | 描述 | 进度 | | :----- | :---- | :---- | | 进程 | 进程创建 - 销毁 - 进程数据 | 完成 | | 线程 | 线程创建 - 销毁 - 线程数据 | 完成 | | 注册表 | 删除 - 修改 - 枚举 - 重命名等(缺少具体的包解析) | 数据未清洗 | | 模块 | DLL - 驱动 |完成 | | 会话 | 用户登录/退出/Session切换 |完成 | | WMI | 待定(应用层etw实现) |ETW实现 | | 文件 | 文件读写访问 OS <= Windows7 (Windows10 对象回调(文件对象)会有几率触发PG) |完成 | ##### 内核接口采集事件 v2.0 | 事件 | 描述 | 进度 | | :----------- | :---- | :---- | | 进程 - 线程 - 模块 - 内存 | 系统已运行的进程 - 线程 - 模块(DLL/SYS) | 完成 | | 进程详细 | VAD - 内存 | 未开发 | | IDT | 系统IDT - 内存加载地址 | 完成 | | MouseKeyBoard | 鼠标键盘 - 派遣函数内核地址 | 完成 | | DpcTimer | 遍历系统 DpcTimer |完成 | | Hive | hive注册表 - 开发中 |未开发 | | Ntfs | ntfs文件解析 - 开发中 |未开发 | | Network | Nsi提取IP:PORT | 完成 | | Fsd | FastFat/ntfs - 派遣函数内核地址 | 完成 | | SSDT | 系统SSDT | 完成 | | GDT | 系统GDT | 完成 | | 回调检测 | 枚举系统注册的回调 |开发中 | **注:Dpc硬编码,兼容性还未处理.** ##### 应用接口采集事件 v2.0 前身:https://github.com/TimelifeCzy/Windows-emergency-servicetools,集成至该项目. | 事件 | 描述 |进度 | | ------------ | ------------------------------------------------------------ |------------ | | 启动项 | 计划任务、注册表提取| 完成 | | 网络连接 | 活跃TCP/UDP|完成 | | Session | 用户登录| 开发中| | 进程树 | 活跃进程(线程、模块)|完成 | | 系统信息 | 系统基础信息(软/硬件信息等) -- 考虑上线发送非被动|完成 | | 系统日志 | 应用程序日志、安全日志、系统日志数据|ETW| | 系统用户 | 系统用户|完成 | | 系统软件服务 | 已安装软件/服务|完成 | | 摄像头 | 监控,如果状态改变上报数据 |开发中| | 麦克风 | 监控,如果状态改变上报数据|开发中| | 蓝牙 | 监控,如果状态改变上报数据|开发中| | 文件 | 列举指定目录下文件,可与ntfs数据对比.|未开发| | Rootkit_PE | Rootkit相关PE文件地址解析,提取数据源Offset.|未开发 - 数据用于和内核提取地址匹配| ##### 用户态ETW事件上抛 v2.0 | 事件 | 描述 |进度 | | -------- | ------------------------------- |-------- | | 文件 | 创建、删除、读写 |事件数据未完全解析| | 注册表 | 创建、删除、读写 |事件数据未完全解析| | 进程树 | 进程、线程 - 创建/销毁/模块加载 |完成| | 网络 | tcp/udp五要素 |完成| **Etw事件结构See: etw_event_struct.md** ##### Duilib界面展示 v2.0 | 事件 | 描述 |进度 | | -------- | ------------------------------- |-------- | | Cpu利用率| 动态刷新 |完成| | 系统内存| 动态刷新|完成| | GPU| 动态刷新|开发中| | 磁盘I/O|动态刷新 |开发中| | CPU温度| 动态刷新|开发中| | 主板温度| 动态刷新|开发中| | 显卡温度| 动态刷新|开发中| | 硬盘温度| 动态刷新|开发中| | 流量上传/下载|动态刷新 |开发中| | 处理器详细|静态展示 |完成| | 操作系统版本|静态展示 |完成| | 当前用户|静态展示 |完成| | 主板型号|静态展示 |完成| | 显示器型号|静态展示 |完成| | 电池|静态展示 |完成| **Duilib展示数据不会上报** ##### 恶意行为拦截 v2.0: | 事件 | 描述 |进度 | 描述 | | -------- | ------------------------------- |-------- | -------- | | 进程拦截| Powershell/cmd/vbs/自定义进程 |完成| 回调中Name判断| | 注册表拦截| 自启动 |开发中| 回调中Name判断 | | 远程注入检测 | 无文件/远程线程注入 |开发中| 回调中VAD | | uefi检测 | |开发中| | **基于回调简单行为拦截,拦截进程配置文件: config/client_config.** ##### GRPC v2.0 Windows对于很多第三方生态逐步容纳,Grpc github cmake编译仍会出现很多问题,最好的办法: ``` vcpkg install grpc ```   配置vs2019 工具 --> 选项 --> NuGet管理即可,详细可以参考网上教程,注意vcpkg 安装的是release grpc,所以debug模式调试会有问题。 C++ Grpc请参考官方文档:https://grpc.io/docs/languages/cpp/basics/ **GRPC配置文件: config/client_config** **See Code: grpc.h grpc.cpp** #### 规划: ##### v2.0 | 任务 | 优先级 | 状态 | | --------------------------------------------------------- | -------------- |-------------- | | Duilib终端界面| 中|完成 | | Etw和内核态回调监控兼容Win7/Win10 x32/x64版本,稳定性测试|高|完成 | | 优化通信:Win下目前使用Grpc,少量代码灵活支持其它接上报接口订阅数据 | 中 |完成| **Rootkit接口先不考虑兼容性,等完善了数据对比以后在考虑兼容** ##### v3.0 **从v3.0开始,流量和文件不局限于监控分析,有更多的玩法扩展。** | 任务 | 优先级 |状态| | ------------------------------------------------------------ | ------ |------| | 流量隔离:基于WFP对进程/IP:PORT重定向和bypass. | 高 |未开始| | 文件备份:基于Minfilter对进程文件rwx隔离,对脚本命令和IE下载文件备份.
命令不局限于curl/cmd/powershell/vbs/js等形式. | 高 |未开始| | 指定进程授权非隔离分析 - 类沙箱做inlinehook来监控运行周期(待定) | 中 |未开发 | | Rootkit优化/完善| 中|进行中 | | 勒索病毒行为检测 | minifilter监控,设置诱饵文件来判定 |待定| ##### WFP v3.0 | 网络层 | 描述 | | :------------ | :-------------- | | Established层 | ProcessInfo | | 传输层 | TCP - UDP | | 网络层 | IP | | 数据链路层 | OS >= Windows10 | **v3.0引入WFP流量隔离** Json配置流量规则(未生效): ``` (流量规则) Json:  {  Bypass: 1 - 单要素:目标 port 或者 ip 2 - 双要素:目标 ip:port 3 - 重定向标志位 - 暂时不开启(流量隔离)  } ```   **项目处于入门级,很多设计需要时间打磨和重构。关于WFP/Minifilter驱动,仅流量文件监控不会引入,应用层ETW日志弥补。**   **灵活健壮稳定,以插件提供lib/dll,集成至任意终端产品,包括办公软件 - 游戏音频,提供更多终端软件第三方安全建设/检测的能力。** #### 历史版本: v1.0 实现:主要实现引擎探针和上层数据-上报流程打通。 v2.0 重构:设计模式mvp和代码质量优化,包括xp - win7 - win10等平台的兼容性。 #### 参考: - Github开源Rootkit工具,但不局限于工具。 - 看雪论坛帖子 - OpenEdr & Netfilter SDK & Sandboxie ```c++ std::cout << "项目将零散代码组织到一起,业余投入精力并不多。部分cpp可能以前学习中编写,遗憾的是时间太久,忘记了具体引用的项目,部分代码中有参考github_url,有兴趣可以去学习一番。" << std::endl ```