概述
远程浏览器隔离 (RBI) 是一种安全技术,近年来在保护其企业网络的大型企业中越来越受欢迎。这篇博文介绍了在进攻性评估期间成功规避了这项技术。在简要介绍该技术之后,我们分享了我们采用的 RBI 解决方案和技术时的第一手经验,这些解决方案和技术用于建立命令和控制 (C2) 到通过 RBI 产品代理流量的系统,这些系统分为三个部分:有效载荷入口、C2 出口和 RBI 旁路.然后,在这篇文章的结尾,我们分享了我们对建议将 RBI 作为现代企业的防御性产品的看法。
什么是 RBI 以及为什么要使用它?
浏览器隔离是一种安全概念,其中用户的 Web 流量被隔离在虚拟机、托管 Web 浏览器或其他某种方式中,以防止恶意活动到达最终用户;从而降低网页浏览的一般风险。目前使用的浏览器隔离有三种类型:客户端浏览器隔离、本地浏览器隔离和 RBI。顾名思义,客户端在本地主机上虚拟化浏览,在组织内运行本地,而 RBI 在云中虚拟化 Web 会话。每种类型的浏览器隔离都有不同的优缺点,但我们今天将专注于 RBI。
RBI 的一般概念相对简单。当用户打开 Web 浏览器进行网上冲浪时,他们不仅仅是从本地计算机进行浏览;相反,它们连接到云托管的虚拟化浏览器,在该浏览器中,所有 Web 内容都被渲染和执行,然后以经过净化的方式发送回最终用户(图 1)。不同的供应商以不同的方式将内容流式传输给用户,但只要说他们都做同样的事情就足够了:清理和呈现客户端 Web 流量。
RBI 的主要重点是防止用户与基于 Web 的恶意软件交互,例如跨站点脚本 (XSS)、路过式下载和各种形式的恶意 JavaScript。在这个功能中,它做得非常出色。当网页从未真正到达最终用户时,很难让用户陷入您精心设计的 HTML 走私攻击;他们的浏览器只显示像素流,而内容在单独的系统上呈现。
我们为什么关心?
此时,您可能会问自己,“我真的不做基于 Web 的攻击。我为什么要关心?好吧,我的朋友,RBI 的含义比供应商提供的表面价值要多得多。大多数 RBI 安全供应商通过额外的电子邮件保护来补充他们的解决方案,以阻止恶意软件通过用户收件箱传递,以及扫描、清理和阻止来自任何站点的恶意下载。此外,作为进攻性专业人士,您应该关心的主要问题之一是 RBI 可能会对您的 C2 流量产生深远影响。
通常不会在产品页面上宣传 RBI 会影响 C2 流量,但我们向您保证确实如此。我们处理过的大多数 RBI 解决方案都没有设置为将单个浏览器会话发送到云虚拟化主机。他们可能会提供一个链接,用户可以在其中执行此操作,但组织通常有一个代理设置,通过 RBI 发送所有 Web 流量。这意味着您的隐蔽 HTTPS C2 流量与其他所有流量一样通过相同的虚拟化主机进程发送,并导致服务器对代理的响应呈现为惰性流。正如您可能可以想象的那样,当组织使用 RBI 时,试图弄清楚为什么您的 C2 流量没有返回可能会非常令人沮丧。
如果您的下一次互动有 RBI 来保护他们的 Web 流量;你是做什么工作的?亲爱的读者,不要害怕;我们问了同样的问题,并在这里帮助您解决它。我们将建议的技术分为三类:入口、出口和旁路。Ingress 是不言自明的,但您可能想知道为什么 egress 和 bypass 是分开的。在我们看来,它们是关于 RBI 的相似但截然不同的技术。出口可以概括为使用“通过 ”RBI 解决方案进行通信的流量来回拨 C2 流量,而旁路(顾名思义)意味着我们完全通过避免 RBI 解决方案来采用不同的路线。
负载入口
通过 RBI 解决方案向客户交付有效负载时,这些解决方案的沙盒和扫描功能存在重大障碍,必须克服这些障碍才能在目标环境中执行代码。RBI 解决方案通常允许配置文件上传和下载配置文件,根据多种因素(如文件扩展名、大小、数据熵/加密、签名、网站声誉等)限制可以从网站提交或检索的文件类型。按照传统,不同的供应商以不同的方式实施这些检查,因此您需要复习目标组织正在使用什么来为您的有效载荷提供通过这些防御解决方案的最佳机会,但我们有一些通用性的建议可以帮助您。
沙盒规避和系统检查
这两个注意事项应该成为大多数 payload 的标准,但如果您还没有实现它们,则需要实现它们。利用标准技术,如质因数分解、线程休眠检查、执行环境检查/护栏(如枚举系统中的处理器)、字符串混淆、字符串构建、非终止基于条件的循环以及依赖用户输入的逻辑结构,都将帮助您完成 RBI 扫描过程。为什么?好吧,RBI 解决方案需要尝试扫描、沙盒和评估它们代理给用户的文件,而不会对用户的浏览体验造成太大的负担。浏览缓慢会导致用户不满意,而用户不满意会导致安全产品被删除。通过增加评估文件所需的时间,我们可以绕过一些默认情况下设置为失效开放状态的 RBI 产品(即,如果它们无法在足够的时间内扫描文件,也无法在沙箱中执行时检测到恶意逻辑,那么它只会让文件通过)。
防病毒检查
并非所有 RBI 产品都会优先考虑这个时间因素。有些可能只允许用户在浏览器中查看文件内容,或允许用户下载文件的经过净化的版本,其中产品会删除宏、JavaScript 或供应商认为可能可疑的任何其他内容;给用户留下一个惰性下载。其他 RBI 解决方案设置为失效关闭状态,如果无法扫描文件,则会阻止下载文件。这可能是由于加密甚至大小。例如,Cloudflare Zero Trust 默认阻止上传和下载加密、受密码保护的文件或大于 15MB 的文件,因为它无法扫描这些文件。
如果我们无法发送加密的有效负载,因为 AV 会阻止它,因为它无法扫描它,但我们也无法发送未加密的有效负载,因为它将无法通过 AV 检查并被阻止,那么我们该怎么办?根据我们的经验,在通过 RBI 解决方案交付有效负载时,使用 Caesar 密码对数据进行编码和沙箱规避检查等混淆技术已被证明是成功的。使用低熵技术进行编码时,产品通常会扫描交付的文件,因为它们没有完全加密。但是,环境检查、大型质因数分解计算和依赖于用户输入的非终止循环会阻止沙箱分析观察恶意逻辑执行,因为这些无法提供额外的输入或满足环境要求。
用户仍是弱点
RBI 解决方案带来的额外挑战意味着我们可能需要利用人为因素来成功交付有效载荷。虽然并非不可能,但以技术方式绕过 RBI 的可能性很低。然而,人们天生就好奇,就像任何好的活动一样,吸引用户将有效载荷拉到他们的系统中通常是首选的方式。
在创建用作初始投递器功能的有效负载(如 Office 文档、.pdf 文件等)时,必须为它们设计隐藏内容或模糊处理,以强制用户交互。要求用户提供的值(例如密码)才能访问内容会增加成功引爆和交付有效负载的可能性。在需要用户输入的情况下,RBI 解决方案在对有效负载进行沙盒化时不太可能提供密码或单击用户参与按钮/复选框,因此在分析过程中无法引爆任何恶意逻辑。但是,请注意如何实现密码,因为使用密码完全加密文档可能会导致文件被阻止,因为它无法扫描。如果用户看到的渲染文档在 RBI 浏览器渲染或清理版本中被模糊处理/不可读,他们将受到诱惑在本地下载该文档并执行包含的有效负载。
让我们来做一些关于 payload ingress 的演示。在本文中,我们将使用 Cloudflare 的 Zero Trust RBI 解决方案进行演示。这绝不是对 Cloudflare 产品的轻视;它做得很好,我们是它的粉丝。这恰好是我们实际上能够以合理的价格获得的解决方案,我们也认为这是一件好事,因为它们使大多数人都能合理地获得 RBI。我们不会涵盖任务的任何网络钓鱼部分,而是将其留给读者,并假设用户已经达到下载和执行我们的有效负载的程度。在这些演示期间,我们将 Mythic 框架与 Apollo 代理一起使用。
首先,我们将使用一个简单的 HTTP C2 配置文件配置,该配置使用标准的 accept 标头和用户代理(图 2)转到我们的测试 C2 域(即 HTTPS://WWW.HALFLINGHIDEOUT.COM)。
在测试有效负载时,我们可以看到在 Burp Suite 中,它通过我们的重定向器成功地回到了 Mythic(图 3)。
对于我们的初始有效负载交付,我们使用 ClickOnce 应用程序。在标准的 ClickOnce 方式中,我们单击应用程序文件,并收到应用程序运行提示安全警告的提示;单击 “Run” 开始安装(图 4)。
但是,在安装过程中,我们遇到了一条错误消息。应用程序无法检索所有文件,从而损坏了安装(图 5)。
通过深入研究细节,我们可以看到问题出在 Syncfusion.Tools.Windows.dll 文件中(图 6)。此外,我们可以在 Cloudflare 网关日志中看到,该文件因 AV 扫描失败而被阻止(图 7 和图 8)。
我们知道此文件不包含恶意内容,但如果我们检查 Cloudflare 设置上的设置,我们可以确认阻止所有无法扫描的请求的默认设置是问题所在,因为文件太大(图 9)。如果我们无法获取所有应用程序文件,我们将无法以这种方式获取我们的有效负载。如果我们深入研究文档,我们可以获得有关不可扫描文件的完整信息集(图 10)。Cloudflare 的默认设置是失效关闭。
由于我们最初的 ClickOnce 路由不起作用,让我们改变策略。我们可以将交付向量交换为带有宏嵌入的 Excel 文件 (.xlsm) 的 ISO 映像文件 (.iso)。Excel 文件经过模糊处理,并使用密码保护内容;但是,我们通过宏而不是 Excel 的标准密码保护加密来保护它。我们这样做是为了让 Cloudflare 仍然可以扫描文件,但在运行沙盒分析时,扫描程序不会通过密码提示。加载并发送所有内容后,我们可以看到我们可以下载 .iso 文件,而不是像之前的 ClickOnce 尝试那样被阻止(图 11)。
接下来,我们双击 ISO 文件并选择 “Open” 来挂载它(图 12)。然后,我们将 Excel 文件拖到桌面上,这样就没有 Windows Mark-of-the-Web(图 13)。
图 13 — Excel 导出
当我们打开 Excel 文件时,我们会看到似乎是加密的内容,并且警告询问我们是否要启用宏。内容被隐藏以吸引用户启用宏。启用宏后,系统会提示我们输入解密密码(图 14)。输入密码后,Excel 告诉我们已开始解密(图 15),最后,我们切换显示的工作表,并向用户显示内容(图 16)。在这个进程的后端,宏将我们的有效负载写入磁盘并执行它。
但是,我们仍然没有收到我们的回调。当我们查看 Burp Suite 日志时,我们看到 C2 流量没有得到我们希望的 200 响应(图 17)。然后,我们检查 Cloudflare 日志并确认 RBI 正在隔离我们的 C2 流量(图 18)。
C2 出口
第一个障碍已经过去了;我们将 payload 导入 Target Environment。现在,我们需要恢复 C2 会话。与入口部分一样,虽然一些谈话要点可能并不新鲜,但我们将介绍它们,以更好地解释 RBI 产品在目标环境中部署时如何影响 C2 流量。
HTTP 协议
我们将从通用的 HTTP(S) 通信方法开始。根据我们在 RBI 方面的经验,在制定旨在使用 HTTP 流量传出 RBI 解决方案的 C2 流量时,我们的第一个建议是省略任何 POST 请求。大多数 RBI 解决方案都实施了数据丢失防护 (DLP) 功能,以限制可以提交或发布到不同网站的数据。一些供应商要求将可以使用 PUT 或 POST HTTP 请求提交数据的网站明确列入白名单。仅 GET 的 C2 概况将有助于在获得初始立足点的初始阶段避免一些心痛;但是,一旦您有了立足点,您就可以随时扩展到 POST 请求,以尝试获得更好的 C2 流程,因为仅 GET 配置文件总体上往往更慢,并且会产生更多的事务来与 C2 服务器交换数据。
如果你的 C2 支持它,你也可以尝试使用 Web 套接字配置文件,比如 Mythic 框架中许多有效负载可用的配置文件。由于 Web 套接字目前只能在没有隔离的情况下运行,因此某些 RBI 解决方案可能默认允许它们。但是,供应商各不相同,有些供应商可能需要将可以使用 Web 套接字的已批准站点列入白名单。与本文的大部分内容一样,您最好的办法是研究您的目标正在使用哪个供应商,以便您知道如何使用这些信息来微调您的流量。
头
与许多 Web 代理和基于流量的安全解决方案一样,C2 配置文件中的标头在融入和通过方面很重要。但是,您使用的标头类型可能会改变 RBI 解决方案响应 C2 流量的方式,并可能让您轻松退出。要包含的一个初始重要标头是用户代理。请务必显式设置目标环境中应存在的基于浏览器的现代用户代理。并非所有 RBI 解决方案都会阻止这种情况,但许多解决方案会阻止与已批准的 Web 浏览器不匹配或不符合最低足够浏览器版本的用户代理的 Web 流量。
接下来,我们有 Content-Type。虽然设置 Content-Type 以尝试匹配要混合的普通 Web 流量很常见,但在处理 RBI 产品时,这可能是一个重大障碍(并且很容易解决)。许多 RBI 解决方案会查找 “text/html” 的 Content-Type,并通过隔离发送该流量,以确保用户安全浏览,这将导致我们的 C2 流量中断。如果可能,我们建议将 Content-Type 从 “text/html” 更改为 “text/html”。下面是来自 PowerShell 的两个 Web 请求的示例,一个是隔离的,另一个是检查但未隔离的(图 19 和图 20)。请求之间的唯一区别是左侧请求的 Content-Type 为 “application/json”,而右侧的请求具有 “text/html”。我们甚至成功地完全删除了 Content-Type 标头,尽管我们并不经常建议这样做,因为它会使您的流量看起来非常可疑。
饼干
我们最后一个值得一提的标头是 cookie。在 cookie 中传递 C2 流量并不是一种新的业务方式,但它可能是通过 RBI 的好方法。一些 RBI 解决方案虚拟化和流式传输网页内容,但以透明方式将 cookie 标头传递到通道的另一端以实现可用性,因为许多网站都需要 cookie 功能。与许多解决方案一样,可用性等于可滥用性。我们建议修改您的 C2 配置文件,以在 Cookie 中发送流量,并将您的会话从目标环境中获取,这是另一个可能的选项。
HTTP 身份验证
当尝试让 HTTP 流量传出 RBI 安全产品时,您必须准备好进行身份验证才能离开。许多 RBI 解决方案对出站流量实施 SAML/NTLM/Basic 身份验证,这要求负载在返回 HTTP 407“需要代理身份验证”授权消息时能够向 Web 代理进行身份验证。
有些工具不需要像其他工具那样担心这个问题。PowerShell 可以在创建 Web 请求时以本机方式使用存储的 Kerberos 票证,并且可以成为 Web 流量使用 Invoke-WebRequest for dropper 传出经过身份验证的代理的基本功能。Cobalt Strike 具有指定代理和凭证(如果已知)的本机功能。如果代理接受存储的 NTLM 凭据进行基本身份验证或 NTLM 身份验证,则它可以使用 WinInet API 在本地系统上自动使用存储的 NTLM 凭据。如果您使用的有效负载无法识别代理或不支持向出口提供凭证,则可能需要修改它们或为您的 RBI 参与选择新的 C2 框架。
重定向器
与任何 C2 渠道一样,您的重定向器设置将显着影响 RBI 解决方案对您的流量的反应。如果您使用一组严格的重写规则来筛选流向重定向器的流量,则当客户使用 RBI 时,您可能需要打开规则,因为流量经常遍历云虚拟化基础设施,而不是直接从组织的资产中传出;这是为了避免无意中阻止从客户端环境签入的新负载,因为它们来自未知地址/空间。一旦你知道流量来自哪里,你应该把规则精简到只需要允许的规则,并将其他所有内容重定向到其他地方(比如无处不在的 HTTPS://WWW.GOOGLE.COM)。
另一个关键因素是需要为您的重定向器使用信誉良好的域。我们并不意味着只使用未归类为恶意的域;你需要实际的分类。许多 RBI 解决方案将阻止未分类的站点或被归类为灰色软件的站点。不止一个 RBI 安全供应商已经开始在内部跟踪站点分类,甚至可以在用户访问新站点时为每个域开发配置文件。这使得 C2 域名必须建立良好,拥有良好的声誉,并且在新闻、金融或医疗保健网站等知名类别中被归类为值得信赖的良好历史。
最后,您可以告别任何未加密的 HTTP 流量。确保您拥有有效的 TLS 证书,因为 RBI 产品通常会阻止未加密的 HTTP 流量。同样,这里不一定有什么新内容,但您需要正确设置它,以帮助您将 C2 会话恢复到您的基础设施。
那么,为什么我们的流量以前没有通过呢?如果我们查看产品文档,我们可以找到我们现在需要的答案。我们可以在隔离文档中看到,隔离策略将应用于包含 “text/html” accept 标头的请求(图 21)。在这种情况下,确保我们的 C2 流量包括与大多数 Web 流量混合是我们的失败。
让我们更改标题并重试。我们在 Mythic 中修改 C2 配置文件上的 accept 标头,并构建一个新的有效负载(图 22)。
一旦我们在主机上获取新的有效负载并执行它,我们就可以看到流量的差异。我们的 Burp Suite 显示我们所需的 200 响应代码(图 23),Cloudflare 显示我们的流量被允许通过重定向器(图 24)。最后,我们有对 Mythic 的回调(图 25)。
RBI 旁路
虽然我们最后介绍它,但在已部署 RBI 解决方案的客户环境中建立 C2 通信的最可行方法是尽可能完全绕过这些保护。这可以通过几种不同的方式实现,具体取决于使用 DNS C2 或第三方 C2 的 RBI 实施的功能和配置。
DNS C2
许多 RBI 解决方案默认仅监控 HTTP/HTTPS 流量,并且需要显式配置 DNS 监控或完全缺乏该功能。DNS C2 通道通常会使用 UDP 流量建立成功的回传,这些流量将受到较少的审查,而不是传出代理。这需要 OPSEC 考虑,即 DNS 请求量的增加,尤其是 DNS 解析没有产生任何其他 Web 请求,可能表明泄露。
一些 RBI 解决方案声称执行 DNS 监控和检查,但这些措施的有效性因供应商而异;最终,这将取决于客户端环境的防御成熟度。根据我们的经验,DNS 流量通常要么被监控并且 C2 通信将被快速识别,要么在许多环境中根本不被监控。
第三方 C2
通过 RBI 解决方案建立新的 HTTP/S 通信通道时,新域和 IP 连接将受到任何新流量的检查。但是,常见的应用程序通常会被隐式或显式排除在 RBI 解决方案的检查之外,从而允许其流量在与服务器通信时基本上绕过隔离。这可以通过受信任的应用程序使用 GitHub 上的 C3 等项目建立 C2 通信,该项目使用 Dropbox、Google Drive、Discord 和 Slack 等第三方应用程序通过 Web 应用程序通道与团队服务器进行通信。
我们推荐的方法
如果您在下一次参与时正在处理 RBI 解决方案,并且无法事先测试您的 C2 渠道,那么您最好先尝试一下。尽管 DNS C2 回调不是持续交互的最佳选择,但它们可以提供一个很好的初始立足点,您可以使用它来慢慢扩展到 HTTP C2 通道。建立 DNS C2 立足点后,进入仅限 GET 的 HTTP C2 通道。这将是您退出的第二好机会,并且使用 DNS 备份,您将能够解决出现的问题。最后,如果 RBI 允许他们通过,您应该尝试迁移到 GET-POST HTTP C2 通道。
为什么我们仍然推荐 RBI?
与当今所有其他安全产品供应商一样,RBI 供应商将他们的产品宣传为可以解决您所有安全问题的解决方案,并且他们的产品是绝对可靠的。我们和你们中的许多人一样,以证明每个产品在某种程度上都会出错为生。这并不意味着我们不支持公司开发 RBI 解决方案。每当我们在红队参与中第一次遇到这些产品时,它们都是我们的一根大刺。它们在允许企业微调用户在 Web 上参与的网站、资源和应用程序方面做得非常出色。我们实际上是 RBI 的忠实粉丝,希望通过发布这样专注于技术的作品,更多的实体在意识到它的好处时会采用它,并且这些代理的生产商可以进一步完善他们的产品。虽然它们不是保护网络的一站式解决方案,但它们是预防和检测工具的重大进步,我们强烈建议将它们添加到深度防御解决方案和测试建议中。
原文始发于微信公众号(安全狗的自我修养):通过 RBI 获取您的Callbacks
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论