Skip to content

HIDS,在主机上完成全部检测计算,主要检测外联通信、进程及进程加载的文件,自学习加白降低性能消耗,告警http回传中心服务器,ELK做查询展示。

Notifications You must be signed in to change notification settings

johnniesong/HIDS-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

english version:readme
一款go开发的HIDS,用于反入侵监控。最后更新时间为19年,算是一个比较完整的HIDS原型,框架和核心检测都有之后,后面的工作就是根据实际业务情况,攻防演练,积累的样本不断迭代检查逻辑。
具备以下特点:

  1. 具备主机命令自学习功能,不断学习加白高负载进程调用,降低CPU消耗,内存忽略不计。也具备cpu消耗限制的功能,当前限制10%消耗。
  2. 部署超过7万台服务器,稳定性没问题。主要兼容centos6 7
  3. 基于auditd的日志进行检测,对后门的关键行为进行分析,反入侵的核心原则就是识别异常,比如一个在使用的后门会有网络通信,进程执行,那么这些行为就会与这台主机,甚至集群内的正常通信和进程有区别。提炼并识别这些异常就是反入侵好的核心。
  4. 有内部攻防实战经历,3次真实后门+1次隐藏挖矿检测。

依赖

  1. 系统开启auditd服务
  2. ss命令,比netstat性能高很多,非常重要。(centos:yum update iproute)

风险检查核心原理

  1. 获取auditd日志,日志核心内容为ppid pid cmdline
  2. 检查cmdline是否在已经检查过的缓存或白名单中
  3. 如果不在,则进行检查,并根据ppid逐层检查父进程
  4. 检查时获取的信息:
    1. cmdline内容,是否有调用bash、python、perl等行为(后门核心特征)
    2. 使用ss获取pid的网络连接,并查看其有无监听端口(后门核心特征)
    3. 使用lsof命令,获取进程打开的文件列表。对于ELF后门,检查打开的文件类型(文本,还是可执行),文件是否存在。是正常与异常的核心区别
    4. 使用lsof命令,获取进程打开的网络连接,重点检查连接的对端IP是否可信
  5. 发现风险后,将完整判断信息以及该进程的ps信息返回告警中心

性能占用优化

性能达标,是能够实际在业务环境中跑起来的前提。

  1. 内建缓存,处理过的进程在一定时间内不重复检查
  2. 创建白名单,加白的进程不再检查
  3. 基于本主机的命令调用情况,对高频命令建模,符合模型的被认为是业务进程,加白处理
  4. 基于整个集群的命令调用情况,对高频命令建模,符合模型的被认为是业务进程,加白处理
  5. 简单归一化(字母全替换为a,数字全替换为0),将不完全一样,但是命令实际上相同的归一化,提升缓存效果 6. 如/ls aaaaaa和/ls bbbbbbb,归一化为/ls aaaaaaa 7. 如/ls 123456和/ls 654321,归一化为/ls 000000
  6. cpu消耗限制,命令调用时,限制cpu消耗
  7. cpu消耗检查,如果超过阈值次数大于一定值,则自动停止

后端服务

  1. 修改core/config.go中的LOGServer IP地址,接收告警信息
  2. 检查内容中有一个选项在config中的isCheckOwnAsset,用于检查网络连接的目标ip是否可信资产,开源项目中关闭掉了,默认会返回否。有需求可以进一步改造。
  3. 未提供后端的web服务,可以根据请求的内容diy一个,或者直接转为json打入sls使用。

运行

  1. 运行build.sh 即可在bin目录生成可执行文件
  2. tools/deploy.sh 用于通过agent部署时执行,当前适配centos5 6 7 8

其他

tools/check_high_call.py 用于开发时分析高性能损耗的进程调用,分析文件为hidsgo产生的log文件

About

HIDS,在主机上完成全部检测计算,主要检测外联通信、进程及进程加载的文件,自学习加白降低性能消耗,告警http回传中心服务器,ELK做查询展示。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published