通过查看一个最新发布的IE应用综述,我注意到了我所认为的组装。我对开发开发一无所知,但我对组装有一点了解。看到组装代码,这是否意味着在特定的OSs上利用特定的体系结构?
这是否意味着每个操作系统( XP,Vista,7,8 )都需要在程序集中开发一次IE漏洞,根据32/64位加倍,然后根据字节顺序再次加倍?
发布于 2014-04-28 16:22:50
是的,大多数漏洞都依赖于平台。有些细节。
例如,如果攻击者以Internet Explorer为目标,那么他就会攻击Windows系统。大多数Windows系统都运行在x86上。此外,在Windows上,默认IE是32位版本,即使操作系统是64位Windows。而且,在组装级,XP、Vista和7非常相似(实际上,它们可以运行相同的应用程序,因此,从应用程序的角度来看,情况不会有太大变化)。
这意味着,一个单独的利用漏洞版本(32位x86,用于"Windows")将已经在绝大多数情况下起作用。勤奋的攻击者也会想到Windows 8的64位版本,或者是运行64位IE的64位前8操作系统的用户(极少数)。非常勤劳的攻击者将试图为表面RT制作ARM版本。
所有这些平台都是小的。IE为其他CPU已经死了相当一段时间(我使用Sparc/Solaris版本早在2000年左右,但它是一个5.x版本)。
重要的一点是攻击者不需要做太多的质量保证。对于攻击者来说,如果他发送给目标的内容不能完美地在其他计算机上正常工作,这并不是一个问题,而这些机器目前并不是他的目标。
发布于 2014-04-28 18:19:45
攻击依赖于平台,因为每个平台可能有不同的方式来处理内存布局和进程执行。例如,在WinXP上执行一个漏洞要比在其他最新版本的Windows上要容易得多。特别谈到IE漏洞,它更多地涉及到在一些浏览器函数或DLL中查找漏洞,并利用这些漏洞绕过OS安全机制。
发布于 2014-04-29 13:33:07
利用平台依赖于吗?
是。
这是否意味着每个操作系统( XP,Vista,7,8 )都需要在程序集中开发一次IE漏洞,根据32/64位加倍,然后根据字节顺序再次加倍?
不是的。
程序集的使用并不会使它更依赖于平台。如果用C编写的话,它只依赖于平台(尽管在大多数情况下,C使得针对这些不同的平台变得更加容易)。
您所链接的页面没有指明攻击目标的平台,而只显示x86代码。如果它也针对x64,那仍然只是两个平台: x86 Windows和x64 Windows,即使对于这两个平台,代码也基本上是同构的(类似的)。它有程序集这一事实并不会突然爆发支持运行在同一CPU体系结构上的不同版本的Windows的复杂性。
(为了强调这一点:可移植程序集可以编写和编译一次,以便在同一CPU体系结构上,在所有Windows、OS、Linux和没有操作系统的操作系统下执行相同的机器代码。这样,与其他语言相比,程序集对平台的依赖性更小,因为它需要更少的平台。不过,包含机器代码的标准可执行文件格式仍然是特定于操作系统的;例如,OS将不知道如何加载Windows .exe,即使加载了机器代码也会运行。)
字节顺序不是一个问题,因为x86 & x64纯粹是小endian。
还请注意,您看到的程序集是反汇编的,因此它不一定是用程序集编写的;它几乎可以用任何语言编写。因为这是一种利用,并被设计来做一些奇怪的语言以外的事情,所以它的一些讨厌的部分在程序集中本身是最容易编写的,有些可能是用C编写的,还有一些是用C启动、分解和适应到程序集中的。
所以简单的回答是,在漏洞中支持不同的Windows版本并不像你想象的那么困难。
https://security.stackexchange.com/questions/56825
复制相似问题