应急响应记录之水坑挂马事件分析与恢复
字数 1035 2025-08-22 12:23:25

应急响应记录之水坑挂马事件分析与恢复

一、水坑攻击概述

水坑攻击(Watering Hole Attack)是一种针对特定目标群体的网络攻击方式。攻击者通过入侵目标经常访问的网站,植入恶意代码或篡改网页内容,当目标用户访问这些被篡改的网站时,就会触发恶意代码执行,从而达到攻击目的。

二、事件背景

客户反映用户访问应用首页时出现异常弹窗,诱导用户下载伪装成"弱口令"扫描工具的恶意文件。已有用户下载并安装,杀毒软件提示恶意文件告警。

三、攻击手法分析

1. JSP文件篡改攻击

攻击特征:

  • 攻击者篡改了login.jsp文件
  • 植入的恶意代码会在页面加载时检查是否存在特定cookie
  • 如果不存在指定cookie,则设置cookie并弹出诱导下载的窗口
  • 弹窗内容伪装成"重要通知",诱导用户点击下载恶意文件

植入代码分析:

window.onload = function() {
    function getCookie(name) {
        // cookie获取函数
    }
    if (getCookie('inself') == null) {
        // 设置cookie有效期100天
        var expires = 100;
        var exp = new Date();
        exp.setTime(exp.getTime() + expires * 24 * 60 * 60 * 1000);
        
        // 创建弹窗元素
        var div = document.createElement('div');
        div.innerHTML = '弹窗HTML内容';
        document.body.appendChild(div);
        
        // 关闭弹窗逻辑
        var back = document.getElementById("back");
        var close = document.getElementById("close");
        close.onclick = function() {
            document.cookie = "inself=true;path=/;expires=" + exp.toUTCString();
            back.style.display = "none";
            login.style.display = "none";
        }
    }
}

2. JS篡改+Flash挂马攻击

攻击特征:

  • 攻击者篡改了loginPreview.js文件
  • 创建了同名的loginPreview.js1文件作为备份
  • 植入的恶意代码会强制用户下载伪装成Flash更新的恶意程序
  • 使用base64编码的图片增加伪装性

植入代码分析:

var config = {
    downloadUrl: 'install.exe',
    cookieName: 'xxxxxx'
}

function render_installer(file_url) {
    // 创建弹窗样式
    var css = '...';
    
    // 添加样式到页面
    var head = document.head || document.getElementsByTagName('head')[0];
    var style = document.createElement('style');
    head.appendChild(style);
    style.type = 'text/css';
    
    // 创建弹窗HTML
    var htmldoc = '<div class="notice">......</div>';
    document.body.insertBefore(div, document.body.firstElementChild);
}

四、排查分析方法

1. 前端定位法

  • 通过页面显示的异常内容(如"【重要通知】")定位被篡改的文件
  • 检查相关JSP文件内容
  • 注意模板文件可能被篡改的情况

2. 文件时间戳比对

  • 检查文件修改时间,寻找异常时间点的修改
  • 对比备份文件与当前文件差异

3. 全局搜索关键内容

  • 对全量文件进行关键词搜索(如弹窗中的特定字符串)
  • 使用工具批量下载文件进行内容分析

4. 恶意文件追踪

  • 根据代码中的下载链接定位恶意文件存放位置
  • 分析恶意文件的行为和危害

五、恢复与防护建议

1. 应急恢复措施

  • 立即隔离被篡改的文件
  • 恢复干净的备份文件
  • 清除植入的恶意代码
  • 删除服务器上的恶意文件
  • 重置相关账户密码

2. 安全加固建议

  • 定期检查文件完整性(使用文件完整性监控工具)
  • 实施严格的访问控制(最小权限原则)
  • 及时修补系统漏洞
  • 部署Web应用防火墙(WAF)
  • 启用文件上传和修改的审计日志

3. 安全监测建议

  • 部署入侵检测系统(IDS)
  • 设置文件变更告警
  • 定期进行安全扫描和渗透测试

六、总结

水坑攻击具有高度隐蔽性和针对性,防御需要从技术和管理多个层面入手。重点在于:

  1. 及时发现文件异常变更
  2. 严格控制文件修改权限
  3. 建立完善的备份恢复机制
  4. 提高员工安全意识,不轻易下载运行不明文件
  5. 建立全面的安全监测体系
应急响应记录之水坑挂马事件分析与恢复 一、水坑攻击概述 水坑攻击(Watering Hole Attack)是一种针对特定目标群体的网络攻击方式。攻击者通过入侵目标经常访问的网站,植入恶意代码或篡改网页内容,当目标用户访问这些被篡改的网站时,就会触发恶意代码执行,从而达到攻击目的。 二、事件背景 客户反映用户访问应用首页时出现异常弹窗,诱导用户下载伪装成"弱口令"扫描工具的恶意文件。已有用户下载并安装,杀毒软件提示恶意文件告警。 三、攻击手法分析 1. JSP文件篡改攻击 攻击特征: 攻击者篡改了login.jsp文件 植入的恶意代码会在页面加载时检查是否存在特定cookie 如果不存在指定cookie,则设置cookie并弹出诱导下载的窗口 弹窗内容伪装成"重要通知",诱导用户点击下载恶意文件 植入代码分析: 2. JS篡改+Flash挂马攻击 攻击特征: 攻击者篡改了loginPreview.js文件 创建了同名的loginPreview.js1文件作为备份 植入的恶意代码会强制用户下载伪装成Flash更新的恶意程序 使用base64编码的图片增加伪装性 植入代码分析: 四、排查分析方法 1. 前端定位法 通过页面显示的异常内容(如"【重要通知】")定位被篡改的文件 检查相关JSP文件内容 注意模板文件可能被篡改的情况 2. 文件时间戳比对 检查文件修改时间,寻找异常时间点的修改 对比备份文件与当前文件差异 3. 全局搜索关键内容 对全量文件进行关键词搜索(如弹窗中的特定字符串) 使用工具批量下载文件进行内容分析 4. 恶意文件追踪 根据代码中的下载链接定位恶意文件存放位置 分析恶意文件的行为和危害 五、恢复与防护建议 1. 应急恢复措施 立即隔离被篡改的文件 恢复干净的备份文件 清除植入的恶意代码 删除服务器上的恶意文件 重置相关账户密码 2. 安全加固建议 定期检查文件完整性(使用文件完整性监控工具) 实施严格的访问控制(最小权限原则) 及时修补系统漏洞 部署Web应用防火墙(WAF) 启用文件上传和修改的审计日志 3. 安全监测建议 部署入侵检测系统(IDS) 设置文件变更告警 定期进行安全扫描和渗透测试 六、总结 水坑攻击具有高度隐蔽性和针对性,防御需要从技术和管理多个层面入手。重点在于: 及时发现文件异常变更 严格控制文件修改权限 建立完善的备份恢复机制 提高员工安全意识,不轻易下载运行不明文件 建立全面的安全监测体系