一,网络安全漏洞
1,网络安全漏洞威胁
- 漏洞分析的目的是发现目标系统中存在的安全隐患,分析使用的安全机制是否能够保证系统的机密性,完整性和可用性。
- 漏洞分析通过对评估目标进行穿透测试,进而尝试从中获取一些有价值的信息。
- 穿透测试可分为两类:
- 对于安全漏洞,可以按照风险等级对其进行归类。
2,网络安全漏洞的分类
- 漏洞是在硬件,软件和协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。
- 在进行系统安全性评估时,需要注意的是已发现的漏洞数量并不能完全反应系统的安全程度,与系统的使用范围,经受检验的程度,及是否开放源码等因素都有关系。
- 漏洞的分类主要有按漏洞可能对系统造成的直接威胁分类和按漏洞的成因分类两大类。
1,按漏洞可能对系统造成的直接威胁分类
漏洞类型 | 漏洞描述 | 典型漏洞 |
---|---|---|
远程管理员权限 | 攻击者无须一个账号登录到本地,直接获得远程系统的管理员权限,通常通过攻击以root身份执行的有缺陷的系统守护进程来完成。漏洞的绝大部分来源于缓冲区溢出,少部分来自守护进程本身的逻辑缺陷。 | Windows NT IIS 4.0的ISAPI DLL对输入的URL未进行适当的边界检查,如果构造一个超长的URL,可以溢出IIS(inetinfo.exe)的缓冲区,执行攻击者指定的代码。由于inetinfo.exe是以local system身份启动,溢出后可以直接得到管理员权限。 |
本地管理员权限 | 攻击者在已有一个本地账号能够登录到系统的情况下,通过攻击本地某些有缺陷的suid程序和竞争条件等手段,得到系统的管理员权限。 | RedHat Linux的restore是个suid程序,它的执行依靠一个RSH环境变量,通过设置环境变量PATH,可以使RSH变量中的可执行程序以root身份运行,从而获得系统的root权限。 |
普通用户访问权限 | 攻击者利用服务器的漏洞,取得系统的普通用户存取权限,对UNIX类系统通常是shell访问权限,对Windows系统通常是cmd.exe的访问权限,能够以一般用户的身份执行程序,存取文件。攻击者通常攻击以非root身份运行的守护进程,及有缺陷的cgi程序等手段获得这种访问权限。 | Windows IIS 4.0~5.0存在Unicode解码漏洞,可以使攻击者利用cmd.exe以guest组的权限在系统上运行程序。相当于获得了普通用户的权限。 |
权限提升 | 攻击者在本地通过攻击某些有缺陷的sgid程序,可以把权限提升到某个非root用户的水平。获得管理员权限可以看成是一种特殊的权限提升,只是因为威胁的大小不同而独立出来。 | RedHat Linux 6.1带的man程序为sgid man,它存在format bug,通过对它的溢出攻击,可以使攻击者得到man组的用户权限。 |
读取受限文件 | 攻击者通过利用某些漏洞,读取系统中他应该没有权限的文件,这些文件通常是与安全相关的。这些漏洞的存在可能是我呢见设置权限不正确,或者是特权进程对文件的不正确处理和意外dump core使受限文件的一部分dump到了core文件中。 | SunOS 5.5的ftpd存在漏洞,一般用户可以引起ftpd出错,而dump出一个全局可读的core文件,里面有shadow文件的片段,从而使一般用户能读到shadow的部分内容。 |
远程拒绝服务 | 攻击者利用这类漏洞,无须登录即可对系统发起拒绝服务攻击,使系统或相关的应用程序崩溃或失去响应能力。这类漏洞通常是系统本身或其守护进程有缺陷或设置不正确造成的。 | 早期的Linux和BSD的tcp/ip堆栈的IP片段重组模块存在缺陷,攻击者通过向系统发出特殊的IP片段包可以使计算机崩溃。 |
本地拒绝服务 | 在攻击者登录到系统后,利用这类漏洞,可以使系统本身或应用程序崩溃。这种漏洞主要因为是程序对意外情况的处理失误,如写临时文件之前不检查文件是否存在,盲目跟随链接等。 | RedHat 6.1的tmpwatch程序存在缺陷,可以是系统fork()出许多进程,从而使系统失去响应能力。 |
远程非授权文件存取 | 利用这类漏洞,攻击者可以不经授权地从远程存取程序的某些文件。这类漏洞主要是由一些由缺陷的cgi程序引起的,它们对用户输入没有进行适当的合法性检查,使攻击者通过构造特别的输入,获得对文件的存取。 | Windows IIS 5.0存在一个漏洞,通过向它发送一个特殊的head标记,可以得到ASP源码,而不是经过解释执行ASP页面。 |
口令恢复 | 因为采用了较弱的口令加密方式,使攻击者可以很容易地分析出口令的加密方法,从而使攻击者通过某种方法得到密码后还原出明文来。 | Pcanywhere 9.0采用非常脆弱的加密方法来加密传输中的口令,只要窃听了传输中的数据很容易解码出明文口令。 |
欺骗 | 利用这些漏洞,攻击者可以对目标系统实施某种形式的欺骗,这通常是由于系统的实现上存在某些漏洞。 | Linux kernel 2.0.35以下的tcp/ip堆栈存在漏洞,可以使攻击者非常容易实现IP地址欺骗。 |
服务器信息泄露 | 利用这类漏洞,攻击者可以收集到对于进一步攻击系统有用的信息。这类漏洞的产生主要是因为系统程序有缺陷,一般是对错误输入的不正确处理。 | Windows IIS 3.0~5.0存在漏洞,当向系统请求不存在的.idq文件时,计算机可能会返回出错信息,里面暴露了IIS的安装目录信息。 |
其他漏洞 | 上面没有介绍的 |
2,按漏洞的成因分类
漏洞类型 | 漏洞描述 |
---|---|
输入验证错误 | 大多数的缓冲区溢出漏洞和CGI类漏洞都是由于未对用户提供的输入数据的合法性进行适当的检查。 |
访问验证错误 | 漏洞的产生是由于程序的访问验证部分存在某些可利用的逻辑错误,使绕过这种访问控制成为可能。 |
竞争条件 | 漏洞的产生在于程序处理文件等实体时在时许和同步方面存在问题,从而在处理过程中可能存在一些机会窗口使攻击者能够施加外来的影响。 |
意外情况处置错误 | 漏洞的产生在于程序在其实现逻辑中没有考虑到一些意外情况。 |
设计错误 | 严格来说,大多数的漏洞都是由于设计错误造成的,此处主要归类暂时无法放入到其他类别的漏洞。 |
配置错误 | 漏洞的产生在于系统和应用的配置有误,或是软件安装在错误的地方,或是错误的配置参数,或是错误的访问权限,策略错误等。 |
环境错误 | 环境错误主要是指程序在不适当的系统环境下执行而造成的问题。 |
二,网络安全漏洞检测技术
- 主要包括端口扫描,操作系统探测和安全漏洞探测。
1,端口扫描技术
1,端口扫描原理
- 向目标主机的TCP/IP端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断端口是打开还是关闭等状态信息。
2,TCP端口扫描技术
- TCP端口扫描技术主要有全连接扫描技术,半连接(SYN)扫描技术,间接扫描技术和秘密扫描技术等。
1,全连接扫描技术
- 全连接扫描是TCP端口扫描的基础,现有的全连接扫描主要是TCP connect()扫描。
- 工作方式为对目标主机上感兴趣的端口进行connect()连接试探,如果该端口被监听,则连接成功,否则表示该端口未开放或无法到达。
- 优点:用户无须特殊权限,且探测结果最为准确。
- 缺点:容易被目标主机察觉并记录下来。
2,半连接(SYN)端口扫描技术
- 半连接(SYN)端口扫描也称为“半开”式的扫描,它不建立完整的TCP连接,而是只发送一个SYN信息包。
- 一个SYN|ACK的响应包表示目标端口是开放监听的,而一个RST(复位)的响应包则表示目标端口未被监听。若收到SYN|ACK应答包,系统将随即发送一个RST包来中断此连接。
- 优点:即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全连接扫描少得多。
- 缺点:大部分操作系统下,发送主机需要构造适用于这种扫描的IP包。
3,UDP端口扫描技术
- 用来确定在目标主机上有哪些UDP端口是开放的。
- 工作原理是发送0字节的UDP信息包到目标计算机的各个端口,若收到一个ICMP端口不可达的回应,则表示该UDP端口是关闭的,否则该端口就是开放的。
2,操作系统探测技术
- 操作系统探测技术主要包括:获取标识信息探测技术,基于TCP/IP协议栈的操作系统指纹探测技术和ICMP响应分析探测技术。
1,获取标识信息探测技术
- 获取标识信息探测技术主要是指借助操作系统本身提供的命令和程序进行操作系统类型探测的技术,例如使用telnet命令可以得到主机操作系统的类型。
2,基于TCP/IP协议栈的操作系统指纹探测技术
- 操作系统指纹是指能够通过网络连接获取的唯一标识某一操作系统的类型及其版本号的一组特征信息。
- 操作系统指纹探测步骤如下:
- 形成一个涵盖大部分常用操作系统的较为详细全面的操作系统指纹特征库。
- 向目标发送多种特意构造的信息包,检测其是否响应这些信息包,以及是如何响应这些信息包的。
- 把从特定目标返回的特征信息与指纹特征库进行匹配,从而判断出目标计算机的操作系统类型及其版本号信息。
3,ICMP响应分析探测技术
- 该技术通过发送UDP或ICMP的请求报文,然后分析各种ICMP应答信息来判断操作系统的类型及其版本信息。
- 本质上也是一种基于TCP/IP协议栈的操作系统指纹探测技术。
3,安全漏洞探测技术
- 漏洞探测技术可以分为信息型漏洞探测和攻击型漏洞探测两种。按照漏洞探测的技术特征,又可以划分为基于应用的探测技术,基于主机的探测技术,基于目标的探测技术和基于网络的探测技术等。
1,信息型漏洞探测
- 顺序扫描技术:可以将收集到的漏洞和信息用于另一个扫描过程以进行更深层次的扫描——即以并行方式收集漏洞信息,然后在多个组件之间共享这些信息。此扫描方式可以实现边扫描边学习的扫描过程,可进行更为彻底的探测,更为深入地发现网络中的漏洞,。
- 多重服务检测技术:即不按照RFC所指定的端口号来区分目标主机所运行的服务,而是按照服务本身的真实响应来识别服务类型。
2,攻击型漏洞探测
- 模拟攻击是最直接的漏洞探测技术,其探测结果的准确率也是最高的。该探测技术的主要思想是模拟网络入侵的一般过程,对目标系统进行无恶意攻击尝试,若攻击成功则表明相应的安全漏洞必然存在。
- 模拟攻击主要通过专用攻击脚本语言,通用程序设计语言和成形的攻击工具来进行。
3,漏洞探测技术特征分类
1,基于应用的检测技术
- 采用被动的,非破坏性的方法检查应用软件包的设置,发现安全漏洞。
2,基于主机的检测技术
- 采用被动的,非破坏性的方法对系统进行检测。通常,它涉及到系统的内核,文件的属性和操作系统的补丁等问题。
- 此方式可非常准确地定位系统的问题,发现系统的漏洞。
- 缺点:与平台相关,升级复杂。
3,基于目标的漏洞检测技术
- 采用被动的,非破坏性的方法检查系统属性和文件属性,如数据库,注册号等。
- 这种技术的实现是运行在一个闭环上,不断地处理文件,系统目标及系统目标属性,然后产生检验数,把这些检验数同原来地检验数相比较,一旦发现改变就通知管理员。