开篇:润墨网以专业的文秘视角,为您筛选了一篇1/256的攻击可能范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
故事发生在一片遥不可及的土地上,世人习惯性地把那里称为OS。在OS境内,存在着一股极端强大的力量,胸口的盔甲上刻着“MS”的古老文字以及象征着某种文明的窗户图案,他们是一群骑士。在这片神奇的土地上,他们建造了数个规模巨大的城堡,包括Windows 98、2000、XP……正在修建的这座空前宏伟的城堡称为Windows Vista,除了具备华丽的外观外,为了防御时常前来骚扰的入侵者,这座城堡内还布置了很多先进的防御设施。
谁会对城堡构成威胁
①病毒:这是一种恐怖的未知生物,它们时时刻刻在寻找着渗透进城堡的机会,有可能会附身在正常的城堡工作人员身上混进去,也有可能利用城堡建造时留下的一些遗漏之处钻进去。一旦被它们进入城堡,正常秩序就会变得一团糟,甚至可能造成城堡崩溃。解决方法是使用Windows Update对城堡进行在线升级,同时注意更新杀毒软件。
②入侵者:他们把希腊神话里的特洛伊木马战术运用得比古希腊人更纯熟,除了用木马战术外,有时也会对城堡本身的漏洞发动攻击。
③好奇的闯入者:他们本身并不具备攻击性,只是由于城堡大门的看守离开时没有关闭大门或者其他一些安全疏漏造成的,在好奇心的驱使下,这些人会进入城堡,也会造成一些麻烦……
屡禁不绝的溢出攻击
在城堡的三种威胁中,入侵者是最可怕的,他们经常会玩出各种花样,防不胜防。比如屡禁不绝的溢出攻击,城堡定期雇用清洁工清理外墙,而入侵者则经常利用清洁公司的管理不严而混入其中,他们时常将高压水柱喷向城堡外墙的防范措施遗漏之处,轻则导致城堡内积水一片,重则导致安全事故―掌管城堡大门的Peter因为自己的房间也被水喷得乱糟糟,而下令开启城堡大门,想出门看看是谁干的,结果就正好中了入侵者的下怀,趁大门开启后杀入了城堡……
小知识
溢出攻击
程序运行后,系统就会为其划分内存空间,主要分为数据区和执行区,数据区用来存放程序用到的资源,比如图片、文字,或者通过网络上接收到的数据也暂存在此,而执行区则是程序代码,比如程序下一步干什么之类的。溢出攻击就是利用程序在接收数据时,没有检查就直接存入数据区的漏洞,写入过量数据,而程序的数据区和执行区往往是连续的,过量无法存放在数据区的数据就被溢出到了执行区,如这部分数据恰好是执行特定操作的代码(比如打开端口供黑客连接),那后果就不堪设想了。
为什么每次城门都会打开
虽然入侵者知道了Peter的房间方位,但他们怎么会知道喷多少水能危及到Peter的房间呢?答案是越多越好,只要喷足够多的水,总会把水溢到Peter的房间。而Peter不管是水灌满了半个屋子还是整间屋子,他都会打开城堡的大门叫骂。
小知识
黑客设定溢出代码的方式
在知道程序有溢出漏洞后,黑客并不能精确地知道要多写入多少垃圾数据才能把数据区填满,而让剩下的执行代码正好溢出到执行区。如果把垃圾数据也弄到执行区,可能会造成崩溃,就没机会再执行溢出代码了。所以黑客将垃圾数据设定为空操作(即NULL,不执行任何操作的程序代码)的代码,这样即使一部分垃圾数据溢出到执行区,程序也能正确地接着运行溢出的攻击代码。
XP城堡的房间分配方案
原来在为老旧的Windows XP城堡进行第二次大修(代号SP2)时,设计师就考虑了防止溢出攻击的解决方案。他们将城堡中可能被水喷到的房间分配给没有行政权的人住,而那些掌握了行政权(包括能打开城堡大门的Peter)都被安排到了不可能被喷水的地方。这样即使有人被喷了水,他也没有权利把门打开出去叫骂了。
在选用杀毒软件时,可以优先选择那些带有缓冲区溢出保护功能的产品,比如McAfee 8.0i,那样可以在一定程度上提高黑客的攻击难度。
并非把所有的系统安全补丁打上就能防止溢出攻击,因为有很多网络服务是第三方应用程序的,比如BitComet在老版本时就曾出现过缓冲区溢出漏洞,所以对于常用的网络程序也需要时常升级新版本。
小知识
XP SP2引入的DEP技术
DEP(全称“数据执行保护”)在分配内存时显式地将其划分为可执行区和不可执行区,正确的程序代码都打上可执行标记,而通过溢出写入执行的代码由于没有打上可执行标记,所以并不会真正执行,从而保障了安全。虽然网络中已经有人宣称成功绕过了这项技术,但尚未发现真正绕过DEP实施攻击的病毒或者攻击方式。
行动代号ASLR!让房间自由移动
由于DEP部署房间的方式不再安全,所以在建造Windows Vista城堡时设计师们想到了一个更巧妙的办法,让房间自由移动,每天早晨城堡开始运作时房间的位置都会改变,共有256个位置。入侵者想知道房间的位置和其中具体住着什么人就很困难了,要想把谁逼出来开门就更困难了。
小知识
ASLR的保护机制
一些溢出攻击会试图调用Windows的系统函数,例如调用wsock32.dll中的Socket()函数,打开一个网络Socket。ASLR能够将这些系统文件分散开来,使它们被存储在不可预期的内存地址中。在Beta2版本的Windows Vista中,DLL或EXE文件能够被加载到256个地址中的任何一个,黑客只有1/256的机会获得正确的地址。不过有安全专家称早先被运用在Linux系统上的ASLR在数年前就被破解了,Vista上的ASLR命运也堪忧。
安全的博弈,仍在继续……