您所在的位置: 首页>>读书频道>>安全>>网络安全>>

6.4.2 信息收集及分析技术

http://book.51cto.com  2007-12-25 11:20  马恒太等著  电子工业出版社博文视点  我要评论(0)
  • 摘要:《Web服务安全》第6章主要介绍了网格Web服务攻击体系与技术。本文主要介绍的是信息收集及分析技术。
  • 标签:Web  网络  服务  技术  Web服务安全

6.4.2  信息收集及分析技术

要完成一次成功的网络攻击,第1步就是要收集目标系统的各种信息。对于攻击者来说,目标节点的信息就是重要的攻击目标,甚至可能是发动攻击的最终目的(如绝密文件和经济情报等)。当然,更有可能是攻击而获得系统访问权的通行证,如用户口令和认证票据(ticket)。也有可能是黑客获取系统访问权的支持信息,如目标系统的软硬件平台类型、提供的服务与应用及其安全性的强弱等。攻击者可以利用手工探测或扫描软件分析目标,尽可能收集攻击目标的有效信息,直到足以分析得到攻击目标的一个漏洞列表。分析结果可能包括操作系统类型、操作系统版本、所有服务、所有服务版本、网络拓扑结构、网络设备、防火墙和入侵防护系统等。

端口扫描是传统的信息收集技术,在Web服务出现后,Web服务扫描成为一种新的信息收集技术。该技术主要对网络上提供的Web服务入口进行收集和分析,它是Web服务攻击过程的重要组成部分。

1.Web服务信息扫描技术

(1)Web服务信息收集步骤

有很多方法可以收集Web服务的基本信息,这些基本信息可以是组织的名称或职员的邮件地址。在传统方法中,这些信息的收集通常以“whois”查询开始,然后试图获得相应IP地址的范围。近年来,通过使用查询数据库搜索引擎来获得信息的方法可以得到许多深层的有用信息。

收集Web服务信息的关键问题是相似条件下,如何开始收集。假设拥有公司的名称之类的信息,要搜索该公司提供给客户或合作者的各种Web服务信息,可以采用如图6-24所示的信息收集过程来进行相应的工作。

图6-24 信息收集过程

图中步骤列出了要达到的目标,也说明了Web服务泄露相关威胁信息的主要方法,当然这也是评估所使用应用Web服务安全性的关键部分。

(2)Web服务足迹追踪

统一事物注册服务器(UBR)是有关Web服务的主要信息源,是提供者注册Web服务和消费者查询服务处,是与“whois”服务类似的公共注册服务。UBR处理收到的查询并返回需要的结构,在UDDI描述规范和SOAP基础上运行。Web服务可以用4种结构注册到UBR上,即商务实体、商务服务、绑定模板和技术模型(tModel)。

很多大公司已经建立了UBR,如微软、IBM和SAP等,这些公司之间相互复制数据。可以使用一组API来查询UBR,以获得某个特定的信息。例如,如果要查询“amazon”的信息,可以使用这些API来追踪该公司的足迹,并查看能够获得哪些信息。这些API基于SOAP协议,建立在HTTP/HTTPS协议之上。如果一个WSDL描述已经发布,即可使用查询API来获取所需要的信息。

不同的公司开发了不同的工具集和SDK,这些工具可以用来编写相应的程序以列举或调用API,这些调用可以基于SOAP,也可以只是简单的TCP客户端。下面解释如何使用TCP客户端来产生一个请求,并在网上发送这个请求。假设http://uddi.microsoft.com/是要进行足迹追踪的UBR。

① 公司名称上的足迹。

API: find_business
Request:
  POST /inquire HTTP/1.0 
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 229
  amazon
Response:
  HTTP/1.1 200 OK
  Date: Tue, 28 Sep 2004 09:53:53 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 1339
  
  
  Amazon Web Services for Testing
  Amazon Web Services 2.0 - We now offer software developers 
the opportunity to integrate Amazon.com 
  
   Amazon Web Services 2.0
  
  
  Amazon.com
  E-commerce website and platform for finding, discovering, 
and buying products online.
  Amazon.com Web Services
  
  
  

分析上面的返回信息,可以观察到这个节点将返回所有在此服务器上注册的公司名中包括字符“amazon”的信息。从中可以标识与这个公司相关的服务,并发现两个公司名称及其对应的公司注册密码:

Amazon Web Services for Testing 
Amazon.com <18b7fde2-d15c-437c-8877-ebec8216d0f5>

② 对服务名称的足迹追踪。

API: find_service
Request:
  HTTP/1.1 200 OK
  Date: Tue, 28 Sep 2004 09:53:53 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 1339
   
  Amazon Web Services for Testing Amazon Web Services 2.0 - We now 
offer software developers the opportunity to integrate Amazon.com
  
  Amazon Web Services 2.0
  
  
  Amazon.comE- commerce website and platform for finding, discovering, 
and buying products online.
  
  Amazon.com Web Services
   
  
  POST /inquire HTTP/1.0
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 213
  amazon 
Response:
  HTTP/1.1 200 OK
  Date: Tue, 28 Sep 2004 10:07:42 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 1272
  

  
  Amazon Research Pane
  
   Amazon Web Services 2.0
  
  Amazon.com Web Services
  
  AmazonBookPrice
  
  AmazonBookPrice
   

分析上面的返回信息,可以观察到这个节点返回所有在此服务器上注册的服务名称中包括字符“amazon”的信息返回。从中可以标识服务,并发现以下服务名称及其对应的服务注册密码:

Amazon Research Pane <6ec464e0-2f8d-4daf-b4dd-5dd4ba9dc8f3>
Amazon Web Services 2.0 <41213238-1b33-40f4-8756-c89cc3125ecc>
Amazon.com Web Services 
AmazonBookPrice 
AmazonBookPrice <8faa80ea-42dd-4c0d-8070-999ce0455930>

③ 对tModel的足迹追踪。

API: find_tModel
Request:
  POST /inquire HTTP/1.0 
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 211
  amazon 
Response:
  HTTP/1.1 200 OK
  Date: Tue, 28 Sep 2004 10:12:42 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 516
  
  
  Amazon Web Services 2.0 WSDL File
  

在上面的返回信息中,注册服务器返回所注册的每个tModel名称中包括“amazon”的信息。从中可以发现下面的tModel及所对应的tModel密钥:

Amazon Web Services 2.0 WSDL File 

④ 元性质和工具。

通过上面的基本方法可以开发相应的工具,以辅助在Internet上查询多个服务注册节点。并收集所需要的信息,这些信息可能是针对特定的公司、服务或tModel。UDDI还提供了一些元属性来支持查询,如“%”意思是“以这个为开头的”。如果要查询以“amazon”为开头的字符串,则可以使用“amazon%”。

(3)Web服务发现

通过足迹追踪获得了UBR上的注册服务列表,而Web服务发现的目的是获得每个服务的访问点。一个访问点包括一台服务的主机IP地址及其中的资源位置,访问点是针对Web服务的信息收集和分析的关键目标。

同样,UBR是这些信息的主要来源。Web服务发现要借助前面章节中介绍的相关协议,并使用UDDI API来提取这些信息。在足迹追踪过程中,已经获得了有关公司、服务和tModel的注册密码,通过这些注册密码可以识别与其相关的访问点。

① 基于公司名的服务发现。

要执行基于公司名的服务发现,必须首先标识与这些公司名相关的服务。假设要查询基于公司名“Amazon.com <18b7fde2-d15c-437c-8877-ebec8216d0f5>”的服务,首先要标识与该公司名相关的服务。

API: find_service
Request:
  POST /inquire HTTP/1.0
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 245
  
Response:
  HTTP/1.1 200 OK
  Date: Wed, 13 Oct 2004 12:51:26 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 573
  
  

  Amazon.com Web Services
  

② 基于服务名的服务发现。

在足迹追踪的例子中得到了服务名信息,在基于公司名的服务发现例子中利用公司名来获得了服务密码。现在查看如何使用服务密码来获得服务的详细信息:

API: get_serviceDetail
Request:
  POST /inquire HTTP/1.0
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 265
  ba6d9d56-ea3f-4263- a95aeeb17e5910db
Response:
  HTTP/1.1 200 OK
  Date: Wed, 13 Oct 2004 12:47:35 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 1275
   
  
  Amazon.com Web Services
  Set of web services that allow developers to create applications 
that consume Amazon.com core features. When tied to Amazon.com Associate program,
 developers can earn a percentage of each transaction that Amazon.com fullfills. 
Developers must have atoken The WSDL file that allows developers to make use of Amazon.
com features on their ownsite. 
http://soap.amazon.com/schemas/Amazon WebServices. wsdl  

从上面的响应信息中,可以定位到要访问的Web服务的URL地址:

Discovery URL : http://soap.amazon.com/schemas/AmazonWebServices.wsdl

③ 基于tModel的服务发现。

在足迹追踪部分已经得到了相关的tModel信息,即“Amazon Web Services 2.0 WSDL File <uuid:c5da9443-d058-4ede-9db1-4f1d5deb805c>”。现在利用这个tModel密钥发送下面的请求信息:

API: get_tModelDetail
Request:
  POST /inquire HTTP/1.0 
  Content-Type: text/xml; charset=utf-8
  SOAPAction: ""
  Host: uddi.microsoft.com
  Content-Length: 389
  uuid:c5da9443-d058-4ede- 9db1-4f1d5deb805c 
Response:
  HTTP/1.1 200 OK
  Connection: close
  Date: Fri, 15 Oct 2004 11:06:54 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  X-AspNet-Version: 1.1.4322
  Cache-Control: private, max-age=0
  Content-Type: text/xml; charset=utf-8
  Content-Length: 788
  
  
  
  Amazon Web Services 2.0 WSDL File
  Amazon Web Services 2.0 WSDL File 
  Amazon Web Services 2.0 
  
  http://soap.amazon.com/schemas2/AmazonWebServices.wsdl 

从上面的返回信息中可以定位到该tModel的有关URL,以作为访问点:

Discovery URL : http://soap.amazon.com/schemas2/AmazonWebServices.wsdl

(4)Web服务技术指纹识别

Web服务信息收集的较大挑战是如何识别服务所使用的技术并收集技术的相关信息,这是一个目前正在发展的研究方向。下面主要讨论在能够访问URL后,通过检查字符串能够识别什么内容?针对目前Web服务领域常用的两类技术讨论,即在Axis上运行的.NET和Java Web服务。

① 使用扩展的技术指纹。

下面考虑两个发现URLs:

http://example.com/customer/getinfo.asmx
http://example.com/supplier/sendinfo.jws

—  asmx/jws扩展。

这是.NET/J2EE框架的Web服务资源,Web服务可以使用这种类型的资源开发和部署。因此只要对具有.asmx扩展的Web服务进行粗略检查,即可确定使用.Net的资源。下面两个请求可以以更好的方法帮助识别.Net上的支撑技术:

HEAD / HTTP/1.0
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 13 Oct 2004 18:28:45 GMT
X-Powered-By: ASP.NET
Connection: Keep-Alive
Content-Length: 7565
Content-Type: text/html
Set-Cookie: ASPSESSIONIDASSBTQAC=LIBHCGLCDKNLLKECPNLACMMB; path=/
Cache-control: private

上面的请求识别运行ASP.NET的服务器,同样将请求发送给Web服务资源(asmx)将得到下面的信息:

HEAD /ws/customer.asmx HTTP/1.0
HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/5.0
Date: Wed, 13 Oct 2004 18:29:07 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Cache-Control: private
Content-Type: text/html; charset=utf-8

从以上的响应信息中可以看到字符串“X-AspNet-Version: 1.1.4322”,这是明显的版本标识信息,可以用该方法获得处理这个请求的内部Web服务驱动的版本信息。

同样,可以得到在其他平台上使用jws扩展运行的Java Web服务的技术信息。通过查看这些扩展,即可猜测出所使用的后端支撑技术,如同Tomcat整合的Axis也可以被识别出来。

—  WSDL扩展和查询字符串。

WSDL是描述Web服务访问信息文件使用的语言。要访问Web服务,必须要得到相应的WSDL文件,然后产生一个代理。WSDL枚举在此不做更多描述。但是一个URL可以具有WSDL扩展作为文件扩展名,或作为查询字符串的一部分,如:
http://example.com/servlet/customer.access.wsdl
http://example.com/customer.asmx?wsdl
http://example.com/customer.asmx/wsdl

② 发现技术指纹。

利用扩展名可以识别运行Web服务的应用或站点,如asmx、jws和wsdl。因此可以在HTTP协议上来搜索这些扩展名和Web服务描述文件,同时还可以通过搜索引擎来定位Web服务。下面是一个例子:

Search Engine: Google.com
Search Query: inurl:wsdl site:amazon.com

从图6-25中可以看到,利用搜索引擎可以定位运行Web服务的站点。

图6-25 定位运行Web服务的站点

同样,在Google中可以产生下面的查询:

filetype:wsdl site:amazon.com
inurl:asmx site:amazon.com
inurl:jws site:amazon.com
Search Engine: alltheweb.com
Search Query: url:wsdl site:amazon.com

搜索结果如图6-26所示。

图6-26 搜索结果

本节介绍了常用的Web服务信息收集技术。随着对Web服务的研究深入,会有更多的方法和手段来完成这个工作。UDDI和UBR将成为下一代的“whois”服务。UDDI、SOAP和WSDL的重要性也会越来越强,因为它们将成为下一代大型系统整合的关键。足迹追踪、服务发现和技术指纹识别是收集Web服务相关信息的一般步骤,它们只是完成Web服务安全评估的第1步,然后要使用WSDL枚举和根据枚举信息确定攻击向量。要完整地进行Web服务安全评估,则需要理解和实现所有步骤。

2.Web服务信息分析

Web服务分析可以从一个企业的名称或其他简单信息开始,首先确定特定企业的入口点,这些方法包括前面提到的Web服务足迹追踪、服务发现和服务搜索。一旦发现了Web服务的访问点,即可从这个访问点提取有用的信息。

由于部署的Web服务可以通过HTTP/HTTPS来远程调用,要能够成功调用服务,需要最终用户能够了解被调用服务的有关信息。在CORBA模型中,开发人员使用IDL文件在网上提供所需要的信息。现在在Web服务框架下则使用WSDL文件,使文件将成为Web服务列举过程中的主要信息来源。

(1)Web服务例子

一个为客户提供Web服务的站点例子,该服务主要提供如下个功能。

— 介绍站点,类似于whoami服务。
— 提供有关产品的功能信息,如提供price或type功能。
— 提供有关产品的升级信息。

下面是一个在.NET框架下开发的Web服务的结构实例。

store.asmx的代码段:

<%@ WebService Language="c#" Class="store" %>
    using System;
    using System.Web.Services; 
    using System.Data.SqlClient;
    using System.IO;
    public class store
    {
         [WebMethod]
        public string Intro()
        {
            return "This is web store's web services. Please use for required 
            information";
        }
         [WebMethod]
        public string getProductInfo(int id)
        {
            ......... Code……
            return productinfo;
        }
         [WebMethod]
        public string getPromotionInfo(string filepath)
        {
            ......... Code……
            return promotionfile;
        }
}

WSDL文件中保存有关Web服务的所有关键信息,并且该文件必须网络共享,只有这样其他人才能够在网络上调用该Web服务。

WSDL文件示例如图6-27所示。

图6-27 WSDL文件示例

http://target/store.asmx?wsdl 是通过UDDI得到的目标访问点。

上述示例只显示了WSDL的顶层标签。

(2)通过WSDL列举服务

① 列举服务和位置。

WSDL片段如下:

service name="store"
port name="storeSoap" binding="s0:storeSoap"
soap:address location="http://target/store.asmx" /
/port
/service

<service>标签提供了Web服务的名称和访问点,这个信息提供了客户要绑定服务时所需的位置信息,可以通过匹配“<service.*?>”和“<.*location.*[^>]>”得到。、

② 列举操作或方法。

WSDL片段如下:

portType name="storeSoap"
operation name="Intro"
input message="s0:IntroSoapIn" /
output message="s0:IntroSoapOut" /
/operation
operation name="getProductInfo"
input message="s0:getProductInfoSoapIn" /
output message="s0:getProductInfoSoapOut" /
/operation
operation name="getPromotionInfo"
input message="s0:getPromotionInfoSoapIn" /
output message="s0:getPromotionInfoSoapOut" /
/operation
/portType

<portType>是另一个重要的标签,其中包括所有能够远程调用的方法的名称,并提供了所支持的调用类型。在本实例中的名称是“storeSoap”,它指定了调用类型是SOAP,即说明只能通过SOAP协议调用服务方法。当然,Web服务有时也可以支持GET或POST方法。

<operation>标签代表了能够被invoke的方法名,这些方法是<operation name= "Intro">、<operation name="getProductInfo">和<operation name="getPromotionInfo">。

各方法所提供的信息如下。

—  Intro:提供有关store服务的相关介绍信息。
—  GetProductInfo:提供任何给定ID产品的产品信息。
—  GetPromotionInfo:提供产品升级的详细信息。

每个服务的输入和输出参数信息通过input和output标签来提供,下面是Intro方法的输入和输出参数信息:

input message="s0:IntroSoapIn" /
output message="s0:IntroSoapOut" /

③ 从方法中推导数据类型。

WSDL片段如下:

operation name="getProductInfo"
input message="s0:getProductInfoSoapIn" /
output message="s0:getProductInfoSoapOut" /
/operation
message name="getProductInfoSoapIn"
part name="parameters" element="s0:getProductInfo" /
/message
message name="getProductInfoSoapOut"
part name="parameters" element="s0:getProductInfoResponse" /
/message
s:element name="getProductInfo"
s:complexType
s:sequence
s:element minOccurs="1" maxOccurs="1" name="id" type="s:int" /
/s:sequence
/s:complexType
/s:element
s:element name=" getProductInfoResponse "
s:complexType
s:sequence
s:element minOccurs="0" maxOccurs="1" name="getProductInfoResult"
type="s:string" /
/s:sequence
/s:complexType
/s:element

通过方法的名称可以得到有关输入和输出参数的消息块,如上例中getProductInfo方法的两个参数消息块是getProductInfoSoapIn和getProductInfoSoapOut。这些消息块中包括元素的标签,每个元素标签信息指定该输入和输出参数的数据类型。

getProductInfo方法的输入和输出参数如下。

输入参数如下:
变量:id。
类型:int。
输出参数如下:
变量:getProductInfoResult。
类型:string。

通过同样的方法可以获得该服务所提供的所有方法及参数,如表6-8所示。

表6-8  Web服务所提供的方法及参数表

   

   

   

Intro

getProductInfo

Int(id)

String

getPromotionInfo

String(file)

String

上述信息对分析评估Web服务的安全性非常重要,利用所得到的参数可以制定相应的攻击计划来测试相应的Web服务是否存在漏洞。

④ 使用wsdl.exe提取信息。

WSDL.EXE是.NET框架提供的工具,可以用来建立一个参数表,该工具的最初目的是从一个WSDL文件创建一个代理代码。如目标是http://target/store.asmx,使用WSDL工具来处理这个文件:

C:\Documents and Settings\Administrator>wsdl /namespace:storeproxy /language:cs
http://localhost/store.asmx
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 1.0.3705.0]
Copyright (C) Microsoft Corporation 1998-2001. All rights reserved.
Writing file 'C:\Documents and Settings\Administrator\store.cs'.
C:\Documents and Settings\Administrator>

使用wsdl命令创建了一个使用C#代理代码,该代码的名字空间是“storeproxy”。可以用该代理代码来得到操作方法和数据类型的有关信息,在这个过程中会在该目录下建立一个store.cs文件:

03/11/2005 03:59p 4,316 store.cs

下面来看一下生成的代理代码,以获得有关信息。

代码段如下:

namespace storeproxy {
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Services;

该代理代码通过WSDL工具创建,仔细研究这些共用方法可能得到很多重要信息。

代码段如下:

public store() {
    this.Url = "http://localhost/store.asmx";   
}
public string Intro()
public string getProductInfo(int id)
public string getPromotionInfo(string file)

3个函数的输入和输出参数如表6-9所示。

表6-9  输入输出参数

   

   

   

Intro

getProductInfo

Int (id)

String

getPromotionInfo

String (file)

String

现在得到了一个Web服务的完整输入输出参数集,利用这些信息可以进一步使用不同的攻击手段来测试其脆弱性。 

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
最优性价比组建无线网络
网络应用性能控管最佳实践
华硕IDC绿色节能服务器推荐
Hyper-V 虚拟化技术专题
重复数据删除技术
 
 验证码: (点击刷新验证码)   匿名发表
  • 野蛮生长

  • 作者:冯仑著
  • “地产界的思想家”冯仑纵横生意江湖20年来,第一次系统梳理出书。  三十年来中国民营企业从前公司时代发展到公司时代,21..
Copyright©2005-2008 51CTO.COM 版权所有