EmbedExeLnk – 在 LNK 中嵌入 EXE 并自动执行

我在野外看到了各种恶意LNK文件。这些链接文件通常执行下载外部有效负载的脚本(Powershell,VBScript等)。

我给自己设定了一个挑战,即创建一个嵌入了 EXE 文件的 LNK 文件,而无需外部下载。

这是通过创建一个 LNK 文件来实现的,该文件末尾附加了 EXE 文件。LNK 文件执行一些 Powershell 命令以从 LNK 末尾读取 EXE 的内容,将其复制到 %TEMP% 文件夹中的文件,然后执行它。

我开发了一个从目标EXE文件创建LNK的程序。

此方法遇到了一些问题:

1.查找LNK文件的文件名。
执行Powershell命令以从LNK中提取EXE时,我们不知道已执行的LNK文件的文件名。我们可以对文件名进行硬编码,但这不是一个可靠的修复程序。通过将 LNK 文件的总大小存储在 Powershell 命令中并选中所有 * 来解决此问题。LNK 文件,以查找文件大小匹配的文件。

2. 查找 LNK 中 EXE 数据的偏移量。
通过在Powershell命令中存储原始LNK文件的长度(不包括附加的EXE数据)来解决此问题。

3. 查看 LNK 文件的“属性”时,可以看到 Powershell 命令。
此问题已通过在目标字段前面加上 512 个空格字符来修复。这会溢出“属性”对话框中的文本字段,仅显示空格。

4. LNK 文件有一个可执行文件图标。
此问题已通过将图标位置(使用 HasIconLocation 标志)设置为“%windir%\system32\notepad.exe”来修复。

5. 将鼠标悬停在 LNK 文件上会将位置显示为“cmd”。

此问题已通过将快捷方式描述(使用 HasName 标志)设置为“类型:文本文档\n大小:5.23 KB\n修改日期:01/02/2020 11:23”来修复。

6. 在十六进制编辑器中打开 LNK 文件时,EXE 文件清晰可见。
通过使用XOR“加密”EXE文件数据的每个字节并使用Powershell“解密”它,可以改善这一点。

完整的 LNK 目标如下所示:

完整的概念验证程序代码如下:

下载示例LNK文件
(这将执行我在汇编中编写的调用MessageBoxA的小程序)

原文链接:x86matthew – EmbedExeLnk – Embedding an EXE inside a LNK with automatic execution

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部