如何使用Deepfence检测和弥补Log4j2漏洞其影响远不止简单地应用可用补丁和重新部署应用程序那么简单。我们往往还需要及时发现并弥补生产环境和平台潜在的漏洞。下面,我将向您展示如何使用Deepfence的ThreatMapper和ThreatStryker执行此操作。DeepfenceThreatMapper(https://github.com/deepfence/ThreatMapper)作为一个开源的安全和可观察性平台,可以实现跨容器、Kubernetes、云平台、无服务器环境、VM(虚拟机)和裸机等生产环境环境和应用程序,搜索包括Log4j2在内的各种漏洞,然后根据漏洞利用的风险进行排序。也就是说,ThreatMapper通过进一步计算每个漏洞的利用率来减少扫描工具的误报,以便您可以发现和定位应用程序可能面临的最大风险。DeepfenceThreatStryker(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控制台的最易利用的漏洞报告中查看最严重的漏洞。下图显示了我在扫描演示环境后发现的最易利用的漏洞报告的上半部分。ThreatMapper不仅会突出显示风险最高的漏洞,还会显示那些可能被利用的攻击路径。您可以在图中的HAproxy后面看到Log4j容器(以文本标记供您参考)。这样就可以利用log4j2漏洞进行攻击路径。当鼠标悬停在上述攻击路径中的关键节点上时,会看到漏洞的相关信息。例如,节点deepfenceio/log4j-vulnerable-app:latest的网络攻击向量类型为TopCVE:CVE-2021-44228(攻击向量类型:网络)。攻击者可以通过端口:8080访问它。向下滚动页面,您将看到整个排名列表,所有详细信息一目了然。单击特定漏洞项时,您将能够在表格和JSON视图中向下钻取和查看详细信息。在上面的demo中,我们点击了排名第一的漏洞Log4j,查看了相关信息。目前,ThreatMapper可以提取超过50个不同的威胁源,并尽可能为用户提供每个特定漏洞的最新威胁源。此外,ThreatMapper还提供指向外部资源的链接,以便您可以获得有关漏洞的最新消息。例如,在表格视图中,您可以看到有问题的包、它所在的位置(例如它在哪个容器中运行)、CVSS(通用漏洞评分系统)分数、修复它的版本以及其他信息帮助您了解其严重性以及如何修复它。如何识别Log4j2类攻击并用ThreatStryker拦截为了发现目标系统是否存在Log4j2等最严重的可利用漏洞,需要应用临时WAF(WebApplicationFirewall,Web应用防火墙)规则对攻击者进行限制对于此类漏洞的获取和利用,也应配合开发团队优先修复这些漏洞。但俗话说:我们需要知道它是什么,更重要的是,它为什么会这样。不知道你有没有想过以下问题:攻击者是不是比你先一步?攻击者使用什么样的尝试来查找漏洞?他们找到漏洞利用的入口点了吗?他们是否使用它来横向扩展,并在您的应用程序中获得额外的控制权?你能立即阻止他们吗?ThreatStryker随时为您提供帮助。ThreatStryker以ThreatMapper执行的静态分析为基础,添加了运行时检查以识别攻击者利用潜在漏洞的企图。通常,ThreatStryker从您的应用程序中捕获两种主要类型的运行时遥测:攻击指标:通过深入捕获数据包,它能够发现各种嗅探、横向传播、命令和控制(命令与控制)、渗透和其他攻击.妥协指标:通过捕获主机上的进程和文件系统异常,它能够发现攻击者是否已成功利用这些易受攻击的组件。由于ThreatStryker的数据包捕获(https://deepfence.io/deep-packet-inspection/)功能在后台运行,因此它可以静默地从所有节点和容器中采样流量。出于本演示的目的,我手动启用数据包捕获并选择要监视的特定进程:执行此数据包捕获不需要代理或内核模块。ThreatStryker使用eBPF(译者注:扩展的BerkeleyPacketFilter,一种无需修改内核代码或加载内核模块即可在Linux内核中运行用户编写的程序的技术)来抓取流量,对其进行采样,然后将其与运行时威胁源进行匹配以识别各种类型的恶意流量。在收集到足够的流量并完成数据检查和分析后,您将看到带有以下警报的结果报告。ThreatStryker使用扩展版的Cyber??KillChain框架(https://www2.deloitte.com/content/dam/Deloitte/sg/Documents/risk/sea-risk-cyber-101-july2017.pdf),来模拟攻击行为。在意图阶段,它将事件映射到网络杀伤链中,并提供攻击类型和严重性的上下文。只需单击列表下半部分的警报,即可查看各种深入的详细信息。例如,下图是我在单击“尝试获取管理员权限”警报后看到的。下半部分有桑基图。这张图显示了恶意活动是如何随着时间的推移而发展的。这使您可以更轻松地跟踪、应用策略和了解发生的攻击。而上半部分包括表和JSON视图。它包含各种触发警报的详细信息,您可以上下滚动查看大量的演示信息,包括数据包的有效负载和违规字符串。如您所见,我在臭名昭著的${jndi:ldap字符串处停了下来,这是Log4j2攻击的签名。上面的示例显示了对入站(或入口)流量的检查。该类检查可以有效发现和报告各种利用Log4j2漏洞获取管理员权限的行为。然而,仅靠入境交通检查显然是不够的。ThreatStryker还会检查各种主机上的出站(或出站)流量和异常情况。让我们看看另一个警报——可疑的跟踪事件进程strace/bin/ls-l:23408tryingtoptrace:23409。它是在主机检查期间生成的,即:进程正在尝试执行系统跟踪。这在正常操作中很少见,表明攻击者找到了破坏容器或应用程序的方法。孤立地看,这些事件中的每一个都足以让安全人员感到震惊,并且它们表明攻击处于进化阶段。当ThreatStryker向事件添加意图和分类时,它会更进一步,将妥协指标与严重性相关联,以描述攻击如何演变以及漏洞被利用的风险如何增加。当然,您也可以使用一系列监控工具实时跟踪ThreatStryker事件日志,或者在ThreatStryker中配置安全措施,在目标达到确定性阈值时进行干预,抑制正在进行的攻击。如下图所示,在ThreatStryker的ProtectionPolicies仪表板中,您可以定义各种安全策略(包括隔离策略和网络策略等)来防止各种正在进行的攻击。您可能已经注意到,在这个演示环境中,我们没有创建或设置任何保护策略。为此,请单击“网络策略”选项卡,然后单击右上角的“添加策略”按钮。您将看到一个选项菜单,您可以在其中选择严重性、警报类型、意图类型等。然后您可以在您选择的自定义或无限期时间段内阻止入站和出站流量。当然,仅靠阻止攻击只能部分解决问题。在这方面,ThreatStryker还可以识别主机上发生的攻击事件,包括:异常的文件系统篡改、进程活动以及主机或负载已被破坏。对此,我们可以根据实际情况采取各种隔离策略,对主机进行冻结、封锁、终止或删除等操作,以防止攻击影响的进一步扩散和恶化。要创建隔离策略,请转到“保护策略”仪表板上的“隔离策略”选项卡,然后单击“添加策略”。下图是我们在演示环境中创建的示例策略。总结综上所述,作为一个开源平台,ThreatMapper可以学习应用程序的逻辑拓扑,识别潜在的易受攻击的负载,并扫描超过50种不同的威胁源,然后准确实时地为您呈现并提供有关可能的信息每个有效负载的漏洞。通过将调查结果与攻击面相关联,ThreatMapper会告诉您如何利用Log4j2等漏洞,以便您可以快速采取可行的补救措施。ThreatStryker基于ThreatMapper创建的漏洞图表和信息。通过对攻击行为的识别和攻击步骤的判断,阻断和阻止其攻陷的目标应用。参考链接:ThreatMapper和ThreatStryker的演示视频--https://go.deepfence.io/log4j2-vulnerability-detection-protectionThreatStryker的实时沙箱--https://deepfence.io/view-enterprise-sandbox/onGitHub获取完全开源的ThreatMapper--https://github.com/deepfence/ThreatMapper控件,专注于传播网络和信息安全知识和经验;持续以博文、专题、翻译等形式分享前沿技术和新知识;经常在线上和线下开展信息安全培训和讲座。
