首先什么是0day,也就是没有被捕获到的漏洞,那么说明该攻击不在特征库,当然也不绝对,也可能会和其他攻击类型相似,而最终被捕获,但是我们这里思考一种方案,能不能找到一些很好的方法去防御这样的漏洞
1.漏洞挖掘,提前挖掘出0day,做特征提取
2.威胁情报,在公网布置蜜罐,捕获0day,放到产品中
3.HIDS检测
3.1 行为检测
3.1.1 行为黑名单,例如linux内存执行mem_create这样的场景,但是对于反序列化攻击总会调用反序列化函数进行函数调用,会混合了正常业务,也就是对这样的攻击类型建立正确的威胁检测模型,既特征模型,该攻击特征完全属于恶意。如果要用于防御,那么就黑名单中一定不能有业务特征。比较难,所以白名单是更低成本防护手段。
3.2 白名单
3.2.1 进程白名单,适用于云原生场景,在容器下运行,进程会趋于稳定。
3.2.2 syscall 白名单,但是这里要取决于业务要完善测试,也就是业务系统要对syscall做丰富的测试
3.3 syscall状态机,对于内核提权,可以参考krsi的攻击方案,对于commit_cred行为了一个状态机,对于直接内核shellcode改commit_cred方式判断就是存在威胁
3.4 通过多手段补充,对于单一检出手段检出率,那么多余多手段,也就是一个攻击者通过0day进来,之后后续攻击都能够被捕获,那么通过事件的关联,来绘制整个攻击图谱,也是可以帮助0day溯源,也就是说产品要有攻击关联的能力,和威胁记录的能力,否则就抓不到0day的攻击特征