哥们都被打穿了,你居然还在刷抖音擦边

文摘   2024-08-01 20:58   四川  

LNK 钓鱼方法是许多网络钓鱼活动中一种经久不衰的手段,攻击者通过滥用 LNK 文件的独特属性来欺骗用户并规避检测和预防对策,使其成为危害系统和网络的有力工具。很多APT组织也是用LNK文件作为投递的主要载荷。

当然关于LNK 钓鱼方法网上资料数不胜数,但鉴于读者水平参差不齐,这里大概讲一下,算是科普吧,了解它,然后更好的防御这种攻击手段(当然,最好的办法就是别人发的东西不要瞎几把点)

简介

lnk文件是用于指向其他文件的一种文件。这些文件通常称为快捷方式文件,通常它以快捷方式放在硬盘上,以方便使用者快速的调用。lnk钓鱼主要将图标伪装成正常图标,在属性目标选项用LOLBIN执行命令

Windows GUI 会隐藏lnk文件的扩展名(以及其他 15 种文件类型)

  • .accountpicture-ms

  • .appcontent-ms

  • .appref-ms

  • .DeskLink

  • .library-ms

  • .lnk

  • .MAPIMail

  • .mydocs

  • .pif

  • .scf

  • .searchConnector-ms

  • .search-ms

  • .settingcontent-ms

  • .url

  • .website

  • .ZFSendToTarget


即使“启用显示扩展名”,文件扩展名也会被隐藏

LNK文件格式

在计算机科学的世界中,可以这样说,计算机里的一切东西==数据结构+算法,和我们熟知的PE结构一样,.lnk结构如下所示:

https://formats.kaitai.io/windows_lnk_file/windows_lnk_file.svg

从这张图可以看出主要由几个结构组成:

  • SHELL_LINK_HEADER

  • [LINKTARGET_IDLIST]

  • [LINKINFO]

  • [STRING_DATA]

  • *EXTRA_DATA

ShellLinkHeader

Shell Link Header 是 .lnk 文件的结构部分,用于访问其他组件。此标头为用户提供目标文件的位置、执行参数、图标路径等。Shell Link Header 向操作系统和用户传达有关 .lnk 文件的重要信息。



LinkTargetIDList 和 LinkInfo

LinkTargetIDList 和 LinkInfo 组件是包含 Windows .lnk 文件的目标和附加信息的重要数据结构。这些组件确保 .lnk 文件正确重定向到目标文件,并通过提供相关附加信息为用户提供更多功能。



  1. LinkTargetIDList(链接目标 ID 列表):此组件用于确定 .lnk 文件的目标。LinkTargetIDList 包含一组表示目录树的 ID 元素。每个 ID 元素代表目标文件的完整路径。此路径提供文件的位置以及定位目标的正确方法。LinkTargetIDList 表示如果目标文件更改其位置,则必须更新 .lnk 文件。

  2. LinkInfo(链接信息): LinkInfo 组件包含有关 .lnk 文件的其他信息。此信息定义有关文件目标的各种详细信息和属性。例如,它可能包括文件将在其中运行的窗口大小、启动目录或运行参数等信息。LinkInfo 确定与目标文件相关的 .lnk 文件的其他功能。

字符串数据

Windows .lnk 文件是一种存储基于文本的数据的结构。此数据包括文件的描述、标签或附加信息,可帮助用户更好地识别和管理文件。字符串数据通过提供对 .lnk 文件的更好理解来增强用户体验。



  1. NAME_STRING:包含 .lnk 文件名称的文本数据。此部分显示 .lnk 文件的名称,并帮助用户识别该文件。

  2. RELATIVE_PATH:用于以相对方式访问 .lnk 文件目标的文本数据。此部分提供 .lnk 文件到目标文件的相对路径,以便在文件移动或重新定位时保留指向该文件的链接。

  3. WORKING_DIR:包含为运行 .lnk 文件而指定的工作目录的文本数据。此部分指定 .lnk 文件的目标将运行的目录,并确保该文件将正确运行。

  4. COMMAND_LINE_ARGUMENTS:包含应传递到 .lnk 文件目标的命令行参数的文本数据。此部分提供特定于 .lnk 文件目标的设置或命令行选项。

  5. ICON_LOCATION:包含 .lnk 文件图标位置的文本数据。此部分指定分配给 .lnk 文件的图标的来源。来源可以是目标文件内的图标文件,也可以指向位于其他地方的图标文件。

额外数据

它是 Windows .lnk 文件中包含附加和特殊数据的结构。此组件扩展了 .lnk 文件的属性,定义了文件的自定义功能,并确定了文件如何与操作系统交互。ExtraData 使 .lnk 文件能够执行更复杂和可自定义的操作。

  1. EnvironmentVariableDataBlock: .lnk 文件中的结构,包含目标应用程序或进程可用的环境变量的数据。此块指定在 .lnk 文件执行期间如何使用环境变量。

  2. ConsoleDataBlock:如果将控制台应用程序指定为 .lnk 文件的目标,则此块包含有关如何设置控制台以及如何运行控制台的数据。例如,它可能包含控制台的大小、颜色设置和其他控制台属性。

  3. TrackerDataBlock: .lnk 文件用于文件或文件夹跟踪,此块包含相关跟踪数据。此块定义与跟踪功能相关的自定义设置和参数。

  4. ConsoleFEDataBlock:当远程桌面应用程序或终端服务用作.lnk 文件的目标时,此块包含确定远程控制台将使用哪种语言和字符集的数据。

  5. SpecialFolderDataBlock:如果 .lnk 文件针对某个特殊系统文件夹,则此块包含该特殊文件夹的标识信息。例如,可以在此处指定桌面、文档或程序文件等特殊文件夹。

  6. DarwinDataBlock:如果 .lnk 文件针对的是 Microsoft Installer (MSI) 管理的应用程序,则此块包含相关的 MSI 信息。此信息定义了安装和卸载应用程序的指令。

  7. IconEnvironmentDataBlock:包含与 .lnk 文件图标相关的附加数据的结构。此块包含有关分配给 .lnk 文件的图标的附加信息,例如图标的路径、图标尺寸或图标状态。

  8. ShimDataBlock:如果 .lnk 文件针对的是要通过兼容层交互运行的应用程序,则此块包含相关的兼容层数据。此数据决定了应用程序的兼容级别和自定义设置。

  9. PropertyStoreDataBlock:包含与 .lnk 文件关联的自定义属性的数据存储的结构。此块可以包含 .lnk 文件的自定义属性或元数据。

  10. VistaAndAboveIDListDataBlock:如果 .lnk 文件的目标位置是 Windows Vista 或更高版本,则此块包含相关的 IDList 数据。此块允许 .lnk 文件在 Vista 或更高版本中具有特殊功能或特性。

  11. KnownFolderDataBlock:如果 .lnk 文件针对的是已知文件夹,则此块包含该已知文件夹的凭据。此块可能包含已知文件夹的标识符和自定义设置。


利用

所以通过修改ICON_LOCATION和LinkTargetIDList我们可以创建如下武器化文件


目标(T)这里可以通过在前面添加多个空格来隐藏掉路径

因为路径变量的最大长度为 4096 个字符,但 GUI 允许设置最大值为 256,而不显示之后的内容

但是始终有办法能提取到这个字符串,那么就不得不提86matthew的一个项目:在LNK内嵌入EXE并自动执行:https://www.x86matthew.com/view_post?id=embed_exe_lnk

那么不管什么类型的钓鱼都需要做好免杀,这里推荐一款免杀生成平台

https://github.com/pumpbin/pumpbin

最后,小编想问大家,你是安服吗?你会在被R穿的情况下刷抖音吗?欢迎下方留言

老鑫安全
真正的大师永远都怀着一颗学徒的心,专注于渗透测试,红蓝对抗,漏洞挖掘等安全技术培训 B站:老鑫安全 知识星球:老鑫安全 官网论坛:https://www.laoxinsec.com