那么,我们呢?笔者也没有什么好的办法,可以发现传说中的“免杀”的木马,但是我们可以针对已知的黑客攻击框架(比如 Metasploit、Cobalt Strike)生成的样本、行为进行一些特征的提取。我们可以假设已经有黑客控制了某一台机器,但是它试图进行横向扩散的时候,我们有一些模型可以识别这个主机的横向移动行为。
笔者认为,世界上不存在 100% 能发现 APT 的方法。但是我们可以等待实施 APT 的团队犯错,只要我们的纵深足够的多,信息足够不对称,想要完全不触碰我们所有的铃铛,绝对存在一定的困难。甚至,攻击者如果需要小心翼翼的避开所有的检测逻辑,可能也会给对手一种心理上的震慑,这种震慑可能会延缓对手接近目标的速度,拉长时间。而在这个时间里,只要他犯错,就轮到我们出场了。
前面所有的高标准,包括高覆盖、低误报,强制每一个告警跟进到底,“掘地三尺”的态度,都是在等待这一刻。抓到一个值得敬佩的对手,那种成就感,还是很值得回味的。所以,希望所有从事入侵检测的安全同行们都能坚持住,即使听过无数次“狼来了”,下一次看到告警,依然可以用最高的敬畏心去迎接对手(告警虐我千百遍,我待告警如初恋)。 AI 在入侵检测领域的正确姿势
最近这两年,如果不谈 AI 的话,貌似故事就不会完整。只不过,随着 AI 概念的火爆,很多人已经把传统的数据挖掘、统计分析等思想,比如分类、预测、聚类、关联之类的算法,都一律套在 AI 的帽子里。
其实 AI 是一种现代的方法,在很多地方有非常实际的产出了。以 WebShell 的文本分析为例,我们可能需要花很长很长的时间,才能把上千个样本里隐含的几十种样本技术类型拆分开,又花更长的时间去一一建设模型(是的,在这样的场景下,特征工程真的是一个需要更长时间的工作)。而使用 AI,做好数据打标的工作,训练、调参,很快就能拿到一个实验室环境不那么过拟合的模型出来,迅速投产到生产环境上。熟练一点可能 1-2 个月就能做完了。
在这种场景下,AI 这种现代的方法,的确能极大的提高效率。但问题是,前文也提到过了,黑客的攻击黑样本、WebShell 的样本,往往极其稀缺,它不可能是完备的能够描述黑客入侵的完整特征的。因此,AI 产出的结果,无论是误报率还是漏报率,都会受训练方法和输入样本的影响较大,我们可以借助 AI,但绝对不能完全交给 AI。
安全领域一个比较常见的现象是,将场景转变成标记问题,要难于通过数学模型把标记的解给求出来。此时往往需要安全专家先行,算法专家再跟上,而不能直接让算法专家“孤军奋战”。针对一个具体的攻击场景,怎么样采集对应的入侵数据,思考这个入侵动作和正常行为的区别,这个特征的提取过程,往往决定了模型最终的效果。特征决定了效果的上限,而算法模型只能决定了有多接近这个上限。
此前,笔者曾见过一个案例,AI 团队产出了一个实验室环境效果极佳,误报率达到1/1000000 的 WebShell 模型,但是投放到生产环境里初期日均告警 6000 单,完全无法运营,同时还存在不少漏报的情况。这些情况随着安全团队和 AI 工程师共同的努力,后来逐渐地解决。但是并未能成功的取代原有的特征工程模型。目前业界有许多产品、文章在实践 AI,但遗憾的是,这些文章和产品大多“浅尝辄止”,没有在真实的环境中实践运营效果。一旦我们用前面的标准去要求它,就会发现,AI 虽然是个好东西,但是绝对只是个“半成品”。真正的运营,往往需要传统的特征工程和 AI 并行,也需要持续地进行迭代。
未来必然是 AI 的天下,但是有多少智能,前面可能就要铺垫多少人工。愿与同行们一起在这个路上继续探索下去,多多交流分享。(作者:弼政)