两三年前,开始接触AI和安全的交叉领域,彼时市面上相关资料良莠不齐,所以花费了大量的时间在琢磨,逐渐打磨出AI-for-Security-Learning的github仓库,旨在总结安全场景、基于AI的安全算法和安全数据分析相关的应用,持续思考,保持对业界技术的跟进和迭代。当时还在城外,看见工业界的实践很少,准确地说,可实际落地产生价值的工业级实践很少,一度认为AI for Security是鸡肋。
现如今,进入到了城里,几乎翻遍了ATA(阿里巴巴内部技术协会)上所有AI for Security的系列文章,第一次从内部视角见识到了企业级安全智能化的各式实践,吸收学习的基础上也为这个交叉领域添砖加瓦。
解决了多少问题,解决了多大问题,是衡量个人价值和团队价值的标准之一。要解决什么问题?为什么解决这个问题?以及解决这个问题能带给团队的价值是什么?这些是首先且必须要回答的问题。
观察到几点现象,一是安全对抗对外大多止步于边界,二是安全防御策略大多是专家经验生成,不具有自主成长性,三是威胁检出的不可解释性,只知道每天策略检出十万次攻击,该封的封该拦的拦,然后呢?然后就没有然后了?
因而,选择解决的问题是搞懂攻击,搞懂对手。第一层面,从攻击现象入手,挖掘攻击源主体,也就是攻击者的武器,包括攻击资产、攻击手法、攻击工具等。武器识别只是向外走的第一步,还不太稳定,因为攻击者的武器可能是恒定的,也可能是变化多端的。第二层面,还需要进一步识别出使用武器背后的主体,即攻击者的身份,真实身份是谁,所属群体是黑客还是白帽子,亦或是竞对、黑灰产、蓝军群体。攻击者身份相对是固定的,是一个稳定线头。第三层面,综合身份、历史和当前行为等数据,判断攻击者的真实意图。
**从“看见”到“看清”,看清是为了更好地看见。**第一点价值是可解释性,攻击全生命周期可解释,回答了是谁使用什么武器希望达到什么目的的问题;第二点是掌握主动性,**主动的威慑力,具备对攻击者“敲屋顶”的能力。**主动出击,对于已知的攻击,事前预警,不用再等payload命中规则再告警,同时不断收敛已知攻击源,提升发现未知攻击的概率。
对于一个成熟的事项,业界一般有公认的数据指标体系和计算方式,是相对科学的。但是对于一个新兴的事项,没有标准,只有不断摸索,如何科学定义且对达成最终目的具有指导性意义是一个值得花费时间来琢磨的事情。
目前定义了三个一级指标,一是攻击者武器识别率,武器定义:攻击资产、攻击手法、攻击工具,计算方式是已识别的武器的ip数/总攻击ip数(现有所有安全数据);二是攻击者身份识别率,身份定义:真实身份、虚拟身份,虚拟身份可细分为:黑客、白帽子、竞对、黑灰产、内鬼、蓝军。计算方式是识别到的攻击者数/总攻击者数(内部发现+其他渠道发现);三是攻击者真实意图识别率,意图定义:非定向、定向,综合考虑了群体人数、时间线、利益链、影响面,将定向意图细分为测试、漏洞挖掘、拿到权限、窃取数据、获取利益、破坏、其他。计算方式是识别到意图的攻击者数/总攻击者数,有ip+时间维度和uid+时间维度两种计算方式,因为攻击者的意图不是一成不变的。
解决方案
**这世界从来没有真正的机器学习,只有人学习。有了想解放自己的人,也就有了机器学习。**安全策略大多需要人为主动将经验源源不断地注入其中,不能脱离人而存在。因而希望借助数据和算法驱动,减少人力成本,同时具有成长性。做个比喻,一个是巨婴,一个是养成系列。
针对不同的问题,选择不同的解决链路,大体链路有数据、算法和专家经验三种。从数据角度,直接计算安全产品和策略数据识别出武器、身份和意图,不失为一种有效的手段,从算法角度,做攻击同源分析,那么优先考虑无监督算法,做攻击者身份识别,看看历史数据沉淀,有监督和半监督有一席之地,攻击者意图识别就需要依赖专家经验,经过缜密调查,产出有信服力的结果。
最大的挑战有两点,一是数据层面,已标记或可标记的数据稀少,标记的样本纯净度也是个大问题,garbage in garbage out。二是机器学习模型效果层面,无监督模型的效果如何评估?有监督模型的效果是过拟合还是欠拟合?效果不好的话朝着什么方向进行优化。针对这些挑战,初始阶段采用的是笨办法:人工打标、对比实验、安全运营。
目前,基于攻击源机器学习识别模型,对攻击者武器识别率在x%左右,已经识别到几十个攻击源主体,对识别到的攻击源再进行数据挖掘,发现一些有意思的现象,部分攻击源主体使用相同的ioc等基础设施,也就是说可以通过这个“抓手”对攻击源一网打尽,更全面地理解对手的资源和攻击能力。同时,人工验证过程中发现从长序列、长周期角度看,模型对恶意攻击源的机器行为模式具有较高的识别性。
基于多种攻击者身份识别模型,近期已经挖掘到上百个实质发起攻击的攻击者真实身份,有些人员来自相关的互联网公司,真实的意图还需要慎重判别,轻易不敢下定论。目前,攻击者身份识别机器学习模型还处于过拟合阶段,需要不断沉淀真实的攻击者行为序列数据,喂给攻击者身份机器学习识别模型,相信模型的鲁棒性会越强。
**知识转化为技术的过程中,需要大量的实践。**在具体做事的过程中,发现本质是根据函数值在求一个多元函数的参数、参数值和系数,函数值是要解决的问题,参数是特征字段,参数值是特征值,系数是权重。是一个不断寻求更高效走得通的路径的过程。比如知道有各类机器学习方法,在解决攻击同源的问题中,用哪类?用哪类中的哪一个?知道有各类特征工程方法,在解决攻击者识别的问题中,用哪些能抓住重点?在没出结果之前,只能靠仅有的先验知识、理论知识和大量实验。
因此,在重视结果和产出的同时,也在反复练习和沉淀,做对比实验,搞清楚每一步选择的可能性和差异性。从数据、特征工程、算法和工程化落地四个角度,沉淀了一套安全、数据、算法交叉应用的可行性方法和沿途踩过的坑。
投入产出比,内容的拆分,优先级和时间的安排,及时意识到陷入细节泥潭并抽身,明确要解决的主要矛盾,种种这些都需要不断实践和反思。
1、不认同的可以聊,不喜欢的可以说,只是对事,从不对人
2、大多数人不排斥劳动,只是排斥无意义的劳动,有价值的劳动(富有创造性的)其实大多数人是比较喜欢的,所以坚持做正确且有意义的事情
3、反思,做的不好的不对的事情是黑样本,反之是白样本,自己训练自己
我们不断地在解决主要矛盾,解决了主要矛盾,次要矛盾也就成了主要矛盾。从外部真实威胁到内部威胁,从安全产品覆盖到的威胁场景数据到自主覆盖top威胁场景产出数据流再到未知攻击发现,从黑客为主攻击者到多群体攻击者和组织探寻,从摸着石头过河初探意图归因到决策智能。还有很多事情要做。
感谢我的伙伴、老板以及给过我指导的很多师傅们!