在高级持续性威胁(APT)持续演进的网络安全态势下,Google近期披露的BRICKSTORM后门以其高度的隐蔽性和持久性引发业界高度警惕。攻击者利用这款基于Go语言开发的新型后门恶意软件对各行业机构实施了长达一年以上的系统性渗透,平均驻留时间达393天。自2025年3月以来,攻击者将矛头指向法律服务、软件即服务(SaaS)提供商、业务流程外包商(BPO)和技术行业等领域。这些行业目标不仅承载海量敏感数据,更因其蕴含的独特价值而被精心挑选——可能泄漏软件源码以辅助0-day漏洞开发,其威胁深度远超传统数据窃取,旨在为构建更深远的下游攻击链奠定基础。
BRICKSTORM展现出多功能性与强大的防御规避能力:既可作为Web服务器、文件管理工具、载荷投放器、SOCKS代理中继及Shell命令执行工具,又集成了复杂的防御规避技术以实现长期潜伏。攻击者专注于入侵边界和远程访问基础设施(如利用边界网络设备中的0-day漏洞突破防线),并尤其注重在不支持终端检测与响应(EDR)的系统(如VMware vCenter/ESXi)上构建据点;通过定制化反取证脚本清除入侵痕迹,并采用动态更换C2域名与样本哈希的"换壳策略";其横向移动和数据窃取过程中采用的通信手段尤为隐秘,通过嵌套的TLS框架将恶意流量深度伪装成Cloudflare或Heroku等合法服务流量,使得基于常规签名或网络流量的监控几近失效。
虽然Mandiant已发布了基于TTP(战术、技术和过程)的狩猎指导、YARA规则及开源扫描工具brickstorm-scanner以辅助检测,但需警惕其难以覆盖快速迭代的变种样本。强烈建议具备条件的各组织系统性地评估本组织资产及环境,在黑客团伙利用BRICKSTORM后门发起的一系列入侵活动中,可能面临的威胁,并对此类APT活动开展专项威胁狩猎演练,加强边界设备防护、严格监控可疑TLS通信、提升无EDR覆盖关键系统的安全监控能力。
攻击者利用0-day漏洞从边界网络设备突破,重点入侵安全运维盲区的VMware vCenter/ESXi设备并投放BRICKSTORM后门程序,该后门通过篡改启动脚本和投放后门WebShell的方式进行持久化,通过延迟激活、混淆、动态更换C2和样本哈希、伪装合法进程、备用数据流、执行反取证清理脚本等方式规避防御,通过投放Java内存马和克隆关键虚拟机的方式窃取高权限凭据,采用DoH和嵌套TLS与C2进行隐蔽通信,支持远程执行文件操作、shell命令以及建立socks隧道,利用窃取的合法凭据进行SSH横移,旨在从开发人员和系统管理员的企业邮箱、内部代码存储Web端、远程连接开发或管理人员计算机中获取组织项目源码。
BRICKSTORM首先会监控自身是否执行,若未执行,则根据环境变量,获取适配当前系统的配置,通过os调用启动恶意进程。
样本包含一个名为wssoft的自定义恶意Go包,用于恶意软件的任务处理和连接处理。
下表列出了wssoft的三项核心功能:
功能 | 说明 |
文件管理 | 提供Web API来处理传入的文件操作命令,支持文件和目录的增删改、文件的上传和下载、文件信息和文件哈希的获取 |
命令执行 | 支持/bin/sh执行shell命令;支持通过os调用执行shell命令 |
网络隧道 | socks代理 |
当后门被激活时,会生成一个Web服务来处理POST请求传入的命令,它提供基于JSON的API,支持多种对文件或目录的操作。下图展示了文件上传的Web UI:
下表展示了后门支持的文件管理API:
API | 说明 |
/api/file/up | 使用Web表单上传文件,返回新文件信息(包括文件路径、SHA256哈希值) |
/api/file/delete-dir | 删除指定目录 |
/api/file/delete-file | 删除指定文件 |
/api/file/change-dir | 更改指定目录 |
/api/file/list-dir | 列出目录内容,返回文件信息数组,对于目录下每个文件,返回的内容与/api/file/stat类似 |
/api/file/mkdir | 创建指定目录 |
/api/file/stat | 获取指定文件信息,包括名称、大小、权限、属主/属组、是否目录标识、最近修改时间 |
/api/file/rename | 重命名指定文件 |
/api/file/get-file | 下载指定文件内容,支持从指定偏移开始 |
/api/file/put-file | 上传文件到指定路径,支持追加内容到指定路径 |
/api/file/slice-up | 分块上传大文件,经base64编码,支持从指定偏移开始覆盖或追加;若目标文件大小和md5值和将要上传的一致,则不重复上传 |
/api/file/file-md5 | 计算指定文件的md5哈希值 |
利用0-day漏洞:BRICKSTORM使用Go 1.13.5编写,它利用Go广泛的跨平台支持特性,实现多类系统,特别是传统EDR盲区设备的广泛渗透。目前已在多家制造商的Linux和基于BSD的设备上发现了BRICKSTORM的证据,并且发现可能存在潜在的Windows变种。其核心攻击链始于精准的边界突破,最终以VMware vCenter和ESXi主机为主要目标。确定初始入侵向量始终是BRICKSTORM入侵事件调查面临的一个挑战,在多数情况下,长达一年的入侵平均驻留时间远超日志保留期限,叠加攻击者使用的定制化反取证脚本,初始入侵入口已被很好地掩盖。
尽管面临这些挑战,根据Mandiant的调查,仍有证据显示攻击者利用0-day漏洞,专注于入侵边界和远程访问基础设施,特别是运维盲区设备(未纳入资产清单、缺乏安全监控、脱离集中式日志记录平台)成为理想跳板,在多个案例中,攻击者入侵边界网络设备后,利用从网络设备窃取到的凭证,横向移动至环境中的vCenter服务器。
篡改启动脚本: 为维持对受害者环境的持久化访问,攻击者通过篡改服务启动脚本(如init.d、rc.local、systemd等),确保BRICKSTORM后门在设备重启时自动激活。在多个案例中,攻击者直接使用命令行工具修改启动脚本,植入恶意启动指令。以下为在受害的vCenter服务器上捕获到的攻击命令:
sed -i s/export TEXTDOMAIN=vami-lighttp/export TEXTDOMAIN=vami-lighttp\n\/path/to/brickstorm/g /opt/vmware/etc/init.d/vami-lighttp #修改vami-lighttp服务自启动脚本,添加BRICKSTORM后门执行路径 sed -i $a\SETCOLOR_WARNING="echo -en `/path/to/brickstorm`\\033[0;33m" /etc/sysconfig/init #修改非致命性警告提示颜色,使得先执行BRICKSTORM后门
创建WebShell:攻击者会在vCenter服务器上的Tomcat服务下创建一个JSP WebShell(BEEFLUSH)。BEEFLUSH功能类似于一个后门,它可以执行基于Python的隧道工具,在攻击者创建的虚拟机与ESXi之间建立SSH隧道,绕过网络隔离策略,然后接收并执行通过HTTP 请求传递的任意系统操作命令,将输出结果返回到HTTP响应中,实现远程命令执行。
Java内存马:攻击者在运行vCenter Web界面的Apache Tomcat服务器上,安装了一个Java内存马(BRICKSTEAL)。该内存马实际上是一个恶意的Java Servlet过滤器,攻击者采用自定义dropper,动态注入内存马,无需修改配置并重新启动服务,实现了极高的隐蔽性。Servlet过滤器是Web服务器每次接收到HTTP请求时都会被调用的代码,BRICKSTEAL主要对vCenter Web登录URIs(/web/saml2/sso/*)的HTTP请求发挥作用。如果存在相关请求,BRICKSTEAL会主动解码HTTP Basic身份验证头,从中捕获可能包含的用户名和密码。由于许多组织使用Active Directory来实现对vCenter的身份验证,这使得BRICKSTEAL 可能截获到高权限的企业级凭据,而这些能够登录vCenter的用户,通常在企业的其他关键环节也拥有较高的操作权限。
虚拟机克隆:由于VMware vCenter是vSphere虚拟化平台的管理层,掌管着虚拟机的创建、快照和克隆等操作,因此成为重要的攻击目标。攻击者入侵vCenter后,直接克隆了承载关键服务(如域控、SSO、密码仓库等)的Windows Server虚拟机。这样,攻击者可以挂载克隆出的虚拟机磁盘,窃取如AD数据库(ntds.dit)中的高权限凭据。可在vCenter的VPXD日志中发现克隆操作记录。
延迟激活:部分BRICKSTORM样本内置 “延迟”计时器,该计时器会等待几个月后的一个硬编码日期,然后才开始向C2发送信号,避开安全产品的事件爆发期检测窗口。
代码混淆:部分BRICKSTORM样本使用Garble进行了混淆,下图展示了一些混淆的符号名:
避免使用重复哈希和C2:样本通过变形、加壳等方法,每次生成的恶意文件哈希不同,避免被基于哈希的IOC检测查杀。样本利用动态DNS服务,每次使用sslip.io或nip.io自动更新域名并解析到不同的C2 IP,同时自动为这些临时C2域名生成SSL证书,利用证书透明度机制的信息滞后或混淆效应,提升隐秘性,避免被IOC、域名/IP黑名单检测。
伪装:BRICKSTORM的部署旨在与目标设备融合,其命名约定被设计成伪装成合法活动。如BRICKSTORM落盘到vCenter设备的/home/vsphere-ui/vcli或/opt/vmware/sbin目录下伪装成看似合法的vami-http、pg_update、spclisten、vmp、upgrademgr进程,创建新虚拟机时使用与环境中其他虚拟机一致的命名约定。
备用数据流:某些Windows变种利用备用数据流将恶意二进制、恶意配置或用于C2通信的临时数据写入ADS中,减少在磁盘上留下的痕迹,规避基于文件的防御措施。
利用合法凭据和SSH服务:BRICKSTORM在横移过程中,主要利用已获取的合法凭据(如前期攻击阶段获取的密码库或PowerShell脚本中提取的凭据),通过SSH远程连接受害设备进行访问和控制。攻击者还可能登录ESXi Web界面或vCenter设备管理界面(VAMI),手动启用目标设备的SSH服务,为后续植入BRICKSTORM创造条件。
利用PaaS:攻击者租用或恶意注册Cloudflare Workers和Heroku应用作为C2,搭建恶意通信基础设施,用于控制受害主机或隐藏真实C2。
DoH:BRICKSTORM利用DoH(基于HTTPS的DNS)进行域名解析,DNS请求会被嵌入到加密的HTTPS通信中,常规的网络级DNS监控将被规避。下图展示了某变种创建DoH请求的逻辑:
下表展示了BRICKSTORM采用的合法DoH地址:
https://9.9.9.9/dns-query | https://9.9.9.11/dns-query |
https://1.0.0.1/dns-query | https://1.1.1.1/dns-query |
https://8.8.4.4/dns-query | https://8.8.8.8/dns-query |
https://45.90.28.160/dns-query | https://45.90.30.160/dns-query |
https://149.112.112.112/dns-query |
嵌套的TLS框架:BRICKSTORM采用嵌套的TLS框架来掩盖通信。外层使用有效证书与无服务器平台(Cloudflare Workers或Heroku)建立合法的HTTPS连接,无服务器提供商会充当反向代理,将流量代理到恶意的云服务器。中间层将HTTPS连接升级为WebSocket,然后创建一个嵌套的二层TLS连接,该连接使用BRICKSTORM配置的静态AuthKey进行身份验证。内层通过HashiCorp的Yamux库或smux库多路复用的第三个TLS会话,支持文件操作、socks隧道、命令执行等并发恶意活动,该连接使用BRICKSTORM的公钥进行身份验证。这种TLS-in-TLS的架构确保即使检查外层,内层的TLS加密流量仍是不透明的。
下图展示了BRICKSTORM采用Yamux或smux库实现多路复用:

下图展示了BRICKSTORM采用的多路复用库和嵌套的TLS通信流程:
下图展示了BRICKSTORM ATT&CK映射图谱:
尽管BRICKSTORM具备高度隐蔽性,能够有效绕过常见的网络监控和主机入侵扫描,但目前仍存在如下一些检测思路可供防御方参考:
需要注意的是,BRICKSTORM仍在快速变种演进,需持续关注其带来的新型威胁。