攻击的归因(Attribution)总是作为威胁分析师最为头疼的问题,这也是近半年来我时常思考的一个问题,即使我在这块并不擅长。巧合的是,最近在 Twitter 上也看到部分讨论归因的推文,我觉得有些观点还是比较认同,所以决定写一篇自己的思考。由于自身水平实在有限,只能作为浅谈来抛砖引玉了。
有趣的观点
一切源于名为Chris Rohlf的安全研究人员,其针对45名CISO 和安全主管对于攻击者归因的调查问卷统计,原文:https://struct.github.io/attacker_attribution.html。
原始推文:https://twitter.com/ihackbanme/status/1190757399637872640
原始推文:https://twitter.com/stvemillertime/status/1191009868716617728
从我来看,可能作为政府相关的情报机构、监管和执法机构最为关心归因问题,其次也许就是威胁分析或情报分析人员了吧。网络攻击和防御本来就是一场攻防双方的较量,只有参与游戏之中的人也许才会更加关心归因。
归因的层次
上一节的归因实际指的是攻击者身份的归因,所以其更为像政府、执法等机构所关注。攻击者身份的归因可能是定位到一个具体的人、组织、公司,也有可能只是攻击者拥有的设备或者 IP 地址。
这里我引用美国 DNI 在其Cyber Threat Framework的主页上介绍 Cyber Attribution 的一些观点(原文档见https://www.dni.gov/files/CTIIC/documents/ODNIAGuidetoCyber_Attribution.pdf)。
其文档第一段就说明了:
网络攻击的归因分析是困难的,但不是不可能。没有简单的技术处理或自动化解决方式来解决归因问题。
归因的判定最后会落到3个层面:
1. 初始地域来源,例如国家;2. 一个特殊的设备或网络ID;3. 相关的个人或组织,这个也是最困难的。
而对于威胁分析人员来说,大部分的归因分析主要在 TTP 层面,通过寻找历史 TTP 和当前事件 TTP 的重叠来判定攻击来源是否来源同一实体,或具有相关性。所以,在 TTP 层面探讨归因问题,往往只需要映射到一个虚拟实体即可。但是,如果数据基础足够丰富,往往也能映射到上面所说的三个层面的结论。
归因的例子
最为经典的例子我觉得应该是美国 DoJ 在2018年9月公开对朝鲜一名黑客成员和 Lazarus APT 组织的指控书,其指控书长达179页,详细阐述了调查人员如何将历史的APT 攻击事件和Lazarus APT 组织以及朝鲜黑客成员通过电子证据联系到一起,从中也可以看出其中 APT 事件调查和归因分析所基于的数据基础。
从报告内容来看,其依赖于至少长达十年的互联网历史数据的回溯能力,并还原了多个攻击事件的时间线,以及攻击者,攻击者使用的互联网资源实体,被攻击实体之间重叠的关联关系。
在报告的开头,其声明了整个分析过程所依赖的数据来源,包括:
针对攻击事件和被攻击目标的事件响应和取证证据
邮件、社交网络数据、在线互联网应用和服务数据
第三方安全厂商提供的威胁数据和分析结果
除上述明确的数据来源外,从指控书列举的分析过程和结论,推测其至少还拥有其他来源的数据,包括:
公开来源威胁情报
网络基础设施的历史信息,域名注册,动态域名注册,DNS记录等
搜索历史,包括搜索引擎,社交网络应用搜索记录等
终端设备指纹和设备访问互联网实体的记录
IP维度的访问互联网实体记录
黑客论坛,黑客技术交流社区等相关数据
安全厂商或团队的协助
除此以外,这两天韩国安全厂商发推文披露其确认了近期印度核电厂被攻击事件中攻击者所使用的设备终端和 IP 地址。
美国 DNI 在其Cyber Attribution文档中也给出了从五个不同维度分析和评估地域层面的归因判定示例。
归因的方法
这里依然首先以 DNI 的Cyber Attribution文档内容为基础进行介绍。
指标
DNI认为归因分析主要依赖于以下4个指标:
Tradecraft:攻击者在实施攻击时所遵循的模式,相当于TTP,因为偏好和习惯相对于技术工具来说更难以改变。但是值得注意的是,一旦相关技术被公开,则可能被模仿而变得不可确定。
Infrastructure:攻击者可以通过购买,租用,共享和攻击失陷来构建其通信网络。(易变的)
Malware:攻击者开发和制作的攻击武器、购买商用工具、定制公开或开源工具,甚至是模仿或盗用其他攻击组织的工具。(易变的)
Intent:攻击的意图和动机。
除了上述指标外,其也会参考外部情报源和公开情报。
方式
归因分析实际有很多种方式,包括通过 HUMINT、SIGINT 的方法,以及社工、反制等手段。这里仅仅讨论基于上述指标类型的技术性分析的基本方式和实践方法。
DNI 提及归因分析的实践方式:
Looking for Human Error:找到攻击者犯下的错误,包括遗留的测试代码、编译信息,错误配置的 C&C 服务器或有漏洞的通信协议等,这些也可以称为 OpSec error 或 OpSec mistake。
Timely Collaboration, Information Sharing, and Documentation:及时的响应和协作,也就是越早发现和响应正在发生的攻击活动越有利于归因分析,包括日志的保留、数据的恢复、内存的取证等都能为最终的结论提供帮助,事后的回溯分析总会因为数据和证据的缺失造成影响。但这一点也是比较难以完全做到的,特别是 APT 类攻击。
Rigorous Analytic Tradecraft:严谨的分析,DNI提及了应当使用Analysis of Competing Hypotheses方法来消除和降低分析的偏差。
Analysis of Competing Hypotheses(ACH,竞争假设分析)以下列举了一些参考资料供详细了解 ACH 方法:https://isc.sans.edu/forums/diary/Analysis+of+Competing+Hypotheses+ACH+part+1/22460/https://www.digitalshadows.com/blog-and-research/wannacry-an-analysis-of-competing-hypotheses/https://medium.com/@eclecticiq/how-to-structure-analysis-of-competing-hypotheses-ach-f5c15de5a4a5https://www.cia.gov/library/center-for-the-study-of-intelligence/csi-publications/books-and-monographs/psychology-of-intelligence-analysis/art11.html
归因分析是最容易因为分析师的主观意识而影响证据收集的方式和方面,最终导致结果的不准确性。任何表象的证据都可能干扰实际的判定。
那么具体是如何实现归因分析的呢, DNI提及了从三个层面:
de-layering the attribution assessment:分层评估,包括地域、人或组织、资助背景。
providing the confidence level:提供结果的可靠性级别,分为High/Moderate/Low。评估可靠性会从:证据的可靠性和及时性,逻辑联系,证据的类型(直接,间接,间接推测,上下文相关的)三个方面。有时候也会出现多种推论的情况。
Identify Gaps:在无法获得更多证据或得到确切的结论时,需要明确说明。
从我来看,归因需要从时间线的维度评估包括地域特征、语言特征、人文和宗教,甚至包括地缘政治、军事冲突、外交活动等。寻找证据的直接关联性或间接关联性,考究是攻击者犯下的错误,还是刻意制造的 False Flag(mistake or false flag)。
归因分析也就是寻找实体世界和虚拟世界的联系,并且通过结合多个维度的证据分析来消除“不确定性”。
最后
在最后也介绍下NSA 及其盟友过去在归因分析上的一些工作。
首先从一份泄露的斯诺登文档开始,名为《Pay attention to that man behind the curtain: Discovering aliens on CNE infrastructure》,其是由加拿大国防部下的通讯安全局(CSEC)的Counter-CNE部门(CCNE)的研究成果。原始链接可见https://snowdenarchive.cjfe.org/greenstone/collect/snowden1/index/assoc/HASHfcfa.dir/doc.pdf。
WARRIORPRIDE
一个CNE 平台,简称(WP),其支持多种插件用于目标主机的探测和信息收集。
其中涉及的几个插件:
Slipstream : machine reconnaissance
ImplantDetector : implant detection
RootkitDetector : rootkit detection
Chordflier/U_ftp : file identification / retrieval
NameDropper : DNS
WormWood : network sniffing and characterization
其中示例了 Slipstream收集服务和驱动信息的返回数据,以 xml 形式。(具体可以看原始 PDF,这里就不贴图了)
REPLICANTFARM
REPLICANTFARM是一个基于特征指纹的系统,用于对WP的输出进行过滤和标记,简称RF。其用于定制和管理用于特征检测的签名或模块。
其用于提取以下类型的指纹特征:
Actors
Implant技术
基于主机的特征
基于网络的特征
主要模块如下,PDF 中也示例了如何通过定义模块来过滤可疑的进程:
其内部规则是用.pl后缀文件实现,其格式为mod_数字_组织缩写_恶意代码名称.pl形态。
RF其他的签名还包括已知攻击组织的文件名,进程名,基础设施(IP、DNS),如果详细看下图,可以了解其规则库的命名,特征指纹以及跟踪的 APT 组织。
TERRITORIALDISPUTE
又称TeDi,是之前Shadowbrokers泄露的NSA windows工具包的一个模块,其和RF一样用于识别目标攻击组织。从其定义的规则类型可以判断出具体的特征类型。
除此以外,其中还存在一个 sigXX 库,每个 sigXX 代表一个攻击组织。这个曾经有国外安全厂商具体分析过,详细可见:https://www.crysys.hu/publications/files/tedi/ukatemicrysys_territorialdispute.pdf。这里就不多解释了。
声明:本文来自baronpan,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。