企业安全实践(基础建设)之HIDS(下)

HIDS运行依赖这样一个原理:一个成功的入侵者一般而言都会留下他们入侵的痕迹。

前言

       HIDS运行依赖这样一个原理:一个成功的入侵者一般而言都会留下他们入侵的痕迹。

背景

        在上一篇中,基于osquery实现了主机绝大部分信息差异变化的监控,但仍有部分信息是需要我们关注的。

网络连接

        网络连接监控,在我的规则中包含有此条监控,但有个bug需要知道,我在一台网络连接数超过10W的主机上执行了此命令,CPU瞬时飙升为100%,在线上业务主机上是不适用的,因为这种现象可能会导致其中重要业务造成丢包或者干扰。为了解决这个问题我通过另一种办法实现了它,可以关注下此脚本

https://github.com/grayddq/NetWorkCheck

        获取网络连接数巨大的信息时,我尝试了很多方法,比如netstat、cat /proc/net/tcp等都不满足我的需求,直到我尝试了ss命令,它的速度满足需求,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。我在脚本的核心的语句就是:

sudo ss -nap4 not dst 192.168.0.1/16 and not dst 10.0.0.0/8 and not dst 127.0.0.1 and not dst 172.16.0.1/12 and dport \> :1

123.png

        可通过配置执行此脚本,进行网络连接的监控,辅助反弹shell的监控。

文件完整性检测

        文件完整性检测,在HIDS中占的比例其实挺大的,它可以使你发现哪些文件被篡改替换了,添加了哪些文件后门,可以更加实时的发现一些安全隐患。

        文件完整性检测在osquery其实有支持,但只是针对单一文件的监控,并没有发现针对目录的整体监控,为了解决这个问题,我尝试写了这个脚本,旨在对指定监控目录进行文件hash记录,定时运行,发现文件替换、修改等后门可疑程序。

        在开发的过程中,发现Prelink服务会主动修改二进制文件,是为了系统加速各个程序的启动速度予以修改程序,进而文件的hash也就变动了。为此我兼容了prelink服务。

地址

https://github.com/grayddq/FileCheck

作者

        咚咚呛,如有其他建议,可联系微信280495355

满足安全需求

1、支持自定义文件目录监控
2、支持目录递归监控
3、支持文件hash记录并比较
4、支持高危文件修改报警
5、支持prelink服务排除

技术细节

1、针对自定义的路径进行递归遍历操作,并对文件进行hash保存
2、当程序运行时先判断hash文件是否存在,不存在则创建,存在则获取当前文件hash与之比较
3、自定义高危文件名称,当修改时则进行高危日志打印
4、prelink服务会主动修改二进制文件,并记录prelink日志,当存在hash变动时,进行prelink日志检索,减少误报
5、相关告警日志默认存储在/var/log/filecheck.log文件中
6、hash文件保存在脚本目录名hash_db.txt中

测试环境

centos 7 

python 2.7

部署

脚本放置在任意目录中
1)$ python FileCheck.py 尝试运行并生成hash_db.txt
2)配置crontab信息,定时执行,如5分钟一次。
3)$ cat /var/log/filecheck.log 查阅告警日志

配置

# 文件完整性检测目录,并递归子目录
CHECK_DIR = ['/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/', '/usr/local/sbin/', '/usr/local/bin/']
# 重要高危告警文件名称
HEIGH_FILE_ALARM = ['login', 'ls', 'ps', 'ifconfig', 'du', 'find', 'netstat', 'bash']
# hash文件存储名称
HASH_DB = sys.path[0] + '/hash_db.txt'
# 日志告警文件存储位置
ALARM_LOG = '/var/log/filecheck.log'
# prelink服务会修改二进制文件,此处保存prelink服务的相关日志路径
PRELINK_LOG_PATH = ['/var/log/prelink/prelink.log', '/var/log/prelink.log']

日志结果

        日志结果默认存储路径为:/var/log/filecheck.log

运行截图

111.png

取消
Loading...

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php