english version:readme
一款go开发的HIDS,用于反入侵监控。最后更新时间为19年,算是一个比较完整的HIDS原型,框架和核心检测都有之后,后面的工作就是根据实际业务情况,攻防演练,积累的样本不断迭代检查逻辑。
具备以下特点:
- 具备主机命令自学习功能,不断学习加白高负载进程调用,降低CPU消耗,内存忽略不计。也具备cpu消耗限制的功能,当前限制10%消耗。
- 部署超过7万台服务器,稳定性没问题。主要兼容centos6 7
- 基于auditd的日志进行检测,对后门的关键行为进行分析,反入侵的核心原则就是识别异常,比如一个在使用的后门会有网络通信,进程执行,那么这些行为就会与这台主机,甚至集群内的正常通信和进程有区别。提炼并识别这些异常就是反入侵好的核心。
- 有内部攻防实战经历,3次真实后门+1次隐藏挖矿检测。
- 系统开启auditd服务
- ss命令,比netstat性能高很多,非常重要。(centos:yum update iproute)
- 获取auditd日志,日志核心内容为ppid pid cmdline
- 检查cmdline是否在已经检查过的缓存或白名单中
- 如果不在,则进行检查,并根据ppid逐层检查父进程
- 检查时获取的信息:
- cmdline内容,是否有调用bash、python、perl等行为(后门核心特征)
- 使用ss获取pid的网络连接,并查看其有无监听端口(后门核心特征)
- 使用lsof命令,获取进程打开的文件列表。对于ELF后门,检查打开的文件类型(文本,还是可执行),文件是否存在。是正常与异常的核心区别
- 使用lsof命令,获取进程打开的网络连接,重点检查连接的对端IP是否可信
- 发现风险后,将完整判断信息以及该进程的ps信息返回告警中心
性能达标,是能够实际在业务环境中跑起来的前提。
- 内建缓存,处理过的进程在一定时间内不重复检查
- 创建白名单,加白的进程不再检查
- 基于本主机的命令调用情况,对高频命令建模,符合模型的被认为是业务进程,加白处理
- 基于整个集群的命令调用情况,对高频命令建模,符合模型的被认为是业务进程,加白处理
- 简单归一化(字母全替换为a,数字全替换为0),将不完全一样,但是命令实际上相同的归一化,提升缓存效果 6. 如/ls aaaaaa和/ls bbbbbbb,归一化为/ls aaaaaaa 7. 如/ls 123456和/ls 654321,归一化为/ls 000000
- cpu消耗限制,命令调用时,限制cpu消耗
- cpu消耗检查,如果超过阈值次数大于一定值,则自动停止
- 修改core/config.go中的LOGServer IP地址,接收告警信息
- 检查内容中有一个选项在config中的isCheckOwnAsset,用于检查网络连接的目标ip是否可信资产,开源项目中关闭掉了,默认会返回否。有需求可以进一步改造。
- 未提供后端的web服务,可以根据请求的内容diy一个,或者直接转为json打入sls使用。
- 运行build.sh 即可在bin目录生成可执行文件
- tools/deploy.sh 用于通过agent部署时执行,当前适配centos5 6 7 8
tools/check_high_call.py 用于开发时分析高性能损耗的进程调用,分析文件为hidsgo产生的log文件