应急响应记录之水坑挂马事件分析与恢复
字数 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)
- 设置文件变更告警
- 定期进行安全扫描和渗透测试
六、总结
水坑攻击具有高度隐蔽性和针对性,防御需要从技术和管理多个层面入手。重点在于:
- 及时发现文件异常变更
- 严格控制文件修改权限
- 建立完善的备份恢复机制
- 提高员工安全意识,不轻易下载运行不明文件
- 建立全面的安全监测体系