Total Pageviews

Monday, 14 September 2026

一款实验性质的主机入侵检测系统驭龙HIDS


License Golang Mongodb elasticsearch

由于此项目缺少维护,建议仅用于参考学习和二次开发。

驭龙HIDS是一款由 YSRC 开源的入侵检测系统,由 AgentDaemonServerWeb 四个部分组成,集异常检测、监控管理为一体,拥有异常行为发现、快速阻断、高级分析等功能,可从多个维度行为信息中发现入侵行为。

Agent为采集者角色,收集服务器信息、开机启动项、计划任务、监听端口、服务、登录日志、用户列表,实时监控文件操作行为、网络连接、执行命令,初步筛选整理后通过RPC协议传输到Server节点。

Daemon为守护服务进程,为Agent提供进程守护、静默环境部署作用,其任务执行功能通过接收服务端的指令实现Agent热更新、阻断功能和自定义命令执行等,任务传输过程使用RSA进行加密。

Server为整套系统的大脑,支持横向扩展分布式部署,解析用户定义的规则(已内置部分基础规则)对从各Agent接收到的信息和行为进行分析检测和保存,可从各个维度的信息中发现webshell写入行为、异常登录行为、异常网络连接行为、异常命令调用行为等,从而实现对入侵行为实时预警。

文档

功能特点

  • 实时监控、秒级响应
  • 全局首次出现概念,可发现未知威胁
  • 支持自定义规则,高扩展性
  • 高级分析功能,可溯源
  • 全局快速阻断(进程、文件)
  • 威胁情报查询(可自定义接口)

相比其他同类应用,维护使用此系统需要有一定的安全判断分析能力。

 from https://github.com/ysrc/yulong-hids-archived

--------------------------------

 

编译指南

环境要求

Golang环境安装可以参照,各系统会与下面的示例稍有不同,Golang版本不可以低于1.9。

依赖

  • Go依赖包都集成在相应工程的vendor目录中
  • 编译Agent需要先安装libpcap-devel

Windows 下编译 Agent 需要 winpcap 支持。且受到 google/gopacket 影响可能会出现一些问题,具体请看 Q&A#Q1 Windows 下编译依赖gcc,可以通过mingw-w64 32位 64位安装

编译

客户端(Agent,Daemon、依赖)

  • 下载安装对应安装包 https://golang.google.cn/dl/ 安装 golang
  • windows 下编译需注意:32位版本须在 32 位版本 win7/2003 下编译。Win版本 agent 代码做了兼容,如只编译32位亦可在64位系统中正常工作
  • go get github.com/ysrc/yulong-hids 之后在 {gopath}/src/github.com/ysrc/yulong-hids 下的项目编译后是会出现预期外异常的,请根据接下来的指导文档进行编译。
cd C:\Go\src
git clone https://github.com/ysrc/yulong-hids/

// 编译agent
go build -o yulong-hids\bin\win-64\agent.exe --ldflags="-w -s" yulong-hids\agent\agent.go

// 编译daemon
go build -o yulong-hids\bin\win-64\daemon.exe --ldflags="-w -s" yulong-hids\daemon\daemon.go
# linux 64
// 下载并解压
wget https://dl.google.com/go/go1.10.linux-amd64.tar.gz && tar -zxvf go1.10.linux-amd64.tar.gz -C /usr/local/

sudo vi /etc/profile 
// 并添加下面的内容:

export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=$HOME/gopath (可选设置)

// 重新加载 profile 文件
source /etc/profile

cd /usr/local/go/src
git clone https://github.com/ysrc/yulong-hids/

// 编译agent
go build -o yulong-hids/bin/linux-64/agent --ldflags="-w -s" yulong-hids/agent/agent.go

// 编译daemon
go build -o yulong-hids/bin/linux-64/daemon --ldflags="-w -s" yulong-hids/daemon/daemon.go

编译后需压缩为不同系统的zip文件(如agent.exe、daemon.exe、data.zip),在向导过程中上传。
为了方便大家,我们提供了一个编译打包脚本,在build目录下运行 python3 build.py 就能编译并打包。
但是由于data.zip中提供的依赖文件不一定适配,可能需要你自行编译,所以这个文件需要手动打包进最终的部署包。

服务端(Server、Web)

go build -o yulong-hids/bin/server --ldflags="-w -s" yulong-hids/server/server.go
go build -o yulong-hids/web/web --ldflags="-w -s" yulong-hids/web/main.go

内核、驱动

win下的驭龙驱动文件pro.sys我们已经编译好了现成的放在了data.zip中,如果自行编译的话需要购买代码签名证书进行签名,否则无法正常加载使用。

下载地址:wdk 7600

// win驱动
准备2008或win7 x64系统,安装 GRMWDK 7600。
从开始菜单中选择进入对应系统的控制台,如
Windows Driver Kits->WDK 7600.16385.1->Build Environments->Windows Vista and Windows Server 2008->x64 Checked
Build Environment
具体根据你的系统选择Build Environments,要编译32位的就选x86。

cd C:\Go\src\yulong-hids\driver\
build

// Linux内核
我们在bin\linux-64\data.zip中已经提供了一些编译好的对应内核版本的ko文件,直接用的话需要确认内核版本完全一致。
实际部署过程中需要 uname -r 统计下需要部署的机器linux内核版本,然后需要找到完全匹配对应版本的kernel-devel包
下下来并安装,yum安装的不一定完全匹配。虽然软链接到不一致的版本也能编译出来ko并加载,但是不知道会不会有影响,
稳妥起见还是参照上面的做法。
rpm -ivh kernel-devel-3.10.0-327.el7.x86_64.rpm

debian系的也类似 用 uname -r 的结果替换 4.9.0-3-amd64 
apt-get install linux-headers-4.9.0-3-amd64

openSUSE
zypper install kernel-devel

安装好对应kernel-devel包后cd进目录就可以编译了
cd /usr/local/go/src/yulong-hids/syscall_hook
make

编译好的内核和驱动需要替换进对应系统目录下的data.zip内。

驱动签名的我们给两个示例,具体命令会因证书商不一样而稍有不同。

signtool sign /v /ac "MSCV-ThawteClass3.cer" /a /s MY /n "Tongcheng Network Technology Co., Ltd" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp/ "e:\pro.sys"

signtool sign /v /ac "DigiCert High Assurance EV Root CA.crt" /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "e:\sha256new.p12" /p 证书密码 "e:\pro.sys"

 from https://github.com/ysrc/yulong-hids-archived/blob/master/docs/build.md

 

No comments:

Post a Comment