futogether 2007-1-24 14:16
安全性测试方法
[align=left][font=Tahoma][size=9pt]1. [/size][/font][font=宋体][size=9pt]功能验证[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块,权限管理模块,加密系统,认证系统等进行测试,主要验证上述功能是否有效,具体方法可使用黑盒测试方法。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt]2. [/size][/font][font=宋体][size=9pt]漏洞扫描[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]安全漏洞扫描通常都是借助于特定的漏洞扫描器完成的。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫站中做到“有的放矢”,及时修补漏洞。按常规标准,可以将漏洞扫描分为两种类型:主机漏洞扫描器([/size][/font][font=Tahoma][size=9pt]Host Scanner[/size][/font][font=宋体][size=9pt])和网络漏洞扫描器([/size][/font][font=Tahoma][size=9pt]Net Scanner[/size][/font][font=宋体][size=9pt])。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的[/size][/font][font=Tahoma][size=9pt]COPS[/size][/font][font=宋体][size=9pt]、[/size][/font][font=Tahoma][size=9pt]Tripewire[/size][/font][font=宋体][size=9pt]、[/size][/font][font=Tahoma][size=9pt]Tiger[/size][/font][font=宋体][size=9pt]等自由软件。网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如[/size][/font][font=Tahoma][size=9pt]Satan[/size][/font][font=宋体][size=9pt]、[/size][/font][font=Tahoma][size=9pt]ISS Internet Scanner[/size][/font][font=宋体][size=9pt]等。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]安全漏洞扫描是可以用于日常安全防护,同时可以作为对软件产品或信息系统进行测试的手段,可以在安全漏洞造成严重危害前,发现漏洞并加以防范。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt]3. [/size][/font][font=宋体][size=9pt]模拟攻击实验[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]对于安全测试来说,模拟攻击测试是一组特殊的黑盒测试案例,我们以模拟攻击来验证软件或信息系统的安全防护能力,下面简要列举在数据处理与数据通信环境中特别关心的几种攻击。在下列各项中,出现了“授权”和“非授权”两个术语。“授权”意指“授予权力”,包含两层意思:这里的权力是指进行某种活动的权力(例如访问数据);这样的权力被授予某个实体、代理人或进程。于是,授权行为就是履行被授予权力(未被撤销)的那些活动[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]冒充:[/size][/font][font=宋体][size=9pt]就是意个实体假装成一个不同的实体。冒充常与某些别的主动攻击形式一起使用,特别是消息的重演与篡改。例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。特权很少的实体为了得到额外的特权,可能使用冒充成具有这些特权的实体,举例如下。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 1) [/size][/font][font=宋体][size=9pt]口令猜测:一旦黑客识别了一台主机,而且发现了基于[/size][/font][font=Tahoma][size=9pt]NetBIOS[/size][/font][font=宋体][size=9pt]、[/size][/font][font=Tahoma][size=9pt]Telnet[/size][/font][font=宋体][size=9pt]或[/size][/font][font=Tahoma][size=9pt]NFS[/size][/font][font=宋体][size=9pt]服务的可利用的用户帐号,并成功地猜测出了口令,就能对机器进行控制。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 2) [/size][/font][font=宋体][size=9pt]缓冲区溢出:由于在很多地服务程序中大意的程序员使用类似于“[/size][/font][font=Tahoma][size=9pt]strcpy()[/size][/font][font=宋体][size=9pt],[/size][/font][font=Tahoma][size=9pt]strcat()[/size][/font][font=宋体][size=9pt]”不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]重演:[/size][/font][font=宋体][size=9pt]当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当作其他实体)。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]消息篡改:[/size][/font][font=宋体][size=9pt]数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 1) [/size][/font][font=Tahoma][size=9pt]DNS[/size][/font][font=宋体][size=9pt]高速缓存污染:由于[/size][/font][font=Tahoma][size=9pt]DNS[/size][/font][font=宋体][size=9pt]服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以加入不正确得信息,并把用户引向黑客自己的主机。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 2) [/size][/font][font=宋体][size=9pt]伪造电子邮件:[/size][/font][font=宋体][size=9pt]由于[/size][/font][font=Tahoma][size=9pt]SMTP[/size][/font][font=宋体][size=9pt]并不对邮件发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的链接。[/size][/font][/align][align=left][font=宋体][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]服务拒绝:[/size][/font][font=宋体][size=9pt]当溢个实体不能执行它的正常功能,或它的动作防碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种攻击可能是一般性的,比如一个实体抑制所有的消息,也可能是有具体目标的。例如,一个实体抑制所有流向某一特定目的端的消息,如安全审计服务。这种攻击可以是对通信业务流的抑制,或产生额外的通信业务流。也可能制造出试图破坏网络操作的消息,特别是如果网络具有中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来做出路由选择的决定。拒绝服务攻击种类很多,举例如下。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 1) [/size][/font][font=宋体][size=9pt]死亡之[/size][/font][font=Tahoma][size=9pt]ping[/size][/font][font=宋体][size=9pt]([/size][/font][font=Tahoma][size=9pt]ping of death[/size][/font][font=宋体][size=9pt]):[/size][/font][font=宋体][size=9pt]由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt]栈的实现在[/size][/font][font=Tahoma][size=9pt]ICMP[/size][/font][font=宋体][size=9pt]包上都规定为[/size][/font][font=Tahoma][size=9pt]64KB[/size][/font][font=宋体][size=9pt],并且在读取包的标题后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过[/size][/font][font=Tahoma][size=9pt]ICMP[/size][/font][font=宋体][size=9pt]上限,也就是加载尺寸超过[/size][/font][font=Tahoma][size=9pt]64K[/size][/font][font=宋体][size=9pt]上限的包时,就会出现内存分配错误,导致[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt]堆栈崩溃,致使接受方宕机。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt][/size][/font][/align]
[[i] 本帖最后由 futogether 于 2007-1-24 14:20 编辑 [/i]]
futogether 2007-1-24 14:18
[align=left][font=Tahoma][size=9pt] 2) [/size][/font][font=宋体][size=9pt]泪滴([/size][/font][font=Tahoma][size=9pt]Teardorop[/size][/font][font=宋体][size=9pt]):[/size][/font][font=宋体][size=9pt]泪滴攻击利用那些在[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt]堆栈实现中信任[/size][/font][font=Tahoma][size=9pt]IP[/size][/font][font=宋体][size=9pt]碎片中的包的标题头所包含的信息来实现自己的攻击。[/size][/font][font=Tahoma][size=9pt]IP[/size][/font][font=宋体][size=9pt]分段含有指示该分段所包含的是原包的哪一段的信息,某些[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt](包括[/size][/font][font=Tahoma][size=9pt]Service Pack 4 [/size][/font][font=宋体][size=9pt]以前的[/size][/font][font=Tahoma][size=9pt]NT[/size][/font][font=宋体][size=9pt])在收到含有重叠偏移的伪造分段时将崩溃。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 3) [/size][/font][font=Tahoma][size=9pt]UDP[/size][/font][font=宋体][size=9pt]洪水([/size][/font][font=Tahoma][size=9pt]UDP Flood[/size][/font][font=宋体][size=9pt]):[/size][/font][font=Tahoma][size=9pt] [/size][/font][font=宋体][size=9pt]各种各样的假冒攻击利用简单的[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt]服务,如[/size][/font][font=Tahoma][size=9pt]Chargen[/size][/font][font=宋体][size=9pt]和[/size][/font][font=Tahoma][size=9pt]Echo [/size][/font][font=宋体][size=9pt]来传送毫无用处的数据以占满带宽。通过伪造与某一主机的[/size][/font][font=Tahoma][size=9pt]Chargen[/size][/font][font=宋体][size=9pt]服务之间的一次的[/size][/font][font=Tahoma][size=9pt]UDP[/size][/font][font=宋体][size=9pt]连接,回复地址指向开着[/size][/font][font=Tahoma][size=9pt]Echo[/size][/font][font=宋体][size=9pt]服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务攻击。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 4) [/size][/font][font=Tahoma][size=9pt]SYN[/size][/font][font=宋体][size=9pt]洪水([/size][/font][font=Tahoma][size=9pt]SYN Flood[/size][/font][font=宋体][size=9pt]):[/size][/font][font=宋体][size=9pt]一些[/size][/font][font=Tahoma][size=9pt]TCP/IP[/size][/font][font=宋体][size=9pt]栈的实现,只能等待从有限数量的计算机发来的[/size][/font][font=Tahoma][size=9pt]ACK[/size][/font][font=宋体][size=9pt]消息,因为它们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止。在一些创建连接不受限制的实现里,[/size][/font][font=Tahoma][size=9pt]SYN[/size][/font][font=宋体][size=9pt]洪水也具有类似的影响。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 5) [/size][/font][font=Tahoma][size=9pt]Land[/size][/font][font=宋体][size=9pt]攻击:[/size][/font][font=宋体][size=9pt]在[/size][/font][font=Tahoma][size=9pt]Land[/size][/font][font=宋体][size=9pt]攻击中,一个特别打造的[/size][/font][font=Tahoma][size=9pt]SYN[/size][/font][font=宋体][size=9pt]包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送[/size][/font][font=Tahoma][size=9pt]SYN-ACK[/size][/font][font=宋体][size=9pt]消息,结果,这个地址又发回[/size][/font][font=Tahoma][size=9pt]ACK[/size][/font][font=宋体][size=9pt]消息并创建一个空连接,每一个这样的连接都将保留,直到超时。各种系统对[/size][/font][font=Tahoma][size=9pt]Land[/size][/font][font=宋体][size=9pt]攻击的反应不同,许多[/size][/font][font=Tahoma][size=9pt]UNIX[/size][/font][font=宋体][size=9pt]实现将崩溃,[/size][/font][font=Tahoma][size=9pt]NT[/size][/font][font=宋体][size=9pt]变得极其缓慢(大约持续[/size][/font][font=Tahoma][size=9pt]5[/size][/font][font=宋体][size=9pt]分钟)。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 6) [/size][/font][font=Tahoma][size=9pt]Smurf[/size][/font][font=宋体][size=9pt]攻击:[/size][/font][font=宋体][size=9pt]一个简单的[/size][/font][font=Tahoma][size=9pt]Smurf[/size][/font][font=宋体][size=9pt]攻击,通过使用将回复地址设置成受害网络的广播地址的[/size][/font][font=Tahoma][size=9pt]ICMP[/size][/font][font=宋体][size=9pt]应答请求([/size][/font][font=Tahoma][size=9pt]ping[/size][/font][font=宋体][size=9pt])数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此[/size][/font][font=Tahoma][size=9pt]ICMP[/size][/font][font=宋体][size=9pt]应答请求作出答复,导致网络阻塞,比“[/size][/font][font=Tahoma][size=9pt]Ping of Death[/size][/font][font=宋体][size=9pt]”洪水的流量高出一个或两个数量级。更加复杂的[/size][/font][font=Tahoma][size=9pt]Smurf[/size][/font][font=宋体][size=9pt]将源地址改为第三方的受害者,最终导致第三方雪崩。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 7) [/size][/font][font=Tahoma][size=9pt]Fraggle[/size][/font][font=宋体][size=9pt]攻击:[/size][/font][font=Tahoma][size=9pt]Fraggle[/size][/font][font=宋体][size=9pt]攻击对[/size][/font][font=Tahoma][size=9pt]Smurf[/size][/font][font=宋体][size=9pt]攻击作了简单的修改,使用的是[/size][/font][font=Tahoma][size=9pt]UDP[/size][/font][font=宋体][size=9pt]应答消息,而非[/size][/font][font=Tahoma][size=9pt]ICMP[/size][/font][font=宋体][size=9pt]。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 8) [/size][/font][font=宋体][size=9pt]电子邮件炸弹:[/size][/font][font=宋体][size=9pt]电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器,不断大量地向同一地址发送电子邮件,攻击者能够耗尽接收者网络的带宽。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt] 9) [/size][/font][font=宋体][size=9pt]畸形消息攻击:[/size][/font][font=宋体][size=9pt]各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]内部攻击:[/size][/font][font=宋体][size=9pt]当系统的合法用户以非故意或非授权方式进行动作时就成为内部攻击。多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。能用来防止内部攻击的保护方法包括:所有管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分[/size][/font][font=Tahoma][size=9pt]VLAN[/size][/font][font=宋体][size=9pt],将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]外部攻击:[/size][/font][font=宋体][size=9pt]外部攻击可以使用的方法有:搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户、冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]陷阱门:[/size][/font][font=宋体][size=9pt]当系统的实体受到改变,致使一个攻击者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力之外也使攻击者的口令生效。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Wingdings][size=9pt] l [/size][/font][font=宋体][size=9pt]特洛伊木马:[/size][/font][font=宋体][size=9pt]对系统而言的特洛伊木马,是指它不但具有自己的授权功能,而且还有非授权功能。一个向非授权信道拷贝消息的中继就是一个特洛伊木马。典型的特洛伊木马有[/size][/font][font=Tahoma][size=9pt]NetBus[/size][/font][font=宋体][size=9pt]、[/size][/font][font=Tahoma][size=9pt]BackOrifice[/size][/font][font=宋体][size=9pt]和[/size][/font][font=Tahoma][size=9pt]BO2k [/size][/font][font=宋体][size=9pt]等。[/size][/font][/align][align=left][font=宋体][/font][font=Tahoma][size=9pt][/size][/font] [/align][align=left][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=Tahoma][size=9pt]4. [/size][/font][font=宋体][size=9pt]侦听技术[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。目前最为流行的是网络数据包的捕获技术,通常我们称为[/size][/font][font=Tahoma][size=9pt] Capture[/size][/font][font=宋体][size=9pt],黑客可以利用该项技术实现数据的盗用,而测试人员同样可以利用该项技术实现安全测试。[/size][/font][font=Tahoma][size=9pt][/size][/font][/align][align=left][font=宋体][size=9pt]该项技术主要用于对网络加密的验证。[/size][/font][/align][align=left] [/align][align=left][font=宋体][size=9pt]------------------摘自《软件评测师教程》[/size][/font][font=Tahoma][size=9pt][/size][/font][/align]
[[i] 本帖最后由 futogether 于 2007-1-24 14:21 编辑 [/i]]
lovefei1027 2007-1-28 20:38
功能验证 采用黑盒测试方法,对涉及安全的软件功能进行测试
漏洞扫描 采用主机或系统漏洞扫描器自动检测远程或本机安全性弱点
模拟攻击试验 采用冒充、重演、消息篡改、服务拒绝、内部攻击、外部攻击、陷阱门、特洛伊木马方法进行测试
侦听技术 对数据进行截取分析的过程,主要用于对网络加密的验证
one_more_try 2007-6-24 14:23
LZ很专业~
你的思路可以引导我,非常感谢!
monkey_hou 2007-6-25 15:11
支持!
yuandjing 2007-7-2 16:47
谢谢,学习了,刚看完程秉辉的书,我正打算做安全性测试
hanghong_good 2007-7-4 14:01
写的好,我看的不是很懂。。。
foxhack 2007-7-5 10:11
总结的是不错。但如果是用来做Web Security Testing的话,就相差甚远了……
就比如说,LZ可以分享一下您的Checklist,呵呵!
就目前来说,对于一个新的project,我们发现的最多的安全问题可能是XSS或者一些安全意识单薄的问题(比如登陆时密码错误的提示问题);由于我所在的公司用的.NET,所以暂时不考虑注入。
也希望大家能分享更多的安全测试方法,谢谢!
BTW,服务器的安全和代码的安全最好是分开,因为一个和IT相关,一个和DEV相关;二者并不是一回事!
[[i] 本帖最后由 foxhack 于 2007-7-5 10:52 编辑 [/i]]
swjtu2009 2007-8-14 16:51
谢了,刚开始做安全测试,学的不少!
james.zhong 2007-8-16 18:04
真是强人~~高手~~~以后跟你混了!
jiuquanzi 2007-9-28 18:20
谢谢楼主,学习了很多,只是没有实践过,很多理论并不能理解.
以后去多多实践,希望能与楼主多多讨论.
此贴已收藏:lol
1qazse4 2007-10-9 16:17
支持下楼主
学习,我狂学习、;呼吸,我深呼吸!~!
Jifucy1010 2007-12-26 10:37
ding le ,安全方面的测试,还是需要学习啊
qhdguo999 2007-12-29 15:16
安全方面的测试,不知还有这么多活。学习
qhdguo999 2007-12-29 15:18
继续指教 其他方面测试
zhangfengjay 2008-2-13 22:35
呵呵这些东西我是非常喜欢
saturnman 2008-4-10 18:31
顶!啥都不说了只有感谢!
wenhigher 2008-5-27 16:23
好帖
好帖,安全测试是很新颖大领域
yangbohustwb 2008-6-19 16:00
:lol 高手
waiverson 2008-6-23 11:56
非常好的资料~谢谢