四、实战推演
前面洋洋洒洒那么多,还是实战来得实际。下面我们通过对一个确切的攻击场景实现检测能力来实践前面的思路。
4.1、场景分析
在黑客入侵过程中,通常有一个环节,就是通过漏洞对自身拥有的权限进行提升,简称提权。常见的提权手法是,发现系统存在的漏洞,执行漏洞利用程序,exp利用漏洞获取一个高权限的shell。
4.2、检测思路
通过对上述漏洞的分析和测试,我们会发现一个提权攻击中的特点,那就是exploit工具自身在执行时是低权限,而得到的shell是高权限。
有了对场景的清晰认识,检测逻辑也就很清楚了:
某个高权限(system?uid=0?)进程(bash?cmd.exe?)的父进程为低权限,则告警。
4.3、系统实现
数据采集需求:根据前面大节中的思路,我们有了场景有了规则,可以考虑采集那些数据以及数据纬度了。在这个场景中,规则分析至少需要用到几个必备的进程数据纬度:进程权限;进程ID;父进程ID
规则逻辑:
{
"dsc":"Local Privilege Escalation",
"cache":{
uid>0
},
"rule":{
ip=cache.ip,
ppid=cache.ip.pid
uid=0
}
}
以上检测规则基本上能满足多数提权场景,但实际运用中还有一些细节需读者自己去思考完善:
1、同样满足父进程权限低,子进程权限高的正常场景有哪些,如何去除误报?
2、数据关联分析中,分析流程向前追溯还是向后追溯更易实现,更符合你自己分析系统的架构?
3、提权攻击除了上述提到的场景,还有那些?
我们可以看到,从行为描述很容易刻画攻击场景,从而实现检测,纵使攻击手法千变万化,而关键路径是不易改变的。通过行为模型实现检测能力,避免了各自漏洞技术细节差异带来的规则库冗余(且影响安全系统性能),也避免因检测规则过分针对细节(特征库\漏洞库)可能导致的被绕过。
五、总结
本文是在实际入侵对抗实践中,根据公司网络自身环境,外部威胁特点不断总结出来一些浅显经验。总的归纳为:入侵事件数据化、入侵检测模型化、事件分析平台化。
在不同网络环境,安全威胁形势,对抗要求时,还须结合自身情况作不少优化和变化。个人认为前述无论是架构还是数据分析模型,是在现有网络海量数据、业务环境苛刻、外部威胁多变的情况下一种较为经济易行的入侵检测思路。