当前位置: 首页 > news >正文

深度剖析 LNK 参数隐藏攻击 (ZDI-CAN-25373)

1、漏洞描述

ZDI-CAN-25373 是一个 Windows 快捷方式文件(.LNK)漏洞,它允许攻击者通过精心制作的恶意快捷方式文件来执行隐藏的恶意命令。攻击者通过在 .LNK 文件的 COMMAND_LINE_ARGUMENTS 结构中填充大量空白字符(如空格、水平制表符、换行符等)来隐藏恶意命令。这些填充字符使得恶意负载在 Windows UI 中不可见,从而规避了检测。

2. LNK 文件格式结构详解

Windows 快捷方式文件,也称为 Shell 链接文件(.lnk),是 Windows 操作系统使用的一种二进制文
件,用作文件、文件夹或应用程序的快捷方式。了解这些字段对于文件取证、恶意软件分析以及对 Windows 快捷方式的深入理解都非常重要。

以下是 MS-SHLLINK 文件格式的主要组成部分和关键字段介绍:

一个典型的 MS-SHLLINK 文件由以下几个主要结构组成,其中一些是必须的,一些是可选的:

  • SHELL_LINK_HEADER (必须):快捷方式文件的核心头部,包含许多重要的标志和基本信息。
  • LINKTARGET_IDLIST (可选):如果快捷方式指向一个 Shell 项(如文件、文件夹、控制面板项等),这个结构会描述其在 Shell 命名空间中的位置。
  • LINKINFO (可选):包含有关链接目标位置的详细信息,例如卷序列号、网络路径等,用于在目标移动后帮助系统找到它。
  • STRING_DATA (可选):包含各种字符串数据,如目标路径、工作目录、命令行参数、图标位置等。
  • EXTRA_DATA (可选):一个包含一个或多个额外数据块的区域,用于存储其他可选信息。

主要字段和结构详解

2.1 SHELL_LINK_HEADER

这是每个 .LNK 文件的开头部分,提供了关于快捷方式的基本属性和其后续结构的信息。

  • HeaderSize (4 字节):头的大小,通常为 0x0000004C。
  • LinkCLSID (16 字节):一个固定的 GUID,用于标识这是一个 Shell Link 文件,通常为 {00021401-0000-0000-C000-000000000046}。
  • LinkFlags (4 字节):一个位字段,包含指示文件中是否存在哪些可选结构的标志,以及快捷方式行为的各种标志。重要的标志包括:
  • HasLinkTargetIDList:指示是否存在 LINKTARGET_IDLIST 结构。
  • HasLinkInfo:指示是否存在 LINKINFO 结构。
  • HasName:指示是否存在 STRING_DATA 中的 NAME_STRING。
  • HasRelativePath:指示是否存在 STRING_DATA 中的 RELATIVE_PATH。
  • HasWorkingDir:指示是否存在 STRING_DATA 中的 WORKING_DIR。
  • HasArguments:指示是否存在 STRING_DATA 中的 COMMAND_LINE_ARGUMENTS(这在 ZDI-CAN-25373 漏洞中尤其重要)。
  • HasIconLocation:指示是否存在 STRING_DATA 中的 ICON_LOCATION。
  • IsUnicode:指示字符串数据是否为 Unicode 格式。
  • FileAttributes (4 字节):链接目标的原始文件属性(例如,只读、隐藏、系统等),与 GetFileAttributes 函数返回的值类似。
  • CreationTime (8 字节)
http://www.dtcms.com/a/263516.html

相关文章:

  • C++ Vector的使用(下)
  • 贪心算法在C++中的应用与实践
  • 基于动漫数据的可视化分析与推荐系统实现
  • Pyhton-EXCEL与Mysql数据对比
  • Monorepo+Pnpm+Turborepo
  • Vue Vue-route (1)
  • jvm的调优命令jstack打印堆栈信息阐述以及调优
  • Linux信号量
  • 基础算法合集-图论
  • 《AI的“三体进化”:数字基因与超人类思维的奇点降临》
  • Windows 11 24H2更新系统后WiFi不显示故障处理
  • AI编程实战:Cursor黑科技全解析
  • Python 数据分析与机器学习入门 (二):NumPy 核心教程,玩转多维数组
  • 【C语言】知识总结·内存函数
  • CSDN博客大搬家(本地下载markdown合适和图片本地化)
  • I/O I/O基本概念与基本I/O函数 6.30
  • Swift 实现二叉树垂直遍历:LeetCode 314 完整解析与实战示例
  • HTML之常用基础标签
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生
  • C#索引和范围:简化集合访问的现代特性详解
  • 湖北理元理律师事务所债务解法:从法律技术到生活重建
  • 使用nomachine远程连接ARM设备桌面
  • 【SpringAI】3.结构化输出,初级版
  • 大语言模型 API 进阶指南:DeepSeek 与 Qwen 的深度应用与封装实践
  • C# Winfrom教程(二)----label
  • Unity性能优化-渲染模块(1)-CPU侧(2)-DrawCall优化(2)GPUInstancing
  • StackGAN(堆叠生成对抗网络)
  • Qt Hello World 程序
  • js代码02
  • NVCC编译以及Triton编译介绍