Elasticsearch:如何使用 Elastic 检测恶意浏览器扩展

embedded/2025/2/10 23:01:06/

作者:来着 Elastic Aaron Jewitt

当你的 CISO 询问你的任何工作站上是否安装过特定的浏览器扩展时,你多快能得到正确答案?恶意浏览器扩展是一个重大威胁,许多组织无法管理或检测。这篇博文探讨了 Elastic Infosec 团队如何使用 osquery 和 Elastic Stack 创建所有浏览器扩展和检测规则的实时清单,以及如何在工作站有已知的受损浏览器扩展时通知团队。该解决方案完全使用 osquery、Elastic Defend 集成和 Elastic Stack 中的 SIEM 功能构建。

针对浏览器扩展的威胁行为者

威胁行为者越来越关注针对浏览器扩展程序来窃取信息或危害用户,甚至一些威胁行为者直接针对合法扩展程序的开发人员,目的是添加恶意代码。

有了足够的权限,浏览器扩展程序就可以查看或更改你使用浏览器访问的任何网站上的任何信息,并收集传递给网站的敏感信息,例如用户名、密码或银行帐户信息。扩展程序可以访问并窃取任何网站存储的身份验证令牌。他们甚至可以改变网站内容,通过社会工程手段诱使用户下载恶意软件到他们的工作站,比如改变链接的目的地。

业务挑战

管理企业中的浏览器扩展带来了一些复杂的挑战。

  • 扩展程序是根据浏览器内的配置文件进行安装的。
  • 工作站上的每个用户帐户可以在每个浏览器中拥有多个不同的配置文件,例如个人配置文件和工作配置文件。
  • 通常,工作站会具有五个或更多不同的用户配置文件 — — 每个配置文件都有自己安装的一组扩展。

有一些选项,例如托管浏览器可以通过创建扩展的允许或阻止列表来控制公司配置文件的安装扩展,但这些解决方案不会管理这些工作站上的非公司配置文件。如果用户从个人资料登录工作系统,公司工作站上的个人浏览器扩展仍然会给你的公司带来风险。另一个风险情况是个人扩展程序可能会动态更改点击链接的目的地,导致用户将恶意文件下载到其工作系统中。

在 Kibana 中部署和管理 osquery

osquery 是一个开源代理,适用于几乎所有现代操作系统(OS)。它将每个操作系统视为一个关系数据库,其中包含表,你可以查询这些表来收集有关系统当前状态的信息。你可以查询模式中的 200 多个表以获取信息,例如正在运行的进程;已安装的浏览器扩展; Python 库;装载了docker容器;加载内核模块;打开网络连接;连接的 USB 设备;等等。

在 Elastic,我们使用自己的 XDR 功能保护所有工作站,其中包括将 Elastic Agent 部署到所有工作站以进行分布式保护和响应。 Elastic Security 的一大优势是能够使用 Kibana 中的 Osquery Manager 集成轻松地将 osquery 部署到你的端点并进行管理。 osquery 集成包含在基本许可证中 —— 在你的代理群中部署它无需额外的许可费用。

更多有关 osquery 的阅读,请参阅文章:

  • Security:osquery 介绍

  • Elasticsearch:使用 osquery 和 Elastic Stack 来监控你的端点

使用 osquery 和 Elastic 的优势

Elastic Defend 和其他端点检测和响应 (EDR) 代理可以从工作站传输实时进程、网络和文件日志。但是这些审计日志无法告诉你有关操作系统状态的所有信息,例如已安装的浏览器扩展。这就是 osquery 的用武之地。它让我们捕获工作站当前状态的快照,以便我们知道用户拥有哪些 Chrome 扩展程序。

只需在 Kibana 中单击几下,你就可以将 osquery 部署到所有工作站,并直接在 Elastic Stack 中管理和查看查询 - 使用 Kibana 管理 osquery 时不需要额外的基础设施。将 osquery 与 Elastic 结合使用的另一个优点是,所有查询的结果都会立即被纳入 Elasticsearch 索引中,并可用于各种用例。将结果导入到你的 Elastic Stack 中还可以为你提供查询的历史时间线,你可以使用该时间线查看系统在一段时间内硬件和软件发生的更改。

有关在 Elastic 中使用 osquery 的更多信息,请查看 osquery 文档指南。

在 Elastic 中使用 osquery

在 osquery 中,有两种方式运行查询 - 立即作为实时查询或作为 osquery 所称的查询包的定期调度的查询组的一部分。

实时查询 - Live query

实时查询将针对一个或多个主机运行单个查询。实时查询是在测试期间构建和优化查询或在调查期间寻找特定指标的好方法。在 Elastic 中选择运行实时查询的主机时,你可以单独选择主机、按队列策略选择所有主机或按操作系统选择。如果在运行实时查询时代理处于离线状态,则如果代理在接下来的 60 分钟内上线,它将保持排队状态;否则将被清除。 Elastic 版本的 osquery 的一个功能是保存的查询。此功能可以轻松地预先配置常用的复杂查询,然后其他团队成员可以使用这些查询。

查询包 - Query pack

查询包是计划以不同间隔运行的预配置查询的集合。包中的每个查询都可以指定它将在哪个操作系统平台上运行,因此单个包可以在具有多个操作系统的策略上安全地使用。查询包可以作为 .json 文件导出和导入,以便你在 Kibana 中快速添加包。 osqery 提供了一些示例包供你使用,或者你可以尝试我们用来清点浏览器扩展的 browser_monitoring 包。

使用 osquery 创建所有扩展的清单

Elastic Infosec 团队已将 browser_monitoring 包配置为我们所有工作站上每六小时运行一次,以创建所有浏览器扩展的清单。我们每六个小时运行一次查询,因为 Elastic 是一家全球分布的公司,我们无法预测用户的工作时间。

browser_monitoring 查询包

由于多个用户配置文件带来的复杂性,收集浏览器扩展信息的查询需要 JOIN 运算符将 users 表连接到扩展表。 JOIN 运算符将使用两个表中都存在的公共字段将两个表组合在一起。在这种情况下,它是用户 ID uid 字段。

SELECT * FROM users JOIN chrome_extensions USING (uid)

还可以直接在 osquery UI 中查看包查询的结果,并通过链接在 Kibana Discover 或 Lens 中打开每个查询的结果。

browser_monitoring 结果视图

所有查询的结果都直接存储到 logs-osquery_manager.result* 索引模式中。可以使用 action.id 字段找到计划包查询的结果。对于打包结果,该字段遵循 pack_{pack_name}_{query_name} 的命名约定。我们正在使用一个名为 browser-monitoring 的包和一个名为 chrome_extensions 的查询。要查看此查询的结果,你可以查询action_id:“pack_browser-monitoring_chrome_extensions”。

在 Discover 中查看 osquery 的结果时,你将看到 osquery 模式表中的每个字段都使用 osquery.* 字段名进行索引。在查看有关 Chrome 扩展程序的信息时,我们最常用的字段是 osquery.identifier、osquery.name、osquery.permissions、osquery.profile 和 osquery.version。

示例查询结果

以下是 chrome_extension 查询响应中可用字段的完整列表:

  • osquery.identifier 是每个扩展的唯一标识符。通过此标识符,你可以在 Google Chrome 网上应用店中找到该扩展程序,或者使用 Secure Annex 或 crxaminer.tech 等服务查找该扩展程序的信誉分数。
  • osquery.name 是 Chrome 网上应用店和浏览器中显示的扩展程序的名称。
  • osquery.profile 是安装该扩展程序的 Google Chrome 配置文件。用户在单用户帐户中拥有多个不同的 Chrome 配置文件是很常见的。
  • osquery.permissions 是授予扩展的权限。该字段可用于过滤被授予危险权限的扩展,例如查看或修改每个网站的请求的权限。密切关注任何具有权限的扩展,例如 https://*/* ,它授予扩展对你访问的每个 https 网站的访问权限。
  • osquery.version 是扩展的安装版本。在某些情况下,扩展程序可能有一个你想要删除的受损版本。
  • osquery.update_url 是扩展用来检查任何更新的 url。如果此值不是标准更新路径 https://clients2.google.com/service/update2/crx,则表示扩展已被 “sideloaded - 侧载” 或以标准网络商店以外的某种方式安装,应进行调查。

另一个非常重要的 osquery 表是 chrome_extension_content_scripts。该表包含有关扩展所使用的每个 javascript 文件的信息。如果发现主机上存在受到感染的扩展,则可以使用该表中的 osquery.path、osquery.match 和 osquery.script 字段来查找扩展运行的每个脚本的完整路径。利用这些信息,你可以使用 Elastic Defend 的响应操作功能下载这些文件进行离线分析。

创建不良扩展的检测规则

现在你已拥有所有浏览器扩展的实时清单,你可以构建检测。最直接的检测方法是针对已知的坏扩展进行检测。已知的不良扩展列表可能来自包含已知标识符和版本的威胁情报(threat intelligence)报告。在这个例子中,我们将使用最近报道的 Cyber​​haven 扩展入侵活动的威胁情报。报告底部是指向 IOC 集合的链接,其中包含已知恶意扩展的名称、ID 和版本。

NameIDVersion
VPNCitynnpnnpemnckcfdebeekibpiijlicmpom2.0.1
Parrot Talkskkodiihpgodmdankclfibbiphjkfdenh1.16.2
Uvoiceoaikpkmjciadfpddlpjjdapglcihgdle1.0.12
Internxt VPNdpggmcodlahmljkhlmpgpdcffdaoccni1.1.1
Bookmark Favicon Changeracmfnomgphggonodopogfbmkneepfgnh4.00
Castorusmnhffkhmpnefgklngfmlndmkimimbphc4.40
Wayin AIcedgndijpacnfbdggppddacngjfdkaca0.0.11
Search Copilot AI Assistant for Chromebbdnohkpnbkdkmnkddobeafboooinpla1.0.1
VidHelper - Video Downloaderegmennebgadmncfjafcemlecimkepcle2.2.7
AI Assistant - ChatGPT and Gemini for Chromebibjgkidgpfbblifamdlkdlhgihmfohh0.1.3
TinaMind - The GPT-4o-powered AI Assistant!befflofjcniongenjmbkgkoljhgliihe2.13.0
Bard AI chatpkgciiiancapdlpcbppfkmeaieppikkk1.3.7
Reader Modellimhhconnjiflfimocjggfjdlmlhblm1.5.7
Primus (prev. PADO)oeiomhmbaapihbilkfkhmlajkeegnjhe3.18.0
Tackker - online keylogger toolekpkdmohpdnebfedjjfklhpefgpgaaji1.3
AI Shop Buddyepikoohpebngmakjinphfiagogjcnddm2.7.3
Sort by Oldestmiglaibdlgminlepgeifekifakochlka1.4.5
Rewards Search Automatoreanofdhdfbcalhflpbdipkjjkoimeeod1.4.9
Earny - Up to 20% Cash Backogbhbgkiojdollpjbhbamafmedkeockb1.8.1
ChatGPT Assistant - Smart Searchbgejafhieobnfpjlpcjjggoboebonfcg1.1.1
Keyboard History Recorderigbodamhgjohafcenbcljfegbipdfjpk2.3
Email Huntermbindhfolmpijhodmgkloeeppmkhpmhc1.44
Visual Effects for Google Meethodiladlefdpcbemnbbcpclbmknkiaem3.1.3
Cyberhaven security extension V3pajkjnmeojmbapicmbpliphjmcekeaac24.10.4
GraphQL Network Inspectorndlbedplllcgconngcnfmkadhokfaaln2.22.6
GPT 4 Summary with OpenAIepdjhgbipjpbbhoccdeipghoihibnfja1.4
Vidnoz Flex - Video recorder & Video sharecplhlgabfijoiabgkigdafklbhhdkahj1.0.161
YesCaptcha assistantjiofmdifioeejeilfkpegipdjiopiekl1.1.61
Proxy SwitchyOmega (V3)hihblcmlaaademjlakdpicchbjnnnkbo3.0.2
ChatGPT Applbneaaedflankmgmfbmaplggbmjjmbae1.3.8
Web Mirroreaijffijbobmnonfhilihbejadplhddo2.4
Hi AIhmiaoahjllhfgebflooeeefeiafpkfde1.0.0

使用此 IOC 列表,有两种不同的方法来构建检测。最简单的方法是使用这些 ID 和版本值来构建单个大型 Elasticsearch 查询,该查询查看 osquery 数据中任何这些扩展标识符和版本,并使用 OR 运算符链接在一起。例如:

action_id: pack_browser-monitoring_chrome_extensions AND ((osquery.identifier: "nnpnnpemnckcfdebeekibpiijlicmpom" AND osquery.version:	"2.0.1") 
OR(osquery.identifier: "kkodiihpgodmdankclfibbiphjkfdenh" AND osquery.version:	"1.16.2")  
OR(osquery.identifier: "oaikpkmjciadfpddlpjjdapglcihgdle" AND osquery.version:	"1.0.12")
)

如果你使用我们的其中一种威胁情报集成(threat intelligence integrations)将威胁情报源提取到你的 Elastic Stack,则可以使用指标匹配规则类型(indicator match rule type)创建此规则的更动态版本。指标匹配规则比较两个不同索引模式中的字段,当这些字段匹配时会触发警报。如果你的威胁源支持 Google Chrome 扩展程序 ID 和版本,则可以创建一个指示器匹配规则,当已安装的 Chrome 扩展程序 ID 和版本与已知的恶意扩展程序匹配时,该规则会向你发出警报。

以下是指标匹配规则的示例配置。指标索引字段名称将根据所使用的威胁情报平台而改变。

指标匹配规则配置示例

这种方法的优点是,每次发布或更新新的已知不良扩展列表时,不需要手动更新检测规则。一旦新的指标添加到你的威胁情报索引中,你将立即收到警报。

尝试一下

威胁行为者将继续使用 Chrome 扩展程序来窃取有价值的信息和目标系统。如果你无法查看工作站上安装的扩展程序,则无法保护用户免受此攻击媒介的侵害。使用 osquery 和 Elastic,你可以管理和降低企业的整体风险,并通过浏览器扩展的可见性和警报,而无需额外的许可费用。

你可以免费试用 Elastic Cloud 14 天,亲自尝试一下。

要查看浏览器扩展程序如何在实际攻击中使用的例子,请查看《超越恐惧:解构 Elastic Security Labs 的 BANSHEE 信息窃取程序》。

本文中描述的任何特性或功能的发布和时间均由 Elastic 自行决定。任何当前不可用的特性或功能可能无法按时交付或根本无法交付。

原文:How to detect malicious browser extensions using Elastic | Elastic Blog


http://www.ppmy.cn/embedded/161192.html

相关文章

redis的数据结构介绍(string

redis是键值数据库,key一般是string类型,value的类型很多 string,hash,list,set,sortedset,geo,bitmap,hyperlog redis常用通用命令: keys: …

docker环境下部署face-search开源人脸识别模型

由于我们是直接将face-search部署在docker容器中的,所以,在部署之前一定要检查一下自己的docker环境,要不然部署过程中会出现各种各样的问题 我这里的docker环境是 一、安装docker环境 如果docker版本比较低或者docker-compose的版本比较低的情况下,部署的时候docker的yml…

思科模拟器配置VRRP-详细

VRRP的状态: standby 待命状态 speak 发言 active 激活 VRRP基础配置案例 网络图 R1配置命令 Router>enable Router#conf t Router(config)#hostname R1 R1(config)#int g0/0 R1(config-if)#no shutdown R1(config-if)#ip add 192.168.10.251 255.255.255…

SQL精度丢失:CAST(ce.fund / 100 AS DECIMAL(10, 2)) 得到 99999999.99

当你使用 CAST(ce.fund / 100 AS DECIMAL(10, 2)) 进行计算并转换时得到 99999999.99 这个结果,可能由以下几种原因导致: 1. DECIMAL 类型精度限制 DECIMAL(10, 2) 表示总共可以存储 10 位数字,其中小数部分占 2 位。这意味着整数部分最多只…

STM32的HAL库开发---高级定时器

一、高级定时器简介 1、STM32F103有两个高级定时器,分别是TIM1和TIM8。 2、主要特性 16位递增、递减、中心对齐计数器(计数值:0~65535)16位预分频器(分频系数:1~65536)可用于触发DAC、ADC在更新事件、触发事件、输入捕获、输出比较时,会产生中断/DMA请…

MOSSE目标跟踪算法详解

1. 引言 MOSSE算法(Multi-Object Spectral Tracking with Energy Regularization)是多目标跟踪领域的一座里程碑式成果,被认为是开创性的工作,为后续研究奠定了重要基础。该算法通过创新性地结合频域特征分析与能量正则化方法&am…

MapReduce是什么?

MapReduce 是一种编程模型,最初由 Google 提出,旨在处理大规模数据集。它是分布式计算的一个重要概念,通常用于处理海量数据并进行并行计算。MapReduce的基本思想是将计算任务分解为两个阶段:Map 阶段和 Reduce 阶段。 Map 阶段&a…

基于Hexo实现一个静态的博客网站

原文首发:https://blog.liuzijian.com/post/8iu7g5e3r6y.html 目录 引言1.初始化Hexo2.整合主题Fluid3.部署评论系统Waline4.采用Nginx部署 引言 Hexo是中国台湾开发者Charlie在2012年创建的一个开源项目,旨在提供一个简单、快速且易于扩展的静态博客生…