首页 -> 安全研究

安全研究

绿盟月刊
绿盟安全月刊->第22期->技术专题
期刊号: 类型: 关键词:
网络安全技术概论系列(-)

作者:Ipxodi < mailto: ipxodi@nsfocus.com >
主页:http://www.nsfocus.com
日期:2001-06-15

一:序言
攻防技术的此消彼涨始终是网络安全领域前进的动力。最近十几年来的网络安全的发展
深刻的验证了这个道理。攻击技术包括目标网络信息收集技术,目标网络权限提升技
术,目标网络渗透技术,目标网络摧毁技术四大类。
对于每一个技术,都是日新月异,不断更新的。具体来说,可以有如下划分:
网络信息收集技术,包括如下几个分类:
目标网络主机拓朴结构分析技术;
目标网络服务分布分析技术;
目标网络漏洞扫描技术;

目标网络权限提升技术,包括如下几个分类:
本地权限提升;
远程权限提升;

目标网络渗透技术,包括:
后门技术;
sniffer技术;
欺骗技术;
tunnel及代理技术;

目标网络摧毁技术包括:
目标服务终止;
目标系统瘫痪;
目标网络瘫痪;
这三个级别的技术。


防守技术则包括攻击检测,攻击防范,攻击后的恢复这三个大方向,每一个方向上有代
表性的产品:入侵检测系统负责进行攻击检测,防火墙和强制访问控制系统负责攻击防
范,攻击后的恢复就是自动恢复系统,比如WEB水印系统等等。
本文以及后续各文将试图总结和归纳信息采集技术的各个方面。目的主要是试图将纷繁
浩杂的文献作一次整理,提出一些新的想法和思路,当一次系统化研究攻防技术的铺路
石。

目前的计划是首先阐述攻防知识库构造这个攻和防都需要涉及的基础领域,以后将详细
阐述网络信息收集技术和对应的检测技术,之后看情况,进行其他各个部分的整理和归
纳。


二:攻防知识库的构建
一提起攻防知识库,人们一般想到的就是互联网上充斥的漏洞库。漏洞库是一切攻击和
防守行为的知识基础,一般来说,漏洞库的组建,涉及到如下几点:
漏洞分类问题;
漏洞相关信息完备集的问题;
漏洞库与IDS规则库,扫描器规则库,补丁管理库配合问题;
漏洞分类问题一直没有得到一定的重视,当需要维护一个漏洞库的时候,人们一般会想
到根据发布日期,操作系统,应用程序,版本,得到的结果进行分类,我们经常可以在
一些提供漏洞搜索服务的界面上看到如下的输入选项:

操作系统:________________
发布时间:________________
漏洞类型:________________

漏洞的分类其实是和对漏洞的使用方式有很大关系的,比如当需要作主机安全评估的时
候,人们并不关心漏洞的实现方式:是远程溢出?还是暴力破解。他们在查询的时候可
以提供的信息就是已知一定版本的机器,开放了这几种服务,想得到的信息是:我可以
提升自己的权限到什么级别?或者我可以获得什么我本来得不到的信息?当我们出于技
术目的,比如想查询缓冲区溢出的漏洞的时候,需要提供的就是漏洞的技术手段。当用
户从某一个安全程序比如IDS获得一次告警,并被告知请看BUGTRAQID×××的时候,你
能指望他会知道什么?他只要知道一个通用的ID来查询漏洞的详细信息就可以了。

对漏洞的分析多种多样,决定了漏洞的分类原则多种多样。stardust[1]进行了卓有成
效的分类规划:他根据漏洞可能造成的直接威胁,漏洞的成因,漏洞的严重性,漏洞被
利用的方式,作了五种分类。其分类的最大贡献在于他考虑到了分类标准的复杂性并提
出了几种不同的分类方法,使得不同查询需求之间不再混淆。他的分类方式当然有可以
商榷的地方,比如缺少对不同衍生产品的支持,当IDS产品需要为一个漏洞进行规则编
写的时候,为什么不能继续使用同样的分类,同样的ID呢?扫描器,自动攻击系统,以
及补丁系统其实很大程度上是基于漏洞的。可能每个产品还有自己的一些分类标准,比
如扫描器需要将finger服务开放作为一个安全隐患报告出来,这个和漏洞库没有关系。
因此,需要有一个ID的统一制定规范来保证大部分产品可以根据漏洞库生成出自己的
ID,算法应该是公开的。因此,其问题在于,没有提出对漏洞ID的统一。不方便作查
询。另外,其分类没有从安全评估的实用角度来构造,没有一个有效的算法可以使用人
工智能的方法对他的构造的库进行自动渗透,这个问题是最致命的。

可能大家感觉到建立在漏洞概念上的分类总是让人觉得很别扭,因为总是有很多领域不
可以包含一个分类标准,不得不为其单设一个分类标准。比如nmap扫描,这对于IDS来
说是一个攻击,扫描器几乎一定会用他来收集目标网络的详细信息,但是谁知道他应该
属于什么漏洞分类呢?因此,应该换一个思路了。

我们应该基于攻击来考虑问题。这就引入了另一个非常有趣的领域:攻击库的构造,注
意这两个库名称上的细微差别,攻击库的使命就是为对一个网络的安全评估提供弹药,
甚至可以从知识库的角度来对自动攻击进行支持。他不同于漏洞库在于他全面涵盖了攻
击的所有范畴。攻击库的分类是在漏洞库的分类的基础上发展起来的,文献[2]记载着
其历史轨迹。总的说来,攻击库至少包括了如下几个重要的域:
攻击ID:
攻击名称:
攻击的分类:
攻击对应的漏洞信息(如果有的话)
攻击对应的patch

其中最重要的当然是攻击的分类。Area52[3]致力于使用正向逻辑进行攻击推理,形成
决策树的自动攻击技术研究,他们进行了基于OSI模型的详细的攻击分类,但是文献中
并没有考虑到所有的攻击手段。我将对网络摧毁技术的考虑和他们的分类结合,并且由
于现在的流行网络协议已经是简化的类TCP模型,因此提出了一个改进的分类方法。

下面将详细的阐述攻击的分类方法:攻击的重要特征就是他的阶段性。对于一个陌生的
网络,你的权限是零,当你知道了他的IP之后,你就可以对他进行端口扫描,你可以知
道他的应用层的一些信息:HostName,可以看到他开放了什么服务,这时你的权限已经
提升了。每一次攻击都是一次权限的提升,这个递增的迭代发展到最后就形成了最高的
权限。

针对这种特征,我们将对权限进行分类,这个分类必须可以体现出分层次的概念。显
然,考虑到多种网络模式,对于网络应用来说,在每一个层次上,可以有三种权限:
Read,Write,Modify。其中详细的分类原则请参看下图:
              TCP Layers   Acc  Implication

           *--------------*
           | Application  |
           | 4            | M   应用程序所有权限
           |              | W   DoS,非授权的向应用接口写
           |              | R   应用程序信息采集
           |--------------|
           | Transport    |
           | 3            | M   重定向
           |              | W   DoS,扫描
           |              | R   信息采集
           |--------------|
           | Network      |
           | 2            | M   重定向
           |              | W   DoS,扫描
           |              | R   信息采集
           |--------------|
           | Data Link    |
           | 1            | M   重定向
           |              | W   DoS,扫描
           |              | R   信息采集
           |--------------|
           | Physical     |
           | 0            | M   重定向
           |              | W   DoS,扫描
           |              | R   信息采集
           *--------------*
对于一般的没有防火墙的机器,我们的权限都是3W*,表示我们是可以对目标网络层拥有
W*表示你对该网络可以写正确的网络报文,如果是错误的TCP报文,会被丢弃。在我们
使用了NMAP[4]之后,就可以提升到权限4W*,因为此时我们已经可以对所有的服务有一
个很清晰的列表了。

权限的更进一步的分类就是处于本地系统之后的情况,此时权限有:
  4  内核层次 (R,W,M)
  3  超级用户 (R,W,M)
  2  普通用户 (R,W,M)
  1  匿名用户 (R,W,M)

最后一个是你物理的接近了该系统的情况,此时的权限有:
  4  内核层次 (R,W,M)
  3  超级用户 (R,W,M)
  2  普通用户 (R,W,M)
  1  匿名用户 (R,W,M)

这样我们可以归纳出我们的攻击分类词法的正则表达式为:
[RLP][0-4][RWM*]

比如,如果是CMSD[5]远程溢出,我们可以这样写:

Name        Systems     Versions       Level required Level gained
----------- --------    -------------- -------------- ------------
"CMSDBO1" "Solaris 2.6" "rpc.cmsd 2.6"  "R4W"        "L3W"

这样就全面的描述了发起一次攻击所需的权限以及攻击成功后可以达到的权限级别。这
个分类是出于攻击者需要获得对对方的控制来制定的,并且考虑了另外一个攻击技术就
是对目标网络的摧毁。

基于本分类技术,可以对任何目标建立一次推理分析过程。比如如果我们的目标为获得
某网主机的超级用户权限,我们可以将他归纳为:L3W权限,那么我们的初始权限为
R3W,下面我们将根据我们的知识库进行推导:
   需要的权限和信息   获得的信息和权限
NMAP   R3W     -> R4W (结果 Object System Found: Solaris 2.6 )
RPCInfo[6] OS=Solaris 2.6 ,R3W -> R4W (结果 cmsd open )
CMSDBO1  V=rpc.cmsd 2.6,R4W -> L3W
经过简单的两次推导,我们就可以得到两个攻击的策略。每一次的决策都是动态决定
的,当决策出现错误的时候,将回朔进行新的探索,直到找到正确的攻击手段为止。

本分类方法可以比较好的与自动攻击系统的决策相配合,因此是攻击库的分类的一个相
当不错的选择。

在实际的应用之中,将漏洞库和攻击库的结合是非常重要的,每一个库的用途决定了他
们的存在必要性,在应用之中都是并存的。如果有兴趣,可以和我进行进一步的交流。

文献:
[1]  stardust: 计算机网络系统安全漏洞分类研究
  http://www.xfocus.org/other/ztwz/hole.doc

[2]  Dr Ross Anderson from University of Cambridge
     http://www.cl.cam.ac.uk/Teaching/1998/Security/

[3]  Jitsu-Disk <jitsu@nmrc.org> Area52 Project
  http://www.nmrc.org/area52/index.html

[4]  NMap by Fyodor.
     http://www.insecure.org/nmap

[5]  Buffer Overflow Vulnerability in Calendar Manager Service Daemon,
rpc.cmsd
  http://packetstorm.securify.com/advisories/cert/CA-99-08-cmsd.txt

[6]  rpcinfo(1M) report RPC information
版权所有,未经许可,不得转载