Technical Walkthrough

使用 NVIDIA BlueField DPU 检测带外恶意软件

在网络威胁无处不在,且对于数据中心的攻击日益猖獗的时代,安全保障已成为每台机器保护用户数据的必要条件。但是,许多安全产品无法有效地防御恶意软件。此外,基于软件的安全保障会消耗本应分配给用户业务的计算和内存资源。

NVIDIA BlueField 智能网卡是一个先进的、可编程的以太网智能网卡,配备一系列 Arm 处理器核并集成了 NVIDIA ConnectX-5 网络控制器。它解决了数据中心的安全保障,同时让用户获得了应得的计算资源。

BlueField SoC 是智能网卡的核心,它在与潜在恶意软件不同且隔离的可信域中运行带外安全软件。由于安全软件运行在智能网卡的 Arm 核上,因此所有主机的计算资源均可留给用户。在这个隔离环境中,智能网卡可以安全地访问应用程序的数据来进行自检,同时避免恶意软件篡改数据,不会保留关于访问时间和访问数据的足迹。这项创新设计助力 BlueField 成为恶意软件检测和取证调查的出色解决方案。

恶意软件是恶性、隐蔽的。它可以使用隐藏技术,避免被传统软件安全解决方案检测到。这是因为通常用于检测恶意软件的数据本身就有问题。通常情况下,安全解决方案有数据采集阶段,在此阶段数据用于了解恶意软件的活动。在传统方法中,用于数据采集的软件运行在同一台被检查的机器上。如果恶意软件篡改了将要用于检测的数据,则可能无法确定是否入侵。躲避观察工具(例如,用于发现异常现象 [IOC – Indications Of Compromise] 的检测软件)的技术称为反取证技术。恶意软件可以使用相同的技术避开入侵检测系统 (IDS) 和入侵防御系统 (IPS) 的检测。

对于恶意行为的检测失败,可能发生在整个流程的任意一步。获取数据是非常关键的一步。如果用于检查的数据不可靠,则检测系统可能找不到任何 IOC,因为所有的 IOC 标志都被恶意软件隐藏了。从数据的获取方法到定义信任的级别,都有许多待解答的问题:如安全 IDS/IPS 应用程序如何获取数据?恶意软件能否篡改 IDS 获取的数据?

用于获取数据的技术有很多,而且用于分析的数据也有多种类型。在本文中,我将简单介绍一些常见的数据获取方法和数据类型,以及它们之间的关系及其缺点。

反恶意软件扫描工具

反恶意软件用于我们要长久存储的文件,也称为静态数据。我们可以在同一台计算机上运行反恶意软件来对磁盘进行分析,或从外部在另一台不相关的机器上进行分析。当从外部对未加密的磁盘进行分析时,有可能来构建文件系统树并扫描磁盘以寻找已知的 IOC。例如,通过扫描磁盘中的某个文件,可以对这个文件进行重构,并计算出一个哈希值。接着,利用不同的在线资源帮助我们来根据哈希值判断其相关的文件是否恶意。但是,如果恶意软件没有存在硬盘上,则它在文件系统上可能没有任何痕迹,导致反恶意软件扫描技术无法检测到受攻击系统。

网络入侵检测系统

大多数攻击都会在网络上留下一些痕迹。例如,从主机中窃取机密并将其发送给远程攻击者的场景。检测此类事件可以判断出哪个 IP 地址可能执行了攻击及其攻击目标。如今,大多数 IDS 和 IPS 解决方案通过观察网络来发现恶意行为。网络数据可以通过本机在本地收集,也可以从外部(例如,使用智能网卡或交换机)收集。

内存分析

运行时数据为您提供了更好的关于系统的可见性。通常通过两种方法来获取数据:侵入操作系统和不侵入操作系统。侵入方式是指一个授权的软件可以关联的操作系统中相关功能的事件和开关。例如,打开或关闭文件/ Socket 的事件将触发收集关于哪个文件或Socket被打开或关闭,以及何时被打开和关闭的数据。

另一个例子是派生一个新进程。侦测软件使用派生进程开关和执行新进程的方法来检测恶意行为。例如,它可以帮助解答新进程是否为恶意软件。正在运行的进程应该会派生新进程吗?高级的恶意软件有可能操控这些关联机制。

恶意软件检测

理想情况下,您想要从磁盘、网络和内存三个地方来收集能反映系统状态和行为状态的数据。

大多数检测技术都从网络或磁盘来检测 IOC。遗憾的是,此方法不足以应对现代恶意软件的挑战。研究人员指出,现代恶意软件“诡计多端”,并且攻击手段变得越来越高明。

例如,一些恶意软件可以在攻击系统而不再磁盘上留下任何痕迹,从而防止那些基于磁盘的检测技术发现其踪迹和恶意行为。通过网络进行攻击的恶意软件就无法完全隐藏。但是,虽然网络流量中可能包含许多受攻击标志,但在很多时候,这些网络流量是无状态的、而且数量庞大、随机性强且复杂难分析。即使发现了 IOC,也很难分析出恶意软件影响到了哪些行为。要了解恶意软件的行为和网络流量包含的正确信息,您需要更深入地分析运行时环境。

要获得恶意软件活动的 “X 光”视图,您需要在执行过程中采集数据。通过运行时数据,可以更好地洞察事件和操作,例如正在运行的进程、网络连接以及操作系统提供的各种初始值。透过运行时数据,可以更好地了解恶意软件的行为;因此,检测软件可以更准确地识别恶意活动。

采集此类数据具有挑战性。基于软件的解决方案会产生观察者效应,因为恶意软件和 IDS 均在同一域运行并共享相同的资源。恶意软件就可能操控 IDS 用于获取数据的Hook和函数,从而导致数据的不可靠和受损。与其使用可能会被恶意软件更改的Hook和函数,不如使用安全的方法从主机的物理内存(即系统的运行时执行的地方)中获取裸数据(Raw Data)。假设存在一种防篡改方法,可从主机的物理内存采集裸数据(Raw Data),则可以重建系统状态。这包括内核内存、代码和用户态环境。

从原始内存(Raw Memory )的Dump中构建的数据可以提供一个抽象来检查和检测攻击。如果发生攻击,无论是注入代码、操控进程内存、派生新进程,还是为远程攻击者打开一个新网络连接,都会表现为物理内存的变更。影响越大,内存中的失真现象越严重。

大部分的取证调查信息既包括网络数据,也包括主机物理内存中的数据。这种组合可以构建准确的系统状态副本。本文讨论一种新颖提案,就是对于主机物理内存的可靠数据获取。

带外恶意软件检测

为检测和分析恶意软件,带外设备会不定时地访问和采集数据。得益于现代计算机架构以及 PCI Express (PCIe) 设备访问主机物理内存的方式,基于硬件的数据采集方法被视为更加可靠且值得信赖的恶意软件检测方法。在大多数情况下,通过 PCIe 协议时,外围设备可以直接访问内存 (DMA) ,并对主机物理内存进行读写操作,而不会对主机上运行的软件(包括恶意软件)产生副作用。在一张PCIe卡上通过 PCIe 接口,能以每通道 8 Gbps (Gen3) 或 16 Gbps (Gen4) 的速度向主机物理内存进行读写操作。

1.入侵检测系统使用 PCIe 接口从主机物理内存读取数据。

主机物理内存被分割为多个区域,在启动时被映射到系统 RAM、IO 空间和 ROM等。大多数情况下,恶意软件攻击的数据和位置在系统的 RAM区域,这正是内核和恶意软件的活动的地方。在数据采集时,采集设备会通过读内存指令来获得 RAM 区域的物理页面。图 2 显示的是运行在 Linux Ubuntu 16.04 上的计算机的内存映射

2.IDS 所用的基于Ubuntu的主机内存映射。

该操作从 PCIe 卡上通过 PCIe 链路到达内存控制器,进而访问物理内存的权限。如图 1 所示,该操作不涉及主机上运行的软件,而是通过了一条恶意软件中不知道的路径。与基于软件的解决方案不同,这个方案不会在受检查的主机上运行任何新软件,因此不会违反取证要求。

下一步就是要确保可以分析常数。例如,访问主机物理内存中的两个页面,其中一个页面指向另一个页面。如果被指向的页面改变了它的物理地址,那么数据采集工具会读到内存中的错误页面。这是对于任何采集物理内存的工具(无论是基于硬件的还是基于软件的采集工具)都存在的风险。采集内存的时间越长,存在不一致性的可能性就越高。采集时间越短,可能发生的变化就越少,获得可靠数据的可能性就越高。

再次,基于硬件的方法以其超快的速度和更高的效率超越了相应的软件实现。例如,使用软件工具从RAM采集 64GB的数据可能需要数分钟的时间。当使用 Gen4 速率的PCIe 卡时,数据采集速度可达每通道 16 Gbps。如果设备通过 16 个 PCIe 通道连接到主机,在 Gen4速度下,数据采集速度就达到了 32 GB/s。

用于恶意软件检测的 BlueField 智能网卡

我的团队调研了 BlueField 智能网卡是否适用于实时内存取证。在研究中,我们使用了一种八个PCIe通道的 BlueField 智能网卡。采用了 Volatility 内存(Volatility Memory)取证框架,并将其扩展为支持通过 BlueField 智能网卡进行实时内存取证。Volatility 内存取证框架是一个恶意软件研究人员、取证调查人员和事件响应人员常用的知名开源框架,可以操作内存镜像文件。

Volatility 使用 Python 应用程序 (vol.py),提取进程列表、网络连接和内核模块等信息,以帮助取证人员了解恶意软件的痕迹及其行为。该框架允许开发人员和调查人员通过查看内存的Dump文件对主机进行分析。我的团队将其扩展到了使用 BlueField 智能网卡的 Arm 处理器来运行该 Volatility 框架,对主机物理内存中的恶意软件进行分析。这样一来,可以按需采集物理内存分段,进行实时内存分析。Volatility 在正常情况下处理内存文件时,有时可达 64 GB 和 128 GB。扩展程序允许采集特定用途(例如构建进程列表)所需的精选数据。

新 Volatility 插件连接到内存访问 SDK,允许使用 BlueField的 DMA 功能。该 SDK 提供不同的内存访问方式,允许快速访问内存并降低数据采集时的延迟。BlueField 智能网卡板载内存允许从主机物理内存复制数据,然后使用 Arm 核进行本地分析,而无需担心主机是否会修改这些数据。以下视频展示了 BlueField Arm 处理器运行的 Volatility 框架。

[视频缺失]

总结

攻击变得越来越隐蔽、复杂,而当前的检测和预防技术难以与之抗衡。硬件辅助的数据采集被视为采集数据以进行分析的最可靠、最值得信赖的方法。BlueField 支持硬件辅助的内存采集,可以您的服务器更安全。它支持带外入侵检测和取证调查。获得授权后,它可以快速访问主机物理内存,并将安全应用程序(例如 IDS)保护在一个隔离的环境中。BlueField 对取证调查、事件响应、恶意软件检测和入侵检测系统颇有助益。