免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3623 | 回复: 1
打印 上一主题 下一主题

安全漏洞杂谈 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-26 13:46 |只看该作者 |倒序浏览
安全漏洞杂谈\r\n\r\n作者: watercloud\r\n邮箱: watercloud [at] xfocus.org \r\n日期: 2006-11-16\r\n\r\n\r\n目录:\r\n  一、不同角度看安全漏洞的分类    \r\n  二、不同角度看待漏洞利用    \r\n  三、漏洞发掘方法    \r\n  四、漏洞等级评定    \r\n  五、DEMO    \r\n  参考    \r\n\r\n\r\n  \r\n    网络安全的核心目标是保障业务系统的可持续性和数据的安全性,而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起,一旦有重大安全漏洞出现,整个互联网就会面临一次重大挑战。虽然传统木马和安全漏洞关系不大,但最近很多木马都巧妙的利用了IE的漏洞,让你在浏览网页时不知不觉的就中了招。\r\n    安全漏洞的定义已经有很多了,我这里给出一个通俗的说法就是:能够被利用来干“原本以为”不能干的事,并且和安全相关的缺陷。这个缺陷可以是设计上的问题、程序代码实现上的问题。\r\n  \r\n一、不同角度看安全漏洞的分类\r\n  \r\n  \r\n  对一个特定程序的安全漏洞可以从多方面进行分类。\r\n  \r\n  1. 从用户群体分类:\r\n    ●大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。\r\n    ●专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。\r\n  \r\n  \r\n  2.从数据角度看分为:\r\n    ●能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。\r\n    ●能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)\r\n    ●输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)\r\n  \r\n  3.从作用范围角度看分为:\r\n    ●远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows。\r\n    ●本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。\r\n  \r\n  4.从触发条件上看可以分为:\r\n    ●主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。\r\n    ●被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。\r\n  \r\n  5.从操作角度看可分为:\r\n    ●文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:\r\n      ◇写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;\r\n      ◇内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;\r\n    ●内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。\r\n    ●逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:\r\n      ◇条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)\r\n      ◇策略错误,通常为设计问题,如历史上FreeBSD的Smart IO漏洞。\r\n      ◇算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。\r\n      ◇设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。\r\n      ◇实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)\r\n  \r\n    ●外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。\r\n  \r\n  6. 从时序上看可分为:\r\n    ●已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。\r\n    ●刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。\r\n    ●0day:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。\r\n  \r\n二、不同角度看待漏洞利用\r\n\r\n\r\n  如果一个缺陷不能被利用来干“原本”不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。\r\n  漏洞利用的视角有:\r\n    ●数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。\r\n    ●权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。\r\n    ●可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。\r\n    ●认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。\r\n    ●代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。\r\n  \r\n  \r\n三、漏洞发掘方法\r\n\r\n\r\n  首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在”黑客“用的各种漏洞发掘手段里有模式可循的有:\r\n  ●fuzz测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。\r\n  ●源码审计(白盒测试),现在有了一系列的工具都能协助发现程序中的安全BUG,最简单的就是你手上最新版本的C语言编译器。\r\n  ●IDA反汇编审计(灰盒测试),这和上面的源码审计非常类似,唯一不同的是很多时候你能获得软件,但你无法拿到源码来审计,但IDA是一个非常强大的反汇编平台,能让你基于汇编码(其实也是源码的等价物)进行安全审计。\r\n  ●动态跟踪分析,就是记录程序在不同条件下执行的全部和安全问题相关的操作(如文件操作),然后分析这些操作序列是否存在问题,这是竞争条件类漏洞发现的主要途径之一,其他的污点传播跟踪也属于这类。\r\n  ●补丁比较,厂商的软件出了问题通常都会在补丁中解决,通过对比补丁前后文件的源码(或反汇编码)就能了解到漏洞的具体细节。\r\n  以上手段中无论是用哪种都涉及到一个关键点:需要通过人工分析来找到全面的流程覆盖路径。分析手法多种多样,有分析设计文档、分析源码、分析反汇编代码、动态调试程序等。\r\n\r\n  \r\n四、漏洞等级评定\r\n\r\n\r\n  考察漏洞的危害性应该紧密的和利用该漏洞带来的危害相关,并不是通常大家认识的所有缓冲区溢出漏洞都是高危漏洞。以远程漏洞为例,比较好的划分方法为:\r\n  1  可远程获取OS、应用程序版本信息。\r\n  2  开放了不必要或危险得服务,可远程获取系统敏感信息。\r\n  3  可远程进行受限的文件、数据读取。\r\n  4  可远程进行重要或不受限文件、数据读取。\r\n  5  可远程进行受限文件、数据修改。\r\n  6  可远程进行受限重要文件、数据修改。\r\n  7  可远程进行不受限得重要文件、数据修改,或对普通服务进行拒绝服务攻击。\r\n  8  可远程以普通用户身份执行命令或进行系统、网络级的拒绝服务攻击。\r\n  9  可远程以管理用户身份执行命令(受限、不太容易利用)。\r\n  10  可远程以管理用户身份执行命令(不受限、容易利用)。\r\n  \r\n  本地漏洞几乎都是导致代码执行,归入上面的10分制可以为:\r\n  5  远程主动触发代码执行(如IE的漏洞).\r\n  6  远程被动触发代码执行(如Word漏洞/看图软件漏洞).\r\n\r\n\r\n五、DEMO\r\n\r\n\r\n  一个防火墙隔离(只允许运维部的人访问)的网络里运行一台Unix服务器;操作系统中只有root用户和oracle用户可登陆,操作系统中运行了Apache(nobody权限)、Oracle(oracle用户权限)等服务。\r\n  一个攻击者的目的是修改Oracle数据库中的帐单表的数据。\r\n  其可能的攻击步骤为:\r\n  ●1.接入运维部的网络,获得一个运维部的IP地址从而能通过防火墙访问被保护的Unix服务器。\r\n  ●2.利用Apache服务的某远程缓冲区溢出漏洞直接获得一个nobody权限的shell访问。\r\n  ●3.利用操作系统某suid程序的漏洞将自己的权限提升到root权限。\r\n  ●4.用Oracle的sysdba登陆进入数据库(本地登陆不需要密码)。\r\n  ●5.修改目标表的数据。\r\n  \r\n  以上5个过程分析下来为:\r\n  ●第1步:认证绕过\r\n  ●第2步:远程漏洞、代码执行(机器码)、认证绕过\r\n  ●第3步:权限提升、认证绕过\r\n  ●第4步:认证绕过\r\n  ●第5步:数据写

论坛徽章:
0
2 [报告]
发表于 2007-03-26 13:49 |只看该作者
哇,偶很少注意漏洞的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP