近日,CrySyS实验室和Ukatemi联合发布了一份安全报告。研究人员基于“影子经纪人”泄漏的NSA数据,发现了代号为“领土争端”(Terditorial Dispute,简称TeDi)的NSA小组。这份报告显示,NSA在进行入侵行动的同时,也会在攻击目标上检测其他APT组织的痕迹,以避免多个黑客组织在同一攻击目标上互相争斗,最小化NSA行动泄漏的风险。除此之外,分析人员还在泄露的数据中发现了其他的信息,进一步揭示了NSA内部的风险控制行为。本人对该安全报告进行了翻译,将主要部分分享给大家,限于自身水平,难免有很多不妥之处,欢迎各位指出。
本报告是基于“影子经纪人”泄漏的部分特定数据完成的。这个自称“影 子经纪人”的未知组织泄漏了他们数次从 NSA 窃取数据的信息。相关内容可以参见维基百科(https://en.wikipedia.org/wiki/The_Shadow_Brokers)。
在第五次泄漏的资料中包含了一些让人非常感兴趣的模块,这部分资料被称为“领土争端”。这次泄漏的数据被普遍认为是从美国国家安全局 NSA 窃取的,因此我们将源头映射为 NSA,虽然我们对此没有证据,但是我们不会对可能的归属问题作进一步的讨论。
这次泄漏的数据不是单一的工具集,在泄漏资料中的至少有两种不同的工具集出现部分的重复。然而,目标是清楚的。这些工具被操作人员用来扫描被攻击的计算机(NSA 的攻击目标),来检查攻击目标是否已经被外部黑客入侵(国家背景的定向攻击组织)。假如外部的攻击被检测到,操作人员会被要求特别注意(在一些相关的情况下,措辞是“请后退”或者请求上级的建议)。
本次泄漏数据的规模巨大,其中有数十种不同的工具和模块,它们大部分被用来进行感染计算机、检索数据和其他类似的行为。但是其中有一些工具被设计用来获取被攻击计算机的一般性知识,特别是已经安装的软件、安全软件和恶意软件。
虽然在泄漏数据中其他的一些部分,攻击者(NSA)在寻找传统网络犯罪软件 (恶意软件)攻击的迹象,但是“领土争端”部分才是最让人感兴趣的。我们相信他们有着相同的目标:避免黑客组织之间的争斗,最小化政府组织的攻击行为被检测的风险。然而,我们专注于 APT 检测信息的工作会帮助理解这一切,NSA 对于外国政府定向攻击组织都知道些什么。
细节
这些被 NSA 用来在目标计算机上发现其他第三方黑客组织(政府角色)的工具和脚本是非常简单的。他们检查特定的文件、windows 注册表条目和其它标记的存在,这些可以表明外部攻击者(定向的、国家背景的黑客)在真实计算机上的存在。这些检查在安全界被视为 IoC,即违规指标。
对于一个 APT 攻击我们通常可以定义数十或数百个 IoC,但是 NSA 的工具通常只包含少数的 IoC,大约 1-5 个,这非常奇怪。为什么他们会信任由如此封闭的指标集合得到的信息,而不是通过多重的实验来扩大它呢?一般来说,如果我们发现了一个恶意软件,并向寻找类似的恶意软件,我们会尝试定义 5-10 个, 甚至更多不同的特征、签名来检测类似的攻击。然后,特征将被固定下来,如果在样例中发现 10 特征中的 6 个,搜索工具应该只标注那些重要的部分。同样可以代表被感染的计算机的特征:一个单一的注册表键值或者存在一个名为某种名称(例如 ipfilter.dll)的单一文件,基于这类特征来进行检测可能并不是一个好主意。但是,正如我们所提到的,“领土争端”检测非常有限数量的 IoC。
一个无关紧要的解释是虽然他们可能有更多的信息和想法用于检测,但是他们利用这个过程给操作人员尽可能少的信息。泄漏工具的操作人员可以检查源代码,因此他们可以检查内部的 IoC。所以,操作人员有机会发现关于攻击的线索。 但是一旦操作人员可以查明 SIG8 是针对伊朗核计划的攻击,谁应该如何通知他保守秘密?这是避免这类情况发生的一个好的主意:限制可用的信息,尽可能减少工具中的 IoC 的数量。不过,这里有一个问题,如果 NSA 可能也参与震网病毒之中,那为什么震网病毒被列为外部攻击(如果这些 SIG 只代表来自外部的定向攻击)? 震网病毒有可能非常的隐蔽,以至于在 NSA 中只有极少数的人知情,并且他们真的将他们自己的攻击错误地归类为外部黑客组织,由此导致震网病毒是外部组织攻击列表的一部分。
发现的命名规则也反应了这一事实。所有的这些检测都被称为 SIGX,其中 X 表示 1-45。操作人员不应该知道操作的名称,他们应该是根据计划处理情况。
如前所述,“检测引擎”,即 IoC 扫描工具是非常简单的,它们只寻找极少数的指标,并且发现一些外部敌人的感染不是不可能的,但是它们不能检测其他入侵者。这是一个非常奇怪的决定,但是也许在组织内部他们已经做了风险分析并显示存在外部组织可以窃取、使用或者泄露相关信息的风险。攻击者可能会认为限制 IoCs 在他们的工具中的出现来降低风险是一个好主意。
从这次泄漏的资料中,我们可以提取出 IoC 信息(违规指标或者用正常的措辞来说是他们寻找的东西)。但是“领土争端”模块寻找定向的 APT 攻击,并且这里有大量的公开信息已经揭露的定向攻击。该模块包含我们已经熟知的样本的检测, 正如 BME CrySys 实验室揭露的 Duqu 攻击。CrySys 实验室进行了 MiniDuke、TeamSpy、Duqu2 或其他方面的工作。 由于安全专业人员在有限范围的情况下发现了一系列有关 APT 攻击的公开信息,因此在情报社区必定有大量关于相同攻击的信息。
本次泄漏可以揭示公开信息与其他组织之间的差距(公开信息是指通过安全 社区发布的出版物,这主要是反病毒公司的贡献,以及像我们 BME CrySyS 这样的研究实验室),并且可以揭示这些组织之间知识差异的大小。大约 20 年之后才知道有多少数学专家被国家安全局聘用,后来据了解,国家安全局至少比目前公开的密码研究成果先进 10 年。但是,NSA(和其他组织)收集有关 APT 攻击的信息的领先的程度还不明晰。这次泄漏的资料帮助我们揭示在时间轴上 NSA 如何找到攻击者的痕迹以及公开的信息在相同攻击中的可用性。
请注意,互联网上所有类型的利益相关者近一年都可以看到本次泄漏的数据, 因此本报告不会为大多数政府机构增添新信息,因此我们认为这不会影响任何国家的安全。但是,在公众层面对情况的普遍理解对于避免混淆并帮助公众就政府机构的程序作出民主决定是至关重要的。相比之下,人们可以预期,如果基于泄漏信息,以前未知的 APT 攻击可能已经被揭露,甚至一些仍在使用零日漏洞的 APT 事件也可能已经由专业人员根据本次泄漏的数据来识别。此外,这是一个疑问,不公开这些由政府机构发现的能帮助避免进一步攻击的 APT 信息是否是一个好主意。
当然,共享有关正在进行的攻击的信息是可以进行辩论的。首先,共享信息可能会影响攻击者,使其改变策略和工具,因此机构不能继续密切观察他们的活动。此外,过多的揭露可能促使其他政府通过建立类似 NSA 的能力来处理类似的攻击。最后,分析共享的利弊可能会对隐藏信息产生积极的影响,因为隐藏信息应该是这些组织的默认策略。
我们工作的目标是提高大家对这个主题的兴趣,并帮助其他研究人员对结果进行研究。这意味着,我们无法检查那些由泄漏数据中的 45 个 IoC 产生的成千上万的痕迹。我们试图在最初的信息之后更进一步,并通过分享这份报告来开展研究,以扩大成果。
对于一些已知的 APT 攻击,这些发现可以扩展相关知识,例如,通过向 Stuxnet攻击添加新的已知内核驱动程序的名称。 对于一些攻击来说,目前只有很少的信息可以公开发布,但基于 IoC 的恶意软件样本,可能会发现更多信息,并且可以增加相关的公共知识, 尽管关于受害者的信息不太可能被揭露。 对于一些攻击来说,一些额外的 IoC 可以用来揭露这些攻击。因为这些痕迹在之前是不可用的,这也导致了之前 APT 研究会以非常短的报告结束,其中声明“XY 用这种攻击作为有针对性的攻击,从现在开始我们称其为 W“,就像新闻报道一样。 在一些 IoC 中,我们从来没有过任何关于针对性的攻击(APT)分类的公共知识。根据目前得到的结果,一些攻击、样本甚至数百个样本将被识别为以前一些未知或部分未知的 APT 攻击的一部分。
最初我们试图从传统的开源 OPSEC 资源收集信息,例如谷歌搜索。我们还尝试通过把 Yara 规则应用于我们的恶意软件库来收集信息,该库由至少 150 TB 的 已知恶意二进制文件组成。
当然,来自一个源的信息是从以前的结果中找到更多信息的基础; 因此我们会继续跟踪这些痕迹。然而,这信息集太广泛了,我们绝对不认同“广泛的研究”或 “充分研究”这样的标签,我们工作的部分是在做“初步研究”。
在文档的其余部分,我们主要发布链接,短信息和哈希值。这意味着,我们可能会公布下一步的步骤,推测攻击的来源以及所有可以帮助他人进一步研究的 其他信息。我们不认为我们能够或本来可以根据现有事实制作出最好的文档,所 以如果任何人在这方面做出努力,并通过他们的成果扩大公共知识,我们会非常感谢。
因此,我们很乐意帮助他人在我们的工作上发布他们的拓展。 目前的文档计划向专业人士分享信息。因此,除了公开信息(多种类型)之外,样本的哈希值也包含在结果中。这些哈希可能是部分可用的,我们并不清楚 这些发现的样本是否确实与攻击有关。
工具
“领土争端”的相关工具和其他 APT 相关信息可以在“影子经纪人”泄漏的以下文件和目录中找到:
目录 windows\Resources\TeDi\PyScripts\含有许多文件。其中三个是实用脚本,而最有趣的 python 程序是 sigs.py,它包含非常简单的“签名”(命名 为 SIG1-SIG45),它与最近几年已知和未知的 APT 活动相关联。该文件中的各个子例程是 find_01 到 find_45。
例如,find_08 与 Stuxnet 攻击相关,作为示例,子例程非常简单和简短:
一段代码可以解析缩写,’TeDi’到 Territorial Dispute,即领土争端:
除 TeDi 扫描器外,其他一些文件还包含与有针对性攻击有关的重要信息。 另一个目录 windows\Resources\Ep\Scripts\malfind 包含用于扫描 APT 攻击迹象和提取信息的单独工具:
例如,我们发现 SIG25 很可能是被称为“Dark Hotel”的 APT 攻击。相关的扫描工具是一个非常简单的脚本:
正如我们所看到的,该脚本在特定$docsandsettings\\$subkey\\Applica tion Data\\winver32.exe路径中查找文件“winver32.exe”是否存在。有趣的是,使用谷歌搜索 winver32.exe 和 Dark Hotel 之间的联系,目前没有显示任何相关的信息,所以这个链接关系可能是基于泄露信息的新发现。
相关的“get”信息收集脚本也很有趣。 例如,与 Stuxnet(SIG8)相关的脚本包含以下文件名:
如果在目标上找到一个文件,操作员可能会决定获取该文件的副本。(请注意 “DropboxAPI”调用,这很可能是文件传输的通道)。相关代码:
另一个用于扫描的工具使用带定义的外部文件来查找相关的 SIG:windows / Resources / Ep / Scripts / ifthen / gwdef_other_peeps.txt 包含大多数相同的检测规则,但格式不同。工具的截图示例:
文件 DriverList.db (windows\Resources\Ops\Databases\DriverList.db), 包含与 APT 攻击相关的驱动程序列表,以及防病毒产品驱动程序,硬件驱动程序和一些有趣的信息,例如:有关 NSA 的相关攻击工具的信息,其中包含针对操作人员的备注/命令。 一个文本格式的相似文件可以在 windows\Resources \Ops\Data\drv_list.txt 中找到,并且可以在 windows\Resources\Ep\drv_lis t.txt 发现复制文件。
驱动程序列表最有可能包含已知的 Windows 内核驱动程序,并且注释显示出与某些 APT 攻击的关联。例如,似乎“biosfix”和“bitcheck”可能与 SIG25 APT 攻击有关。从指标来看,我们认为 SIG25 是被称为“Dark Hotel”的 APT 攻击。
有关于自己的工具的注释:
“mscnsp”,“*** FORMALRITE / UNITEDRAKE ***” “mscoreep”,“*** FOGGYBOTTOM / UNITEDRAKE ***”
和其他有趣的注释:
“msfcvr32”,“***危险的恶意软件 – 尽快寻求帮助” “msrsfler”,“***未知 – 请撤回***” “wmiapvrr”, “***友好的工具 – 尽快寻求帮助” “bsdnfs”, “***立即寻求帮助***”
更多类似的注释可以在本文的末尾找到。
SIG 标记的攻击和时间线汇总表
本部分是所有SIG1-45的IoC、类型方法、相关信息等,限于篇幅,就不一一张贴于此。本部分可翻译的部分也不多,详情可以参阅报告原文。
例如,下面是SIG1的详细内容。
这可能是 Agent.BTZ,这是一个与 Waterbug/Turla 组织有关的旧式的攻击, 一般认为其是俄罗斯的黑客组织。
请使用哈希值列表检查每个文件。注意,应该会有很多假阳性。
我们根据 SIG 检测结果制定了 Yara 规则,并对我们的恶意软件库进行了扫描。该数据库包含约 150 TB 的恶意软件样本。完成扫描过程后,收集了大约 29 万个恶意软件样本。其中许多显然是误报,例如字符串 adobe.dll 可以在数千个样本中找到。
我们使用的 yara 规则是基于 IoC 的。但是,由于恶意软件样本不会包含整个路径,因此我们不得不将 IoC 转换为一些可能在恶意二进制文件中找到的字符串。
我们试图清理那些似乎很可能是误报的结果。最后,我们收集了 5162 个可能相关的样本。下表显示了此方法为每个 SIG 找到的可能的相关哈希值。
请注意,该列表并不包含每次攻击的所有已知样本(例如,Stuxnet 中存在成千上万个已知文件),它只包含那些包含 Shadow Brokers 泄漏中已知的 IoCs 的样本。
这些文件中的很多文件可能仍然是误报,但是仍然有少数几个文件可用于以前未知 APT 活动的启动详细调查并找到其他的踪迹。
带有一些基本标签的完整哈希列表附加在文本文件中以便于使用。这些标签来自 Yara 匹配规则,相关信息参见:https://github.com/Neo23x0/signaturebase。
文件 driverlist.db 包含一个 Windows 内核驱动文件列表,对于一些驱动文件附有非常有意思的注释。
何时寻求帮助 When to seek help
在某些情况下,操作人员被要求寻求帮助:
何时撤退 When to pull back
在一些情况下,操作人员被要求撤退:
内部工具
以下列出的文件可能与 NSA 自己的操作和工具有关:
英文报告的网址:https://www.crysys.hu/files/tedi/ukatemicrysys_territorialdispute.pdf
*本文作者:tempest,未经许可禁止转载