zaza6677 / Hades-Windows

Purity toolsHades A HIDS is designed run on Windows

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

方案:

Kernel

  x64内核探针粗糙分为两类技术方案:

  • 第一种基于Intel-x/d虚拟化技术,绕过PG保护做花式Hook,功能强大-系统无痕。
  • 第二种基于微型过滤框架和注册回调,兼容性好/快速开发/接口完善。

  项目采用过滤驱动+注册回调,这种方案中规中矩。有想过将以前写的VT Hook移植进来,但是不可控因素较多(不完善),有兴趣的可以跳转:https://github.com/TimelifeCzy/kHypervisor_MsrEpt_Hook

  示例适用Win7/Win10 x64下内核态数据采集,v1.0在Debug系统Win10 1909测试 - 其他系统v2.0,优先选择使用应用层采集方案。

User

  System数据采集和ETW事件采集。

文档

文档 文件名
内核文档 win_kernel_event.md
应用层文档 win_user_event.md
WFP文档 win_wfp_event.md
Grpc 传输结构(c) windows struct_c.md(see sysinfo.h)

框架:

image

v1.0

内核回调上抛事件 v1.0
事件 描述
进程 进程创建 - 销毁 - 进程数据
线程 线程创建 - 销毁 - 线程数据
注册表 删除 - 修改 - 枚举 - 重命名等(缺少具体的包解析)
模块 DLL - 驱动
会话 用户登录/退出/Session切换
WMI 待定(应用层etw实现)
文件 文件读写访问 OS <= Windows7 (Windows10 对象回调(文件对象)会有几率触发PG)

Json配置内核上抛事件管理(未生效):

{
    1. 添加进程白名单,允许从内核态过滤控某进程数据
    2. xxxxx
}
内核接口采集事件 v1.0
事件 描述
进程 - 线程 - 模块 - 内存 系统已运行的进程 - 线程 - 模块(DLL/SYS) - 内存
进程树 进程 - 线程 - DLL - VAD
IDT 系统IDT - (原始偏移 - 内存已加载偏移) HOOK检测
MouseKeyBoard 鼠标键盘 Hook检测
DpcTimer 遍历系统 DpcTimer
Hive hive注册表 - 开发中
Ntfs ntfs文件解析 - 开发中
Network Nsi提取IP:PORT
Fsd FastFat/ntfs HOOK检测
SSDT 系统SSDT - (原始偏移 - 内存已加载偏移) HOOK检测
GDT 系统GDT - (原始偏移 - 内存已加载偏移) HOOK检测
回调检测 枚举系统注册的回调

Win7上Rootkit接口未测试,接口Win10 1903测试

应用接口采集事件 v1.0

前身:https://github.com/TimelifeCzy/Windows-emergency-servicetools,集成至该项目.

事件 描述
启动项 计划任务、注册表提取
网络连接 活跃TCP/UDP
Session 用户登录 -- v2.0
进程树 活跃进程(线程、模块、虚拟内存、Dump)
系统信息 系统基础信息(软/硬件信息等) -- 考虑上线发送非被动
系统日志 应用程序日志、安全日志、系统日志数据 -- etw替代
系统用户 系统用户
系统软件服务 已安装软件/服务
文件 列举指定目录下文件,可与ntfs数据对比.
Rootkit_PE Rootkit检测需要调用接口解析相关的PE文件,提取对比源. -- v2.0
ETW事件上抛 v1.0
事件 描述
文件 创建、删除、读写
注册表 创建、删除、读写
进程树 进程、线程 - 创建/销毁/模块加载
网络 tcp/udp五要素
系统信息 CPU、虚拟内存等数据 - 待定

Etw事件结构See: etw_event_struct.md

WFP v3.0
网络层 描述
Established层 ProcessInfo
传输层 TCP - UDP
网络层 IP
数据链路层 OS >= Windows10

v3.0引入WFP流量隔离

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

(流量规则)
Json:
 {
 Bypass:
	1 - 单要素:目标 port 或者 ip 
	2 - 双要素:目标 ip:port  
	3 - 重定向标志位 - 暂时不开启(流量隔离)
 }
GRPC v1.0

Windows对于很多第三方生态逐步容纳,Grpc github cmake编译仍会出现很多问题,最好的办法:

vcpkg install grpc

  配置vs2019 工具 --> 选项 --> NuGet管理即可,详细可以参考网上教程,注意vcpkg 安装的是release grpc,所以debug模式调试会有问题。

C++ Grpc请参考官方文档:https://grpc.io/docs/languages/cpp/basics/

See Code: grpc.h grpc.cpp

规划:

  项目处于入门级,很多设计需要时间打磨和重构。关于WFP/Minifilter驱动,仅流量文件监控不会引入,应用层ETW日志弥补。

  它并不是以产品形态诞生,起步扮演的角色是Hids,希望日后更灵活更健壮,以插件提供lib/dll,集成至任意终端产品,包括办公软件 - 游戏音频,提供更多终端软件第三方安全建设/检测的能力。

v2.0
任务 优先级
Rootkit优化/完善
兼容Win7/Win10 x64大部分版本,非长期稳定驱动测试
指定进程授权非隔离分析 - 类沙箱做inlinehook来监控运行周期 中(也可能v3.0)
electron + vue 跨平台终端简单界面 暂定
v3.0

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

任务 优先级
流量隔离:基于WFP对进程/IP:PORT重定向和bypass.
文件备份:基于Minfilter对进程文件rwx隔离,对脚本命令和IE下载文件备份.
命令不局限于curl/cmd/powershell/vbs/js等形式.
优化通信:Win下目前使用Grpc,但是有诸多不变。引入IOCP模块,后续如果server使用Epoll,无缝对接。

参考:

  • Github开源Rootkit工具,但不局限于工具。
  • 看雪论坛帖子
  • OpenEdr & Netfilter SDK & Sandboxie
std::cout << "项目将零散代码组织到一起,业余投入精力并不多。部分cpp可能以前学习中编写,遗憾的是时间太久,忘记了具体引用的项目,部分代码中有参考github_url,有兴趣可以去学习一番。" << std::endl

About

Purity toolsHades A HIDS is designed run on Windows

License:Apache License 2.0


Languages

Language:C++ 61.2%Language:C 37.6%Language:CMake 1.2%