ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

dll劫持提权——本质上类似水坑攻击,就是你替换管理员的某应用加载的dll,权限高的管理员运行该应用就中招了

2022-02-06 11:03:40  阅读:249  来源: 互联网

标签:权限 dll DLL 提权 管理员 进程 注入 加载



原理:Windows 程序启动的时候需要 DLL。如果这些 DLL 不存在,则可以通过在应用程序要查找的位置放置恶意 DLL 来提权。通常,Windows 应用程序有其预定义好的搜索 DLL 的路径,它会根据下面的顺序进行搜索:

1、应用程序加载的目录
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、当前工作目录 Current Working Directory,CWD
6、在 PATH 环境变量的目录(先系统后用户)

过程:信息收集-进程调试-制作 dll 并上传-替换 dll-启动应用后成功
 

需要满足条件:你可以替换app的dll,管理员运行该app,这样你才可以获得提权结果。==》整体看比较被动,鸡肋!需要对手配合你。

 

DLL注入是一种允许攻击者在另一个进程的地址空间的上下文中运行任意代码的技术。如果进程中以过多的权限运行,那么可以会被攻击者加以利用,以便以DLL文件的形式执行恶意代码以提升权限。

手动注入

通过Metasploit的msfvenom创建DLL,该文件可以生成包含特定有效内容的DLL文件。应该注意的是,如果DLL被注入的进程是64位,那么应该使用64位有效负载。

Msfvenom - DLL生成

下一步是设置metasploit监听,以便在将恶意DLL注入进程后接受连接。

Metasploit监听配置

有许多可以执行DLL注入的工具,但最可靠的工具之一 就是使用CreateRemoteThread技术的Remote DLL Injector,它可以将DLL注入启用ASLR的进程。进程ID和DLL的路径是工具需要的两个参数:

从Remote DLL Injector执行的那一刻起,为了实现DLL注入,将提供执行的完整步骤。

Remote DLL Injector - DLL注入方法

如果DLL被成功注入,它将返回一个具有进程权限的更改会话。因此,具有比标准更高权限的进程可能会被滥用以进行特权升级。

特权升级 - DLL注入

Metasploit注入

Metasploit框架具有执行DLL注入的特定模块。它只需要链接到一个传输器会话,并指定进程的PID和DLL的路径。

Metasploit - DLL注入模块

Metasploit - DLL注射

PowerSploit

通过DLL注入提升权限也可以与PowerSploit一起使用。msfvenom可以用于生成恶意DLL,然后通过任务管理器可以获得目标进程的PID。如果进程作为SYSTEM运行,则注入的DLL将以相同的权限运行。

发现进程ID

Invoke-DLLInjection模块将执行DLL注入,如下所示:

PowerSploit - DLL注入

DLL内的有效内容将被执行,并且将获得SYSTEM权限。

DLL执行与系统特权

参考

  • https://clymb3r.wordpress.com/2013/04/06/reflective-dll-injection-with-powershell/

  • http://blog.opensecurityresearch.com/2013/01/windows-dll-injection-basics.html

  • https://disman.tl/2015/01/30/an-improved-reflective-dll-injection-technique.html

  • https://github.com/stephenfewer/ReflectiveDLLInjection

  • https://www.nettitude.co.uk/dll-injection-part-two/

QQ拼音输入法6.0 DLL劫持实现提权

 

前言:也想了解下关于DLL的劫持,但从未没有实操过,看了倾旋的鱼叉攻击的案例,自己也想复现下并且学习

劫持DLL一般有两种方法:

第一种方法:只需要找到缺少的DLL路径生成恶意的DLL放入对应的路径即可,常使用的工具Process Monitor,缺点是有些DLL路径是在权高的文件夹中。无一定权限没法操作

第二种方法:使用Process Monitor查看程序所加载的DLL,分析是否由于加载顺序而导致的恶意加载DLL,我们自己再通过原加载DLL导出表的函数来制作一个正常的dll文件,并且包含我们要实现的功能,实现提权等操作!

这里用的第二种!


测试的QQ拼音版本为:QQ拼音输入法 v6.0.5013.400

下载地址:https://www.upandashi.com/soft/7136.html

1、测试目录是否可写cacls *

2、发现目录everyone可写,并且当前.dll加载也可控,那么直接生成dll文件放到该目录中,注意系统位数

3、链接原DLL文件中的导出表中的函数,这里通过dll_hijacker.py

dll_hijacker.py:https://raw.githubusercontent.com/zhaoed/DLL_Hijacker/master/DLL_Hijacker.py

python2 dll_hijacker.py

4、程序加载外部DLL成功,如下:

总结:

1、可通过Process Monitor进行观察来查看指定程序的dll的加载顺序,来进行是否支持dll劫持

2、DLL劫持都需要配合目录权限,其实还是有点鸡肋的,看对方的服务了!

标签:权限,dll,DLL,提权,管理员,进程,注入,加载
来源: https://www.cnblogs.com/bonelee/p/15865356.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有