最近,一种被称为“缓存溢出(buffer overflow)”的设计缺陷,正在严重危害着系统的安全,成为比y2k更为头痛的问题。一旦这个缺陷被别有用心的人发现,就会被利用作为非法入侵的一种手段,破坏电脑中的资料。据统计,通过缓存溢出进行的攻击占所有系统攻击总数的80%以上,最近各大网站所遭受的所谓分布式服务拒绝(ddos)式的攻击也是一种利用缓存溢出原理的攻击方式。
简单地说,缓存溢出是指一种攻击系统的手段,通过往程序的缓冲区中写入超出其长度的内容造成溢出,从而破坏程序的堆栈,使程序转而执行其它指令,而达到攻击的目的。分布式拒绝服务(ddos)的入侵者采用的是输入很长的字串,将通讯栏等区域填到超过设计的容量,有些多余字串就会被电脑误认为是执行密码,使入侵者有机会进入电脑,而同时系统无法察觉。有报告指出,“缓存溢出”是过去十年发生的非常普遍的电脑安全问题,入侵者可以利用它完全控制电脑。
■ 缓存溢出黑客们的惯用伎俩
在unix系统中,通过缓存溢出来获得root权限是目前使用得相当普遍的一种黑客技术。事实上这是一个黑客在系统本地已经拥有了一个基本账号后的首选攻击方式。它也被广泛应用于远程攻击,通过对daemon进程的堆栈溢出来实现远程获得rootshell的技术,已经有很多实例。
在windows系统中,同样存在着缓存溢出的问题。而且,随着internet的普及,win系列平台上的internet服务程序越来越多,低水平的win程序就成为你系统上的致命伤,因为它们同样会发生远程堆栈溢出。而且,由于win系统使用者和管理者普遍缺乏安全防范意识,一台win系统上的堆栈溢出,如果被恶意利用,将导致整个机器被黑客所控制,进而可能导致整个局域网落入黑客之手。在微软的产品iis server4.0中就被发现存在一种被称为“非法htr请求”的缺陷。据微软称,此缺陷在特定情况下会导致任意代码都可以在服务器端运行。黑客可以利用这一漏洞对iis服务器进行完全的控制,而实际上许多电子商务站点恰恰是基于这套系统的。
■ 黑客如何搅乱缓存
下面让我们了解一下缓存溢出的原理。众说周知,c语言不进行数组的边界检查,在许多运用c语言实现的应用程序中,都假定缓冲区的大小是足够的,其容量肯定大于要拷贝的字符串的长度。然而事实并不总是这样,当程序出错或者恶意的用户故意送入一过长的字符串时,便有许多意想不到的事情发生,超过的那部分字符将会覆盖与数组相邻的其他变量的空间,使变量出现不可预料的值。如果碰巧,数组与子程序的返回地址邻近时,便有可能由于超出的一部分字符串覆盖了子程序的返回地址,而使得子程序执行完毕返回时转向了另一个无法预料的地址,使程序的执行流程发生了错误。甚至,由于应用程序访问了不在进程地址空间范围的地址,而使进程发生违例的故障。这种错误其实是编程中常犯的。
一个利用缓冲区溢出而企图破坏或非法进入系统的程序通常由如下几个部分组成:
1.准备一段可以调出一个shell的机器码形成的字符串,在下面我们将它称为shellcode。
2.申请一个缓冲区,并将机器码填入缓冲区的低端。
3.估算机器码在堆栈中可能的起始位置,并将这个位置写入缓冲区的高端。这个起始的位置也是我们执行这一程序时需要反复调用的一个参数。
4.将这个缓冲区作为系统一个有缓冲区溢出错误程序的入口参数,并执行这个有错误的程序。
通过以上的分析和实例,我们可以看到缓存溢出对系统的安全带来的巨大威胁。在unix系统中,使用一类精心编写的程序,利用suid程序中存在的这种错误可以很轻易地取得系统的超级用户的权限。当服务程序在端口提供服务时,缓冲区溢出程序可以轻易地将这个服务关闭,使得系统的服务在一定的时间内瘫痪,严重的可能使系统立刻宕机,从而变成一种拒绝服务的攻击。这种错误不仅是程序员的错误,系统本身在实现的时候出现的这种错误更多。如今,缓冲区溢出的错误正源源不断地从unix、windows、路由器、网关以及其他的网络设备中被发现,并构成了对系统安全威胁数量最大、程度较大的一类。
|
· “熊猫烧香”病毒制造.. · 中国黑客超强X档案 第2.. · 中国黑客超强X档案 第2.. · Windows年底再现图片漏.. · MBSA本地审核策略建议 · 年终岁末,注意病毒给.. |
· 中国黑客超强X档案 第2.. · 中国黑客超强X档案 第1.. · 中国黑客超强X档案 第1.. · 我的刻录机总显示“缓.. · isa2004 企业特性之缓.. · chinaDDOS免费为您的机.. |
|
|||
| · OSPF路由协议专栏 · 思科路由器产品 · 华为路由器产品 · 路由器模拟器 · AIX操作系统管理应用(.. · 思科路由器配置 · 路由器组网解决方案 · 路由器密码恢复 |
· 无线路由器故障处理 · 路由故障处理手册 · 路由器访问控制列表(AC.. · 路由器的安全配置与安.. · 无线路由器配置 · 路由器技巧 · 华为路由器配置 · 路由器配置基础 |
||
|
|||
| · Java基础教程 · VPN技术 · SQL Server 2005全解 · ARP攻击防范与解决方案 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · 三层交换技术专题 |
· SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 · Windows操作系统安装 |
||
|
|||
| · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 · Windows操作系统安装 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| · 职场冲浪(之八):让感.. ·职场冲浪(之七):潜心.. |
·人生如鞋 ·职场冲浪(之六):从离梦最.. |
| ·将职业教育职业化 - 各IT.. ·思科交换机上实现MAC地址.. |
·关于51CTO合作出书中的职.. ·OSPF动态路由协议入门简介 |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · Ubuntu 中文开源频道 · Solaris基础知识入门 · 微软正式发布英文版Wind.. |
· 服务器基础知识入门 · Rambus第二?看全缓冲内.. · 服务器节能对比测试:AM.. |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |