红队实战:突破应用白名单防御的惊险故事

本文讲述了红队如何通过定制化恶意软件和物理渗透手段,成功绕过严格的应用白名单防御策略,在企业环境中建立命令通道的完整实战过程和技术细节。

红队实战:突破应用白名单防御的惊险故事

| Joff Thyer
安全分析师、恶意软件研究员、新技术研究布道者

本文最初发表于我们的PROMPT#杂志创刊号《明智选择》。您可以在以下网址找到该期及所有其他期次:https://www.blackhillsinfosec.com/prompt-zine/

我记得有一天,一位客户(现已成为朋友)自豪地宣称,他所在组织部署的应用白名单策略非常安全、全面且经过严格审查。自然,我询问了他创建这一策略的过程。我的朋友回答说:“我们首先将所有Microsoft Windows操作系统和应用程序视为敌对对象。一切都被阻止,然后我们从零开始构建。”

我必须承认,这引起了我的兴趣。有多少组织能够承受这种强化版应用白名单的痛苦——一种先阻止所有内容,然后有选择地仅允许所需内容(包括操作系统本身)的方法?需要说明的是,我们与这位朋友已经建立了多年的关系。在我们客户关系开始时,这个人提出了正确的问题。作为回应,我们实际上提出了:“你想选择红色药丸还是蓝色药丸?“他选择了红色,并开始建立一个尽可能强大的防御计划。

几年后,我们的关系发展到进行全面的红队演练,这在我们的行业中被认为是合适的。进入红队演练时,我和队友Ethan决定,我们真的想要获得对该组织的物理访问权限,并在我们遇到的第一个机器上植入命令通道。我们认真开始了准备工作,并开始考虑要植入什么样的命令通道。

我们能做什么?在这些系统上运行任何二进制内容、任何Visual Basic脚本、宏、PowerShell和/或命令都是不可能的。我们知道这个计划已经发展了多少,并且已经被严格锁定。需要说明的是,我们谈论的是在2017年初进行的操作。现在相当广泛发布的许多当前应用白名单绕过方法在当时并不是公开知识。

当我在互联网上研究应用白名单绕过方法时,我发现了@subTee的一些Twitter帖子,并且之前遇到过他的材料,开始对主要作为GitHub gist发布的技术产生兴趣。引起我注意的是利用REGSVR32.EXE二进制文件的攻击,该二进制文件随后会加载名为"scrobj.dll"的Windows脚本运行时DLL来执行一段Jscript代码。这个攻击在同一时期以"SquiblyDoo"的绰号而广为人知。

然而,从我的角度来看,我发现从外部资源获取脚本对象是不必要的,因此我决定修改攻击。我编写了一些代码,后来称之为"WEvade”(我不擅长命名),它使用了与SquiblyDoo相同的技术,但在自定义DLL中实现,不尝试解释任何形式的脚本。相反,该攻击从文件或Web服务器读取所需的shellcode,并直接执行包含在该文件或URL中的base64编码的shellcode。

在我们测试并确保自定义恶意软件成功绕过防病毒解决方案和应用白名单后,我们开始为物理入侵做准备!在Ethan和我之间,我们配备了一个Bash Bunny和一个USB闪存盘作为备份,以防Bash Bunny因任何原因失败。

Bash Bunny是一个有趣的黑客工具,上面有一个小的Debian Linux安装,可以呈现为USB存储或人类键盘接口设备,用于快速传递恶意软件有效载荷!

终于,我们冒险的日子到来了。Ethan和我紧张地把车停在目标组织场所旁边街道的停车计时器旁。我们都手头有所有装备,以及用于与命令通道基础设施通信的蜂窝调制解调器。

在这种情况下,总是会有那种紧张的时刻,你们会进行这样的讨论:“好吧,谁将尝试进入场所并完成这项工作中令人紧张的部分?“我设法说服Ethan完成演练的那部分,所以他抓起包出发去大厅。事实证明,这是一个多租户、多楼层的建筑,因此Ethan实际上选择了一个看起来像可能在该组织工作的员工的人,并跟随他们进入电梯。后来,我们发现Ethan实际上与公司CEO一起乘电梯上楼,一路上都在闲聊。

Ethan很快发现,在正确的楼层下电梯可以直接进入该组织,所以他随意走进门,找到最近的计算机工作站,立即拿出Bash Bunny并插入。然后Ethan发现该组织的策略不允许连接人类接口风格的设备,因此他改用USB存储方法。他在使用这种机制时也遇到了麻烦,开始变得非常紧张,因为他是一个陌生面孔,在一个相当开放的办公室环境中摆弄计算机工作站!

随后我们之间发生了以下SMS交易,Ethan要求我快速部署一个带有有效载荷文件的Web服务器。整个SMS交易中最有趣的部分是当我意识到Ethan不仅仅想要一个Web服务器,而是想要一个带有有效载荷文件的Web服务器。过去我被指责"太字面化”。这一次,这是焦虑驱动的愚蠢行为。请看这里的SMS:

Ethan:[它]给我index.html Joff:是的,没错。你想要别的东西吗??

Ethan一定认为我要么完全疯了,要么在开一个时机非常糟糕的玩笑。

在战斗激烈时近乎歇斯底里且快速的节奏的红队队员SMS交流

它起作用了!我们获得了一个完全可操作的命令通道,我在楼下租车的驾驶座上做了我习惯性的"root舞蹈”。

当天晚些时候,当我们津津乐道我们的成功,大肆庆祝我们击败了应用白名单部署时,我们的联系人和朋友告诉我们,他几乎成功阻止了我们。

当然,到那时我们感到相当自大,并问那怎么可能。我的意思是,我们已经赢得了获得立足点的第一个障碍!事实证明,我们的客户部署了一个有趣的解决方案,可以检测到任何时候有任何USB存储设备连接到他的工作站之一。防御解决方案确实完成了它的工作,并提醒了他办公室的系统管理员,一个未知的USB设备已连接到该工作站。

由于安全意识很强,被提醒的系统管理员上楼到工作站隔间区域查看发生了什么。在他上楼的路上,他需要快速去洗手间,而那时Ethan已经成功并迅速离开了办公室!有趣的是,Ethan甚至在离开时遇到了系统管理员,进行了快速的眼神接触,并试图继续看起来随意地离开现场。

我想这个故事的寓意是,“当你要去的时候,嗯,你就得去,对吧?“谁会知道一个渗透测试员(又名威胁行为者)刚刚跑进门,投放了一个恶意软件有效载荷,然后从左侧退出,并凭借幸运的时机完全避免了暴露他的目的?!正如后来也发现的,Ethan甚至找到了一个屏幕未锁定的无人占用的工作站,这是幸运的。就这样结束了这个来自红队战壕的故事,通过技能和纯粹运气的结合,我们以秒为单位击败了人员、流程和技术,当然,之后还获得了大量的乐趣和笑声。

您可以直接从Joff本人那里通过他的课程了解更多: 正则表达式,您的新生活方式 企业攻击者模拟和C2植入开发 Python入门 提供实时/虚拟和点播课程!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计