首页
社区
课程
招聘
[旧帖] [转帖]深入理解测试的内容 0.00雪花
发表于: 2010-6-13 14:36 984

[旧帖] [转帖]深入理解测试的内容 0.00雪花

2010-6-13 14:36
984
为了有效地寻找安全漏洞,漏洞寻找者必须对目标应用的工作机制有一个彻底的和不同角度的理解。如果你对一个人将如何使用一个应用特征感兴趣,那么你会对该特征是如何实现的更感兴趣。如果能很好地理解软件是如何被开发的,那么你在安全测试中就能够猜出几种软件开发者可能采用的、实现你正在测试的功能的方法。然后你能够考虑到每个软件选项的实现和设计,以及开发人员可能已做的对安全弱点的防护。你能够检查目标应用,来验证你对它的实现机制所做的设想。(软件检查将会在第3章“查找入口点”中讨论。)下一步,你就能通过操作不同的测试来看开发人员是否意识到安全问题,或者你是否已经揭示了一个安全缺陷。

多种多样的原因使得软件产生安全缺陷。软件开发人员通常是非常聪明的人,但是意识到所有这些大量的不同类型的攻击是非常困难的,其中的几种攻击将在本书中进行讨论。除了阻止攻击以外,软件开发人员还有许多责任。例如,软件开发人员必须设计并编写应用程序功能的代码,使应用程序能够被残障人士所使用,确保应用程序很容易地适应本地化需求。软件开发人员必须严格遵守紧张的软件发布时间表,由于开发时间有限,这使得他们难以成功地阻止所有可能的攻击,然而,安全知识渊博的攻击者却能够花费大量的时间,通过每次将注意力集中在应用程序中很小的一部分,来尝试攻击突破应用程序。作为一名攻击者——漏洞搜寻者需要把自己看做是攻击者——你的工作比起开发人员试图阻止攻击要简单一些:攻击者只需找到一种成功攻击突破应用的方法即可。但在另一方面,软件开发人员却必须成功地认识到数以百计的攻击策略并阻止它们,包括至今仍无法预料的问题。

安全测试人员受雇于软件开发公司,处于一个具有挑战性的位置。尽管他们使用了很多与恶意攻击者相似的方法,但他们的根本工作却是尽力寻找安全漏洞以帮助保护应用程序的安全。每一个被发现并修复的漏洞能够让外部的漏洞搜寻者更难以滥用软件,并帮助保护产品用户的安全。然而外部的攻击者在恶意地努力之下也可能成功,如果他们一年能发现几个安全缺陷,那么一个产品测试组中的安全测试人员,在紧张的一个特定产品的开发时间表内,会有望发现很多的安全漏洞。

拆分应用

要仔细思考应用程序是如何被设计与实现的,这样做的好处十分明显。除了能获得一些关于应用程序集成机制的富有创造力的想法,你还能够拆分目标应用程序,获取对应用程序的工作机制以及如何突破它的一个更好的理解。同样的原理被应用在现实生活中:对于一个不了解锁是如何工作的人,把锁撬开听起来很困难。事实上,有些锁确实难以撬开,但是如果你知道了这些锁的工作机制,大多数锁却不难撬开。为了保护财产,很多人使用了组合锁。绝大多数人会假定仅有个别人能够通过破解三个号码的组合或利用断线钳来打开锁,而获取受保护的财产。

组合锁上的号码从0到39,锁有一个边上带凹口的锁扣,如图1-1所示。在组合锁里面,一根金属棒在锁紧的位置时会保持锁扣不往上移动。当输入了正确的号码组合时,该金属棒就从锁扣中的凹口移走,允许锁扣向上移动从而打开锁。因此,攻击者只需从锁扣的凹口中移走那根金属棒,就能打开锁。

图1-1  用于保护财产安全的标准组合锁

在锁没有物理损坏的情况下,移走金属棒看起来可能会是困难的或者不可能的(这里,撬开锁是指在不损坏锁的情况下打开锁,如果你想绕过这把锁,可以简单地用断线钳来切断它)。但是,对锁的精密检查会显示在锁扣与锁身之间存在一个非常狭窄的缝隙,该缝隙大约只有0.2mm宽,它窄得连手指甲都伸不进去。但不管怎样,事实上易拉罐的铝片能够正好适合这个厚度和强度。一个叫“JasonLynn”的人在消息板上贴了一段视频,详细介绍了如何切割一块铝罐,使它能被用作薄垫片来打开组合锁。利用一块切割到正确尺寸的金属片,就能够在15秒内撬开一把组合锁。使用组合锁内部工作机制的知识与正确的工具,任何人都能撬开它。现在,锁匠已经知道了这项技术,并利用了一种叫做薄垫片的专业工具进行开锁。

! 提示 绕过软件安全机制与撬锁非常相似,你需要对软件内部的工作机制有一个深入的理解,这种知识能够使寻找安全漏洞变得更加容易。

你很容易搞懂为什么需要对软件内部的工作机制有一个深入的理解。你可以通过将应用程序进行拆分的方式来获取这样的知识。一旦具备了这样的知识,有些时候,应用程序如何被攻击就会变得显而易见。还有些时候,深入理解内部的工作方式能提供更多信息,让你知道哪一种攻击方法可能会成功,以及你可能需要创建什么类型的工具来攻击目标应用程序。理解目标软件以及它是否有依赖对象也是特别重要的,依赖对象包括所利用的协议、调用的编码库、底层操作系统和编译器等。本书的大部分内容集中在如何拆分软件,以及获取关于其如何实现的信息。我们也将讨论不同实现与设计中的普遍问题,使你能够拆分软件并找到安全漏洞。

[课程]Android-CTF解题方法汇总!

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//