近期,标准机构互联网工程任务组 (IETF)公布了RFC9424,这一关于IOC(Indicator Of Compromise)的文件总体写得不错,特别是描述IOC的用途、优势及使用场景部分。但是,涉及IOC生命周期的部分,个人认为有些问题,具体就不在这评价了,有心人可以自己找来看看。

基于工作实践,个人认为IOC的生命周期可以粗略划分为4个阶段:识别、加工、使用、失效。下面对每个阶段进行详细介绍。

一 识别

IOC不是被创造出来的,而是被发现得到的,因为攻击活动先于IOC存在。IOC本质上是攻防对抗过程中的副产品,就看你有没有本事将攻击活动识别出来,从而提取到相应的IOC。

IOC的产出主要有以下几个渠道:

1、NDR

NDR分析网络流量执行攻击检测,方法可以是基于人工规则,也可以基于异常模型,设计得好的规则可以实现非常精准的检测,异常模型的输出一般包含大量的误报,需要进一步的人工确认,优势也是很显然的,可能发现未知的恶意活动。确认攻击活动以后,可以提取其中攻击者所使用的网络基础设施,比如IP地址、URL、域名、数字证书、邮箱地址等。

2、EDR

EDR是攻击活动的最终真相之源,我们可能通过NDR或其他基于异常的检测机制发现很多可疑的活动,但最后的确认还必须找到相关的文件、内存数据、注册表项、固件中的指令块等等,这些对象的明文或密文大多会最终现身于终端中,比如年中卡巴斯基所揭露的通过iMessage针对苹果手机的攻击,先监测到了一些域名的异常访问,然后才在手机上确认了攻击活动。而且,在主机层面能收集的活动细节也是最丰富的,所以通过EDR比较有机会发现针对性的未知攻击活动。

3、安全事件应急响应

组织内部有可能发生各种安全事件,其中有些事件是有针对性的,即便是流行性的活动,在这些安全事件的应急响应过程中有可能收集到一些独特的IOC数据,通常来源于攻击者适用于特定环境的数字武器以及对应的网络基础设施。

4、蜜罐

蜜罐是种非常有效地收集攻击活动的方案,特别是面向互联网的部署,可以观察到大量的自动化扫描及已知漏洞的利用攻击,通常来自种类繁多的Botnet和黑产组织,IP、域名、URL、文件等是主要的类型。

5、文件检测

NDR、EDR、蜜罐及事件响应的过程中很可能会收集到大量的文件,所以需要有一个专门的文件检测组件来执行恶意性检测,可以综合使用静态扫描和动态执行以及基于规则和基于机器学习的技术,判定文件的黑白,提取相应的网络行为,文件检测往往可以有非常高的准确度,确认过的黑文件直接就是精准的文件IOC,这类IOC不会有误报但同时也极容易失效。

6、行业或联盟的情报共享交换

绝大多数中小机构基本没有自己生产威胁情报的能力,自有的少数检测机制,包括简单的流量检测设备和防病毒软件,所看到的攻击活动相关的IOC基本也已经被专业的安全厂商所覆盖,所以来自开源或行业联盟的情报分享就显得尤为重要,通常来说行业联盟的数据质量上比完全开源的要高得多。安全厂商则各有自己独特的数据源和分析能力,组织一个数据交换联盟互相弥补视野理论上应该是个很好的想法,但由于能力和利益的不对等,实际操作起来难度很高,也只能实现有限度的交换。

7、开源采集

开源信息是威胁情报基础数据的重要来源,甚至从量来说是主要的来源,有大量的网络资源在持续地输出包括IOC在内的各类威胁情报数据,既有简单结构化的数据,也包括大量的人读威胁活动分析报告,需要使用工具抽取其中的IOC。一般来说开源信息的质量鱼龙混杂,需要做进一步的检验和分析,输出给用户的IOC应该是尽可能的准确。

8、基于已知IOC的拓展

安全厂商往往有自己独有的基础数据,比如海量历史的Passive DNS、WHOIS、沙箱日志、互联网资产数据等等,在各种来源的初始有效IOC数据输入下,通过关联分析可以扩展出大量未公开的IOC,这部分未公开的数据往往具备更长远的使用价值。

二、加工

IOC被识别出来以后,需要经过进一步的加工,才能被有效的使用,这里主要有两个环节:富化和结构化。

1、富化

当我们识别出一个IOC以后,我们需要提供更多的相关上下文信息,以使用户对匹配到的威胁有个基本的了解,这里最核心的是分类和标签,其中可以包括很多维度的属性标定:威胁的类型、严重程度、可靠度、建议的处置方法,甚至包含组织归属等信息。完善的上下文信息是组织处置威胁决策的依据:威胁类型影响处置的力度,显然的,勒索比挖矿威胁大得多,高级定向攻击比流行性的攻击危害大得多;IOC的可靠度影响使用的场景,可靠度低的只能用于分析告警场景,可靠度高的则可以直接用于阻断;IOC指向的对象,如果已经被安全机构接管(比如Sinkhole的IP和域名),那么对应的威胁已经被控制,可以降低处置的优先级。

2、结构化

IOC作为相对低层次的情报类型,主要的使用场景是供检测类型设备机读消费,所以输出的格式必须是标准化的,可以遵循国际通用的标准,比如STIX,因为早已成为正常输出的必要条件。当然,对于自己有比较完整产品线的大厂商,如果涉及海量的数据交换,为降低数据传输和处理成本,也可以设计内部的交换格式,但也必须是结构化的。

三、使用

IOC生产出来以后,就进入发挥其价值的使用阶段。

这个阶段需要关注两个方面:共享范围和应用方式。

IOC作为一种典型的威胁情报,大多应该被共享以发挥其尽可能大的价值。共享范围可以大致分为限定分享与完全公开,可以想见的,分享的范围越大,IOC保持有效的时间越短。打个不恰当的比方,IOC就像露珠一样,一见阳光就会很快蒸发消散,对应到IOC就是失去检测效用。所以,商业安全厂商提供收费的威胁情报服务,获取商业收益的同时也限制了IOC的分享范围,既让商业客户相对公众能更早的实现检测,也更使IOC能更长久地保持检测能力。

应用方式上也有两种:实时匹配与历史回溯。使用IOC数据对来自于网络和主机的各种输入各种对象执行实时的匹配产出告警,这种用法由于性能上的限制,只能覆盖IOC全量的非常小的子集,对于少数重要的IOC可以这么使用。我们推荐更好的应用方式还是历史回溯,用户存储一定时间段的待匹配对象的历史记录,利用大数据技术对一个大得多的IOC集合进行离线匹配计算,以获得最大的检测能力,同时也应该设计相应的回溯机制,保证新IOC与新老事实记录能有匹配的机会。其实回溯式检测才应该是IOC最正确的应用方式,因为基于IOC的检测本质上是对已知威胁的滞后性的检测机制,意味着实际的攻击有一定概率发生在检测启动之前,所以通过IOC来回溯历史显得更加重要。

四、失效

随着IOC的被公开,IOC的检测能力会很快失去对将来攻击的检测能力,也就是失效。

这里要注意的是失效与过期是两个概念,绝大多数足够有独特性(比如单向Hash),且不会随时间变化的IOC其实永远不会过期的,但它们会失效,意味着IOC失去了检测对应威胁行为体活动的能力,其中最主要的原因就是攻击者不再使用了,被放弃的速度取决于IOC改变的难度,也就是在痛苦金字塔(PoP, Pyramid of Pain)中的层次位置。少数类型比如IP和域名,由于可能被正常网络应用活动所重用,不仅失去检测能力还会导致误报,重用之时就是过期之日。

由于IOC即生即灭的特性,多少历史IOC存量数据其实根本不重要,但同时对威胁情报厂商的持续产出能力也就提出了极高的要求,只有在与攻击方持续的对抗中不断提升自己的检测识别能力才能的保证高价值的IOC的持续产出。

小结

IOC从产生、消费到失效,每个环节都有其经历的一系列操作,本文择其要点做了些介绍,期待行业内专家批评指正。

关于作者

汪列军 虎符智库专家 关注恶意代码分析、APT攻击事件与团伙的跟踪与挖掘,实现安全威胁情报的运营与产品化。

声明:本文来自虎符智库,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。