7

如何利用 Deepfence 来检测和弥补 Log4j2 漏洞

 2 years ago
source link: https://netsecurity.51cto.com/article/701288.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
如何利用 Deepfence 来检测和弥补 Log4j2 漏洞-51CTO.COM
如何利用 Deepfence 来检测和弥补 Log4j2 漏洞 译文
作者:Owen Garrett 2022-02-13 23:51:44
本文以实例的形式,向您展示如何使用的 ThreatMapper 和 ThreatStryker,在生产环境和平台中,实时发现 log4j2 等潜在漏洞,并予以阻断。

d82485b01e1b8c64ec3728c717da393b595ab0.jpg

作者丨Owen Garrett

译者丨陈峻

策划丨孙淑娟

与经典的 OpenSSL Heartbleed、Apache Struts 的漏洞类似,log4j2 漏洞对于以数字化为基础的企业所造成的深远影响,远不止打上可用的补丁,以及重新部署应用那么简单。我们往往还需要及时发现、并弥补生产环境与平台中的潜在漏洞。下面,我将向您展示如何使用 Deepfence 的 ThreatMapper 和 ThreatStryker,来实现这一点。

作为一个开源的安全、可观察性平台,Deepfence ThreatMapper(https://github.com/deepfence/ThreatMapper)可实现在跨容器、Kubernetes、云平台、无服务器环境、VM(虚拟机)、以及裸金属等生产环境和应用中,搜索包括 Log4j2 在内的各种漏洞,进而根据漏洞被利用的风险程度,予以排名。也就是说,ThreatMapper 通过进一步计算每个漏洞的利用率,来消减扫描工具所产生的误报,以便您发现和锁定对于应用程序可能构成的最大风险。

Deepfence ThreatStryker(https://deepfence.io/threatstryker/)则在扩展了 ThreatMapper 的基础上,通过捕获网络流量,识别攻击的特征,洞察攻击者在目标应用中的独特行为,进而通过执行预定义的安全策略,实现立即阻断。

作为一个演示环境,下面是一个存在着 Log4j2 漏洞的 Java 应用容器映像。我将向您展示攻击者是如何远程利用它,以及如何使用 ThreatMapper 和 ThreatStryker 来实时检测和防范针对 Log4j2 的攻击。

如何使用 ThreatMapper 找到最容易被利用的漏洞

请参阅链接 https://deepfence.io/visualize-attack-paths-in-production-environments-with-threatmapper/ 中的步骤 1 到 4,安装 ThreatMapper,并开始您的第一次漏洞扫描。您可以在 ThreatMapper 控制台的“最可利用漏洞(Most Exploitable Vulnerabilities)”报告中,查看到那些最严重的漏洞。

下图向您展示了,我在对演示环境进行扫描之后,发现的最容易被利用的漏洞报告的上半部分。ThreatMapper 不但突出显示了风险最大的漏洞,并显示了那些可能会被利用的攻击路径。您可以在图中位于 HAproxy 的后面,看到 Log4j 容器(已用文本标出,便于您的参考)。这便可以利用 log4j2 漏洞,开展攻击的路径。

f4a454069fb16745db45330a64905ff12ed1bb.jpg

当您将鼠标悬停在上述攻击路径中的关键节点上时,您将看到有关该漏洞的相关信息。例如,节点 deepfenceio/log4j-vulnerable-app:latest 具有 Top CVE:CVE-2021-44228 的网络攻击向量类型(Attack Vector type:network)。攻击者可以通过 Port:8080 访问到。

向下滚动页面,您将看到整张排名列表,其中各种详细信息一目了然。

654a81e565ef3313ae0573b279d35d68e1ef5d.jpg

当您单击特定漏洞项时,将能够更加深入地了解、并在表格和 JSON 视图中,查看到详细的信息。在上述演示中,我们单击了排名第一的漏洞 Log4j,并查看到了与之相关的信息。

目前,ThreatMapper 可以提取 50 多种不同的威胁源,并尽可能地为用户提供针对各种特定漏洞的最新威胁源。同时,ThreatMapper 还提供了指向外部资源的链接,以便您获取有关漏洞的最新消息。例如,在表格视图中,您可以看到存在问题的包、它所在的位置(例如它正运行在哪个容器中)、CVSS(Common Vulnerability Scoring System,通用漏洞评分系统)的评分、修复它的版本、以及其他便于您理解其严重性和修复方式的信息。

090fea931bfda6fed6e3687cff18beefb97271.jpg

如何识别 Log4j2 类攻击,并使用 ThreatStryker 予以阻止

为了发现目标系统中是否存在诸如 Log4j2 之类最严重的可利用漏洞,您需要应用临时的 WAF(Web Application Firewall,Web 应用防火墙)规则,来限制攻击者对于此类漏洞的访问和利用,同时也应当与开发团队协作,去优先修复这些漏洞。不过常言道:我们需要知其然,更要知其所以然。不知您是否考虑过如下问题:

  • 攻击者是否已经领先了您一步?
  • 攻击者在运用何种尝试来发现漏洞?
  • 他们是否已经找到了漏洞利用的入口?
  • 他们是否在使用它进行横向扩展,进而在您的应用中获得额外的控制?
  • 您是否能立即阻止他们?

对于上述问题,ThreatStryker 正好能够派上用场。ThreatStryker 建立在 ThreatMapper 执行的静态分析之上,添加了运行时(runtime)的检查功能,以确定攻击者为了利用潜在漏洞所做的各项尝试。

通常,ThreatStryker 会从您的应用程序中,捕获两种主要类型的运行时遥测数据(runtime telemetry):

  • 攻击指标:通过深度捕获数据包,它能够发现各种嗅探、横向传播、命令和控制(command-and-control)、渗透、以及其他攻击活动。
  • 危害指标:通过在主机上捕获进程和文件系统的异常,它能够发现攻击者是否已成功地利用了那些易受攻击的组件。

由于 ThreatStryker 的数据包捕获(https://deepfence.io/deep-packet-inspection/)功能运行在后台,因此它可以对来自所有节点和容器的流量,进行静默式采样。出于本演示的目的,我手动启动数据包的捕获功能,并选择需要监控的特定进程:

f2c3822129e856cae3f889e05ba7ad577324d4.jpg

执行该数据包捕获功能是不需要代理或内核模块的。ThreatStryker 使用 eBPF(译者注:extended Berkeley Packet Filter,是一种可以在 Linux 内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术)来抓取流量,对其进行采样,然后将其与运行时的威胁源进行匹配,以识别出各种类型的恶意流量。

在收集到足够的流量,并完成数据检查和分析后,您将会看到包含如下警报的结果报告。

e6b0a03518608642673401e266ad1538fa8277.jpg

ThreatStryker 使用网络杀伤链(Cyber Kill Chain)框架(https://www2.deloitte.com/content/dam/Deloitte/sg/Documents/risk/sea-risk-cyber-101-july2017.pdf)的扩展版本,来模拟攻击行为。在意图阶段(Intent Stage),它会将事件映射到网络杀伤链中,并以上下文的方式,提供攻击类型和严重程度。您只需单击下半部分列表中的某个警报,就能够看到各种深入的详细信息。例如,下图是我在单击了尝试获取管理员权限警报后,所看到的内容。下半部分有一个桑基图(Sankey Diagram)。该图显示了恶意活动随着时间变化,而推进的情况。这方便了您开展追踪,应用策略,以及获悉正在发生的攻击。而上半部分则包括了表格和 JSON 视图。它收录了各种触发警报的详细信息,您可以上下滚动,以查看包括数据包的有效负载、以及违规字符串等大量的表述信息。如图所示,我停留在了臭名昭著的 ${jndi:ldap 字符串处,它便是 Log4j2 攻击的签名。

25acf42096e0ac6cae24197ab1a166a77c6c94.jpg

上面的示例展示了针对入站(或入口)流量的检查。此类检查可以有效地发现、并报告各种利用 Log4j2 漏洞,获取管理员权限的行为。不过,光有入站流量检查显然是不够的。ThreatStryker 也会去检查出站(或出口)流量、以及各种主机上的异常情况。

让我们来查看另一个警报 --Suspicious tracing event process strace /bin/ls -l:23408 trying to ptrace:23409。它是在主机检查中产生的,即:一个进程正在尝试着执行系统追踪。这是在正常操作中并不常见的事件,它指示了攻击者已经找到了破坏容器或应用程序的方法。

56e053e89322d6e4a19962019b59e5e329ed19.jpg

孤立地看,这些事件中的每一个都足以引起安全人员的警觉,并且它们表明了攻击的演变阶段。而当 ThreatStryker 为事件添加意图和分类时,它会进一步将各项攻击指标和危害程度关联起来,以描述攻击是如何演变的,以及漏洞被利用的风险是如何增加的。

当然,您也可以使用一系列监控工具,实时跟踪 ThreatStryker 事件日志,或者在 ThreatStryker 中配置好安全措施,以便在目标达到确定性的阈值时,予以干预,并抑制正在发生的攻击。

如下图所示,在 ThreatStryker 的保护策略(Protection Policies)仪表板中,您可以定义各种安全策略(包括隔离策略和网络策略等),以阻止正在进行的各类攻击。

e11f8b46505f58d018d9327239bf3c63e9b31a.jpg

您可能已经注意到了,在该演示环境中,我们尚未创建或设置任何保护策略。为此,请单击网络策略(Network Policies)选项卡,然后单击右上角的添加策略(Add Policy)按钮。您将看到一个选项菜单,并可以在其中选择严重性、警报类型、意图类型等。

d18d8e904f71059cf6a79207e262bd68f5a695.jpg

接着,您可以在所选的时段内,自定义或无限期地阻止入站和出站流量。

745a254924db214e91f660191b3b25cc834d65.jpg

当然,仅靠阻断攻击只能部分解决问题。对此,ThreatStryker 还可以识别主机上已发生的攻击事件,包括:异常的文件系统篡改、进程活动、以及主机或负载已被攻陷等状况。对此,我们可以采用各种隔离政策,根据实际情况予以冻结、阻止、终止或删除主机,防止攻击影响的进一步传播与恶化。

若要创建隔离策略,请前往保护策略(Protection Policies)仪表板上的隔离策略(Quarantine Policies)选项卡,单击添加策略(Add Policy)。下图便是我们在演示环境中创建的示例策略。

112b96b10717f40775c028f5c1123fb4269657.jpg

综上所述,作为一个开源的平台,ThreatMapper 可以学习到应用程序的逻辑拓扑结构,识别潜在的易受攻击负载,并针对 50 多个不同的威胁源开展扫描工作,进而实时、准确地向您展示和提供有关每个负载可能存在的漏洞信息。通过将发现的结果与攻击面相关联,ThreatMapper 会告诉您,诸如 Log4j2 之类的漏洞是如何被利用的,以便您迅速采取行之有效的修复措施。

而 ThreatStryker 是建立在由 ThreatMapper 创建的漏洞图表和信息的基础上,通过识别攻击行为,判断攻击步骤,进而阻断和防范其攻陷目标应用。

  • 参考链接:
  • ThreatMapper 和 ThreatStryker 的演示视频 --https://go.deepfence.io/log4j2-vulnerability-detection-protection
  • ThreatStryker 的实时沙箱 --https://deepfence.io/view-enterprise-sandbox/
  • 在 GitHub 上获取全开源的 ThreatMapper--https://github.com/deepfence/ThreatMapper

陈 峻 (Julian Chen),51CTO 社区编辑,具有十多年的 IT 项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

责任编辑:武晓燕 来源: 51CTO技术栈
zanpc.bd208a1.pngzanpchover.fdd60ba.png
weixin.23cd8b3.png 分享到微信
weibo.16d6b4f.png 分享到微博

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK